Blog

How to Automate Response Management on LinkedIn Using n8n

Written By
Glenn Miseroy
Published on January 27, 2026
Read time: 11 Min
automate your linkedin responses
Written By
Glenn Miseroy

Congratulations, you’re finally getting replies to your LinkedIn outreach! 

automate your linkedin responses

But the bad news is that you can’t keep up with them.

Most teams spend weeks perfecting their outreach campaigns, then completely drop the ball when people actually respond. You check LinkedIn DMs a few times a day, try to craft thoughtful replies, get pulled into meetings, forget who you were replying to, and by the time you circle back, the moment’s gone.

48% of salespeople never make any follow-up attempts after initial contact – even when there was interest. That means nearly half of positive contacts never get pursued further. The reason is pretty simple: manual response management just doesn’t scale. A hundred responses a day means 3-4 hours just writing replies. That’s time you’re not spending prospecting, on calls, or closing deals.

So what’s the alternative? Full automation?

That’s where most people get nervous. “What if AI sends something stupid? What if it misreads context and kills a hot lead?”

Fair concerns. But there’s a middle ground that gives you speed without sacrificing control. AI writes the response and you approve it before it sends. This is how you eliminate the blank-page problem (staring at a DM wondering what to say), but you stay in the driver’s seat.

Here’s how to set it up using Expandi’s new API + webhooks combined with n8n automation.

Why Response Management Kills Pipeline 

You get a reply to your outreach that says “interested, but can you send pricing?” It’s a simple question but you’re in back-to-back meetings and by the time you circle back, it’s been two days. The prospect already talked to a competitor.

Or someone asks a complex question about integration. You need to think through the answer. It sits in your inbox for a week while “urgent” stuff takes priority but by then, they’ve moved on.

The breaking point often isn’t just volume. It’s a combination of volume + decision fatigue.

Every response requires you to:

  • Read the full conversation thread
  • Figure out what they actually need
  • Craft a reply that moves things forward
  • Decide if this is the right time to pitch or just help

Do that fifty times a day and your brain melts.

And then you decide to try automation – auto-replies with generic templates. It feels robotic because it is and your conversations die faster than if you’d said nothing.

So you go back to manual and accept that some leads will slip through.

But what if we told you there is a better way?

The Three Approaches to Response Management

Fully Manual

This is where you check LinkedIn DMs every hour, read context, write responses, send. And then repeat fifty times a day.

You get quality and control but no speed. By the time you respond, the lead’s already cold.

Result: burnout and missed opportunities.

“Dumb” Automation

We’ve all received a message like this at least once. You ask a specific question and get back a generic template that completely ignores what you said.

These are auto-replies with zero context and no intelligence. Just the same canned response blasted to everyone regardless of what they actually asked.

You get speed but you sacrifice everything else. They don’t read the conversation. They don’t adjust tone. They just blast the same message regardless of what the person said.

Result: fast replies that kill conversations and tank your conversion rate.

AI + Human-in-the-Loop

Expandi captures the response via webhook. n8n runs sentiment analysis to filter out noise. If the response is positive or neutral, AI reads the full conversation history and generates a contextual reply that actually makes sense. You review and approve before it sends.

This is where speed meets intelligence.

AI gives you a draft based on full context so you’re not staring at messages wondering what to say – you’re making yes/no decisions on replies that are already 80% there.

You end up responding in minutes, not hours. Quality stays high because you have final approval and nothing sends unless you say so.

Result: speed plus intelligence plus control.

This third approach is what we’re building here.

Why Expandi + n8n?

Most LinkedIn automation tools stop at sending the first message and some templated follow-ups. Expandi goes further.

We recently added direct API access and webhooks that trigger when someone responds to your campaigns. The second a reply comes in, Expandi can send all that data including message content, sender info, conversation history, to whatever system you want to connect.

That’s where n8n comes in.

n8n is a workflow automation platform that lets you build complex logic without writing code. You connect different tools together visually, set conditions, and create sequences that run automatically.

In terms of response management, this means that when Expandi sends response data via webhook, n8n catches it, analyzes the sentiment, decides if it’s worth responding to, generates an AI reply based on the full conversation, and routes it to you for approval, all in seconds.

This is how you build an intelligent response manga system where AI does most of the heavy-lifting for you but you get the final approval on what goes out.

How the System Works: The 5-Step Workflow

Step 1: Webhook Trigger

When someone replies to your LinkedIn campaign, Expandi immediately fires a webhook the second that response comes in.

You can set this up two ways:

  • Option A: Only trigger for campaign responses (filters out random DMs)
  • Option B: Trigger for all LinkedIn messages (automate everything)

Either way, the webhook sends everything to n8n including message content, sender profile, timestamp, the whole conversation ID, etc.

Step 2: Context Retrieval

n8n makes an API call back to Expandi and pulls the entire conversation thread with that person.

Context matters a lot here. If someone said “not interested” in message two but changed their mind by message four and said “actually, tell me more,” the AI needs to know that shift happened. Without the full thread, you’d get the wrong response generated and put off the prospect.

Step 3: Sentiment Analysis

n8n sends the conversation to your AI model (ChatGPT, Claude, etc.) and asks it to categorize the sentiment.

  • Positive: “Yes, interested” / “Tell me more” / “Let’s chat”
  • Neutral: “Maybe later” / “Not right now” / Questions
  • Negative: “Not interested” / “Stop messaging me”

AI only generates responses for positive or neutral sentiment. Negative responses get flagged so you know about them, but the system doesn’t waste time drafting replies to people who clearly don’t want to hear from you.

Step 4: AI Response Generation

For positive or neutral responses, AI writes a contextual reply.

The prompt you feed it includes:

  • Full conversation history
  • Your campaign messaging framework
  • Your tone and style guidelines
  • Specific instructions (e.g., “If they ask about pricing, suggest a call”)

AI drafts something that actually responds to what they said and moves the conversation forward naturally.

Step 5: Human Approval

n8n pushes the AI-generated response to you for review. This could be a Slack message with approve/deny buttons, an email notification, or a dashboard, whatever works for your workflow.

You look at the draft and make a call:

  • Approve: n8n sends it through Expandi’s API
  • Deny: Nothing goes out, handle it manually if you want
  • Edit: Tweak the draft before sending

The whole workflow runs in the background while you’re in meetings, on calls, or doing actual sales work. You just pop in when there’s a decision to make.

Setting This Up in Expandi + n8n

Prerequisites

  • Active Expandi account with campaigns running
  • n8n account (cloud or self-hosted) 
  • API access to an AI model (OpenAI, Anthropic, etc.)
  • Slack account (optional, for approval interface)

Step-by-Step Setup

1.Get Your Expandi API Key

  • Log into Expandi
  • Go to Settings → API & Webhooks
  • Click “Generate API Key”
  • Copy and save this key somewhere safe – you’ll need it multiple times

2. Configure Expandi Webhooks

  • Still in Settings → API & Webhooks
  • Click “Create New Webhook”
  • Choose trigger type:
    • “Campaign Response Received” (only automate campaign replies)
    • OR “All Messages Received” (automate everything)
  • Leave the webhook URL field empty for now (you’ll fill this in after creating the n8n workflow)
  • Click “Save”

3. Build the n8n Workflow

Step 1: Create a new workflow

  • Log into n8n
  • Click “New Workflow”
  • Name it “Expandi Response Automation”

Step 2: Add the Webhook node

  • Click the “+” button to add your first node
  • Search for “Webhook” and select it
  • Choose “Webhook” as the trigger type
  • Set the method to “POST”
  • Copy the webhook URL that n8n generates (looks like: https://your-n8n-instance.com/webhook/xxxxx)
  • NOW go back to Expandi:
    • Navigate back to Settings → API & Webhooks
    • Find the webhook you created earlier
    • Paste the n8n webhook URL into the “Webhook URL” field
    • Click “Test Webhook” to make sure it’s connected
    • Save

Step 3: Add HTTP Request node for conversation history

  • Back in n8n, add a new node after the webhook
  • Search for “HTTP Request” and select it
  • Set the method to “GET”
  • URL: https://api.expandi.io/rest/v1/conversations/{{$json[“body”][“conversation_id“]}}
  • Under Authentication, choose “Header Auth”
    • Header Name: Authorization
    • Header Value: Bearer YOUR_EXPANDI_API_KEY (paste the API key you copied in Step 1)
  • Click “Execute Node” to test – you should see conversation data returned

Step 4: Add AI sentiment analysis node

  • Add another node
  • Search for your AI tool (OpenAI, Anthropic, etc.)
  • If using OpenAI:
    • Select “OpenAI” node
    • Choose “Message a Model”
    • Add your OpenAI API key when prompted
    • Model: gpt-4 or gpt-3.5-turbo
    • Prompt: Analyze the sentiment of this conversation: {{$json[“body”][“conversation”]}}. Reply with only one word: positive, neutral, or negative.

Step 5: Add IF node for filtering

  • Add an “IF” node
  • Condition 1: {{$json[“choices”][0][“message”][“content”]}} equals positive
  • Condition 2: {{$json[“choices”][0][“message”][“content”]}} equals neutral
  • Set logic to “OR” (continue if either condition is true)

Step 6: Add AI response generation node

  • Connect to the “true” output of the IF node
  • Add another OpenAI/Claude node
  • Prompt template:

“You are a sales rep responding to a LinkedIn message.

Conversation history:

{{$json[“conversation”]}}

Your messaging framework:

[Paste your framework here]

Your tone guidelines:

[Paste your style guide here]

Specific rules:

– If they ask about pricing, suggest booking a call

– Keep responses under 100 words

– Be helpful, not pushy

Write a response to their latest message.”

Step 7: Add Slack approval node

  • Add a “Slack” node
  • Choose “Send Message”
  • Connect your Slack workspace when prompted
  • Channel: Choose your channel or DM yourself
  • Message text:

“New response to approve:

Original message: {{$json[“latest_message”]}}

AI suggested reply: {{$json[“ai_response”]}}

React with ✅ to approve or ❌ to deny”

  • Add “Wait for Webhook” node after this to pause until you respond
  • Configure the webhook to listen for Slack reactions

Step 8: Add final send node (only if approved)

Add HTTP Request node connected to the “approved” path

Method: POST

URL: https://api.expandi.io/rest/v1/messages/send

Note: Check Expandi API docs for exact endpoint

Headers:

Authorization: Bearer YOUR_EXPANDI_API_KEY

Content-Type: application/json

Body (JSON):

json

{

  “conversation_id”: “{{$json[“conversation_id”]}}”,

  “message”: “{{$json[“ai_response”]}}”

}

Step 9: Test the workflow

  • Click “Execute Workflow” to activate it
  • Send yourself a test message on LinkedIn through an Expandi campaign
  • Watch it flow through each node in n8n
  • Check that you get the Slack approval message
  • Approve it and confirm the message sends on LinkedIn

Step 10: Activate

  • Once testing works, click “Active” toggle in the top right
  • The workflow now runs automatically for every response

Notes:

  • Use n8n’s debugging tools: Click “Execute Node” on any node to see what data is actually flowing through. This helps you catch issues like wrong field names or missing data before activating the workflow.
  • Test with throwaway conversations first: Don’t activate this on your main campaigns right away. Run it through a few test conversations where it doesn’t matter if something goes wrong.
  • Monitor the first 20-30 responses: Once live, keep an eye on the execution log in n8n for the first day. You’ll spot any edge cases or errors that only show up with real data.
  • Have a backup plan: Keep manual response management as a fallback until you’re confident the automation is working consistently. Nothing worse than realizing your automation broke and you’ve been ignoring leads for three days.

Advanced: Removing the Human-in-the-Loop

Once you’ve run 50+ responses through the system and trust how AI handles things, you can automate certain reply types completely.

How to set up conditional auto-send:

Step 1: Add a second IF node after sentiment analysis

  • Place this before the “AI response generation” node
  • This checks message complexity, not just sentiment

Step 2: Set your auto-send conditions Configure the IF node with these conditions:

  • Condition 1: Sentiment = positive
  • AND Condition 2: Message length < 50 characters
  • Logic: Both must be true

Step 3: Split the workflow into two paths

Path A (auto-send):

  • Connect the “true” output to AI response generation
  • Skip the Slack approval node entirely
  • Go straight to the “send message” node

Path B (requires approval):

  • Connect the “false” output to AI response generation
  • Route through Slack approval
  • Then to “send message” only if approved

What this looks like in practice:

Someone replies: “Yes, I’m interested” (24 characters, positive sentiment) → AI generates reply → Sends automatically

Someone replies: “Interested, but can you explain how the integration works with Salesforce?” (78 characters, neutral sentiment) → AI generates reply → Goes to you for approval

Start conservative:

  • Begin with very strict auto-send rules (positive sentiment + under 30 characters)
  • Monitor what gets auto-sent for the first week
  • Gradually expand the rules as you see what AI consistently handles well

Suggested progression:

  • Week 1: Auto-send only “yes” and “interested” type responses
  • Week 2: Add simple scheduling requests (“Sure, let’s chat”)
  • Week 3: Add basic question responses if AI accuracy is high
  • Keep complex objections, pricing questions, and multi-part messages in human review indefinitely

Troubleshooting Common Issues

Here’s what usually breaks and how to fix it.

1. Webhook not firing / No responses coming through

Check Expandi settings:

  • Go to Settings → API & Webhooks
  • Verify the webhook URL is correct (copy it from n8n and paste again if needed)
  • Check that the webhook is set to “Active”
  • Click “Test Webhook” – if it fails, the URL is wrong or n8n isn’t running

Check n8n:

  • Make sure your workflow is set to “Active” (toggle in top right)
  • Check the webhook node is set to listen mode
  • Look at execution history – are any webhook calls coming in at all?

2. AI generating off-brand responses

Your AI prompt needs more specific examples.

Instead of just telling AI “be helpful and professional,” show it examples:

Bad: “Thanks for your interest! Let me know if you have questions.” Good: “Glad this resonates. The pricing breakdown is [specific info]. Want to hop on a quick call Thursday to walk through it?”

Add 3-5 examples of responses you’ve written that match your brand. AI will mirror the style.

3. Sentiment analysis being too strict or too loose

Too strict (missing interested leads):

  • Messages like “Can you explain how this works?” getting tagged as negative
  • Simple questions getting filtered out

Fix: Adjust your sentiment prompt to treat questions as neutral, not negative.

Too loose (letting through obvious rejections):

  • “Not interested” getting tagged as neutral
  • Sarcastic responses getting tagged as positive

Fix: Add specific examples of negative responses to your sentiment prompt so AI learns the patterns.

4. Approval notifications not coming through

Slack integration issues:

  • Verify your Slack workspace is connected in n8n
  • Check the channel/DM exists and n8n has permission to post
  • Test the Slack node independently by executing just that node

Webhook timeout:

  • If using “Wait for Webhook” for approvals, check the timeout isn’t too short
  • Default is usually 60 seconds – bump it to 3600 (1 hour) so you’re not rushed

5. Responses sending with wrong/missing data

This usually means the data structure from Expandi’s webhook doesn’t match what you’re expecting.

Fix:

  • Run a test and look at the webhook node output
  • Check what fields are actually available (might be body.conversation_id not just conversation_id)
  • Update your HTTP request nodes to use the correct field paths
  • Use n8n’s “Execute Node” feature to see the exact JSON structure at each step

6. Rate limiting / API errors

If you’re getting 429 errors or “too many requests”:

  • Expandi or your AI provider has rate limits
  • Add a “Wait” node between message sends (5-10 seconds)
  • Split high-volume times across the day instead of bursts

If you’re getting authentication errors:

  • Your API key expired or is wrong
  • Regenerate your Expandi API key and update it in all HTTP request nodes
  • Check your AI provider API key is still valid

7. System working but responses feel robotic

The workflow is fine, but your AI prompt is too generic.

Add these to your prompt:

  • Real conversation examples (both the message received AND your ideal response)
  • Specific phrases you use naturally (“Quick question” vs “I wanted to ask”)
  • Rules about when to be brief vs detailed
  • Your actual personality quirks that make responses feel human

If you’re still stuck:

Check n8n’s execution log. Every time the workflow runs, n8n shows you:

  • Which nodes executed successfully (green)
  • Which nodes failed (red)
  • What data passed between each node

Click on any failed node to see the exact error message. That’s usually enough to figure out what’s broken.

Stop Letting Responses Die

Getting replies is the win. That’s what all the campaign building and message testing is for.

But this is also where most teams fumble. The reply comes in while you’re in meetings. 2 days later, you check LinkedIn again and the person has either moved on or has signed up with a competitor.

This is the flipside of successful outreach, an inbox full of replies you can’t keep up with.

Twenty replies a day is manageable. At fifty, you’re spending half your day writing responses. But at hundred, something breaks, either you respond fast with terrible quality, or slow with good quality.

That’s what this system fixes.

Expandi captures responses instantly. n8n analyzes sentiment, pulls conversation history, generates a contextual reply. You get the draft, approve or deny. All in under thirty seconds.

As a result, leads get responses in minutes instead of hours and conversations stay warm instead of going cold while you’re busy.

Ready to stop losing deals to slow follow-up? Try Expandi’s API and webhooks free for 7 days.

Glenn Miseroy
CEO and co-founder of Expandi. As a tech founder, Glenn was mainly focused on analyzing market needs, pain-points and helping clients by solving their problems with innovative solutions. Then, he supported the product team with its PLG strategy, before moving on to running Expandi as a whole.

You’ve made it all the way down here, take the final step