I've written a script that automatically sends a Shift Ping to a token called PlayerStart after the player ribbon has been moved to a new page. Basically what happens is the ribbon gets moved, the script waits 1.5 seconds for the page to load, and then fires the Shift Ping to center all the player's views onto that point. The hardcoded 1.5 second wait is bugging me, though, because if a player's page takes longer than that to load, the ping will fire while the page is loading and their view won't be centered. Does anyone know of a cleaner way to do this? on("ready",function() { on ("change:campaign:playerpageid",function(){ //look for the token named PlayerStart var tokens = findObjs({ _pageid: Campaign().get('playerpageid'), _type: "graphic", _name: "PlayerStart" }); var token = tokens[0]; if (token===undefined) //if we don't find PlayerStart, exit gracefully { return; } //send the ping to PlayerStart 1.5 seconds after the page changes setTimeout(function(){ sendPing(token.get("left"), token.get("top"), token.get("pageid"),"", true); },1500); }); });