DEV Community

Alex Kane
Alex Kane

Posted on

n8n for Influencer & Creator Economy: 5 Automations for Agencies, MCNs, and Creator Ops (Free Workflow JSON)

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" }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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}}" }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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." }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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 } }];"
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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"
      }
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode

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)