← Back to selected work

Project record / 01

Cart recovery / DTC Shopify

Cart Recovery That Stops After Purchase

The sequence sends up to three emails, but it checks the original Shopify checkout before every step. If the shopper has already paid, the work stops.

Problem

An abandoned checkout does not mean the customer should keep getting email. A fixed sequence can keep running after purchase, offer a discount too soon, or match the wrong cart by email address.

That wastes margin and makes the store look careless.

Solution and trade-off

I saved the discount for email three. If the first reminder is enough, the store does not give away margin it did not need to.

Recovery is tied to Shopify’s exact abandoned-checkout identity, not just the customer’s email address. It takes more state, but the stop decision now belongs to the checkout that started the sequence.

PostgreSQL holds the sequence state and prevents duplicate work. The workflow checks Shopify before it writes copy, before Gmail sends, and before it marks a cart lost.

How it was tested

The first purchase-suppression test failed. n8n 2.30.5 returned the Shopify response as a raw HTTP object, so the workflow missed the completed checkout and sent the first email.

I switched the request to native JSON body mode. After that, both the isolated check and the full dispatcher stopped on recovered before AI or Gmail. I kept the failed send out of the successful test count.

What passed

  • All three planned emails arrived in the controlled sequence.
  • Emails one and two contained no discount. Email three used a verified one-use code.
  • Shopify recorded one redemption and $47.60 in controlled test recovered value.
  • Invalid model output retried once, then used approved fallback copy.
  • A Shopify failure stopped the sequence without sending or advancing state.

3/3 TOUCHES DELIVERED · $47.60 SHOPIFY TEST VALUE · POST-PURCHASE SEND BLOCKED

Limits

This runs against a Shopify development store and stays inactive outside testing. I designed for Gmail and Google Sheets credential failures but did not inject them into the live demo.

A client launch would still need the store’s consent rules, sender domain, schedule, monitoring owner, discount policy, and deliverability setup.

Starting price / USD

Cart Recovery System$900+ $150/month

Final scope depends on order volume, consent rules, sending setup, and discount policy.

Built with n8n, Shopify Admin GraphQL, PostgreSQL, Gmail, Google Sheets, OpenRouter

Fictional portfolio demonstration. The $47.60 value is controlled Shopify test evidence, not a client result, revenue claim, or forecast.

Start here

Have a process you are tired of chasing?

Message me on Contra