Create 17TRACK Instance
POST/api/integrations/17track/instances
Persist the singleton 17TRACK instance for this tenant. The WebhookRoutable trait mints a unique wh_* token as part of the create flow — the resulting webhook URL is returned in the response so it can be copied into the tenant's 17TRACK dashboard.
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Required Fields:
name— Display name (string, max 255 chars)api_key— 17TRACK API key (string, 8–255 chars)
Optional Fields:
auto_track— Per-entity auto-track flags (object). When omitted or partial, every missing key defaults totrue("all on" happy path):auto_track.sales_order_fulfillments(boolean)auto_track.inbound_shipments(boolean)auto_track.warehouse_transfer_shipments(boolean)auto_track.rmas(boolean)auto_track.vendor_credit_shipments(boolean)
Responses:
201 Created— Instance persisted; payload includes the freshly mintedwebhook_url.422 Unprocessable Entity— Validation failure OR a 17TRACK instance already exists for this tenant (the integration is a singleton).
Sales-channel scoping (auto_track_channels) — optional. default is all (track everything not explicitly disabled) or none (track nothing until explicitly enabled). channels is an optional object keyed by sales-channel id; each entry may carry a boolean enabled flag and/or a sub_channels object keyed by sub-channel id (booleans). Resolution is most-specific-first: a sub_channels override wins, then the channel enabled flag, then default. Fulfillment type is modeled as a sub-channel (e.g. Amazon FBA vs merchant-fulfilled, or Shopify Web vs POS), so excluding high-volume marketplace-fulfilled shipments is just disabling that sub-channel. Only sales order fulfillments are scoped; other shipment types are unaffected. Validation: default must be all or none (422 otherwise).
Request
Responses
- 201
- 401
- 403
- 422
- 429
Created
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.