This workflow follows the Emailsend → HTTP Request 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 →
{
"name": "Arenza \u2014 Monthly Competitor Comparison Email",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 1 * *"
}
]
}
},
"id": "node-cron",
"name": "Schedule: 1st of month 9 AM",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.1,
"position": [
240,
300
]
},
{
"parameters": {
"url": "https://api.arenza.ai/v1/brands",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"options": {
"retry": {
"maxRetries": 3,
"waitBetweenRetries": 5000
}
}
},
"id": "node-list-brands",
"name": "GET /v1/brands",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
300
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"fieldToSplitOut": "data",
"options": {}
},
"id": "node-split-brands",
"name": "Split Brands",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
680,
300
]
},
{
"parameters": {
"url": "=https://api.arenza.ai/v1/brands/{{ $json.id }}/competitor-comparison?top=3&markets=US,UK,DE,JP",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"options": {
"retry": {
"maxRetries": 3,
"waitBetweenRetries": 5000
}
}
},
"id": "node-comparison",
"name": "GET /brands/:id/competitor-comparison",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
900,
300
],
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "// Build an HTML email body comparing brand vs top-3 competitors per market.\nconst LLMS = ['ChatGPT', 'Claude', 'Gemini', 'Perplexity', 'Copilot', 'Grok'];\n\nreturn items.map(item => {\n const d = item.json;\n const brand = d.brand?.name ?? 'unknown brand';\n const markets = d.markets ?? [];\n\n let html = `<h1>${brand} \u2014 Monthly Competitor Comparison</h1>`;\n html += `<p>Across the 6 LLMs (${LLMS.join(', ')}) and ${markets.length} markets:</p>`;\n\n for (const m of markets) {\n html += `<h2>${m.market}</h2>`;\n html += '<table border=\"1\" cellpadding=\"6\" cellspacing=\"0\"><tr><th>Brand</th><th>SoV%</th><th>Mention rate</th><th>Wrong claims (30d)</th></tr>';\n const rows = [m.target, ...(m.competitors ?? [])];\n for (const r of rows) {\n const isUs = r.id === d.brand?.id;\n html += `<tr style=\"font-weight:${isUs ? 'bold' : 'normal'}\">`;\n html += `<td>${r.name}${isUs ? ' (you)' : ''}</td>`;\n html += `<td>${(r.share_of_voice ?? 0).toFixed(1)}%</td>`;\n html += `<td>${((r.mention_rate ?? 0) * 100).toFixed(0)}%</td>`;\n html += `<td>${r.wrong_claims ?? 0}</td>`;\n html += '</tr>';\n }\n html += '</table>';\n }\n\n html += `<p><a href=\"https://app.arenza.ai/brands/${d.brand?.id}\">Open in Arenza dashboard</a> \u00b7 powered by arenza.ai</p>`;\n\n return {\n json: {\n to: d.brand?.notification_email ?? 'geo-team@example.com',\n subject: `${brand} \u2014 Monthly Competitor Comparison`,\n html\n }\n };\n});\n"
},
"id": "node-format",
"name": "Format Email HTML",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1140,
300
]
},
{
"parameters": {
"fromEmail": "geo-reports@arenza.ai",
"toEmail": "={{ $json.to }}",
"subject": "={{ $json.subject }}",
"emailFormat": "html",
"html": "={{ $json.html }}",
"options": {}
},
"id": "node-email",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"typeVersion": 2.1,
"position": [
1360,
300
],
"credentials": {
"smtp": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Schedule: 1st of month 9 AM": {
"main": [
[
{
"node": "GET /v1/brands",
"type": "main",
"index": 0
}
]
]
},
"GET /v1/brands": {
"main": [
[
{
"node": "Split Brands",
"type": "main",
"index": 0
}
]
]
},
"Split Brands": {
"main": [
[
{
"node": "GET /brands/:id/competitor-comparison",
"type": "main",
"index": 0
}
]
]
},
"GET /brands/:id/competitor-comparison": {
"main": [
[
{
"node": "Format Email HTML",
"type": "main",
"index": 0
}
]
]
},
"Format Email HTML": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"tags": [
{
"name": "arenza"
},
{
"name": "geo"
},
{
"name": "competitor-comparison"
}
]
}
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.
httpHeaderAuthsmtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Arenza — Monthly Competitor Comparison Email. Uses httpRequest, emailSend. Scheduled trigger; 6 nodes.
Source: https://github.com/arenza-ai/arenza-n8n-template/blob/main/workflows/competitor-comparison.json — 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.
Politician Research Pipeline. Uses httpRequest, emailSend. Scheduled trigger; 9 nodes.
API Health Check. Uses httpRequest, emailSend. Scheduled trigger; 5 nodes.
backup. Uses googleDrive, httpRequest. Scheduled trigger; 15 nodes.
Smart google indexing: sitemap filter and url inspection. Uses httpRequest, xml, splitOut, scheduleTrigger. Scheduled trigger; 13 nodes.
Yourang - Complete Workflow Example. Uses n8n-nodes-yourang, httpRequest. Scheduled trigger; 10 nodes.