Go-live checklist
Review is what gets your app listed in the merchant app catalogue, where
merchants browse and install. It is not what unlocks the API: your credentials
work from the moment you create them, and a draft app already runs the full
production flow for any merchant you send a consent URL to — see
Testing your integration.
The review is not a formality, but it is not a mystery either: everything it checks is listed here, and everything is verifiable by you before you submit.
Quality bar
Section titled “Quality bar”These are the standards production integrations are held to, at review time and continuously afterwards:
| Metric | Requirement |
|---|---|
| Order injection success | ≥ 99% of order.created deliveries acknowledged with 2xx on the first or second attempt |
| Time to accept | Orders accepted or denied within 5 minutes of order.created |
| Webhook acknowledgement | 2xx returned within the 10-second delivery timeout |
| Menu accuracy | Menu on Quiqqy matches the POS; availability changes reflected within 60 seconds |
| Denial hygiene | Denials use structured reasons; OTHER is the exception, not the norm |
Certification checklist
Section titled “Certification checklist”-
Webhook endpoint
Section titled “Webhook endpoint”- HTTPS with a valid, non-self-signed TLS certificate; no redirects.
X-Quiqqy-Signatureverified against the raw body with a constant-time compare; requests with a bad signature rejected — demonstrated with the console’s test-delivery button.- Deliveries deduped on
X-Quiqqy-Delivery-Id. - Responds
2xxin under 10 seconds with processing done asynchronously.
-
Store onboarding
Section titled “Store onboarding”- Full signup_url → consent → token → integrate-store flow completed against a store you own.
stateparameter used and verified on the OAuth callback.webhook_secretfrom the integrate-store response stored server-side.- Token refresh working;
auth.consent_revokedhandled by stopping sync and prompting for re-consent, not by retrying in a loop.
-
Menu sync
Section titled “Menu sync”- Full menu pushed with stable
external_ids on every item, variant, category and modifier group. - The
202async path handled: job polled to completion, failures surfaced. action_requiredwithaction: "menu_push"answered with a fresh full push.- Item availability updates wired to the POS’s 86 flow.
- Full menu pushed with stable
-
Order handling
Section titled “Order handling”- Test orders of each type (delivery, pickup, with modifiers and variants)
accepted and driven through
confirmed → preparing → readyto completion. - Order lines mapped by
external_id, with aproduct_namefallback for lines your app did not sync. - Denials sent with each structured reason at least once, including
ITEM_OUT_OF_STOCKwithitems[]. - Prep time set via
estimated_prep_time_minuteswhere the POS knows it.
- Test orders of each type (delivery, pickup, with modifiers and variants)
accepted and driven through
-
Failure handling
Section titled “Failure handling”- Retries with backoff and jitter on
429/5xx;Retry-Afterhonoured. 4xxresponses not retried blindly.- POS-offline behaviour defined: orders are denied with
POS_OFFLINEor the store is paused — they do not silently vanish.
- Retries with backoff and jitter on
The review process
Section titled “The review process”Submit from the console: Apps → your app → Submit for review. The submission asks for a support contact (email reachable by Quiqqy operations), a short demo video or a store the reviewer can inspect, and confirmation of each checklist section.
A reviewer replays the critical paths against your integration — signature rejection, order accept, a denial, a menu push. Reviews are typically answered within five business days. If changes are requested, the notes appear on the app’s overview page; fix and resubmit.
Approval moves the app to beta, where you can install it for a chosen set of merchants (optionally restricted to an allow-list) before opening it up. From there you publish it yourself — published lists it in the catalogue for every merchant of the matching audience. Approval is spent once: after it, you move freely between beta, published and unpublished with no re-review, so unpublishing stays an instant self-service switch.
Unpublishing only delists. It does not cut off merchants who already installed your app, and it does not change anything about the API calls your integration makes.