API Docs

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:

FlagLives onWhat it does
is_test_modecustom_integrations rowThe big switch. When true, every customer, order, and sale created via the v1 API is stamped is_test=true.
is_testEach created row (customer / order / sale)Inherited from is_test_mode at creation time. Filters dashboards, reports, and analytics views.
show_test_data_in_dashboardsuser_profiles rowPer-user UI override. When true, the dashboard shows test rows alongside live ones with a TEST badge.

Defaults

  • is_test_mode defaults to true on a freshly-created integration. We assume you're going to test before going live.
  • show_test_data_in_dashboards defaults to false. Test data stays invisible until you opt in.
  • Toggle both from Custom Integration → Settings → Activation & mode.

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 while is_test_mode was true.
  • livemode: true: fired while is_test_mode was false.

Receivers should branch on livemode if they have separate sandbox vs production environments downstream, e.g. a CRM with a test workspace.

Going live

  1. Run your full integration test suite against test mode. Confirm Deliveries are all delivered with HTTP 2xx.
  2. Verify webhook signatures (see Webhooks). Don't skip this. Once live, untrusted POSTs become real bugs.
  3. From Settings, flip Test mode off.
  4. The next API request creates non-test rows. The yellow banner disappears. The status badge changes from TEST MODE to LIVE.

What test rows look like in your DB

Test rows are real rows. They don't live in a separate table. Switching 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/listings always 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.