Docs
Go live
Everything you built against the test environment works the same way live. This checklist covers what is different.
Before you start
- Plan. Live keys need the Starter plan or above. On the free Test plan, creating a live key is refused (
403 plan_required). The dashboard's Plan & billing page shows your plan. - Store sales. Your fee is measured from verified store sales, web sales you declare, bonus coins above a 20% allowance and coins spent on gifts that no sale accounts for (the web spending floor), so verify every live store purchase before you credit it. Every credit names its kind (
receipt_id,price+currency, orbonus: true); a credit without one is400 sale_kind_required, on test too, so check your integration in test first (How your fee is measured).
Checklist
- Create a live key in the dashboard (switch the environment to Live). It is shown once. Store it in your server's secret manager, not in code.
- Switch your server to the live key and keep the test key for your test deployment. A live key never sees test data and the other way round: there is nothing to migrate, and users, balances and gifts start empty.
- Build the live gift catalog. Each environment has its own catalog. A new project starts with both catalogs empty: add a ready-made set or your own gifts and prices in the Live environment too, with the same gift ids your app expects.
- Create the live webhook endpoint. Endpoints belong to one environment: add your production URL for Live, copy its secret into your server and check a test event. Make sure your handler verifies the signature and ignores repeated event ids (Webhooks).
- Verify store purchases and credit them with the receipt. On live, an App Store or Google Play sale is a credit with the
receipt_idfromPOST /v1/receipts/verify(the price comes from the store). For Google Play, give the service account the View financial data permission in Play Console: on live a receipt without its price is not credited (422 price_missing). A sale in your own web shop is a credit withpriceandcurrency; free coins are a credit withbonus: trueand neither (How your fee is measured, Receipt validation). - Check your credit path with a real small purchase: a unique
referenceper purchase, a freshIdempotency-Keyper request, the same key on retries (Idempotency). - Mint client tokens per signed-in user from your backend with the live key, and handle
401 invalid_client_tokenby fetching a new token (Client tokens). - Handle errors the way users should see them:
insufficient_balanceopens your coin store,429backs off (Errors, Rate limits). - Remove test keys from production configuration. Revoke any key that was ever pasted into a chat, a ticket or a repository.
- Know your limits. Live has no test caps (50 users, 5,000 operations a month). The request limit per project environment follows your plan: 300, 1,000 or 10,000 requests per 10 seconds on Starter, Growth and Scale.
- Gift rooms (live gift events for viewers) need a paid plan: up to 1,000 viewers per room on Starter, 5,000 on Growth, 20,000 on Scale (more on request). Test rooms work on every plan with up to 20 viewers (Gift rooms).
- Store notifications are optional. Turn them on so refunds are reported to you and subtracted from the fee (Receipt validation).
- Privacy. Make sure you can delete a user from your own deletion flow (Users and privacy), and that your own privacy notice covers the data you send us.
What can stop live
We may suspend the live environment (your test environment and data stay) if an invoice stays
unpaid 7 days after we asked you to pay it, or if you report your sales incorrectly (for example store sales credited without their receipt, or a web-sale price below what your user paid). We
tell you what we found and give you 7 days to correct it, unless it repeats an earlier case. While
suspended, your secret key can still read and delete users, but everything else, including all
app traffic, answers 403 project_suspended. The rules are in the Terms (section 11).
Support and status
Write to support@giftingstack.com and include the
request_id of a failing call. This address is also the contact for service status and for security reports.
Questions or something unclear? support@giftingstack.com.