If you manage influencers, run a creator agency, or operate an MCN, you're juggling brand deal pipelines, content scheduling, sponsorship reporting, and outreach tracking simultaneously — usually with a small ops team.
These five n8n automations handle the repetitive coordination work so your team can focus on relationships and creative direction.
What is n8n?
n8n is a free, open-source workflow automation tool. Self-hosted means your creator analytics, brand deal terms, audience data, and outreach history stay in your own infrastructure — not routed through Zapier or Make's cloud. Creator and brand deal data is commercially sensitive: CPM rates, exclusivity windows, deal fees, audience demographics.
Workflow 1: Brand Deal Pipeline Manager
When a brand inquiry comes in, you need to capture it, route it to the right person, and track it through negotiation to signed contract — without losing deals in email threads.
Nodes: Webhook → Code (score/tier) → IF (meets minimum) → Google Sheets (CRM log) → Slack (partnerships alert) → Gmail (auto-ACK to brand)
{
"nodes": [
{
"name": "Brand Inquiry Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": { "path": "brand-inquiry", "responseMode": "responseNode" }
},
{
"name": "Extract and Score Deal",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const data = $json.body; const budget = parseInt(data.budget_usd || 0); const tier = budget >= 25000 ? 'PREMIUM' : budget >= 10000 ? 'MID' : budget >= 2000 ? 'STANDARD' : 'BELOW_MIN'; return [{ json: { brand: data.brand_name, contact_email: data.contact_email, budget_usd: budget, deliverables: data.deliverables, tier, timestamp: new Date().toISOString() }}];"
}
},
{
"name": "Route by Tier",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": { "string": [{ "value1": "={{$json.tier}}", "operation": "notEqual", "value2": "BELOW_MIN" }] }
}
},
{
"name": "Log to Sheets CRM",
"type": "n8n-nodes-base.googleSheets",
"parameters": { "operation": "append", "sheetId": "YOUR_SHEET_ID", "range": "Deals!A:H" }
},
{
"name": "Slack Alert to Partnerships Team",
"type": "n8n-nodes-base.slack",
"parameters": { "channel": "#brand-deals", "text": "={{$json.tier}} deal: {{$json.brand}} — ${{$json.budget_usd}} budget" }
}
]
}
What this handles:
- Automatic tier classification by budget (PREMIUM/MID/STANDARD/BELOW_MIN)
- Below-minimum inquiries get a polite auto-decline; qualifying deals get logged and Slacked
- Sheets becomes your CRM: brand name, contact, budget, tier, status
- Brand gets an acknowledgment within seconds — looks professional even at 2am
Workflow 2: Content Publishing Schedule & Team Notifier
Your creators have a content calendar across YouTube, Instagram, TikTok, and Twitter. When content is due, the right people need to know — without you manually sending reminder messages.
Nodes: Schedule (daily 9AM) → Google Sheets (read calendar) → Code (filter due today/tomorrow) → Gmail (notify creator + manager) → Slack (ops summary)
{
"nodes": [
{
"name": "Daily Schedule",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": { "rule": { "interval": [{ "field": "cronExpression", "expression": "0 9 * * *" }] } }
},
{
"name": "Read Content Calendar",
"type": "n8n-nodes-base.googleSheets",
"parameters": { "operation": "getAll", "sheetId": "YOUR_CONTENT_SHEET_ID", "range": "Calendar!A:G" }
},
{
"name": "Filter Due Today and Tomorrow",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const today = new Date().toISOString().split('T')[0]; const tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0]; return $input.all().filter(item => { const pub = item.json.publish_date; return pub === today || pub === tomorrow; });"
}
},
{
"name": "Email Creator and Manager",
"type": "n8n-nodes-base.gmail",
"parameters": { "to": "={{$json.creator_email}}", "cc": "={{$json.manager_email}}", "subject": "Content Due {{$json.publish_date}}: {{$json.title}}" }
}
]
}
Workflow 3: Sponsorship Performance Tracker
After a sponsored video goes live, you need to report performance to the brand. This workflow pulls analytics automatically 24 hours after publish and calculates CPM, engagement rate, and ROI.
Nodes: Webhook (content published) → Wait (24h) → HTTP Request (YouTube Analytics API) → Code (calculate CPM + flag high CPM) → Google Sheets (log) → IF (high CPM) → Slack (warning)
{
"nodes": [
{
"name": "Content Published Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": { "path": "content-published" }
},
{
"name": "Wait 24 Hours",
"type": "n8n-nodes-base.wait",
"parameters": { "unit": "hours", "amount": 24 }
},
{
"name": "Fetch YouTube Analytics",
"type": "n8n-nodes-base.httpRequest",
"parameters": { "url": "https://www.googleapis.com/youtube/v3/videos?part=statistics&key={{$env.YOUTUBE_API_KEY}}&id={{$json.video_id}}" }
},
{
"name": "Calculate Sponsorship ROI",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const stats = $input.first().json.items[0].statistics; const deal = $node['Content Published Webhook'].json.body; const views = parseInt(stats.viewCount); const cpm = (deal.deal_fee_usd / (views / 1000)).toFixed(2); const engagement = (parseInt(stats.likeCount) / views * 100).toFixed(2); return [{ json: { brand: deal.brand, views, cpm, engagement_rate: engagement, roi_flag: parseFloat(cpm) > 25 ? 'HIGH_CPM' : 'OK' }}];"
}
},
{
"name": "Slack Warning if High CPM",
"type": "n8n-nodes-base.slack",
"parameters": { "channel": "#partnerships", "text": "CPM WARNING: {{$json.brand}} — ${{$json.cpm}} CPM on {{$json.views}} views." }
}
]
}
Workflow 4: Weekly Audience Growth Report
Your team and brand partners want to see growth trends. This workflow pulls cross-platform stats every Monday and delivers a single consolidated report.
Nodes: Schedule (Monday 8AM) → Google Sheets (creator roster) → HTTP Request (YouTube API) → Code (WoW% calculation using static data) → Code (build HTML) → Gmail (leadership) → Slack (one-liner)
{
"nodes": [
{
"name": "Monday 8AM",
"type": "n8n-nodes-base.scheduleTrigger",
"parameters": { "rule": { "interval": [{ "field": "cronExpression", "expression": "0 8 * * 1" }] } }
},
{
"name": "Fetch YouTube Channel Stats",
"type": "n8n-nodes-base.httpRequest",
"parameters": { "url": "https://www.googleapis.com/youtube/v3/channels?part=statistics&key={{$env.YOUTUBE_API_KEY}}&id={{$json.youtube_channel_id}}" }
},
{
"name": "Build Weekly KPIs",
"type": "n8n-nodes-base.code",
"parameters": {
"jsCode": "const prev = $getWorkflowStaticData('global'); const stats = $json.items && $json.items[0] ? $json.items[0].statistics : {}; const subs = parseInt(stats.subscriberCount || 0); const creator = $node['Read Creator Roster'].json.creator_name; const prevSubs = prev[creator] ? prev[creator].yt_subs : subs; const growth = prevSubs > 0 ? ((subs - prevSubs) / prevSubs * 100).toFixed(2) : '0'; prev[creator] = { yt_subs: subs }; $setWorkflowStaticData('global', prev); return [{ json: { creator, yt_subs: subs, sub_growth_pct: growth } }];"
}
}
]
}
The $getWorkflowStaticData / $setWorkflowStaticData pattern lets the workflow remember last week's numbers without an external database — n8n stores them in the workflow itself.
Workflow 5: Creator Outreach & UGC Campaign Tracker
When you're recruiting new creators or running a gifting campaign, tracking outreach status across a spreadsheet becomes a full-time job. This workflow automates the sequence and status updates.
Nodes: Google Sheets Trigger (new prospect row) → Gmail (initial outreach) → Google Sheets (log sent) → Wait (5 days) → Google Sheets (check reply status) → IF (no reply) → Gmail (follow-up)
{
"nodes": [
{
"name": "New Prospect Added to Sheet",
"type": "n8n-nodes-base.googleSheetsTrigger",
"parameters": { "sheetId": "YOUR_OUTREACH_SHEET_ID", "event": "rowAdded" }
},
{
"name": "Send Initial Outreach Email",
"type": "n8n-nodes-base.gmail",
"parameters": {
"to": "={{$json.creator_email}}",
"subject": "Collaboration opportunity — {{$json.brand_name}}",
"message": "Hi {{$json.creator_name}},\n\nI am reaching out about a potential partnership. We would love to discuss {{$json.offer_summary}} with you.\n\nInterested? Book a quick call: {{$json.booking_link}}\n\nBest,\nPartnerships Team"
}
},
{
"name": "Wait 5 Days",
"type": "n8n-nodes-base.wait",
"parameters": { "unit": "days", "amount": 5 }
},
{
"name": "Send Follow-Up if No Reply",
"type": "n8n-nodes-base.if",
"parameters": {
"conditions": { "string": [{ "value1": "={{$json.status}}", "operation": "equal", "value2": "OUTREACH_SENT" }] }
}
},
{
"name": "Follow-Up Email",
"type": "n8n-nodes-base.gmail",
"parameters": {
"to": "={{$json.creator_email}}",
"subject": "Re: Collaboration opportunity — {{$json.brand_name}}",
"message": "Hi {{$json.creator_name}},\n\nJust following up on my message about the {{$json.brand_name}} partnership. Happy to answer any questions!\n\nBest,\nPartnerships Team"
}
}
]
}
Why self-host n8n for creator operations?
Creator data is commercially sensitive in multiple ways:
- CPM and deal rates: your negotiated rates with brands are confidential — routing them through Zapier or Make exposes them to third-party cloud storage
- Audience demographics: detailed audience data from YouTube/Instagram APIs is contractually restricted and personally sensitive
- Creator contact info: GDPR applies to your creator roster if any are EU-based
- Outreach strategy: your prospect lists and pitch copy are competitive intelligence
Self-hosted n8n means your data stays in your VPC. Workflows are stored as git-versioned JSON — audit trail, rollback, code review. No per-task pricing — infrastructure cost only (typically < $20/month on a VPS).
| Zapier | Make | n8n Self-Hosted | |
|---|---|---|---|
| Monthly cost at 10K tasks | ~$100+ | ~$50+ | Infrastructure only |
| Data location | Zapier cloud | Make cloud | Your VPC |
| Brand deal data exposure | Yes | Yes | No |
| Custom scoring/logic | Limited | Limited | Full JS/Python |
| Git-versioned workflows | No | No | Yes |
If you want these workflows ready to import (plus 10 more automation templates for different ops use cases), check out FlowKit at stripeai.gumroad.com.
Questions about adapting any of these for your specific creator stack? Drop them in the comments.
Top comments (0)