Skip to main content

Integrations

Every credential-backed integration is configured at runtime, through the standalone Super Admin console (apps/superadmin, not linked from anywhere else — bookmark its URL) → 🧩 Integrations. No redeploy needed to go from "not set up" to live once a real account exists.

Secret fields (API keys, webhook secrets, tokens) are AES-GCM encrypted with a SECRET_STORE_KEY Worker secret before they're written to KV — a raw KV read never hands over plaintext credentials. Non-secret fields (merchant ID, which branch a channel posts to, commission %) are stored plain. Every save defaults to sandbox: true.

SlotNeedsStatus
bakongBakong merchant accountBuilt and verified (webhook path uses the BAKONG_WEBHOOK_SECRET env secret, not this slot directly — see the main README for why)
aba_paywayABA PayWay merchant accountBuilt and verified live with test credentials (SHA-512 field-concatenation signing, distinct from Bakong's bearer-token flow)
grabfoodGrabFood partner API accessBuilt and verified live — HMAC webhook, SKU mapping, dedup, KDS push
nham24Nham24 API accessSame pattern as GrabFood
smsAn SMS gateway accountSender abstraction built (ConsoleSms/HttpSms), no customer-facing OTP flow calls it yet
ga4A GA4 propertyBuilt and verified live — gtag.js injected into the customer app when a measurement ID is set
meta_pixelA Meta Pixel IDSame pattern as GA4
sentryA Sentry accountBuilt (Store API POST from the Worker's global error handler), not live-verified — no real Sentry account in this environment

A purchased custom domain (branded URLs instead of *.pages.dev/ *.workers.dev) is Cloudflare DNS configuration only — no code, no SA console slot needed.