Test mode
Test mode lets you exercise every endpoint and webhook against the same production database your live integration uses. The created data gets tagged so it stays out of dashboards, reports, and analytics until you flip a separate switch to surface it.
Three flags
Three booleans interact to keep test data invisible unless you ask for it:
| Flag | Lives on | What it does |
|---|---|---|
is_test_mode | custom_integrations row | The big switch. When true, every customer, order, and sale created via the v1 API is stamped is_test=true. |
is_test | Each created row (customer / order / sale) | Inherited from is_test_mode at creation time. Filters dashboards, reports, and analytics views. |
show_test_data_in_dashboards | user_profiles row | Per-user UI override. When true, the dashboard shows test rows alongside live ones with a TEST badge. |
Defaults
is_test_modedefaults totrueon a freshly-created integration. We assume you're going to test before going live.show_test_data_in_dashboardsdefaults tofalse. Test data stays invisible until you opt in.- Toggle both from Custom Integration → Settings → Activation & mode.
The yellow banner
While is_test_mode is true, every dealer page shows a yellow banner reading:
Custom Integration is in test mode. Test orders, sales, and clients are hidden from your dashboard.
That banner is the thing that stops you accidentally leaving test mode on after launch.
Webhooks in test mode
Webhooks fire normally in test mode. The envelope's livemode field reflects the integration state:
livemode: false: fired whileis_test_modewastrue.livemode: true: fired whileis_test_modewasfalse.
Receivers should branch on livemode if they have separate sandbox vs production environments downstream, e.g. a CRM with a test workspace.
Going live
- Run your full integration test suite against test mode. Confirm Deliveries are all
deliveredwith HTTP 2xx. - Verify webhook signatures (see Webhooks). Don't skip this. Once live, untrusted POSTs become real bugs.
- From Settings, flip Test mode off.
- The next API request creates non-test rows. The yellow banner disappears. The status badge changes from
TEST MODEtoLIVE.
What test rows look like in your DB
is_test_mode off doesn't delete or convert them. They keep their is_test=true tag forever. Clean up manually if you need a pristine dashboard.What test mode does NOT isolate
Test mode is a tag, not a sandbox. The following are shared across live and test:
- Inventory listings.
GET /v1/listingsalways returns your real catalog. There is no test catalog. - API keys and signing secrets. One set per integration.
- Rate limits. Test calls count against the same 600/min cap.
- Webhook URL. Events fire to the same configured URL.
If you need full isolation (separate keys, separate webhook URL, separate inventory), create a second dealer account on a sandbox plan. That's the supported path.