How to Fix Expandi Messages Not Sending (Pending Invites)
A connector campaign opens with a connection request, and a lead who already has one pending cannot receive a second. So the campaign has nothing it is allowed to do, and it says so in a tab most people never open.
The campaign is live, the leads are in, and nothing is going out. No invitations, no messages, and the action count stays at zero. The campaign does not report an error, which is the part that makes this hard to diagnose from the outside.
There is one cause behind a large share of these, and it is counter-intuitive enough that people rarely find it: the leads you added already have a pending connection request. A connector campaign starts by sending a connection request, and you cannot send a second one to someone who already has one outstanding. So the campaign has nothing it is allowed to do, and it says so in a tab most people never open.

Why nothing is going out
Expandi does not treat most of these as errors, because from its point of view nothing went wrong: the first action in the sequence is not permitted for those leads, so it was not attempted. That is why the campaign sits there looking healthy. Five documented situations produce it.
| Cause | How you recognise it | What to do |
|---|---|---|
| Leads already had a pending invite | Failed reason reads Already requested | Remove them, and only add people with no pending request |
| LinkedIn account not fully synced | No actions at all, across every campaign | Finish adding the account before anything else |
| Leads on the negative if connected path | New contacts stall with no follow-up available | Move them to a Messenger or another Builder campaign |
| Leads manually paused | Some leads idle while others progress | Check the History tab to see who paused them |
| Leads on hold after repeated failures | An action failed two or more times for that lead | Find them in Troubleshooting and resume |
The first row deserves the most attention because it is both the most common and the least intuitive. A connector campaign opens with a connection request. A lead whose status is Connect Requested already has one pending, so a second cannot be sent, and that lead either pauses or fails with the reason Already requested. The same applies to 1st degree connections, who also cannot receive a connection request. Build the audience from 2nd and 3rd degree people with nothing outstanding and this entire class of problem disappears.
The third row is the one that traps people mid-sequence rather than at the start. When a lot of new contacts land on the negative branch of an if connected condition, there is no route for them to receive a follow-up inside that campaign: the sequence has no step for them. Nothing is broken, but nothing will ever happen either, and the fix is to move them to a Messenger or another Builder campaign where a follow-up exists.
The five checks, in order
Cheapest first. The first two take under a minute and settle most cases.
Open the Troubleshooting tab
Start here rather than in settings. It works as a checklist over your setup and it reports why individual leads were paused or interrupted, which is the information you actually need. A campaign that looks idle from the dashboard usually has a specific, named reason sitting in this tab.
Filter the Message Queue on Failed
Go to the Message Queue page and set the Status filter to Failed. This is where the failure reasons live. If you see Already requested, you have the pending-invite problem and the audience is the thing to fix, not the campaign. Leads failing for that reason can be deleted from the campaign so they stop generating further failed actions.
Confirm the LinkedIn account is fully synced
An account that has not finished being added will not perform actions, and the symptom is a complete stop rather than a partial one. If nothing is moving in any campaign rather than in one, check this before you look at any sequence. It is quick to rule out and easy to assume is done.
Look at where the leads are in the sequence
If leads entered but stalled, find out which branch they are on. A crowd of new contacts on the negative side of an if connected condition has no follow-up step waiting for them. Transfer those leads to a Messenger campaign or another Builder campaign that has a message for people who never connected.
Check for paused and on-hold leads
The History tab shows leads paused by hand, which happens more often than teams remember. Separately, a lead goes on hold when a message or connection request fails twice or more, and those need resuming rather than re-importing. Both appear as leads sitting still while the rest of the campaign behaves normally.
Campaigns that send from the start
Four habits, all cheaper than diagnosing a silent campaign.
- Filter the audience by connection degree before you import. Only 2nd and 3rd degree people with no pending request can receive a connection request, so building the list that way removes the single most common cause outright.
- Keep track of who you have already invited. Pending invitations accumulate quietly and they are what turns a fresh-looking audience into a campaign that cannot act.
- Give every if connected branch somewhere to go. If the negative path has no follow-up step, the leads that land there are stranded by design rather than by accident.
- Check the Troubleshooting tab on day one, not on day five. Every cause here shows up within hours of launching, and the cost of finding out late is days of a campaign you thought was working.
None of this makes Expandi send more than LinkedIn permits. It removes the gap between a campaign that reports itself as running and a campaign that is actually allowed to act.
If leads are on hold rather than unreachable, that is the adjacent failure and we covered it in how to fix an Expandi campaign stuck in processing. And for the data side of things, see Expandi data sync and CSV export stalls.
Lists that only contain reachable people
The shape of the problem is that the audience and the sequence were designed separately. You built a list, then you built a campaign whose first action only works for some of the people on it, and nothing checked the two against each other before launch.
ReactIn lists are fed by signals rather than assembled, and that changes who ends up in them. People who commented on a post, attended a webinar, visited your profile or booked a call are people with a recent reason to hear from you, which correlates with being reachable rather than already sitting in your pending invitations from three months ago.
The honest limit, and it matters here: LinkedIn's connection rules apply to ReactIn identically. A 1st degree connection still cannot receive a connection request, a pending invitation still blocks another, and daily ceilings are the platform's rather than ours. Nothing about our model changes what LinkedIn permits, only how often you end up pointing a sequence at people it cannot act on.
Where there is a real difference is that the campaign draws from a list that keeps changing rather than from a fixed import, so a stalled batch is not the unit of failure. If a particular person cannot be actioned, the campaign continues with the people who can, instead of a whole import sitting at zero while you work out why.
For a feature-by-feature view of the two, see our ReactIn vs Expandi comparison.
The thread running through all of it is that Expandi is usually not failing, it is declining to do something it is not allowed to do. Find out what it was not allowed to do before you rebuild anything, because rebuilding reproduces the situation exactly.
Frequently Asked Questions
Sources & Further Reading
- Expandi collects the causes in why is my campaign not sending.
- The failure reasons themselves are in how to check failed messages.
- For what each campaign tab shows, see campaign tabs explanation.
- And the connector campaign's own rules are in connector campaign.
Related Articles
How to Fix Phantombuster "Error During Loading of Chat Widget"
Phantombuster documents this one, and the documented fix is mostly to wait. The expensive part is a Phantom left looping against it, burning execution time on attempts that cannot succeed.
Working Around the Limitations on Salesflow (2026 Guide)
CSV import exists, so does a campaign type for contacts you already hold, and so do shared blacklists. The constraints that actually bite are narrower: rejected Sales Navigator URLs, per-route caps, and a deliberate block on duplicates.
How to Fix Dripify Lead Collection Stalls (2026 Guide)
Most stalled collections have finished or are waiting. The Lead Collection Report names the cause, the search cap ends runs silently, and working hours suspend lead loading as well as sending.
How to Fix Expandi Data Sync and CSV Export Stalls (2026)
Three of the most common versions of a broken Expandi sync are documented behaviour: the export is emailed rather than downloaded, a known lead is deduplicated on purpose, and a field over 300 characters is dropped in silence.