See it, then simulate it
For Woo, Webflow, and custom stacks. Watch the flow, then simulate checkout + webhooks.
See it in ChatGPT
Instant Checkout – UX demo
Short overview of the buyer flow inside ChatGPT.
Behind the scenes
Orders & refunds – 90s overview
How webhooks and idempotency fit your stack.
Acceptance checklist
- Webhook verifies HMAC signature
- Duplicate deliveries handled (idempotency)
- Order + refund processed and persisted
- Monitoring/alerts receive a status ping
Run the demo
Simulated checkout & webhooks
Click “Run demo” to see the step-by-step flow…
This is a simulation that runs entirely in your browser (no server). It shows the events your store would receive: order_created → order_updated (confirmed) → order_updated (refund).
What’s included
- Canonical JSON + demo signature (Base64) — simulation
- Idempotent retries — duplicate delivery shown
- Basic monitoring hooks — status pings
- Buyer-intent copy — example prompts
Next step
Like what you see? We’ll map your top SKUs and wire orders/refunds to your stack.
What you need
- Store URL + stack (Woo/Webflow/custom)
- Top 3–5 SKUs (variants, images, price)
- Returns window & shipping policy
- Webhook URLs (staging + production)
- Tech contact for endpoint ownership
What we simulate
order_created
with cart + totalsorder_updated
(confirmed) with payment_referenceorder_updated
(refund) with refund_reference- Demo signature (Base64) + idempotent retries
- Basic health pings for monitoring
Resources
Verify signature (HMAC) — Node
const crypto = require('crypto');
function verifySig(rawBody, headerSig, secret){
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(headerSig));
}
Verify signature — Python
import hmac, hashlib
def verify_sig(raw_body: bytes, header_sig: str, secret: str) -> bool:
expected = 'sha256=' + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, header_sig)
Retry & idempotency — pseudo
# if idem_key exists:
# if stored_hash == sha256(raw_body): return 200 same response
# else: return 409 conflict
# else:
# process(), store {idem_key: sha256(raw_body), response}, return 200