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 GraphQLabandonedCheckouts 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
draftOrderInvoiceSendmutation. - 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
POSTrequests to a merchant-configured HTTPS endpoint. - Public read-only API — per-shop Bearer-key access to read-only recovery data.