This workflow corresponds to n8n.io template #5955 — we link there as the canonical source.
This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "4A25nv05Jho7qvlD",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "12 Smart Website Funnel Analyzer",
"tags": [],
"nodes": [
{
"id": "033bde69-15e0-4518-83fb-2fa0c434e3c1",
"name": "\u23f0 Trigger: Run on Schedule",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-60,
0
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "f8f66218-4f7d-4fdf-9d43-1217923f8d69",
"name": "\ud83d\udee0\ufe0f Define Target URL & Context",
"type": "n8n-nodes-base.set",
"position": [
160,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "c0317fd3-7765-4e9d-9d10-a30184a89543",
"name": "url",
"type": "string",
"value": "https://www.shopify.com"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5aebc5c5-adf8-4bfe-9dcf-4d9dad58620d",
"name": "\ud83e\udd16 AI Agent: Scrape URL with MCP",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
440,
0
],
"parameters": {
"text": "=Visit the given URL and extract the following information:\n\n{{ $json.url }}\n\n1. **Page Metadata**\n - Page Title\n - Meta Description\n - Canonical URL\n\n2. **Tracking/Analytics Scripts**\n - List all script `src` that match known analytics vendors (e.g. `google-analytics.com`, `gtag`, `mixpanel`, `plausible.io`, `segment.io`, `hotjar.com`, etc.)\n\n3. **CTA Buttons and Links**\n - Extract all visible `<a>` and `<button>` elements with:\n - Inner text\n - href or onclick\n - Position in viewport (if possible)\n - Filter for CTA indicators: buttons/links with text like \"Start Free Trial\", \"Sign Up\", \"Get Started\", \"Learn More\", \"Try Now\", etc.\n\n4. **Analytics Objects**\n - Try to extract any JavaScript variables that might contain tracking data:\n - `window.dataLayer`\n - `window.analytics`\n - Any `JSON.parse(...)` content embedded in `<script>` tags\n\n5. **Page Structure Overview**\n - Count and summarize the number of:\n - Headings (`h1`, `h2`, `h3`)\n - Sections (`<section>` tags)\n - Images and media elements\n\n6. **Funnel Insight Tags (Optional for Later Use)**\n - Detect if this page likely fits a funnel stage:\n - Awareness (homepage, product overview)\n - Consideration (product detail, features)\n - Conversion (CTA, checkout, pricing)\n\nEnsure that JavaScript is rendered fully and wait for the page to become idle before extracting data. Use a mobile user-agent and viewport to simulate mobile browsing behavior accurately.\n\nReturn all data in structured JSON.\n",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2
},
{
"id": "19c9f2ea-1faf-42c5-aa6b-cc03f200d706",
"name": "\ud83e\udde0 LLM Model (Instruction Brain)",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
400,
260
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "4458687e-613a-4a41-823d-8f7ec7e374e8",
"name": "\ud83d\udce1 Bright Data MCP Client",
"type": "n8n-nodes-mcp.mcpClientTool",
"position": [
580,
260
],
"parameters": {
"toolName": "scrape_as_markdown",
"operation": "executeTool",
"toolParameters": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Tool_Parameters', ``, 'json') }}"
},
"credentials": {
"mcpClientApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "92c907a5-9ecd-4299-869e-dbcf8037fb3e",
"name": "\ud83d\udcca Save Results to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
980,
0
],
"parameters": {
"columns": {
"value": {
"images": "={{ $json.output.page_structure_overview.images }}",
"headings": "={{ $json.output.page_structure_overview.headings }}",
"sections": "={{ $json.output.page_structure_overview.sections }}",
"analytics": "={{ $json.output.analytics_objects.analytics }}",
"data layer": "={{ $json.output.analytics_objects.dataLayer }}",
"page title": "={{ $json.output.page_metadata.page_title }}",
"funnel stage": "={{ $json.output.funnel_stage }}",
"canonical url": "={{ $json.output.page_metadata.canonical_url }}",
"cta button links": "={{ $json.output.cta_buttons_links }}",
"meta description": "={{ $json.output.page_metadata.meta_description }}",
"json parsed content": "={{ $json.output.analytics_objects.json_parsed_content }}"
},
"schema": [
{
"id": "page title",
"type": "string",
"display": true,
"required": false,
"displayName": "page title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "meta description",
"type": "string",
"display": true,
"required": false,
"displayName": "meta description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "canonical url",
"type": "string",
"display": true,
"required": false,
"displayName": "canonical url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "cta button links",
"type": "string",
"display": true,
"required": false,
"displayName": "cta button links",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "data layer",
"type": "string",
"display": true,
"required": false,
"displayName": "data layer",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "analytics",
"type": "string",
"display": true,
"required": false,
"displayName": "analytics",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "json parsed content",
"type": "string",
"display": true,
"required": false,
"displayName": "json parsed content",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "headings",
"type": "string",
"display": true,
"required": false,
"displayName": "headings",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "sections",
"type": "string",
"display": true,
"required": false,
"displayName": "sections",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "images",
"type": "string",
"display": true,
"required": false,
"displayName": "images",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "funnel stage",
"type": "string",
"display": true,
"required": false,
"displayName": "funnel stage",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_uf-CDC6vBQ9s0nidzzxEKs/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JbTZgfXxSddks7Sx2YVW_uf-CDC6vBQ9s0nidzzxEKs",
"cachedResultUrl": "https://docs.google.YOUR_AWS_SECRET_KEY_HERE_uf-CDC6vBQ9s0nidzzxEKs/edit?usp=drivesdk",
"cachedResultName": "Website analytics"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "72c17e6e-c2f0-447e-b15c-3d974c75af85",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-900
],
"parameters": {
"color": 6,
"width": 380,
"height": 1080,
"content": "## \ud83d\udd36 **SECTION 1: Start & Define Target**\n\n### \ud83d\udd39 Nodes:\n\n* `\u23f0 Trigger: Run on Schedule`\n* `\ud83d\udee0\ufe0f Define Target URL & Context`\n\n---\n\n### \ud83e\udde9 What This Section Does:\n\n1. **\u23f0 Trigger: Run on Schedule**\n\n * This node automatically **starts the workflow at scheduled intervals** (e.g., hourly, daily).\n * You don\u2019t need to press a button every time. Just set it once, and it runs like a robot clock.\n\n2. **\ud83d\udee0\ufe0f Define Target URL & Context**\n\n * Here, you **input the Shopify URL** you want to scrape.\n * You can also define **tags** like `page_type: homepage`, `funnel_stage: awareness`, etc., to help analyze which stage of the sales funnel each page belongs to.\n\n---\n\n### \ud83d\udca1 Beginner Benefit:\n\n> This section allows you to automate the scraping of a specific page (like the Shopify homepage) and clearly tag what you're trying to analyze \u2014 all **without coding**!\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "307d8a0d-260d-433d-ae61-097992f35efe",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-1340
],
"parameters": {
"color": 5,
"width": 340,
"height": 1520,
"content": "## \ud83e\udd16 **SECTION 2: AI-Powered Scraping via Bright Data MCP**\n\n### \ud83d\udd39 Nodes:\n\n* `\ud83e\udd16 AI Agent: Scrape Shopify with MCP`\n\n * \ud83e\udde0 `LLM Model (Instruction Brain)`\n * \ud83d\udce1 `Bright Data MCP Client`\n * \ud83e\uddfe `Output Parser: Clean Extracted Data`\n\n---\n\n### \ud83e\udde9 What This Section Does:\n\n1. **\ud83e\udd16 AI Agent: Scrape Shopify with MCP**\n\n * This is the **smart engine** that handles all scraping tasks.\n\n2. **\ud83e\udde0 LLM Model (Instruction Brain)**\n\n * It tells the AI agent **what to look for**, like:\n\n * Page title, CTAs, Google Analytics scripts, section counts, etc.\n * Think of it as the \u201cbrain\u201d of the operation.\n\n3. **\ud83d\udce1 Bright Data MCP Client**\n\n * This node actually **loads the website like a real phone user** (mobile browser), thanks to **Bright Data's Mobile Carrier Proxy**.\n * It **bypasses blocks**, loads dynamic content, and mimics real behavior.\n\n4. **\ud83e\uddfe Output Parser: Clean Extracted Data**\n\n * After scraping, this node **cleans and formats the results** into a neat JSON structure.\n * It ensures that things like headings, links, CTA buttons, and analytics scripts are easy to read and store.\n\n---\n\n### \ud83d\udca1 Beginner Benefit:\n\n> You don't have to know how scraping or proxies work. This AI Agent + Bright Data combo does the heavy lifting: it visits the page, reads everything like a human user, and extracts key insights in a structured format. \ud83d\udcaa\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "b4af3b43-0daf-40be-96ab-c8f706414e14",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
880,
-600
],
"parameters": {
"color": 3,
"width": 300,
"height": 780,
"content": "## \u2705 **SECTION 3: Save Insights for Reporting**\n\n### \ud83d\udd39 Node:\n\n* `\ud83d\udcca Save Results to Google Sheets`\n\n---\n\n### \ud83e\udde9 What This Section Does:\n\n* This node **automatically logs all the structured results** (like title, CTAs, funnel stage, analytics scripts, etc.) into a connected Google Sheet.\n* Over time, this sheet becomes a **powerful conversion funnel tracker**, helping you identify:\n\n * Drop-off points\n * CTA effectiveness\n * Page structure evolution\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "a38a2cb0-f8e3-4892-abae-0b1f0695b328",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2080,
-900
],
"parameters": {
"color": 4,
"width": 1300,
"height": 320,
"content": "=======================================\n WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n - YouTube: https://www.youtube.com/@YaronBeen/videos\n - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"
},
"typeVersion": 1
},
{
"id": "86a27ad9-d138-489c-a7de-176bd117536e",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2080,
-560
],
"parameters": {
"color": 4,
"width": 1289,
"height": 2778,
"content": "# \ud83d\udcca **Workflow Title:**\n\n**Smart Website Funnel Analyzer: Scrape Shopify with Bright Data and Log Insights to Google Sheets**\n\n---\n\n## \ud83d\udd36 **SECTION 1: Start & Define Target**\n\n### \ud83d\udd39 Nodes:\n\n* `\u23f0 Trigger: Run on Schedule`\n* `\ud83d\udee0\ufe0f Define Target URL & Context`\n\n---\n\n### \ud83e\udde9 What This Section Does:\n\n1. **\u23f0 Trigger: Run on Schedule**\n\n * This node automatically **starts the workflow at scheduled intervals** (e.g., hourly, daily).\n * You don\u2019t need to press a button every time. Just set it once, and it runs like a robot clock.\n\n2. **\ud83d\udee0\ufe0f Define Target URL & Context**\n\n * Here, you **input the Shopify URL** you want to scrape.\n * You can also define **tags** like `page_type: homepage`, `funnel_stage: awareness`, etc., to help analyze which stage of the sales funnel each page belongs to.\n\n---\n\n### \ud83d\udca1 Beginner Benefit:\n\n> This section allows you to automate the scraping of a specific page (like the Shopify homepage) and clearly tag what you're trying to analyze \u2014 all **without coding**!\n\n---\n\n## \ud83e\udd16 **SECTION 2: AI-Powered Scraping via Bright Data MCP**\n\n### \ud83d\udd39 Nodes:\n\n* `\ud83e\udd16 AI Agent: Scrape Shopify with MCP`\n\n * \ud83e\udde0 `LLM Model (Instruction Brain)`\n * \ud83d\udce1 `Bright Data MCP Client`\n * \ud83e\uddfe `Output Parser: Clean Extracted Data`\n\n---\n\n### \ud83e\udde9 What This Section Does:\n\n1. **\ud83e\udd16 AI Agent: Scrape Shopify with MCP**\n\n * This is the **smart engine** that handles all scraping tasks.\n\n2. **\ud83e\udde0 LLM Model (Instruction Brain)**\n\n * It tells the AI agent **what to look for**, like:\n\n * Page title, CTAs, Google Analytics scripts, section counts, etc.\n * Think of it as the \u201cbrain\u201d of the operation.\n\n3. **\ud83d\udce1 Bright Data MCP Client**\n\n * This node actually **loads the website like a real phone user** (mobile browser), thanks to **Bright Data's Mobile Carrier Proxy**.\n * It **bypasses blocks**, loads dynamic content, and mimics real behavior.\n\n4. **\ud83e\uddfe Output Parser: Clean Extracted Data**\n\n * After scraping, this node **cleans and formats the results** into a neat JSON structure.\n * It ensures that things like headings, links, CTA buttons, and analytics scripts are easy to read and store.\n\n---\n\n### \ud83d\udca1 Beginner Benefit:\n\n> You don't have to know how scraping or proxies work. This AI Agent + Bright Data combo does the heavy lifting: it visits the page, reads everything like a human user, and extracts key insights in a structured format. \ud83d\udcaa\n\n---\n\n## \u2705 **SECTION 3: Save Insights for Reporting**\n\n### \ud83d\udd39 Node:\n\n* `\ud83d\udcca Save Results to Google Sheets`\n\n---\n\n### \ud83e\udde9 What This Section Does:\n\n* This node **automatically logs all the structured results** (like title, CTAs, funnel stage, analytics scripts, etc.) into a connected Google Sheet.\n* Over time, this sheet becomes a **powerful conversion funnel tracker**, helping you identify:\n\n * Drop-off points\n * CTA effectiveness\n * Page structure evolution\n\n---\n\n### \ud83d\udca1 Beginner Benefit:\n\n> No coding. No manual copy-paste. The moment a page is analyzed, the key insights are saved into your Google Sheet \u2014 ready for reporting or optimization.\n\n---\n\n## \ud83c\udf81 **Final Thoughts: Why This Workflow Is Powerful**\n\n* \ud83d\udcf1 Uses mobile proxy scraping (MCP) for full access to dynamic web pages\n* \ud83e\udd16 AI handles complex instructions and parsing\n* \ud83d\udcca Google Sheets gives you instant reporting and tracking\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "0218af59-c980-495f-9546-5992ce8f399b",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
-600
],
"parameters": {
"color": 7,
"width": 380,
"height": 240,
"content": "## I\u2019ll receive a tiny commission if you join Bright Data through this link\u2014thanks for fueling more free content!\n\n### https://get.brightdata.com/1tndi4600b25"
},
"typeVersion": 1
},
{
"id": "7c9b3666-f32f-49ab-be38-36b3f31a8ca0",
"name": "Auto-fixing Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserAutofixing",
"position": [
720,
260
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "dae3494e-25b5-4394-a9ac-d4bfcf0621a2",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
680,
520
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "1ab9f312-a515-4b02-9e7f-f49e0f4c6515",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
860,
520
],
"parameters": {
"jsonSchemaExample": "{\n \"page_metadata\": {\n \"page_title\": \"Shopify \u2013 Start your free trial today\",\n \"meta_description\": \"Start selling online today with Shopify. The easiest way to start an online store.\",\n \"canonical_url\": \"https://www.shopify.com\"\n },\n \"tracking_analytics_scripts\": [\n \"https://www.googletagmanager.com/\",\n \"https://www.google-analytics.com/\"\n ],\n \"cta_buttons_links\": [\n {\n \"inner_text\": \"Start for free\",\n \"href\": \"https://accounts.shopify.com/store-create?locale=en&language=en&signup%5Fpage=https%3A%2F%2Fwww.shopify.com%2F&signup%5Ftypes%5B%5D=paid%5Ftrial%5Fexperience\",\n \"position_in_viewport\": null\n },\n {\n \"inner_text\": \"Start for free\",\n \"href\": \"https://accounts.shopify.com/store-create?locale=en&language=en&signup%5Fpage=https%3A%2F%2Fwww.shopify.com%2F&signup%5Ftypes%5B%5D=paid%5Ftrial%5Fexperience\",\n \"position_in_viewport\": null\n },\n {\n \"inner_text\": \"Get started\",\n \"href\": \"/online\",\n \"position_in_viewport\": null\n }\n ],\n \"analytics_objects\": {\n \"dataLayer\": null,\n \"analytics\": null,\n \"json_parsed_content\": null\n },\n \"page_structure_overview\": {\n \"headings\": {\n \"h1\": 1,\n \"h2\": 10,\n \"h3\": 4\n },\n \"sections\": 15,\n \"images\": 20\n },\n \"funnel_stage\": \"Awareness\"\n}\n"
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "fd1b5014-94c4-4a9f-848b-d42272c68d4a",
"connections": {
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Auto-fixing Output Parser",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Auto-fixing Output Parser": {
"ai_outputParser": [
[
{
"node": "\ud83e\udd16 AI Agent: Scrape URL with MCP",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"\ud83d\udce1 Bright Data MCP Client": {
"ai_tool": [
[
{
"node": "\ud83e\udd16 AI Agent: Scrape URL with MCP",
"type": "ai_tool",
"index": 0
}
]
]
},
"\u23f0 Trigger: Run on Schedule": {
"main": [
[
{
"node": "\ud83d\udee0\ufe0f Define Target URL & Context",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\udd16 AI Agent: Scrape URL with MCP": {
"main": [
[
{
"node": "\ud83d\udcca Save Results to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"\ud83e\udde0 LLM Model (Instruction Brain)": {
"ai_languageModel": [
[
{
"node": "\ud83e\udd16 AI Agent: Scrape URL with MCP",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"\ud83d\udee0\ufe0f Define Target URL & Context": {
"main": [
[
{
"node": "\ud83e\udd16 AI Agent: Scrape URL with MCP",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApimcpClientApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically analyzes website conversion funnels to identify optimization opportunities and track user journey performance. It saves you time by eliminating the need to manually analyze funnel metrics and provides detailed insights into conversion bottlenecks and…
Source: https://n8n.io/workflows/5955/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Note: This template is for self-hosted n8n instances only
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This workflow automatically monitors competitor pricing across multiple products and services to track market positioning and pricing strategies. It saves you time by eliminating the need to manually
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This workflow automatically analyzes sales territory performance, comparing revenue, win rates, and activity across regions. Remove the guesswork from territory planning and drive balanced growth.