Go-live checklist
Work through this before switching hosts. Items marked blocking will cause a production incident if missed.
Credentials and access
- Blocking — Production
CHANNELIDissued, and distinct from your UAT value if they differ - Blocking — Production key pair generated, separate from UAT
- Blocking — Your production certificate exchanged with Cheggout
- Blocking — Cheggout's production certificate loaded into your configuration
- Blocking — Production egress IPs whitelisted, including any NAT or load-balancer addresses
- Production
APP_KEY/SEC_KEYissued, if you use the Deals Store - All secrets stored in a secret manager, not in configuration files or images
- UAT credentials cannot reach production, and vice versa
Configuration
- Blocking — Every host is environment-configurable, not hardcoded
- Production hosts confirmed per product line — see Environments
- SDK build or widget script pinned to a known version
- Hosted launch URLs confirmed with Cheggout, if you use a microsite
- A config change can be deployed without an app release
Authentication
- Blocking — Signing verified end to end against production credentials in a smoke test
- Response signature verification enabled
- Unsigned failure bodies handled without throwing
- Reference token refreshed on a schedule with a margin, not per request
- Token refresh is single-flight
-
401triggers one re-mint and one retry, then fails cleanly - No token, key or secret appears in any client, log or URL
Identity
- Blocking —
virtualIdderived from your authenticated session, never from client input -
virtualIdcontains no personal data -
virtualIdis stable and never reassigned -
extTransactionIdis globally unique, persisted, and reconcilable to a real transaction
Per module
Scratch cards
- Blocking — Reveal responses persisted before rendering
- Empty
rewardsrenders nothing and raises no alert -
BETTER LUCK NEXT TIMEhas a designed UI state - Both
couponTypevariants render correctly - Reveal timeouts reconcile via reward history rather than retrying
- Card issuance happens from your backend after transaction verification
Deals and coupons
- Blocking — Coins burned before delivery is requested
- Blocking — Every delivery failure path retries with the same reference or refunds
- Catalogue cached with a scheduled refresh
- Inventory checked within its TTL before the buy action
- Coupons persisted at delivery
- Reconciliation job runs against your delivery ledger
Marketplace
- Session minted only after your own authentication
-
virtualIdandsessionIdpassed together - Return handshake behaves correctly from both back and home
- Deep payment relaunch tested with a real payment result, if applicable
Advertisement
- Placement IDs confirmed for production
- Pre-login and logged-in states both handled
- Empty placement responses degrade gracefully
Tracking
- Blocking — Impressions fire when items become visible
- Blocking — Clicks fire on tap or scratch
- Copy and redeem tracking fire where the reward provides them
- Tracking failures do not block the user journey
- Fire rates are observable in your monitoring
Tracking is how attribution, reporting and settlement work. Verify it explicitly rather than assuming it.
Error handling
- All four response shapes parse without throwing
- Business "no" outcomes are not treated as errors
- Unrecognised bodies are logged with the endpoint and
extTransactionId, then fail safely - No error path leaves a user with burned coins and no coupon
- User-facing messages are written for the failure states, not just the happy path
Security
-
Authorizationheaders redacted in logs - No credentials in source control, images or client bundles
- Rewards issued server-side after verification
- Alerting on signature-failure and auth-failure rates
- Incident contact and rotation path agreed with Cheggout
Operations
- Named Cheggout technical contact and escalation path agreed
- Expected peak volumes shared with Cheggout — TBD no published rate limits
- Monitoring in place for latency, error rate, tracking fire rate and reward issuance rate
- Rollback plan documented and tested
- Reconciliation process defined and owned
- The SDK build, widget build and document revision you certified against are recorded
What Cheggout needs from you
Confirm these are complete on their side before switching:
- Production campaigns configured for your channel
- Trigger event codes registered
- Placement IDs issued
- Production IP whitelist applied
- Certificates exchanged in both directions
- Hosted launch URLs provisioned, if applicable
Final smoke test
In production, before opening traffic:
- Mint a reference token.
- Create a card for a test user against a real transaction.
- Confirm the impression fired.
- Reveal it and confirm the reward persists.
- Confirm the click fired.
- Check the card appears in reward history.
- If you use deals: read the catalogue, check inventory, deliver one coupon, confirm it appears in the user's coupons.