ConnectWiz + API & Webhooks
Live integrationThe API we sell is the API we use
The whole platform is specified in one OpenAPI contract that our own panel and mobile app are generated from — no shadow endpoints, no doc drift. On top of it: scoped Commerce API keys, secured webhook triggers, and flows that call your systems.
Developers
What it does — precisely
One contract of record
A single OpenAPI 3 document specifies the platform; our own TypeScript clients generate from it — the docs can’t drift from reality because reality is built from the docs.
Commerce API keys
Tenant-issued keys with explicit scopes — catalog read, orders read, orders write — power your own storefront or app on the same order engine, with prices always resolved server-side.
Inbound webhooks, secured
Every flow webhook trigger has its own URL and secret, HMAC verification over the raw body and replay protection. A payload can name a person; it can never steer the flow’s internals.
Outbound via flows
The REST step calls your systems at exactly the moments you draw on the canvas — order placed, consent granted, booking made.
Under the hood
API design positions, stated
Prices never come from the client
An order request says what and how many — name and price are read from the catalog at that moment, server-side, and written onto the line as a snapshot. A tampered request can’t invent a discount.
Capabilities before calls
Each integration surface publishes a capability contract — can it match by phone, list guest orders, create orders? — and calling past a declared "no" throws immediately instead of failing somewhere deep.
Errors that mean something
The transport distinguishes "unauthorized" from "service down" — so "the shop is unreachable" is never rendered as "this customer never bought anything". Named errors are the difference between an API and a guessing game.
Replay-proof webhooks
Every inbound event claims a unique key in an idempotency ledger before processing — a retried or replayed delivery dies at the database layer, not in your automation.
Keys hashed, secrets scoped
API keys are stored as hashes with only the hash and scopes resolvable at the door — a leaked database row names no workspace and unlocks nothing beyond its scopes.
Drafts and confirmations are explicit
Order creation takes an explicit confirm parameter — the public API defaults to confirmed, panel flows can stage drafts — so "is this real?" is a field, not a convention.
Setup
How it connects
Issue a key
Create a scoped Commerce API key in the panel; revoke it just as easily.
Wire a webhook
Create a flow with a webhook trigger; sign requests with its secret.
Call back out
Add REST steps where your systems need to hear about it.
Better together
What it composes with
Flows
Webhook triggers start flows; REST steps call your systems back at the moments you draw — inbound and outbound automation share one canvas.
Commerce
The catalog and order engine behind the API is the same one the chat shop and AI use — one order truth, four doors.
Your own storefront
Teams run headless storefronts on the Commerce API today — the path the Shopify page honestly recommends while the native connector is built.
Security & guarantees
The boring guarantees
HMAC over the raw body
Webhook verification signs the raw request body with a per-trigger secret and compares in constant time — parsing happens only after proof.
Payloads are data, never commands
A webhook payload can reference a person; it can never steer a flow’s internals, rewrite prompts or invoke tools. The boundary between data and instructions is architectural, not behavioral.
Rate limits on every door
Public endpoints ride standard throttling, and read limits are clamped server-side — a misbehaving client degrades itself, not the platform.
The honest fine print
Boundaries, stated
No firehose yet
A generic subscribe-to-everything webhook feed isn’t built — outbound events happen through flow steps today. Stated here, so no sales call has to imply otherwise.
Bounded reads, by design
Reads return up to 100 rows with cursoring — the API is built for operational integration, not bulk export. Bulk needs are a conversation, not a loophole.
Connected honestly beats connected loudly.
Every integration here is described by what it really does — direction, ownership and limits included.