Cart Recovery That Stops After Purchase by Ever F.Cart Recovery That Stops After Purchase by Ever F.

Cart Recovery That Stops After Purchase

Ever  F.

Ever F.

THE PROOF
The controlled run delivered all three emails. The first two used no discount. The third created a one use Shopify code for 10 percent off with a 48 hour expiry.
Shopify test order #1002 used that code. The matching abandoned checkout reported a completed purchase and $47.60 in Shopify test recovered value.
I ran the dispatcher again after the purchase. It stopped at Update Recovered Before Copy. It never reached copy generation, discount creation, rendering, or Gmail.
The workflow reads the exact Shopify checkout before it does any downstream work.
The workflow reads the exact Shopify checkout before it does any downstream work.
Once the checkout is complete, the cart leaves the send path.
Once the checkout is complete, the cart leaves the send path.
The intake workflow removes duplicate checkouts before saving the current record.
The intake workflow removes duplicate checkouts before saving the current record.
THE PROBLEM
An abandoned cart is not permission to keep emailing forever. A fixed sequence can discount too early or send an awkward reminder after the customer has paid.
WHAT I BUILT
I held the discount until the third email. A shopper who would have returned after the first reminder does not need to be paid to come back.
I matched recovery to Shopify's exact AbandonedCheckout identity instead of the customer's email. That takes more state, but it ties the stop decision to the checkout that started the sequence. PostgreSQL prevents duplicate work, and Shopify is checked before copy, before Gmail, and before a cart can be marked lost.
WHAT BROKE DURING TESTING
The first purchase suppression test failed. In n8n 2.30.5, Shopify returned a raw HTTP response object. The workflow missed the completed checkout and sent one first email.
I changed the request to n8n's native JSON body mode and ran the isolated check again. It stopped on recovered. The full dispatcher then stopped at the same point before AI or Gmail. That failed send is not counted as a successful suppression test.
WHAT PASSED
• All three planned emails arrived. • Emails one and two contained no discount. • Email three used the verified code LEAF10-YR6G9BWG. • Shopify recorded one redemption and $47.60 in test recovered value. • Invalid model output retried once, then used approved fallback copy. • A Shopify failure stopped the sequence without sending or advancing state.
LIMITS
This runs against a Shopify development store and stays inactive outside testing. Gmail and Google Sheets credential failures were checked in the workflow design but were not injected into the live demo. A client launch still needs the store's consent rules, sender domain, schedule, monitoring owner, and discount policy.
BUILT WITH
n8n, Shopify Admin GraphQL, PostgreSQL, Gmail, Google Sheets, and OpenRouter.
STARTING PRICE
Cart Recovery System: $900 plus $150 per month. The final quote depends on order volume, consent rules, sending setup, and discount policy.
Fictional portfolio demonstration. The $47.60 value and controlled recovery rate are Shopify test evidence. They are not client results, revenue claims, or forecasts.
Like this project

Posted Jul 21, 2026

The sequence holds the discount until email three and checks the exact Shopify checkout before every send.