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.
The usual complaint about Salesflow is that it only does LinkedIn basics: no external imports, no way to move a lead to another campaign, segmentation that feels like a blunt instrument. So people end up juggling spreadsheets alongside the tool and assume that is the price of using it.
Most of that is wrong, and it is worth correcting before you build a workaround for a feature that already exists. Salesflow imports CSV files. It has a campaign type designed for contacts you already hold. It has a keyword-based exclusion system you can make the default and share with your team. What it has instead are four hard constraints, all documented, and knowing them is the difference between a working setup and a folder full of spreadsheets.

What is real and what is not
Three of the four things people describe as missing are present and documented. The constraints that actually bite are narrower and more specific, which is good news: a specific constraint has a specific answer, while a missing feature does not.
| The complaint | What is actually true | What to do |
|---|---|---|
| You cannot import a CSV | You can, but Sales Navigator URLs are rejected | Use plain LinkedIn profile URLs starting with https |
| Imports are unlimited | Caps differ by type, from 1,000 to 5,000 | Split the audience to fit the cap you are using |
| You cannot move a lead to another campaign | True, and deliberate: duplicates are blocked across campaigns | Use the Existing Contacts campaign type instead |
| Segmentation is a blunt instrument | Blacklists filter search results on keyword conditions | Build one, set it as default, share it with the team |
| Existing contacts can be messaged freely | Capped at 100 messages a day, per account, shared | Spread that budget across your active campaigns |
The import row is the one that creates the most false impressions. A CSV needs First Name and Last Name headers, though the values can be blank if you do not know them, and a LinkedIn URL column where both the header and the data are required. Email is optional, and so are custom field columns, which exist specifically so you can personalise message templates from your own data. The failure people run into is paste-in-hand: they copy URLs out of Sales Navigator, and the CSV importer does not accept those. Only LinkedIn profile URLs, starting with https.
The cross-campaign rule is the other one worth understanding properly, because it looks like a missing feature and is actually a guardrail. Salesflow does not allow duplicates: if a contact is in one campaign, you cannot import them into another, and the reason is to stop you contacting the same person twice. Exporting a campaign, editing statuses in a spreadsheet and re-importing into a new campaign, which is the workaround people land on, is working against that rule rather than around it.
Working with each constraint
Four things to set up once. None of them involves a spreadsheet.
Fix the CSV before you blame the importer
Check the header row has First Name, Last Name and a LinkedIn URL column, and that every URL is a plain profile URL starting with https rather than a Sales Navigator link. Add your personalisation data as custom field columns in the same file, because those columns are what message templates read from. An import that silently achieves nothing is almost always one of those two things.
Size the audience to the import type
The caps are not one number. A CSV import takes up to 5,000 contacts, a Sales Navigator search up to 2,500, and a basic search or a URL-based import up to 1,000. Pick the route first, then build a search that fits inside its ceiling, splitting by seniority or geography rather than hoping a 4,000-result basic search will come through whole.
Reach people you already have with the right campaign type
Do not export and re-import. Create an Existing Contacts campaign, which targets your 1st-degree connections and sends follow-ups. While you are there, decide whether you want the campaign to like one of their posts, visit the profile or endorse their top three skills, since those options sit in the same setup flow and make the touch less abrupt than a message alone.
Do your segmentation with a blacklist
A blacklist takes keyword conditions, at least one, and excludes matching contacts from a campaign's search results. You can set one as default so it applies to every future campaign, and you can share it across the team. Competitors, current customers, recruiters, job titles you never sell to: define them once and stop filtering by hand afterwards.
A setup that does not need spreadsheets
Four habits that remove the manual work people blame the tool for.
- Standardise the CSV template. One file with the required headers, the URL column validated as profile links, and your custom fields in fixed positions. Done once, it removes the most common import failure permanently.
- Keep a single source of truth for exclusions. A shared default blacklist beats everyone remembering which accounts are off-limits, and it applies to campaigns nobody has built yet.
- Decide the campaign type before you build the audience. New connections and existing contacts are different campaign types with different limits, and choosing late is what produces the export-and-reimport ritual.
- Treat the duplicate block as a feature. It is the only thing stopping two campaigns reaching the same person in the same week, which is the mistake that costs replies rather than time.
None of this gives Salesflow conditional branching or external routing it does not have. It removes the work people do by hand because they believed a documented feature was missing, which is most of the work.
And if a campaign has stopped rather than being limited, the disconnection codes are a separate subject: troubleshooting Salesflow's disconnected error 07, 01 and 05.
Where the model runs out
The real ceiling is not any single limit, it is that the audience is something you assemble. You run a search or build a file, you import it under a cap, and from that moment the campaign works through a fixed list. Nothing in it notices that one of those people has since looked at your company page, commented on a post or started a trial.
ReactIn builds lists the other way round. A list is a standing definition fed by signals, and the catalogue is broad: post likes and comments, the people who engage with a specific profile's posts, followers, profile visitors, webinar attendees, company ads engagement, keyword post search, LinkedIn and Sales Navigator searches, lookalikes from a profile you pick, plus non-LinkedIn sources including Cal.com bookings, Tally form submissions, Brevo list additions, our API, and Zapier or Make for anything else. People enter as they qualify rather than being imported once.
Two of the Salesflow frustrations disappear as a consequence rather than as a feature. There is no import cap to size an audience against, because there is no import step. And exclusions are handled at the list level: you can upload a CSV of profile URLs you never want surfaced, which is the same job a blacklist does without being tied to one campaign's search results. CSV import exists here too, as one list source among many rather than the main way in.
The honest limits, because they matter. LinkedIn's own daily ceilings apply to ReactIn exactly as they do to Salesflow, so nobody sends more than the platform allows. Signal-based lists are also smaller than a broad search by design: you get fewer people with a reason to hear from you, which is the point, but it is a different shape of pipeline and not a larger one. And our native integrations are HubSpot, Google Sheets, Airtable and Zapier rather than every CRM on the market, so check yours is on that list before you plan around it.
For a feature-by-feature view of the two, see our ReactIn vs Salesflow comparison.
Check what the tool documents before building a workaround. Three of the four things people work around in Salesflow are features they have not found, and the fourth is a guardrail protecting them from contacting the same person twice.
Frequently Asked Questions
Sources & Further Reading
- Salesflow documents the file format in importing contacts via CSV file.
- The caps per route are in import types and limits for basic and Sales Navigator accounts, worth checking for current figures.
- For people you already hold, see the Existing Contacts campaign type.
- And exclusions are covered in blacklist.
Related Articles
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.
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.
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.