Skip to main content

Abandoned Cart Pro architecture

Runtime

Abandoned Cart Pro runs on Node.js with React Router and PostgreSQL through Prisma. A scheduled job handles reminder sequences and follow-up work. The embedded admin is built from native Shopify Polaris web components (s-*) and App Bridge, with no bundled Polaris React package. All Shopify Admin calls use GraphQL API 2026-01.

Product data flow

The app reads abandoned checkouts through the Shopify Admin GraphQL abandonedCheckouts connection. Completed checkouts are filtered out before display. Conversion runs a conservative claim, validate, and create pipeline: it claims a ConversionLog idempotency row, validates the draft order total against the checkout within a one-cent tolerance using draftOrderCalculate, then calls draftOrderCreate or draftOrderUpdate. A checkout is never double-converted. Recovery templates and flows are stored as Shopify metaobjects, and customer recovery preferences are stored as customer metafields. Recovery emails run through a shared consent, suppression, and idempotency engine.

Components

  • Web app — React Router routes for the embedded admin (/app/*), authentication (/auth/*), public endpoints (/api/*), webhooks (/webhooks), and a health check (/healthz).
  • Scheduler job — the shared application image run as a scheduled process for reminder sequences, orphan-draft sweeps, and B2B quote and invoice follow-up.
  • Shopify Admin GraphQL — abandoned checkout reads and draft order conversion.
  • PostgreSQL via Prisma — sessions, conversion records, recovery email records, integration settings, and privacy records.

Extensions

  • Web pixel extension — a storefront pixel that posts cart and checkout events to the app’s pixel endpoint.
  • Customer segment action extension — an admin action on a Shopify customer segment that applies recovery email and SMS/WhatsApp consent metafields to the segment’s members.

Integrations

  • Native Shopify email — recovery via Shopify’s draftOrderInvoiceSend mutation.
  • Custom-branded email — the app renders branded email and sends it through the app’s managed sending infrastructure.
  • Klaviyo — forwards recovery events when a merchant-provided private API key is configured.
  • Outbound webhooks — signed recovery-event POST requests to a merchant-configured HTTPS endpoint.
  • Public read-only API — per-shop Bearer-key access to read-only recovery data.

Interfaces

See the API overview for the externally reachable surface, the webhooks reference for outbound events, and the merchant guides for the store-facing workflow. Pcnaid Documentation › Shopify Ecosystem › Abandoned Cart Pro › Developer