This script is a basic Lua version of a C++ Area Trigger.
This basically teleports a player when they get within range of a NPC which has a invisible display id, or is spawned really really small.
What I prefer to do is spawn a gameobject in the form of a Instance Portal and spawn the NPC on it so when players run into it they get ported to your choice of Location. 
Code:
--[ Teleport Script Made by Ground Zero ]--
local NPC_Entry = 34502 -- Your Invisible Trigger NPC ID
local Inrange_Distance = 3 -- Edit to your Desired Distance in Yards.
function Trigger_Tele_NPC(unit, event)
unit:RegisterEvent("Tele_Trigger", 2000, 0)
end
function Tele_Trigger(unit, event, player)
local plrs = unit:GetInRangePlayers()
for k, v in pairs(plrs) do
if (unit:GetDistance(v) < Inrange_Distance) then
v:Teleport(1, 16222.787109, 16267.750977, 14) -- Currently GM Island
v:CastSpell(64446)
v:SendBroadcastMessage("You have now been Teleported to LOCATION!")
end
end
end
RegisterUnitEvent(NPC_Entry, 18, "Trigger_Tele_NPC")
http://pastebin.com/f6c0d215 <- Pastebin.
Enjoy.