Skip to content

S2S handoff & go-live ​

For: Whoever owns the launch — usually the advertiser's UA manager, with the developer on hand for the test.

Validation proves your payloads are correct. This page proves your product sends them, and hands the integration to your account manager so campaigns can start optimising on it.

Before you hand off ​

  • Every required rule in Validation passes (S2S-R-01 … S2S-R-17)
  • Recommended rules pass, or you have written down which ones you are skipping and why
  • The iGaming preset is enabled for your Product (S2S-R-14) — confirm with your account manager before the test, not during it
  • register and deposit fire from production code, not staging
  • The events fire from your real handlers — the deposit event comes from the payment confirmation callback, not from the page the player sees afterwards
  • Your client_user_id matches the user_id sent by the Web Tracker on the same site (S2S-R-08)
  • The API key lives in a secret manager, and staging is on a separate key or sends X-Test-Mode: true (S2S-O-06)
  • Production code sends neither ?dryrun=1 nor X-Test-Mode (S2S-R-12)

What to send your account manager ​

DeliverableWhy it is neededExceptions
Which tier you have implemented — Basic or FullDecides which optimisation goals your campaigns can use. Setting a campaign to a goal you do not feed is the most common cause of a bad first week.None
The exact list of event names you sendWe check them against the catalog before launch rather than after. Send as text, not a screenshot — the names have to be compared character by character.None
Your Product name and domainConfirms events are landing on the right Product.None
Confirmation that the iGaming preset is enabled for your Productdeposit is an iGaming event. Without the subscription every deposit returns 422 EVENT_DISABLED, whatever your code does.None
Whether this Product has an existing player base, and your backfill or cut-off planFTD is derived as the earliest deposit we have seen. Without a plan, week-one FTD is inflated by existing players and bidding chases it.Skip only for a genuinely new brand
A sample eventId from a real 202 response, with the time you sent it — fill this in after the go-live testLets us trace one known-good event end to end instead of searching blind.Batch returns requestId and count rather than an eventId — send those instead
Which events are not implemented yet, and when they are comingStops us proposing goals you cannot support, and tells us when to revisit.None

Send the event list as text

Copy the names out of your code. A screenshot of a config screen cannot be diffed against the catalog, and a single wrong character is invisible to the eye but fatal to the integration.

The go-live test ​

Do this with a real click on a live ad and a real deposit. A synthetic payload from a terminal does not test the thing that usually breaks — your own code path.

  1. Click a live RevoSurge ad
  2. Land on your site, and let the Web Tracker fire (this is what captures the click)
  3. Register a new test account
  4. Log in
  5. Make a small real deposit through the normal cashier
StepExpected resultWhere to verify
2. LandingThe Web Tracker fires and the click ID is captured and stored against the sessionYour own logs; Web Tracker event count in the portal
3. RegisterYour backend POSTs register and receives 202 with an eventIdYour request logs
4. Loginlogin sent and accepted, same client_user_idYour request logs
5. Depositdeposit sent from the payment confirmation handler, 202 returnedYour request logs
5. Depositcontext.transaction_id, context.amount and context.currency all present and matching the real deposit — all three are requiredThe dry-run echo, or your logged payload
AllEvery event carries the same client_user_id, and it matches the Web Tracker's user_idCompare the payloads side by side
AfterThe test user appears with a registration and a deposit attributed to the campaignPortal reporting

If the test fails ​

SymptomCheck these rules
No 202 — request rejected outrightS2S-R-01, S2S-R-02, S2S-R-03
200 instead of 202S2S-R-12 — you are still in dry run or test mode. The X-Ingest-Mode response header says which
422 EVENT_DISABLED on deposit or any iGaming eventS2S-R-14 — the preset is not enabled for your Product. Check this before anything else
422 UNKNOWN_EVENT_TYPES2S-R-04 — that name is not in the catalog
400 with violationsS2S-R-05, S2S-R-06, S2S-R-07, S2S-R-13, S2S-R-15 — read the field and rule in the response
Everything returns 202, but an optional field is missing downstreamS2S-R-11 — a near-miss field name is being dropped silently
Events arrive but the deposit is not attributed to the campaignS2S-R-08, S2S-R-16 — the user ID does not match, or no click ID was passed
Registration counted twiceS2S-R-08 — the same person exists as two profiles
FTD count far higher than expected in week oneS2S-R-17 — existing players' deposits are landing as first deposits
Events arrive from stagingS2S-O-06 — one key is serving both environments

If every rule passes and the numbers are still wrong, stop and send your account manager the eventId and timestamp of a specific event that behaved unexpectedly. One traceable example resolves faster than a description of the symptom.

After go-live: changes that require a re-check ​

ChangeImpactRe-validate
Rotating the API keyEvery request fails the moment the old key is disabledS2S-R-01, S2S-R-03
Adding events to move Basic → FullNew names may not match the catalog, may be subscription-gated, and each has its own required fieldsS2S-R-04, S2S-R-11, S2S-R-14, S2S-R-15
Changing how account IDs are generatedSilently splits every user profileS2S-R-08
Adding a new domain or ProductEvents may land on the wrong Product, and a new Product has no deposit historyS2S-R-01, S2S-R-10, S2S-R-17
Changing payment provider or cashier flowThe deposit event may move, duplicate or stop, and context.transaction_id pairing can breakS2S-R-10, S2S-R-15, S2S-O-02
Server migration or new regionClock skew and forwarded-IP handling both changeS2S-R-06, S2S-R-09
Adding a mobile app with an MMPA third ID must line up with the other twoS2S-R-08
Upgrading to a new API versionEndpoint paths changeS2S-R-02

Make two of these automatic

A test that asserts your deposit handler returns 202, and one that asserts the ID you send matches the ID the Web Tracker sends, will catch the two most expensive failures on this page before they reach production.

Agencies ​

  • The advertiser generates and owns the API key. An agency should not hold it, because it authenticates writes to the advertiser's data.
  • If the agency runs the campaigns, send the event list and tier to the agency as well — they choose the optimisation goal, and they need to know what it can be set to.
  • The advertiser's developer still owns the integration. Agencies cannot fix a S2S-R-08 mismatch from the campaign side.

Next steps ​