> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pcnaid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Abandoned Cart Pro architecture

> Runtime, data flow, and integration surface for the Abandoned Cart Pro Shopify app.

# 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](https://docs.pcnaid.com/nodes/shopify/abandoned-cart-pro/developer/api/index.md) for the externally reachable surface, the [webhooks reference](https://docs.pcnaid.com/nodes/shopify/abandoned-cart-pro/developer/webhooks/index.md) for outbound events, and the [merchant guides](https://docs.pcnaid.com/nodes/shopify/abandoned-cart-pro/merchant/guides/index.md) for the store-facing workflow.

[Pcnaid Documentation](https://docs.pcnaid.com/namespace/index.md) › [Shopify Ecosystem](https://docs.pcnaid.com/hubs/shopify-ecosystem/index.md) › [Abandoned Cart Pro](https://docs.pcnaid.com/nodes/shopify/abandoned-cart-pro/index.md) › [Developer](https://docs.pcnaid.com/nodes/shopify/abandoned-cart-pro/developer/index)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.