This workflow follows the Gmail → 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": "Tribal Cowboy - Daily Brief",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 7 * * *"
}
]
}
},
"id": "schedule-brief",
"name": "Daily 7am",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
240,
300
]
},
{
"parameters": {
"url": "https://tribal-cowboy-webhook.onrender.com/data",
"options": {}
},
"id": "fetch-dashboard",
"name": "Fetch Dashboard Data",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
220
]
},
{
"parameters": {
"url": "https://tribal-cowboy-webhook.onrender.com/voice-inquiries",
"options": {}
},
"id": "fetch-leads-brief",
"name": "Fetch Voice Leads",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
460,
380
]
},
{
"parameters": {
"jsCode": "const dashData = $('Fetch Dashboard Data').item.json;\nconst leads = $('Fetch Voice Leads').all().map(i => i.json);\n\nconst ig = dashData.instagram || {};\nconst fb = dashData.facebook || {};\n\nconst newLeads = leads.filter(l => l.status === 'New').length;\nconst contactedLeads = leads.filter(l => l.status === 'Contacted').length;\nconst bookedLeads = leads.filter(l => l.status === 'Booked').length;\nconst totalLeads = leads.length;\n\nconst summary = `TRIBAL COWBOY DAILY BRIEF \u2014 ${new Date().toLocaleDateString('en-US', {weekday:'long', year:'numeric', month:'long', day:'numeric'})}\n\n\ud83d\udcf8 INSTAGRAM\n Followers: ${ig.followers || 'N/A'}\n Reach: ${ig.reach || 'N/A'}\n Impressions: ${ig.impressions || 'N/A'}\n Profile Views: ${ig.profile_views || 'N/A'}\n Last Updated: ${ig.last_updated ? new Date(ig.last_updated).toLocaleString() : 'N/A'}\n\n\ud83d\udc4d FACEBOOK\n Followers: ${fb.followers || 'N/A'}\n Reach: ${fb.reach || 'N/A'}\n Engagement: ${fb.engagement || 'N/A'}\n Last Updated: ${fb.last_updated ? new Date(fb.last_updated).toLocaleString() : 'N/A'}\n\n\ud83d\udcde VOICE LEADS PIPELINE\n Total Leads: ${totalLeads}\n New (need follow-up): ${newLeads}\n Contacted: ${contactedLeads}\n Booked: ${bookedLeads}\n\n${newLeads > 0 ? '\u26a0\ufe0f ACTION NEEDED: ' + newLeads + ' new lead(s) need follow-up today!' : '\u2705 All leads have been contacted.'}\n\n---\nLatest Leads:\n${leads.slice(0, 5).map(l => ` \u2022 ${l.caller_name || 'Unknown'} \u2014 ${l.service_requested || 'Service TBD'} \u2014 ${l.event_date || 'Date TBD'} \u2014 Status: ${l.status || 'New'}`).join('\\n')}`;\n\nreturn [{ json: { summary, newLeads, totalLeads, bookedLeads } }];"
},
"id": "build-brief",
"name": "Build Daily Brief",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
700,
300
]
},
{
"parameters": {
"sendTo": "info@tribalcowboy.com",
"subject": "=\ud83e\udd20 Tribal Cowboy Daily Brief \u2014 {{ $now.toFormat('EEE MMM d') }}{{ $json.newLeads > 0 ? ' \u26a0\ufe0f ' + $json.newLeads + ' new lead(s)' : '' }}",
"emailType": "text",
"message": "={{ $json.summary }}"
},
"id": "gmail-brief",
"name": "Email Daily Brief",
"type": "n8n-nodes-base.gmail",
"typeVersion": 2.1,
"position": [
940,
300
]
}
],
"connections": {
"Daily 7am": {
"main": [
[
{
"node": "Fetch Dashboard Data",
"type": "main",
"index": 0
},
{
"node": "Fetch Voice Leads",
"type": "main",
"index": 0
}
]
]
},
"Fetch Dashboard Data": {
"main": [
[
{
"node": "Build Daily Brief",
"type": "main",
"index": 0
}
]
]
},
"Fetch Voice Leads": {
"main": [
[
{
"node": "Build Daily Brief",
"type": "main",
"index": 0
}
]
]
},
"Build Daily Brief": {
"main": [
[
{
"node": "Email Daily Brief",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Tribal Cowboy - Daily Brief. Uses httpRequest, gmail. Scheduled trigger; 5 nodes.
Source: https://github.com/mrshuffhines-byte/tribal-cowboy-webhook/blob/94090e151cf99ff9720580a7aa652fe63ddd4f0b/n8n-workflows/09-daily-brief.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.
YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.
14310 Send Overdue Invoice Payment Reminders With Ifirma Gmail Postgrid And Slack. Uses httpRequest, stopAndError, slack, gmail. Scheduled trigger; 53 nodes.
Addendo — Blog Automatico Don Jacinto Nahual. Uses httpRequest, redis, github, gmail. Scheduled trigger; 51 nodes.
Addendo — Blog Automatico Don Jacinto Nahual. Uses httpRequest, redis, github, gmail. Scheduled trigger; 51 nodes.
Instead of providing a routine check, it focuses on significant movements by: Sending a Slack alert only if a query crosses a defined movement threshold. Emailing a structured report with the Top 25 i