Abandoned Cart Pro API overview
This page documents the endpoints that are reachable from outside Shopify admin. All Shopify Admin calls the app makes use GraphQL API2026-01. The following routes are the external surface; other /app/* routes require an authenticated embedded admin session.
Health check
GET /healthz verifies PostgreSQL connectivity before returning HTTP 200 and reports the served commit SHA. It needs no authentication.
APP_ORIGIN with your deployed HTTPS origin, without a trailing slash.
Public read-only API
Available to Advanced merchants. Authenticate withAuthorization: Bearer <publicApiKey> and pass ?shop=<shop.myshopify.com>&resource=<name>. The key is generated in Settings and shown once. All reads are scoped to the shop and fail closed when the shop is not on Advanced or has no key.
Unknown resources return HTTP 400 with “Unknown resource. Use overview, inbox, emails, or conversions.” A missing
shop returns HTTP 400; invalid or unauthorized keys return the authentication error and status.
Web pixel event ingest
POST /api/pixel receives storefront cart and checkout events. The edge credentials are the shop domain and a per-shop pixel token. The app validates the *.myshopify.com shop syntax, verifies the token, and writes inside that shop’s context. Send JSON with shop, token, and eventName; optional clientId and payload fields are accepted. The endpoint responds with CORS headers and accepts OPTIONS preflight.
Unsubscribe
GET /unsubscribe/:token handles one-click unsubscribe. The token is an HMAC-authenticated (shop, email) value; suppression runs inside the decoded shop context. Invalid tokens do not establish a database tenant.
Authentication model
- Embedded admin routes use
authenticate.adminand derive the shop from the authenticated session. - Webhook deliveries are verified by the Shopify SDK (
authenticate.webhook). - The public API authenticates a rotated per-shop Bearer key.
- The pixel endpoint verifies a per-shop token before entering the shop context.