Dashboard and merchant tools
Dashboard and merchant tools capabilities for Queek apps: dashboard and merchant API.
Capabilities for dashboard and merchant API. 14 capabilities on this page: 14 available, 0 partly available, 0 not yet available. 1 more is not offered by design.
Each entry says what the capability does, what is missing or worth knowing where that applies, a workaround where there is a gap, and how you reach it. An entry marked Not offered by design says why and what to use instead. Scope names are explained on Merchant API scopes; How to read this catalogue defines the labels.
Dashboard
Merchant alerts (in-app bell)
AvailableApps can page the merchant through the in-app bell with a severity, title and message, a dedupe key that collapses repeats, and a link to the app’s page in the dashboard. Alerts are rate-capped per installation. Delivery is the bell only: there is no push, text, email, per-staff targeting or delivery receipt from apps.
Good to know:
- In-app bell only, on purpose: an app message never triggers push, text or email to the merchant.
- An alert reaches the staff who may see installed apps; an app cannot pick a recipient or learn who read it.
- Each installation is capped per hour, and error-severity alerts per day; past a cap the call answers 429 with Retry-After, and a repeated dedupe key within its window is dropped.
- The bell link opens the app’s own page in the dashboard; an app cannot choose another destination.
Workaround: Use the bell for alerts that can wait for the merchant to open the dashboard. For urgent or targeted messages, the app contacts the merchant itself over its own channel.
- Routes:
POST api/v1/merchant/app/alerts - Scopes:
merchant-app_alerts-create
App details page data
AvailableThe merchant app-details view serves the access table, privacy block, proxy address, extension counts and install timeline for an installed app.
Good to know:
-
Served for active installations only.
-
Routes:
GET api/v1/biz/vendor/app-store/{slug}/details
Embedded app page with session token
AvailableThe dashboard frames the app merchant page in a sandboxed view with short-lived session tokens minted per installation and user.
Good to know:
-
Token lifetime is short; the framed origin is frozen at the install-time grant until an origin change is re-consented.
-
Routes:
POST api/v1/biz/vendor/app-session-token -
Manifest:
extensions.merchant_page_url
Declared app nav and pins
AvailableManifest-declared sidebar entries rendered under the open app, resolved per installation, with per-user per-store pins.
Good to know:
-
Pinning is per the open app; no global pin board.
-
Manifest:
extensions.nav
Dashboard sheet blocks, actions and print
AvailableApps can mount blocks on order and product sheets, an action on order sheets that records an appointment on the order and notifies the app, and a print template in the order print dialog.
Good to know:
- Blocks mount on order and product sheets only, actions on order sheets only, and print on the order print dialog only; there are no other dashboard targets.
- An action runs one effect from a closed list, today
order_appointment; apps cannot define their own effects. - There are no nav badges or unread counts.
Workaround: Deep-link into the embedded app page for any target, effect or badge a sheet mount cannot express.
- Manifest:
dashboard.blocks,dashboard.actions,dashboard.print
Merchant API
Forms and collected records
AvailableApps create and manage their own collected form definitions, submit records under them, and list, read, update and triage records under definitions they own.
Good to know:
- Installation keys can access only records under their own collected definitions; merchant-held and other-installation records are unavailable. Uninstall makes former app records merchant-held. Apps cannot delete records or receive record webhooks.
- A json field keeps numeric-string keys (a map such as 4262: {...} stays a map), but JSON objects are stored unordered: key order is not preserved, an object whose keys are exactly 0, 1, 2… reads back as a list, and an empty object reads back as an empty list.
Workaround: Use the merchant Submissions screen to review merchant-held records; an app can process only its own definitions.
- Routes:
POST api/v1/merchant/records,GET api/v1/merchant/records,GET api/v1/merchant/records/{record},PATCH api/v1/merchant/records/{record} - Scopes:
merchant-collected-definitions-manage,merchant-collected-records-submit,merchant-collected-records-read,merchant-collected-records-update
Shopper text declarations
AvailableInstallation-bound sheet declaring which products take shopper text on a line, and under which of the app’s line_text fields; the label comes from the manifest and a required field is verified at checkout.
Good to know:
-
A key must be a
line_textfield of the extensions the merchant granted; up to 3 fields per product,max_length1 to 500, never above the manifest value (100 when the manifest sets none); 200 products per sheet; the whole sheet is replaced on every call. -
Routes:
PUT api/v1/merchant/app/line-inputs -
Scopes:
merchant-app-requirements-write
Metafields, metaobjects and app data
AvailableStructured per-store config and app data through definitions, values, metaobjects and the installation-owned collected-records path.
Good to know:
-
No app-namespaced convention: colliding keys across apps are possible.
-
Scopes:
merchant-metafields-create,merchant-metaobjects-create
Order status, payment approval and riders
AvailableMove orders through the status machine, manually record qualifying offline payments as received, assign self-delivery riders, and patch shipment and app-namespaced extension fields.
Good to know:
-
Manual approval requires
payment_statusawaiting_confirmation, a method other than online or wallet, and a payment that is not already paid. Cancelled or rejected orders cannot be updated. It records the payment and marks the order paid, does not verify provider receipt, and does not call a provider. Extension writes remain under the installation namespace. -
Routes:
POST api/v1/merchant/orders/{order}/status -
Scopes:
merchant-orders-status-update
Priced add-on groups on products
AvailableStores define priced choice-list groups and attach them to products through 7 Merchant API rows; the product object and products/* webhooks carry them additively under addons (bounded at 20 groups with 20 items each). Add-ons are not variants: a variant axis combines name and values into product variants and its price lives on the variant, while an add-on group carries its own prices.
Good to know:
-
Queek apps author add-on data through these rows; they cannot run pricing logic at cart time.
-
Arbitrary price-rewrite apps (bundles, rule-based pricing) stay unserved: Transform cart lines and bundles is still missing.
-
A product that sells through variants refuses attach with 422; add-on prices ride as-is, outside the customer-price path.
-
Routes:
GET api/v1/merchant/addon-groups,GET api/v1/merchant/addon-groups/{group},POST api/v1/merchant/addon-groups,PATCH api/v1/merchant/addon-groups/{group},DELETE api/v1/merchant/addon-groups/{group},POST api/v1/merchant/products/{product}/addons,DELETE api/v1/merchant/products/{product}/addons/{group} -
Scopes:
merchant-options-read,merchant-options-detail,merchant-options-create,merchant-options-update,merchant-options-delete
Products, variants and images
AvailableList, retrieve, create, replace and delete products with variants and images; bulk publish.
Good to know:
-
Full-body update only; variants and images are partial.
-
The product object carries priced choice-list add-ons under
addons(see Priced add-on groups on products). -
Routes:
GET api/v1/merchant/products -
Scopes:
merchant-items-read,merchant-items-create
Apps read and update their own collected records
AvailableApps can list, read and update collected records under definitions they own.
Good to know:
- Installation keys can access only records under their own collected definitions; merchant-held and other-installation records are unavailable. Uninstall makes former app records merchant-held. Apps cannot delete records or receive record webhooks.
Workaround: Use the merchant Submissions screen to review merchant-held records; an app can process only its own definitions.
- Routes:
GET api/v1/merchant/records,GET api/v1/merchant/records/{record},PATCH api/v1/merchant/records/{record} - Scopes:
merchant-collected-records-read,merchant-collected-records-update
Booking requirements sheet
AvailableInstallation-bound product requirements map declaring which products require line properties under the installation namespace; verified at checkout by the claim guard.
Good to know:
-
Claim binding is installation-scoped; property keys only.
-
Routes:
PUT api/v1/merchant/app/requirements -
Scopes:
merchant-app-requirements-write
Staff directory read
AvailableAn app can list the store staff directory: stable id, display name, role names and an active flag. Contact details, permissions and credentials are never exposed.
Good to know:
-
Read-only and narrow: no email, phone, permissions or roles management; removed staff are never listed; inactive staff are listed with
is_activefalse. -
Routes:
GET team-directory -
Scopes:
merchant-team-directory-read
Active carts
Not offered by designCarts belong to the shopper session. Apps do not read live carts; they see the order once it is placed.
Apps cannot read live carts: carts stay storefront-only, on the anonymous cart session or the customer token. Carts a signed-in customer left unchanged are offered separately as abandoned checkouts.
Workaround: Share the storefront cart URL into the chat and read the converted order through the order webhooks.