HomeShopify & E-commerceShopify review automation with n8n: auto-request…

Shopify review automation with n8n: auto-request product reviews

Shopify review automation with n8n: auto-request product reviews

New to n8n? Start with our step-by-step setup guide, then come back to build this workflow.









TL;DR: This Shopify review automation n8n build watches for fulfilled orders, waits one week so the product actually arrives, then sends a short personalized review request by Gmail and logs it to Google Sheets. It runs on autopilot, costs almost nothing at real volume, and turns happy buyers into the social proof that sells your next visitor. Grab the ready-made template below and have it live in under ten minutes.

Prefer to skip the setup? Grab the ready-made template → and be running in under 10 minutes.

What it does

Reviews are the cheapest conversion lever a Shopify store has. A product page with a dozen honest reviews converts far better than the same page with none, yet most stores never ask for them in a consistent way. You remember to email a few customers, then a busy week hits and the habit dies.

This workflow removes the habit problem. Every time an order is marked fulfilled in Shopify, n8n quietly starts a timer. Seven days later, when the package has had time to land on the doorstep, it sends one friendly email that names the exact product the customer bought and asks them to leave a quick review. Every request is recorded in a Google Sheet, so you always know who was contacted and when. No reminders for you, no spreadsheet wrangling, no missed customers.

Why it beats the default

Shopify review apps from the app store do this too, but they charge a monthly fee that climbs with your order volume, and they lock the logic inside their dashboard. You cannot change the timing rule, the wording, or where the data goes without paying for a higher tier.

Running it in n8n flips that. You own the timing, the copy, and the data. Want to wait ten days for international orders and four for domestic? That is one extra branch. Want to skip customers who bought a gift card, or only ask buyers who spent over fifty dollars? Add a filter. Because the whole thing lives on your own n8n instance, the marginal cost of each email is effectively zero, and your customer list never leaves your control. For a deeper map of what else you can wire up around your store, see our n8n Shopify automation hub.

What you need

  • A running n8n instance, either n8n Cloud or self-hosted (version 1.0 or newer).
  • A Shopify store on any paid plan, with a custom app that has read access to orders.
  • A Gmail account for sending, connected through the Gmail OAuth2 credential.
  • A Google Sheet to log requests, connected through Google Sheets OAuth2.
  • Optional: an OpenAI API key if you want each email written fresh instead of using a fixed template.

Estimated build time: 30 to 45 minutes from scratch, or under 10 minutes with the template.

How it works at a glance

Six nodes carry an order from the moment it ships to the moment the review request lands in the inbox.

┌───────────────────────────────────────────────────────────────┐
│  SHOPIFY REVIEW REQUEST                                        │
│                                                               │
│  [Shopify Trigger] → [Set fields] → [Wait 7 days]             │
│                                          ↓                    │
│                  [OpenAI: write email] → [Gmail: send]        │
│                                          ↓                    │
│                              [Google Sheets: log row]         │
└───────────────────────────────────────────────────────────────┘
  

Node-by-node list

Here is every node in the workflow and the job it does, top to bottom.

Node Type Job
Shopify Trigger shopifyTrigger Fires when an order is fulfilled
Set fields set Pulls name, email, order number, product title
Wait 7 days wait Pauses until the product has arrived
Write email openAi Drafts a personalized review request
Send email gmail Delivers the message to the customer
Log row googleSheets Records who was contacted and when

Step-by-step build

1 Add the Shopify trigger

Add a Shopify Trigger node and set the topic to orders/fulfilled. Connect your Shopify credential, which you create from a custom app in your Shopify admin under Settings, Apps and sales channels, Develop apps. Give that app read access to orders. n8n registers the webhook automatically, so the moment you mark an order shipped, this node fires with the full order payload.

{
  "order_number": 1043,
  "customer": { "first_name": "Emily", "email": "emily.rodriguez@gmail.com" },
  "line_items": [{ "title": "Cedar & Sage Soy Candle", "quantity": 2 }],
  "fulfillment_status": "fulfilled"
}
💡

Tip: Test with the orders/fulfilled topic, not orders/create. Asking for a review before the box ships is the fastest way to earn a one-star reply.

2 Shape the customer data

Add a Set node to pull the fields you actually need into clean names. This keeps the later nodes readable and protects you from orders that arrive with missing data.

{
  "customer_name": "={{ $json.customer.first_name }}",
  "customer_email": "={{ $json.customer.email }}",
  "order_number": "={{ $json.order_number }}",
  "product_title": "={{ $json.line_items[0].title }}"
}

3 Wait for the product to arrive

Add a Wait node and set it to resume after 7 days. n8n pauses the execution and stores it in the database, then wakes it back up a week later. This is the node that makes the whole thing feel human: the email shows up after the candle is already burning, not while it is still in a truck.

📌

For a store that ships internationally, duplicate this node behind an IF branch and set a longer wait for non-domestic addresses.

4 Write the email with OpenAI

Add an OpenAI node with a chat completion. Feed it the customer name and product title and ask for a short, warm review request, two sentences plus a closing line. Naming the exact product is what lifts reply rates over a generic blast.

Write a friendly two-sentence email asking {{ $json.customer_name }}
to leave a review for the "{{ $json.product_title }}" they bought.
Keep it warm, no hard sell, and end with a thank you.
💡

Tip: Want zero AI cost? Delete this node and write the same two sentences directly in the Gmail body using the customer_name and product_title fields. The workflow runs exactly the same.

5 Send through Gmail

Add a Gmail node set to send a message. Map the To field to customer_email, write a subject like How are you liking your {{ $json.product_title }}?, and drop the OpenAI output into the body. Connect your Gmail OAuth2 credential and the email goes out from your own address.

6 Log it to Google Sheets

Add a Google Sheets node set to append a row. Write the order number, customer email, product title, and the send date. This log is your record of who was asked, and it is the table a dedupe lookup reads from so nobody gets emailed twice.

The data structure

The Google Sheet has one row per review request. Keep the column names exactly as below so the append step maps cleanly.

Column Type Example Description
OrderNumber Number 1043 Shopify order the request belongs to
Email Text emily.rodriguez@gmail.com Recipient of the review request
Product Text Cedar & Sage Soy Candle Product named in the email
SentDate Date June 12, 2026 When the request was sent
Status Text Sent Sent, or Skipped if already contacted

Common mistakes

A few things trip people up the first time they wire this together. The most frequent is mapping the email to the wrong topic, so requests fire on every new order instead of fulfilled ones, and customers get asked to review a product they have not received. Always confirm the trigger reads orders/fulfilled.

The second is forgetting the dedupe lookup. Without it, a customer who orders three times in a month gets three emails, which reads as spam. Add the Google Sheets lookup before the Gmail node and stop the run if a matching email already exists. The third is sending from a brand new Gmail address with no sending history, which can land requests in spam. Use an established account, and keep the copy plain with no heavy images.

Cost at realistic volume

Say your store fulfills 500 orders a month. Self-hosted n8n on a small VPS handles that load without breaking a sweat, and Gmail sends are free within normal account limits. The only metered cost is the OpenAI call, and a two-sentence email runs a tiny fraction of a cent on a current low-cost model.

Component At 500 orders / month
n8n (self-hosted) Fixed VPS cost, no per-run fee
Gmail sending Free within account limits
Google Sheets logging Free
OpenAI email writing Roughly $0.10 to $0.30 total

Drop the OpenAI node for a fixed template and the running cost rounds to zero. Compare that with a review app charging twenty to forty dollars a month that scales up with your order count.

🚀 Get the Shopify review automation template

You now know how every node fits together. Skip the wiring and import a tested workflow that ships with the Google Sheets log, the dedupe branch, and a ready email prompt, plus a setup guide and a credentials walkthrough.

Get the template →
Have us install it →

Instant download · Works on n8n Cloud and self-hosted

Frequently asked questions

Does this work with the Shopify free trial or any plan?

Yes. The Shopify Trigger uses standard Admin API webhooks available on every paid plan, including Basic. You only need a custom app with read access to orders, which any store owner can create from the Shopify admin in a couple of minutes.

Will the Wait node keep an execution running for seven full days?

It pauses the execution and stores its state in the n8n database, then resumes on schedule. It does not hold a live connection or burn CPU while waiting, so thousands of orders can sit in the queue at once without slowing your instance down.

How do I stop the same customer getting two review emails?

The Google Sheets log is your guard. Add a lookup before the Gmail node that searches the sheet for the order number or email, and route the workflow to stop if a matching row exists. The template ships with this dedupe branch ready to switch on.

Can I send through Outlook or plain SMTP instead of Gmail?

Yes. Swap the Gmail node for the Microsoft Outlook node or the Send Email node and reconnect your credential. Everything upstream stays identical, since only the final delivery step changes. The generated email body passes through unchanged.

Do I have to use OpenAI to personalize the email?

No. The AI step is optional polish. Delete the OpenAI node and write a fixed template in the Gmail node that drops in the customer name and product title with n8n expressions. The workflow still runs the same, just with a static message instead of a generated one.

Related guides

n8n
Shopify
Gmail
Google Sheets
OpenAI
automation