> For the complete documentation index, see [llms.txt](https://docs.tryterra.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tryterra.co/vantage-api-docs/important-information/going-to-production.md).

# Going to production

Sandbox and production are separate environments with separate access: your credentials are enabled for sandbox first, and production is enabled when you are ready to launch (via your Terra contact). Before flipping your integration to `https://vantage.tryterra.co`, walk this checklist.

## Access and configuration

* [ ] **Production access enabled** - confirm with your Terra contact that your account is enabled for production ordering. Sandbox access alone does not open production.
* [ ] **Production webhook URL registered** - sandbox and production hold **separate** webhook URLs. Register the production one: `PATCH /api/v1/clients/webhook-url` against `vantage.tryterra.co`, and confirm with `GET /api/v1/clients/webhook-url`.
* [ ] **Base URL switched everywhere** - audit for hard-coded `vantage-sandbox.tryterra.co` references.

## Integration behavior

* [ ] **Signature verification passes in production** - same signing secret and scheme as sandbox; confirm your first production webhook verifies.
* [ ] **No reliance on sandbox-only behavior:**
  * The **simulate endpoint returns `403` in production** - make sure no product code path calls it.
  * `supplier_item_id` is **absent from production webhook payloads** - if your activation UX needs the kit ID, read it from `GET /api/v1/orders/{orderID}` (`items[].supplier_item_id`) instead.
  * Sandbox auto-generates results on a timer; production results take real-world time (days). Make sure nothing times out waiting.
* [ ] **Duplicate-order protection** - production orders cost real money; ensure ambiguous failures are reconciled before retrying ([Best practices](/vantage-api-docs/documentation/best-practices.md#placing-orders)).
* [ ] **Failure paths built** - `results.sample_rejected` and `results.lab_processing_error` need a real user-facing flow (replacement kit, support contact) in production.

## Compliance

* [ ] **Acknowledgment flow live and user-triggered** - results must be acknowledged by an explicit end-user action before patients can access them; unacknowledged results shift liability to you and escalations have an `acknowledgment_due_by` deadline ([Acknowledging Results](/vantage-api-docs/important-information/acknowledging-results.md)).
* [ ] **Escalation handling** - a plan (and a monitored alerting path in your systems) for `results.escalation_raised` events, including out-of-hours.

## Operations

* [ ] **Monitoring wired up** - watch `GET /api/v1/overview` (webhook failures, missing results) and check `GET /api/v1/webhook-deliveries?outcome=failed` when something looks off ([Monitoring and debugging](/vantage-api-docs/documentation/monitoring.md)).
* [ ] **Reconciliation job scheduled** - a periodic sweep of `GET /api/v1/orders?missing=true` and unacknowledged ready results ([Best practices](/vantage-api-docs/documentation/best-practices.md#webhook-handling)).
* [ ] **Support runbook** - your team knows to quote `order_id` / `order_item_id` / `event_id` (all strings) when contacting Terra support.
