ChatGPTSalesOutreachAI score · PendingAI-assisted edit · no obvious prompt-injection riskn8n.io

Auto-Scrape Competitor Shopify Reviews Daily and Generate Outreach Drafts

Input: competitor Shopify app review URLs → Process: Apify scrape, Google Sheets deduplication, Serper website lookup, Hunter contact enrichment, GPT-4o email drafting → Output: Gmail draft + Slack alert

Some experienceStepsWorkflowPromptTip
Who
Sales or marketing teams who want to monitor competitor Shopify app reviews and proactively reach out to dissatisfied merchants
You get
Automatically discover new low-star reviews, find the merchant's website and contact, generate a personalized Gmail outreach draft, and notify the team via Slack
You need
n8n · google-sheets · gmail · slack · apify · hunter · serper

Constraints

Prerequisites: n8n instance; 7 credentials required (OpenAI, Google Sheets OAuth2, Hunter, Apify, Serper HTTP Header, Gmail OAuth2, Slack OAuth2). A Google Sheets spreadsheet with columns: Review ID, Date, Rating, Review Text, Competitor URL, Reviewer Domain, Website, Contact Name, Contact Title, Contact Email, Status, Draft-Email. The workflow runs on a daily schedule, scrapes configured URLs, and processes only new reviews with rating ≤4.

What they did

Author jiteshdugar published this workflow template on the n8n official template library. The template demonstrates a complete automation: scheduled daily scraping of specified competitor Shopify app review pages, deduplication and filtering for ratings ≤4, per-review checking against Google Sheets to avoid reprocessing, Serper search for the merchant's official website with regex-based domain cleaning, Hunter lookup for contact emails, GPT-4o-mini generation of a personalized cold email draft acknowledging the specific competitor pain point, saving as a Gmail draft for human review, writing contact info and draft back to Google Sheets, and structured Slack notifications at key stages.

How it went

The author published this as a template on n8n.io (author_report). The template includes 36 nodes, full wiring and parameter configuration, and detailed sticky note documentation. At time of collection, the template had 39 views. This site has not imported or executed the workflow; API response stability, email deliverability, and contact lookup accuracy have not been verified.

Worth knowing

1. Brand placeholder: The LLM prompt hardcodes "SATHI" as the product being pitched; replace before use or emails will reference the wrong brand. 2. Model switchable: The OpenAI Chat Model node defaults to gpt-4o-mini; workflow.json parameters allow switching to gpt-4o or other available models. 3. Human review gate: Emails are saved as Gmail drafts, not sent directly, preserving a review step for the sales team. 4. Data dependency: Hunter contact lookup success depends on domain coverage in its database; Serper result quality affects website identification accuracy. 5. Costs and quotas: Apify actor runs, Serper API calls, Hunter queries, and OpenAI token consumption may incur charges; estimate based on monitoring frequency and URL count. 6. Privacy compliance: Automated scraping and outreach to reviewers may implicate data protection regulations (e.g., GDPR); verify compliance requirements for your target regions before enabling. 7. Source date: n8n API shows createdAt of 2026-06-09 as the template publication date reference.

n8n workflow template

Structure checked · Not run-tested

Use “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.

Setup and test checklist

Credentials to connect

  • OpenAI Chat Model node: connect OpenAI API credentials.
  • Check Existing Reviews node: connect Google Sheets OAuth2 credentials.
  • Log New Review node: connect Google Sheets OAuth2 credentials.
  • Hunter: Find Contact Info node: connect hunterApi credentials.
  • Scrape Shopify Reviews node: connect apifyApi credentials.
  • Search Google for Website node: connect HTTP Header Auth credentials.
  • Save Email as Draft node: connect Gmail OAuth2 credentials.
  • Update Contact Info node: connect Google Sheets OAuth2 credentials.
  • Draft Ready Alert node: connect Slack OAuth2 credentials.
  • Alert New Review Detected node: connect Slack OAuth2 credentials.

Configuration to replace

  • Source template is n8n public workflow #16209 (~36 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
  • Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.

Test input and expected output

  • Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
  • Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.

Template changes

  • Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
  • No business-logic edits; verify keys, quotas and privacy compliance before use.

Template retrieved: 2026-10-24

Steps

  1. Configure schedule trigger and target URL list

    Open the template in n8n. Set the Schedule Trigger node to your preferred daily run time. Edit the Set Target App URLs (Code node), replacing the example URLs with the competitor Shopify app review pages you want to monitor. Each URL will be passed as a separate item downstream.

  2. Configure Apify scraping, deduplication and filtering

    Connect your Apify API credential. The Scrape Shopify Reviews node uses the powerai/shopify-app-reviews-scraper actor, receiving URLs from the previous step; adjust maxItems and other inputs as needed. Then the Remove Duplicate Reviews node deduplicates by the id field, and the Filter 4 Stars or Less node keeps only items where reviewer is not empty and rating ≤ 4.

  3. Check existing reviews and log new ones

    Process Each Review (Split In Batches) sends one review at a time. Check Existing Reviews searches Google Sheets by Review ID. If Review is New branches: if Review ID is empty, the review is new and proceeds; otherwise it is skipped. New reviews are appended via Log New Review, and Alert New Review Detected sends a Slack block message with brand, rating, review text, etc.

  4. Search merchant website and extract clean domain

    After the new review alert, Search Google for Website queries Serper with 'reviewer name + official website'. Extract Clean Domain (Code node) takes organic[0].link, strips https://, http://, www., and path via regex, and writes the clean domain to item.json.domain.

    Execution prompt · Source text。jsCode field of the Extract Clean Domain node

    // Grab the #1 organic link from our Google Search
    let rawUrl = $input.item.json.organic[0].link;
    
    // Use regex to strip http://, https://, www. and any sub-pages
    let cleanDomain = rawUrl.replace(/^(?:https?:\/\/)?(?:www\.)?/i, "").split('/')[0];
    
    // Add the clean domain to your existing data so you don't lose the review info!
    $input.item.json.domain = cleanDomain;
    
    return $input.item;
  5. Find contact email with Hunter

    Hunter: Find Contact Info receives the domain from the previous step, with limit set to 1, and searches for available email addresses on that domain. Configure your Hunter API credential.

  6. Generate personalized outreach draft

    Generate Outreach Draft (Basic LLM Chain) connects to the OpenAI Chat Model (gpt-4o-mini). The node defines a prompt that generates a brief cold email under 100 words, acknowledging the competitor pain point from the review and pitching SATHI, using the contact name and domain from previous nodes.

    Execution prompt · Source text。text field of the Generate Outreach Draft node (promptType=define)

    =Write a highly personalized, brief cold email to {{ $('Hunter: Find Contact Info').item.json.first_name || 'the team' }} at {{ $('Extract Clean Domain').item.json.domain }}. 
    
    They just left this review on a competitor's app: "{{ $('Process Each Review').item.json.review }}"
    
    Acknowledge their exact frustration with the competitor and pitch SATHI as the reliable, professional solution to their problem. Keep it under 100 words.
  7. Save as Gmail draft and update records

    Save Email as Draft (Gmail node) saves the LLM output as a draft: subject from the first line (stripping 'Subject:' prefix), message body from the remaining text, recipient set to the email returned by Hunter. Then Update Contact Info matches by Review ID and updates the sheet with Website, Contact Name, Contact Title, Contact Email, Status (Draft Created), and Draft-Email. Finally, Draft Ready Alert sends a Slack block message with contact details and the generated draft.

    Execution prompt · Source text。text field of the Draft Ready Alert node

    =✅ Draft ready for {{ $json["Contact Name"] || "The Team" }} at {{ $json["Website"] || "Unknown Website" }}

    Execution prompt · Source text。text field of the Alert New Review Detected node

    =🚨 New review detected: {{ $json["Reviewer Domain"] || "Unknown Brand" }} - {{ $json["Rating"] || "N/A" }}⭐

Prompt you can copy

Setup guidance · Editorial suggestion。Hand to setup assistant; confirm inputs and permissions first

This block is the prompt. Ads are never placed here.

You are setting up an n8n workflow to automatically monitor competitor Shopify app reviews daily, filter new low-star reviews, find merchant contacts, and generate outreach email drafts. Please confirm before proceeding:
1. You have access to an n8n instance;
2. You have or can create a Google Sheets spreadsheet with columns: Review ID, Date, Rating, Review Text, Competitor URL, Reviewer Domain, Website, Contact Name, Contact Title, Contact Email, Status, Draft-Email;
3. You have or can configure credentials for: OpenAI API, Google Sheets OAuth2, Hunter API, Apify API, Serper HTTP Header Auth, Gmail OAuth2, Slack OAuth2;
4. You have identified the competitor Shopify app review page URLs to monitor;
5. You understand the LLM prompt in this template contains the brand name "SATHI", which must be replaced if used for a different product.

Once confirmed, import the workflow.json or install from the n8n template library, configure credentials and parameters step by step, and test with a small URL set and maxItems=1–2.

The brand name "SATHI" in the LLM prompt is a placeholder; replace it with your actual product name before running. GPT-4o-mini is the default model; you can switch to gpt-4o in the OpenAI Chat Model node.

Source

Generate Shopify review outreach drafts with Apify, Hunter, GPT-4o and Gmail · jiteshdugar · n8n.io · 2026-06-09

Comments & feedback

Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.

Loading…

    Related