How to Build an Automated Review Request Pipeline

Automatically request product reviews from customers after delivery.

What This Integration Does

The window for asking a happy customer to leave a review is short - a few days after they have actually had the product in their hands. This workflow waits until the order is delivered, holds for a configurable delay, then sends a personalized email referencing the specific product they bought. The result is more reviews, which drive both SEO and trust on product pages.

The flow has two halves: a webhook-triggered entry that fires on fulfillment, and a delayed sub-step that does the actual send. The delay is implemented as a scheduled subworkflow, not a long-running sleep, so the runtime never holds a thread for days. Personalization is handled by the AI Agent so each email reads like a person wrote it.

Prerequisites

  • A Shopify or WooCommerce connection (the trigger source).
  • A Resend connection with a verified sending domain.
  • A URL pattern for your review submission page that accepts an order id query param (e.g. https://shop.example.com/review?order=...).
  • A subworkflow set up that runs daily and processes the "pending review" queue.

Step 1: Webhook Trigger on Fulfillment

Add a Trigger node set to Webhook. In Shopify or WooCommerce, point the order fulfillment webhook at the URL Spojit gives you. The trigger payload includes the order id, customer email, and line items.

Step 2: Enrich the Order

Add a Connector node on shopify with the get-order tool (or woocommerce get-order). Pass the order id from the webhook. This gives you the full line items with product titles and images, which the AI step will need.

Step 3: Queue for Delayed Send

Add a Connector node on mongodb with insert-documents. Write a row into a review_requests collection with:

  • orderId
  • customerEmail
  • products (id, title, image url)
  • sendAfter - now plus 5 days, ISO timestamp
  • status - pending

This decouples the trigger from the send and lets you re-process or cancel rows easily.

Step 4: Scheduled Subworkflow Picks Up Due Rows

Create a second workflow with a Trigger set to Schedule, running every hour. Inside it, add a Connector node on mongodb using find-documents with a filter of { "status": "pending", "sendAfter": { "$lte": "{{ now }}" } }. Wrap the rest in a Loop over the results.

Step 5: AI Agent Writes the Email

Inside the loop, add an AI Agent node with structured output:

{
  "subject": "string",
  "bodyHtml": "string"
}

Prompt: Write a short, friendly review request email for a customer who bought {{ products[0].title }}. Reference the product specifically. Include a single call-to-action linking to the review page. Keep it under 120 words. Brand tone: helpful, never pushy.

Step 6: Send and Mark Sent

Add a Connector node on resend with the send-email tool. Use:

  • to: {{ row.customerEmail }}
  • subject: {{ ai.subject }}
  • html: {{ ai.bodyHtml }} with the review link appended

Follow with a Connector step on mongodb using update-documents to mark the row status: "sent" with a sentAt timestamp. This prevents duplicate sends on the next run.

Tips

  • Cap one review request per customer per 30 days regardless of how many orders they place - back-to-back asks read as spam.
  • Skip the email entirely if the order had a refund or support ticket attached. Add a Condition node before the send.
  • Track click-through with a unique token in the URL so you know which sends actually converted to reviews.

Common Pitfalls

  • Sending too soon - fulfillment is not delivery. If you can hook into a "delivered" event from your shipping carrier instead, do that. Otherwise pad the delay.
  • Timezones - send during the customer's local morning, not your own. Either store the customer's timezone or stick to a global window like 09:00-11:00 UTC.
  • Domain reputation - bulk sends from an unverified domain will land in spam. Verify your Resend domain before turning the workflow on.

Testing

Place a real test order on your store with your own email as the customer, then push the row's sendAfter to "now" in Mongo so the subworkflow picks it up on the next tick. Confirm the email arrives, the AI-written subject and body look right, and the review link carries the correct order id.

Learn More

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.