One fulfilled test order produced one review request and one final reminder. The next dispatcher run found nothing due and sent nothing.
A genuine two star Judge.me review matched the correct order and product. The system recorded it, sent one recovery email, and created a separate owner alert. The owner alert failed on its first attempt. When I retried it, the customer email was not sent again.
The last reporting run reconciled one order, the two star review, five events, and ten product rules in Google Sheets.
The workflow checks the claimed Shopify order before customer email.
Customer recovery and the owner alert have separate event records.
Orders, events, and product rules sync to separate reporting ranges.
THE PROBLEM
A review request sent too early is easy to ignore. The right wait also depends on the product. Ten days may be enough for a cleanser, while retinol needs longer. Unhappy customers should not be diverted away from the review page that happy customers receive.
WHAT I BUILT
I started the workflow from fulfilled Shopify orders and gave each product its own review and replenishment timing. Every rating keeps the same public Judge.me destination.
A rating from one to three can create a recovery email and an owner alert. I gave those actions separate event records. That adds state, but a failed owner alert can retry without repeating a customer email that already arrived.
HOW I TESTED IT
Execution 66 sent the review request. Execution 67 sent one final reminder. Execution 68 claimed no work and never reached Gmail.
Strict copy validation rejected the model response, so the workflow used approved fallback text. Execution 76 recorded the genuine two star review and sent customer recovery. Execution 83 skipped that completed customer event and sent only the missing owner alert. Execution 86 synchronized the final records to Google Sheets.
I also restarted the VPS. The records survived, and the workflows remained inactive.
WHAT PASSED
• The review request and final reminder each arrived once.
• The genuine review matched the correct customer, order, and product.
• Customer recovery and the owner alert each arrived once.
• Retrying the owner alert created no duplicate customer email.
• Reporting and restart persistence matched the database records.
LIMITS
The full low rating path was tested live. The high rating path passed fixture and code tests rather than a second live order. A client version needs their review provider, sender identity, timing rules, consent policy, and a named person to own recovery.
BUILT WITH
n8n, Shopify Admin GraphQL, Judge.me, PostgreSQL, Gmail, Google Sheets, and OpenRouter.
STARTING PRICE
Review and Retention Engine: $500 plus $99 per month. The final quote depends on catalog size, review provider, product timing, and who handles customer recovery.
Fictional portfolio demonstration. These results come from controlled acceptance testing, not client revenue, conversion data, or a forecast.
Like this project
Posted Jul 21, 2026
Review timing changes by product. Low ratings can start recovery, but every customer keeps the same public review path.