You can drop a player's own details straight into the text you write, so a dialogue step reads "Nice work, Sam — you're level 6" rather than something generic. These are called tokens.
The Syntax
Write the token in double curly braces:
{{ player.nickname }}inserts the player's nickname{{ player.nickname | Explorer }}inserts "Explorer" instead if that player has no nickname set
Spaces inside the braces are optional: {{player.nickname}} works the same. Always use the fallback form for anything a player might not have filled in. A sentence that reads "Welcome back, !" is worse than one that says "Welcome back, Explorer!"
Inserting a Token From the Editor
You don't have to remember the names. Every rich-text editor (the text box with a formatting toolbar) has an Insert player data button, the person icon in the toolbar. It opens a menu grouped into:
- Player
- Progress
- Guild
- Adventure
- Profile fields: this adventure's own custom profile fields. The group only appears once the adventure has some.
Pick an entry and the token is inserted where your cursor is. The menu lists what the adventure offers, not what you personally have filled in, so you'll see the guild and profile-field tokens even if you have no guild or profile data yourself.
The menu inserts the plain token. Add the | fallback part yourself where a player might not have a value. In a plain text box with no toolbar, type the token by hand.
What You Can Reference
Tokens are grouped into five families:
player.*: the player's own profile. The menu offersnickname,first,last,display_name,email,company,website,linkedin,countryandbio.progress.*: live numbers for this adventure:level,xp,bloo,ep,tnl(XP to next level),gpa,spent(BLOO spent),completedandtotal(milestones), andpercent.guild.*: their guild'sname,code,members,capacityandxp.meta.*: any custom profile field you've set up for the adventure (see Managing Your Player Roster). Add a field and it's immediately usable in your text, with no development work.adventure.*: the adventure's owntitleandid.
Sensitive fields (passwords, secret codes, payment identifiers, API keys) are deliberately excluded and can never be shown by a token, however you spell it.
Where Tokens Work
- Step content, across every step type: dialogue, open text, puzzles, branch choices and the rest
- A milestone's win and fail messages, including where they appear in Secrets and Clues
- Posts and Resources
- Item descriptions, in the Item Shop, the Backpack and the Tabis page
- Achievement descriptions
- Certificate text
- Trait descriptions on profile test results
Task instructions and Mission text don't expand tokens. Email campaigns use their own merge tags instead. See How to Send an Email Campaign.
Worked Examples
Welcome back, {{ player.nickname | Explorer }}.You're level {{ progress.level }} with {{ progress.tnl }} XP to the next one.{{ guild.name | Your guild }} has {{ guild.members }} members.You've finished {{ progress.completed }} of {{ progress.total }} milestones ({{ progress.percent }}%).
If You Migrated From the WordPress Version
The old [player_data field="..."] shortcode still works, so existing content keeps working and you don't have to rewrite anything. New content should use the {{ }} form, which reaches progress, guild, meta and adventure values the old shortcode never could.
If you previously saw the literal text [player_data field="player_nickname"] appearing to players instead of their name, that's fixed. Those steps now show the real value.
A Note on Safety
Token values are escaped automatically when they're inserted. A player whose nickname contains stray characters or markup can't break your page layout or inject anything into it, so you can use tokens freely without worrying about what someone typed into their profile.