Back to Library
Tech Deep DiveEngineering

ManyChat to n8n Integration: Automated Lead Scoring Pipeline (2025)

Alfaz Mahmud Rizve
Alfaz Mahmud Rizve
@whoisalfaz
May 22, 2026
18 min read
ManyChat to n8n Integration: The Complete Lead Scoring Pipeline (2025)

This technical breakdown contains affiliate links. If you deploy this stack using my links, I earn a commission at no extra cost to you.

I've been building automation pipelines for SaaS companies and agencies for years, and I keep seeing the same pattern: marketers fall in love with ManyChat, drive thousands of Instagram DM conversations, and then... the leads just sit there.

No scoring. No routing. No follow-up logic. Just a spreadsheet that someone checks twice a week.

If that sounds familiar, this guide is for you.

If you run an agency, you already know that ManyChat is one of the best conversational capture tools out there. However, in my recent deep-dive on the ManyChat Pricing 2026 Overhaul, I explained why their recent tier and free plan updates make high-efficiency integrations and automated CRM syncs more critical than ever to avoid massive contact billing overages.

Today, I'm going to show you the exact ManyChat to n8n integration architecture I use to turn passive DM leads into a fully automated revenue pipeline — complete with lead scoring, CRM sync, and dynamic callback messages. No Zapier. No expensive middleware. Just clean webhook architecture that scales.

This isn't theory. This is what I shipped for a consulting client running $40k/month in Instagram ad spend, and it handled over 3,000 leads in the first month without a single dropped webhook.

Let's get into it.


⚡ RevOps Blueprint at a Glance

Primary Keyword ManyChat n8n Integration
Est. Build Time ~20 Minutes
Core Tech Stack ManyChat, n8n, Brevo CRM
Key Solution Decoupled Webhook Architecture: Fires an immediate 200 OK webhook response payload back to ManyChat, preventing API call timeout errors while running async lead qualification in the background.

Why ManyChat Alone Isn't Enough for Revenue Operations

ManyChat is brilliant at what it does: capturing attention inside Meta's messaging ecosystem and guiding users through conversational flows. It's the perfect top-of-funnel tool.

But here's the honest truth — ManyChat was designed as a marketing tool, not a RevOps engine. It can collect a name, an email, and a few custom field values. What it cannot do natively:

  • Score leads based on complex logic (BANT framework, company size, MRR tier)
  • Enrich contacts with third-party data from Apollo or Clearbit
  • Sync structured data to a CRM like Brevo with proper field mapping
  • Route high-intent prospects to a different DM message based on their score
  • Run AI qualification using GPT-4 or Gemini against your ICP criteria

If you're trying to align marketing and sales at a higher level, I often work with clients through my Growth Consulting Services to design these workflows before writing any code.

That gap — between the DM capture and the revenue action — is exactly where n8n lives.

The integration works because n8n is not a black box. It's a programmable, open-source workflow engine that speaks the same language as every API on the internet: webhooks and HTTP requests. There is no native ManyChat node required, because you won't need one.


The Architecture: How ManyChat and n8n Actually Connect

Before we write a single node, let's understand the mental model. The integration is built on two directional data flows:

Direction 1 — ManyChat → n8n: When a user completes a step in your ManyChat flow (answers a question, submits an email), ManyChat fires a JSON payload to an n8n Webhook node using the External Request block.

Direction 2 — n8n → ManyChat: After n8n processes the lead (scoring, enriching, syncing), it calls the ManyChat API via an HTTP Request node to push a response back — updating a custom field, applying a tag, or injecting a message directly into the user's conversation.

Together, these two flows create a closed loop where ManyChat handles the conversation UI and n8n handles the business intelligence.

Here's a high-level view of the full pipeline we're building:

JSON Payload
Instagram DM (User) 
  → ManyChat Flow (External Request)
    → n8n Webhook (receives data)
      → Apollo enrichment (optional)
        → Lead Scoring (Code Node)
          → Brevo CRM sync (HTTP Request)
            → n8n → ManyChat API (update custom field + send response)
              → ManyChat delivers dynamic response to user

This happens in seconds. From the user's perspective, they answered three questions and got a hyper-personalized response. Behind the scenes, you just qualified and routed a lead automatically.



ManyChat to n8n Integration Webhook Architecture DiagramClick to expand


Step 1: Setting Up the n8n Webhook to Receive ManyChat Data

Open your n8n workspace and create a new blank workflow. This node acts as the entry point for your Asynchronous RevOps pipeline, handling the incoming Webhook Response Payload.

Add a Webhook node and configure it:

  • HTTP Method: POST
  • Authentication: None for development, Header Auth for production
  • Respond: Change this from "When Last Node Finishes" to "Immediately"

That last setting is mission-critical. I'll explain exactly why in the next section.

Copy the Test URL provided by the webhook node and keep it handy. Click "Listen for Test Event" so n8n is ready to receive incoming data.


Step 2: Configuring ManyChat's External Request Block

Inside your ManyChat Flow Builder—which operates on top of the underlying Instagram Graph API and Meta Developer Suite architecture—navigate to the point in your flow where you've finished collecting lead data (after they've answered your qualifying questions).

1
Add an Action Block
2
Select External Request
3
Set the Request Type to POST
4
Paste your n8n Webhook Test URL
5
Navigate to the Body tab and construct your JSON payload

Your payload should map ManyChat's dynamic fields to clean JSON keys:

JSON Payload
{
  "subscriber_id": "{{user_id}}",
  "first_name": "{{first_name}}",
  "email": "{{email}}",
  "monthly_revenue": "{{custom_field.monthly_revenue}}",
  "primary_goal": "{{custom_field.primary_goal}}",
  "team_size": "{{custom_field.team_size}}",
  "source_channel": "Instagram DM"
}

Click Test the Request. If your n8n webhook is listening, you'll see the data appear live inside the workflow. This confirms the handshake is working.


The Most Common Reason ManyChat–n8n Integrations Break (And How to Fix It)

Before we go any further, let me address the number-one failure point that I see in every beginner tutorial online.

ManyChat enforces a strict 10-second timeout on all External Requests.

If your n8n workflow takes longer than 10 seconds to process — which happens the moment you add an AI call, a CRM lookup, or any external API — ManyChat will flag the request as failed. Your user sees a broken chatbot. Your lead gets dropped. The entire pipeline collapses.

The solution is a concept called decoupling, and it's the architectural difference between a hobby integration and a production system.

The Decoupled Architecture

By setting n8n's Webhook node to "Respond Immediately", n8n fires a 200 OK back to ManyChat the instant the webhook is received — before doing any processing. ManyChat considers the action a success and moves the user through the flow. Inside the Meta Developer Suite ecosystem, handling high-volume webhooks asynchronously is standard production practice to prevent dropped API requests and rate-limiting blocks.

Meanwhile, n8n continues its work in the background: hitting the Apollo API, running the scoring algorithm, syncing to Brevo, and eventually calling the ManyChat API to push the response back. To the user, the bot continues naturally a few seconds later. They never know the difference.

This one architectural change is what separates fragile demo pipelines from bulletproof production systems.


Step 3: AI-Powered Lead Scoring Inside n8n

Now that your data is safely inside n8n and we've solved the timeout problem, it's time to actually score the lead.

There are two approaches here: rule-based scoring (fast, deterministic) and AI-powered scoring (flexible, NLP-aware). I typically recommend a hybrid.

Rule-Based Scoring (Code Node)

Add a Code Node after your Webhook trigger. This uses plain JavaScript to weight your lead attributes:

JSON Payload
// Destructure the incoming ManyChat payload
const { monthly_revenue, team_size, primary_goal } = $json.body;

let score = 0;

// Score based on self-reported revenue
if (monthly_revenue === "$10k–$50k/month") score += 25;
if (monthly_revenue === "$50k+/month") score += 50;

// Score based on team size (proxy for budget)
if (parseInt(team_size) >= 10) score += 20;
if (parseInt(team_size) >= 50) score += 35;

// Score based on stated goal alignment
if (primary_goal === "scale_automations") score += 20;
if (primary_goal === "reduce_manual_work") score += 10;

// Determine tier
const tier = score >= 70 ? "hot" : score >= 40 ? "warm" : "cold";

return { ...$json, lead_score: score, lead_tier: tier };

AI Scoring with GPT-4 (for unstructured responses)

If your ManyChat flow allows free-text answers — like "Tell me about your biggest operational challenge" — rule-based scoring won't cut it. Add an OpenAI node and pass the user's responses through a system prompt like:

"You are a B2B lead qualification assistant. Based on the following user responses, score this lead from 0-100 against our ICP: SaaS companies with $10k–$100k MRR, teams of 5-50 people, who are actively trying to reduce manual operational overhead. Output a JSON object with score and reasoning."

This gives you a human-level qualification engine running at machine speed.


Step 4: Syncing Qualified Leads to Brevo CRM

A lead score means nothing if it lives only inside n8n. The next node in your workflow pushes this enriched data into Brevo, where your sales team can action it.

Brevo's API makes this straightforward. Use an HTTP Request node configured with:

  • Method: POST
  • URL: https://api.brevo.com/v3/contacts
  • Headers:
    • api-key: YOUR_BREVO_API_KEY
    • Content-Type: application/json
  • Body:
JSON Payload
{
  "email": "{{ $json.body.email }}",
  "firstName": "{{ $json.body.first_name }}",
  "attributes": {
    "LEAD_SCORE": "{{ $json.lead_score }}",
    "LEAD_TIER": "{{ $json.lead_tier }}",
    "MONTHLY_REVENUE": "{{ $json.body.monthly_revenue }}",
    "SOURCE": "Instagram DM / ManyChat"
  },
  "listIds": ["{{ $json.lead_tier === 'hot' ? 5 : 8 }}"]
}

This automatically segments hot leads (list ID 5) and cold leads (list ID 8) in Brevo, so your email nurture sequences fire correctly without any manual list management.


Step 5: Closing the Loop — Pushing a Dynamic Response Back to ManyChat

This is the part that makes the whole system feel magical. After n8n has scored the lead and synced them to Brevo, we fire one final API call back to ManyChat to inject a personalized response into their open DM conversation.

Add a final HTTP Request node with:

  • Method: POST
  • URL: https://api.manychat.com/fb/sending/sendContent
  • Authorization: Bearer YOUR_MANYCHAT_API_TOKEN
  • Body:
JSON Payload
{
  "subscriber_id": "{{ $json.body.subscriber_id }}",
  "data": {
    "version": "v2",
    "content": {
      "messages": [
        {
          "type": "text",
          "text": "{{ $json.lead_tier === 'hot' ? '🔥 Based on what you shared, you\\'re a strong fit for our Automation Acceleration program. Here\\'s a link to book a 30-min strategy call: [Your Cal Link]' : '👋 Thanks for sharing! I\\'ve put together a free n8n automation playbook that\\'s perfect for where you are right now. Grab it here: [Your Link]' }}"
        }
      ]
    }
  }
}

The user receives a different message based on whether they are a "hot" or non-hot lead — without any manual intervention on your end.



Automated B2B Lead Scoring and CRM Sync Workflow Diagram in n8nClick to expand

The Complete n8n Workflow Blueprint (Copy-Paste JSON)

Instead of building each node from scratch, you can copy the entire workflow blueprint below. In your n8n canvas, simply press Ctrl + V (or Cmd + V on Mac) to import this complete Asynchronous RevOps pipeline instantly.

Remember to configure your API headers, secrets, and credentials for Brevo and ManyChat before executing.

JSON Payload
{
  "name": "ManyChat to n8n Lead Scoring & CRM Pipeline",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "manychat-lead-scoring",
        "responseMode": "responseImmediately",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        250,
        360
      ],
      "id": "webhook-trigger",
      "name": "ManyChat Webhook"
    },
    {
      "parameters": {
        "jsCode": "const { monthly_revenue, team_size, primary_goal } = $json.body;\\n\\nlet score = 0;\\n\\nif (monthly_revenue === \\\"$10k–$50k/month\\\") score += 25;\\nif (monthly_revenue === \\\"$50k+/month\\\") score += 50;\\n\\nif (parseInt(team_size) >= 10) score += 20;\\nif (parseInt(team_size) >= 50) score += 35;\\n\\nif (primary_goal === \\\"scale_automations\\\") score += 20;\\nif (primary_goal === \\\"reduce_manual_work\\\") score += 10;\\n\\nconst tier = score >= 70 ? \\\"hot\\\" : score >= 40 ? \\\"warm\\\" : \\\"cold\\\";\\n\\nreturn { ...$json, lead_score: score, lead_tier: tier };"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        480,
        360
      ],
      "id": "scoring-node",
      "name": "Lead Scoring Algorithm"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.brevo.com/v3/contacts",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "api-key",
              "value": "YOUR_BREVO_API_KEY"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "email",
              "value": "={{ $json.body.email }}"
            },
            {
              "name": "firstName",
              "value": "={{ $json.body.first_name }}"
            },
            {
              "name": "attributes",
              "value": "={{ { LEAD_SCORE: $json.lead_score, LEAD_TIER: $json.lead_tier, MONTHLY_REVENUE: $json.body.monthly_revenue, SOURCE: 'Instagram DM / ManyChat' } }}"
            },
            {
              "name": "listIds",
              "value": "={{ [$json.lead_tier === 'hot' ? 5 : 8] }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        700,
        360
      ],
      "id": "brevo-sync",
      "name": "Sync to Brevo CRM"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.manychat.com/fb/sending/sendContent",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_MANYCHAT_API_TOKEN"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={\"subscriber_id\": \"{{ $json.body.subscriber_id }}\", \"data\": {\"version\": \"v2\", \"content\": {\"messages\": [{\"type\": \"text\", \"text\": \"{{ $json.lead_tier === 'hot' ? '🔥 Based on what you shared, you\\\\'re a strong fit for our Automation Acceleration program. Here\\\\'s a link to book a 30-min strategy call: [Your Cal Link]' : '👋 Thanks for sharing! I\\\\'ve put together a free n8n automation playbook that\\\\'s perfect for where you are right now. Grab it here: [Your Link]' }}\"}]}}}"
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.1,
      "position": [
        920,
        360
      ],
      "id": "manychat-callback",
      "name": "Send ManyChat DM"
    }
  ],
  "connections": {
    "ManyChat Webhook": {
      "main": [
        [
          {
            "node": "Lead Scoring Algorithm",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Lead Scoring Algorithm": {
      "main": [
        [
          {
            "node": "Sync to Brevo CRM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Sync to Brevo CRM": {
      "main": [
        [
          {
            "node": "Send ManyChat DM",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Frequently Asked Questions

Does ManyChat have a native n8n integration?

No. As of 2025, there is no official ManyChat node inside n8n. However, this is not a limitation — it's a design choice. By using ManyChat's External Request block (which fires to any webhook URL) and n8n's HTTP Request node (which can call any REST API), you get more flexibility than a pre-built node would offer. You can access every endpoint in ManyChat's API, not just the ones a vendor decided to support.

How do I fix the ManyChat External Request 10-second timeout?

The fix is to change n8n's Webhook node response mode from "When Last Node Finishes" to "Immediately". This makes n8n respond with 200 OK the instant it receives the webhook, satisfying ManyChat's timeout requirement. n8n then continues processing asynchronously in the background and pushes the final response back to ManyChat via the ManyChat API.

Can this integration work for Instagram DMs, WhatsApp, and Facebook Messenger?

Yes. The webhook-based architecture is channel-agnostic. Because ManyChat manages all three channels and exposes the same External Request block across all of them, your n8n workflow receives the same JSON structure regardless of which channel the user is on. The ManyChat API calls at the end of the workflow also support all three channels via the same subscriber ID system.

What happens if a user sends multiple messages rapidly? Does n8n get triggered multiple times?

This is a common webhook duplication issue known as message bundling. If a user sends three messages in quick succession, ManyChat can fire three separate webhooks. To handle this gracefully and enforce idempotency / deduplication across your Asynchronous RevOps pipeline, implement a short Wait node (15–20 seconds) at the start of your n8n workflow. This wait node allows the user's responses to buffer. Before proceeding, n8n checks if there is already an active execution for that subscriber_id, discarding duplicate Webhook Response Payloads and ensuring only one qualified scoring run occurs. Alternatively, configure built-in delay blocks inside the ManyChat Flow Builder to bundle input before hitting the n8n endpoint.

Is this integration secure? How do I protect my n8n webhook from unauthorized requests?

For production systems, always enable Header Auth on your n8n Webhook node. Generate a secret token and configure ManyChat to include it in the request headers (e.g., X-Webhook-Secret: your-secret-token). Your n8n workflow then validates this header before processing. This ensures that only authenticated requests from ManyChat can trigger your lead scoring pipeline.

Can I use this same architecture with GoHighLevel, HubSpot, or Airtable instead of Brevo?

Absolutely. The architecture is CRM-agnostic. Step 4 of this tutorial uses Brevo, but the same HTTP Request node pattern works with any tool that has a REST API. Simply swap the Brevo endpoint URL, API key, and JSON body structure for your preferred CRM. n8n has pre-built credential types for HubSpot and Airtable, which makes authentication even simpler.

How much does this cost compared to using Zapier for the same workflow?

Zapier charges per "Zap" and per task, which adds up fast at scale. A workflow with 5 steps handling 3,000 leads per month could cost $100–$300+/month on Zapier's professional tiers. n8n's cloud plan starts at a flat rate significantly lower, and self-hosted n8n is free for any volume. For high-volume use cases, the cost difference over 12 months is substantial.


Your Next Steps

Building a ManyChat to n8n integration is one of the highest-leverage things you can do for your RevOps stack right now.

You're not just automating a task. You're building a system that qualifies, routes, and nurtures leads while you sleep — and one that gets smarter as you add more data points to the scoring logic.

Here is what I recommend you do next:

1
Start with the webhook — just get ManyChat talking to n8n with a simple payload first.
2
Add the scoring logic — even a basic rule-based score is 10x better than no score.
3
Sync to Brevo — so your leads are never stuck in a silo.
4
Layer in AI qualification — once the pipeline is stable, upgrade the scoring node to use OpenAI.

If you want to shortcut this entire process and have a senior automation engineer build and deploy this pipeline for your specific stack, check out my n8n Automation Services — that's exactly what I do.

Book a free 30-minute RevOps strategy call and let's map out what your pipeline should look like.


In this Article

Ready to automate your agency?

Skip the manual grunt work. Let's build a custom system that runs your business on autopilot 24/7.