Create a project.
A project is one product or brand. Everything else in this guide lives inside it.
In the dashboard, click New project and set three fields:
- Set Project name to what it's for, your casino, your app, your loyalty program
- Set Project default language, shown to anyone who hasn't set their own
- Set Project default time zone, it decides which calendar day a streak breaks on
The language and time zone are permanent, only the name can change later. Creating the project also creates two environments automatically, Sandbox and Live. There's nothing else to set up, they're just there.
Build in Sandbox first
Sandbox and Live behave identically and share nothing between them, not even their data. Do every step in this guide in Sandbox: nothing you do there can reach a real player or move real money. Switch to Live only once the whole campaign works the way you want.
Create an event.
An event is something that happened. This campaign tracks two: a deposit, and a login.
In the dashboard, open Events and click New event.
- Pick the environment, Sandbox for now
- Set Name to Deposit made
- Leave Key as the one it suggests, deposit, it's permanent so check it now
- Set Description if you want one, it's optional
- Click Create event
Do it again for a second event: name it Logged in, key login.
Add a property when the event itself isn't enough
A property is a detail that rides along with one occurrence, an amount, a category, a flag. Add one from the same screen, before you click Create event:
- Set Name and Key, the same pair every definition in this guide uses
- Set Type to String, Number, Boolean or DateTime
- Tick Required if an occurrence without it should be rejected
Neither event here needs one. A deposit's amount would, if you wanted to score a leaderboard by it instead of by count.
That's it, nothing to send yet. The real traffic, the actual API call your backend makes, comes last, in step 12.
Create an attribute.
An attribute is something true about a player right now. This campaign tracks two: whether their email is verified, and their country.
In the dashboard, open Attributes and click New attribute.
- Pick the environment, Sandbox for now
- Set Name to Email verified
- Leave Key as the one it suggests, email_verified
- Set Type to Boolean, true or false
- Set Description if you want one, it's optional
- Click Create attribute
Do it again for a second attribute: name it Country, type String.
The key and the type are both permanent. Only the name and description can change later.
Why these two
Email verified and deposit together decide who the onboarding mission is for (step 7). Country is what the leaderboard scores as a team (step 9).
Create a segment.
A segment is a named rule about a player, built once and reused anywhere eligibility matters: a mission, a streak, a marketplace item, even another segment.
In the dashboard, open Segments and click New segment.
- Pick the environment, Sandbox for now
- Set Name to Unverified players
- Leave Key as the one it suggests, unverified_players, other rules find it by this key so it can't change later
- Set Description if you want one, it's optional
- Under Who is in it, build the rule: attribute email_verified is false
- Click Create segment
That's the segment this campaign's onboarding mission (step 7) checks for. A player joins and leaves it on their own, Gemifier reads the rule fresh every time something asks, there's nothing to refresh.
Edit it once, every user updates
A mission, streak or marketplace item picks a segment by name as one condition in its own rule, alongside anything else it needs. Change the segment's rule later and everything that names it follows the new rule immediately, nothing else needs saving.
Create a catalog item.
A catalog item is a reusable prize definition. Create it once, then hand it out from a mission, a streak or the marketplace.
In the dashboard, open Catalog and click New catalog item.
- Set Name to Welcome bonus
- Leave Key as the one it suggests, welcome_bonus, it's what your own system receives when this is handed over, and it's permanent
- Set Value to Number, a quantity like points; text and on/off also exist, for a voucher code or a badge
- Set Description if you want one, it's optional
- Click Create item
Do it again for a second item: name it 7-day streak reward.
One catalog item, several possible places to attach it. Build each prize once here, then reference it from wherever the campaign pays it out, instead of redefining it each time.
How it's delivered
A points value settles inside Gemifier the instant it's earned, nothing for you to fulfil. A real prize is different: Gemifier records it as a grant and asks your webhook to deliver it, which is step 12. Gemifier never holds or moves money.
Create a marketplace item.
Optional for this campaign, but worth building once: put a catalog item in front of players directly, with a points price, and they buy it themselves.
In the dashboard, open Marketplace and click New item. It's a short wizard:
- Set Name, Description and Key, the same as every other definition in this guide
- Under What the player gets, pick a catalog item, such as the welcome bonus from step 5
- Under What it costs, set the price in points
- Set who can participate and where it shows, the main shop or only inside a collection
- Set how many can be bought, in total and per player, and optionally a window for when it's on sale
A mission or streak reward is pushed to a player automatically, the moment they earn it. A marketplace item is the opposite: it sits in the shop for whoever has enough points to choose it, whenever they want it.
Create a mission.
The onboarding mission: a player verifies their email and makes a deposit, in the same mission.
In the dashboard, open Missions and click New mission. It's a wizard with five parts:
- Basics: set Name, Description and Key
- Audience: set who can participate to the unverified_players segment from step 4, and set it to start automatically, not something a player has to accept
- Objectives: add two, email becomes verified and a deposit is made, set them to finish in any order
- Reward: pick the "Welcome bonus" catalog item from step 5
- Schedule: leave it one-off, this mission doesn't repeat
Both objectives have to be met before the reward pays out, Gemifier checks them with every event and attribute update it receives. Once a player verifies their email and makes a deposit, in either order, the mission completes and the reward lands on its own.
Create a streak.
A player who logs in 7 days running earns a reward on day 7.
In the dashboard, open Streaks and click New streak.
- Set Name, Description and Key
- Under What makes a day count, set it to the login event from step 2
- Add a milestone at day 7
- Set its reward to the "7-day streak reward" catalog item from step 5
Miss a single day and the run resets to zero, there's no grace period. A player's best-ever run is kept as its own number regardless, so a reset never erases what they already proved.
Create a leaderboard.
Ranks players by total deposits this month, scored as a team by country.
In the dashboard, open Leaderboards and click New leaderboard.
- Set Name, Description and Key
- Under What the score is, set it to the deposit event from step 2, summed over the period
- Set How often it runs to monthly, it resets on its own
- Under Teams, set the team attribute to country from step 3
Turning on team scoring doesn't create a second object, it's one setting on this same leaderboard. Every player sharing a country scores together, added up, so the board ranks countries against each other instead of individuals.
Set a reward per rank band if you want one, points or a catalog item, paid out automatically the moment the period settles.
Create an achievement.
A trophy for reaching 1,000 lifetime deposits. No reward attached, just a fact worth keeping on a player's profile for good.
In the dashboard, open Achievements and click New achievement.
- Set Name, Description and Key
- Under Objective, set deposit count is at least 1,000, over the player's whole history
- Leave What it pays empty, though points or a catalog item both work if you want one
Lifetime is the only window there is
Step 7's mission counts since the player started it, and step 8's streak resets every calendar day. An achievement counts neither way: the window is always the player's entire history, with no control to change it. Once the count crosses 1,000, it's earned and held for good, even if the number that triggered it was one large deposit on day one.
Get your Sandbox API key.
The campaign is built. Now give your own backend a way to talk to it: mint a key once, use it for everything in Sandbox.
In the dashboard, open API keys and click New API key.
- Set Name to something you'll recognise later, eg. "Backend"
- Click Create key
- Copy it into wherever your backend keeps secrets, it's shown once
Only a hash of the key is kept on Gemifier's side, so losing it is never a security incident, just a five-minute fix: revoke the old one from the same screen and mint a replacement.
Connect your webhook, and send the real events.
Two wires left. Gemifier needs a way to call back into your system, and your system needs to actually tell Gemifier when something happens.
Register your webhook
In the dashboard, open Webhooks and click New webhook endpoint.
- Set URL to your own HTTPS endpoint
- Under Notify about, tick "Reward to deliver", it needs your action: a player earned a catalog item and only your system can hand it over
- Tick anything else you want for information: mission completed, streak milestone, leaderboard period closed, none of these carry a reward, they just let you update your own screens
- Click Create endpoint and copy the signing secret it shows you, once
Every request is signed with HMAC-SHA256, so your endpoint can verify it actually came from us before acting on it.
Find where each event actually happens
Go back to your own codebase and find the exact line that handles each thing you created in steps 2 and 3: where a player makes a deposit, where they log in, where their email gets verified or their country is set. That's where the API call goes, not a batch job or a nightly export.
- Where a player makes a deposit, call POST /v1/events with key deposit
- Where a player logs in, call it again with key login
- Where email verification or country changes, call PUT /v1/attributes
Use the API key from step 11 on every call. Send a few of each from Sandbox and watch them land in the dashboard before switching to Live. See Developers for the full request shape.