Apify + Gmail: client-ready SEO audits sent fast
You know the drill: a lead asks for an SEO audit, you say “sure,” and then you lose the next few hours bouncing between tools, screenshots, and half-finished notes.
This Apify Gmail audits setup hits agency owners hardest, honestly. But SEO consultants and in-house marketers feel it too when “quick audit” turns into a mini project that derails the day.
This workflow takes one website URL, runs a real analysis, and emails a polished audit pack in minutes. You’ll see what it does, what you need, and how the automation is structured so you can tailor it to your offer.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Apify + Gmail: client-ready SEO audits sent fast
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:robot", form: "rounded", label: "Enhanced Content Audit", pos: "b", h: 48 }
n1@{ icon: "mdi:robot", form: "rounded", label: "Enhanced Technical Audit", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Strategic SEO Analysis", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge Results"]
n4@{ icon: "mdi:cog", form: "rounded", label: "Aggregate Reports", pos: "b", h: 48 }
n5@{ icon: "mdi:robot", form: "rounded", label: "Executive Summary Generator", pos: "b", h: 48 }
n6@{ icon: "mdi:brain", form: "rounded", label: "Technical Audit Model", pos: "b", h: 48 }
n7@{ icon: "mdi:brain", form: "rounded", label: "Content Audit Model", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "Strategic Analysis Model", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "Summary Model", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Convert to HTML", pos: "b", h: 48 }
n11["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Generate HTML template1"]
n12@{ icon: "mdi:cog", form: "rounded", label: "Convert to HTML1", pos: "b", h: 48 }
n13["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Generate HTML template2"]
n14@{ icon: "mdi:cog", form: "rounded", label: "Convert to HTML2", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Generate HTML template3"]
n16@{ icon: "mdi:cog", form: "rounded", label: "Convert to HTML3", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/markdown.dark.svg' width='40' height='40' /></div><br/>Technical Audit to PDF"]
n18["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/html.dark.svg' width='40' height='40' /></div><br/>Summary to HTML"]
n19["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/markdown.dark.svg' width='40' height='40' /></div><br/>Content Audit to HTML"]
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/markdown.dark.svg' width='40' height='40' /></div><br/>Summary to HTML1"]
n21["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/markdown.dark.svg' width='40' height='40' /></div><br/>SEO Analysis to HTML"]
n22["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Merge"]
n23@{ icon: "mdi:message-outline", form: "rounded", label: "Gmail", pos: "b", h: 48 }
n24@{ icon: "mdi:cog", form: "rounded", label: "Aggregate", pos: "b", h: 48 }
n25@{ icon: "mdi:swap-vertical", form: "rounded", label: "Variables", pos: "b", h: 48 }
n26@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n27["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Apify Crawl Request"]
n22 --> n24
n24 --> n23
n25 --> n27
n3 --> n4
n9 -.-> n5
n10 --> n22
n18 --> n10
n12 --> n22
n14 --> n22
n16 --> n22
n20 --> n18
n4 --> n5
n27 --> n0
n27 --> n1
n27 --> n2
n7 -.-> n0
n21 --> n15
n19 --> n13
n6 -.-> n1
n0 --> n3
n2 --> n3
n17 --> n11
n11 --> n12
n13 --> n14
n15 --> n16
n1 --> n3
n8 -.-> n2
n5 --> n20
n5 --> n17
n5 --> n19
n5 --> n21
n26 --> n25
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n26 trigger
class n0,n1,n2,n5 ai
class n6,n7,n8,n9 aiModel
class n27 api
classDef customIcon fill:none,stroke:none
class n3,n11,n13,n15,n17,n18,n19,n20,n21,n22,n27 customIcon
Why This Matters: Client audits are a time sink
SEO audits are one of the best “first value” deliverables you can offer. They’re also painfully manual when you’re trying to make them client-ready. You crawl a site, skim page templates, check basic technical issues, then you try to translate all that into something a non-SEO person will actually read. Meanwhile, the lead is waiting, your follow-up window shrinks, and you end up sending something rushed or delayed. It’s not the work that’s hard. It’s the repetition, formatting, and context switching.
The friction compounds. Here’s where it breaks down for most teams.
- You spend about 2 hours assembling an “audit pack” even when the findings are straightforward.
- Copy-pasting notes into a doc invites mistakes, and clients notice the sloppy parts first.
- Leads go cold because the audit arrives a day later, not the same morning.
- Your delivery format changes every time, so your service feels less productized and harder to scale.
What You’ll Build: A 4-report SEO audit pack that emails itself
This n8n workflow turns a single website URL into a client-ready set of SEO audit reports, then sends them via Gmail with a branded email template. It starts by taking in your target URL (from a simple variables step and a trigger), then uses Apify to crawl and extract the site’s HTML and content. From there, three AI agents run in parallel: a technical review, a content quality audit, and a strategy/opportunities review. Those outputs get merged and aggregated, then an executive summary is generated to turn raw findings into a prioritized action plan. Finally, the workflow converts the reports into files (HTML and PDF), bundles the attachments, and emails the full pack to your lead or client automatically.
The workflow begins with a manual launch trigger (you can later swap this for a webhook or form submission). Apify handles crawling and data collection, then the AI layer turns that crawl data into structured audits. Gmail sends a consistent “here’s your report” email with all four deliverables attached, ready to forward or send as-is.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you deliver 10 audits a week. Manually, a “quick” audit often turns into about 2 hours: 30 minutes crawling and checking basics, about an hour writing, then another 20 minutes cleaning formatting and emailing attachments. That’s roughly 20 hours a week. With this workflow, you spend maybe 5 minutes entering the URL and recipient, then wait about 5 minutes for processing and delivery. You get most of that week back, and the follow-up happens while the lead still cares.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Apify for crawling and extracting website content.
- Gmail to send the audit pack as attachments.
- Anthropic API key (get it from the Anthropic Console).
Skill level: Intermediate. You’ll be connecting credentials and editing a few variables, but you won’t be writing code.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
You provide the website URL and recipient. The workflow is launched manually in the current setup, then a Variables step sets the target site (including https://) and who should receive the email.
The site gets crawled and packaged for analysis. An Apify crawl request pulls HTML and on-page content so the AI agents are working from real source material, not guesses.
AI generates three audits plus an executive summary. Technical, content, and strategy review agents run in parallel, then their outputs are merged and turned into an action-focused summary with priorities and a roadmap.
Files are created and emailed automatically. The workflow converts the reports into attachable files (including PDF/HTML), bundles everything together, and sends a polished Gmail message to your lead or client.
You can easily modify the trigger to use a form or CRM instead of manual запуск, and you can change the email template and prompts to match your brand voice. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Set the workflow to run on demand so you can trigger audits manually during setup and testing.
- Add and open Manual Launch Trigger as the workflow trigger.
- Keep default settings in Manual Launch Trigger so the workflow runs when you click Execute Workflow.
- Confirm Manual Launch Trigger connects to Initialize Variables.
Step 2: Initialize Input Variables and Crawl Request
Prepare the input values and send a crawl request to gather audit data.
- Open Initialize Variables and define any site URL or project metadata you want to pass forward (keep defaults if already mapped).
- Open Site Crawl Request and configure your HTTP request details (URL, method, headers, and payload) based on your crawl API.
- Verify the connection from Initialize Variables to Site Crawl Request.
Site Crawl Request outputs to Content Review Agent, Technical Review Agent, and SEO Strategy Agent in parallel.
continueErrorOutput). Ensure your API returns structured error data, or downstream AI nodes may receive empty inputs.Step 3: Set Up AI Review Agents and Language Models
Configure the AI agents that generate technical, content, and SEO findings, plus the summary model that builds the executive overview.
- Open Content Review Agent and confirm it receives inputs from Site Crawl Request.
- Open Technical Review Agent and confirm it receives inputs from Site Crawl Request.
- Open SEO Strategy Agent and confirm it receives inputs from Site Crawl Request.
- Open Executive Summary Builder and confirm it receives aggregated outputs from Aggregate Audit Reports.
- Tech Audit LLM is connected as the language model for Technical Review Agent — ensure credentials are added to Tech Audit LLM.
- Content Audit LLM is connected as the language model for Content Review Agent — ensure credentials are added to Content Audit LLM.
- SEO Strategy LLM is connected as the language model for SEO Strategy Agent — ensure credentials are added to SEO Strategy LLM.
- Summary LLM is connected as the language model for Executive Summary Builder — ensure credentials are added to Summary LLM.
Step 4: Combine and Aggregate Audit Outputs
Merge the three audit branches and consolidate data for the summary builder.
- Confirm Content Review Agent, Technical Review Agent, and SEO Strategy Agent all feed into Combine Audit Outputs.
- Open Combine Audit Outputs and keep default merge behavior unless you need a specific merge mode.
- Ensure Aggregate Audit Reports is connected after Combine Audit Outputs to prepare data for the summary builder.
Step 5: Generate Summary and Section Outputs in Parallel
Convert the executive summary and each audit section into HTML/PDF assets.
- Confirm Executive Summary Builder outputs to Summary Markdown to HTML, Tech Markdown to PDF, Content Markdown to HTML, and SEO Markdown to HTML in parallel.
- Open Summary Markdown to HTML and verify it connects to Summary HTML Layout and then Summary HTML File.
- Open Tech Markdown to PDF and confirm it connects to Tech HTML Template and then Tech HTML File.
- Open Content Markdown to HTML and confirm it connects to Content HTML Template and then Content HTML File.
- Open SEO Markdown to HTML and confirm it connects to SEO HTML Template and then SEO HTML File.
Step 6: Merge Files and Prepare Attachments
Bundle the generated HTML/PDF files into a single set of attachments for email delivery.
- Ensure Summary HTML File, Tech HTML File, Content HTML File, and SEO HTML File all connect into Merge All Files.
- Verify Merge All Files outputs to Bundle Attachments.
- Open Bundle Attachments and confirm it aggregates all file items for the email node.
Step 7: Configure Email Delivery
Send the bundled audit report to the recipient via Gmail.
- Open Send Gmail Report and set recipient, subject, and email body content.
- Attach the aggregated files coming from Bundle Attachments.
- Credential Required: Connect your Gmail credentials.
Step 8: Test and Activate Your Workflow
Run a full test to verify that audit data flows, reports are generated, and the email is delivered correctly.
- Click Execute Workflow on Manual Launch Trigger to run a test.
- Confirm Site Crawl Request returns data and all three agents produce outputs.
- Verify Merge All Files receives four files and Send Gmail Report sends an email with attachments.
- Once validated, save and activate the workflow for production use.
Troubleshooting Tips
- Apify credentials can expire or the token can be pasted into the crawl URL incorrectly. If the crawl fails, check your Apify token and the “Site Crawl Request” node URL first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Gmail OAuth permissions matter for attachments. If “Send Gmail Report” errors out, re-authenticate the Gmail credential in n8n and confirm it has permission to send mail and add attachments.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes if your Apify, Anthropic, and Gmail credentials are ready.
No. You’ll mostly connect accounts, paste an API key, and edit a couple of variables like the URL and recipient.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Anthropic API usage for the audit generation.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. You can swap the Manual Launch Trigger for a Webhook (so a form submission kicks it off), change the “Send Gmail Report” email template to match your branding, and fine-tune the prompts inside the Technical Review, Content Review, and SEO Strategy agents for specific industries (SaaS, local, ecommerce). If you want bigger audits, increase crawl depth and crawl pages in the Apify crawl request settings. If you want faster audits, reduce the crawl scope and keep the reports more “executive” than exhaustive.
Usually it’s a bad API token or the token wasn’t inserted correctly into the crawl request URL. Also check that the website URL includes https:// and that the target site isn’t blocking crawlers heavily. If it works in Apify but fails in n8n, re-check the HTTP Request node headers, timeouts, and any account-level usage limits.
On n8n Cloud, it depends on your plan’s monthly executions, and on self-hosted n8n it mainly depends on your server resources.
For this workflow, n8n has a few advantages: it’s built for multi-step logic (parallel agents, merging outputs, file conversions), it can be self-hosted for unlimited executions, and it’s comfortable handling “heavy” automation like crawling plus report packaging. Zapier or Make can do parts of this, but you’ll usually fight limitations around branching, file handling, and cost at higher volume. If you only need a simple “URL in, email out” without multi-report generation, those tools can be fine. This one is closer to a mini system. Talk to an automation expert if you want help choosing the right stack.
Once this is live, your audits stop being a time tax and start acting like a proper, repeatable product. Set it up once, then let the workflow do the busywork.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.