If you drag a character's token out to a page, but then the party moves on to a different map so you have to drag another token for that player, those are going to have different IDs. That's where something like what Keith said (finding the first token that represents Bob on this page) can be beneficial. Some API scripts will do that natively (you give it "Bob" and it will find the first Bob it comes to on the current page), but if you want something universal the Fetch script can help. Fetch is a metascript -- so it will work in the command lines of other scripts, or it can work in normal chat messages (provided you have API access). The Fetch construction syntax is pretty similar to standard Roll20 syntax. In Roll20 you might need to do: @{selected|token_id} or @{target|token_id} In Fetch, those curly braces become parentheses, and the vertical bar can be either a vertical bar or a period: @(selected.token_id) You can also include a default value if the thing-you-are-asking-for isn't found. Put the default value in brackets as the last thing inside the parentheses: @(selected.token_id[No token ID was found.]) Now, while Fetch can't trigger the targeting reticle, it can do other cool things... like the default value above. It can also use "speaker" as the source of the thing you want to return: @(speaker.token_id) It can find a token by name: @(Bob.token_id) It can return any token property: @(Bob.left) ...or a character attribute: @(Bob.Dexterity) In fact, it can tell whether you are looking for a character attribute or a token property, so it can differentiate either the token named Bob or the character. It can also return repeating items, abilities, or macros, but those are a little afield from the OP's request.