A calling session is often won or lost before the first call, when the list is prepared. Numbers without a country code, duplicates, switchboards mixed with direct lines, people who asked not to be called again: every dirty row costs time on the phone. In this article, I share what I see with the teams we work with at Flunter: the columns that matter, the right number format, cleaning duplicates and opt-outs, CSV pitfalls and importing from the CRM. The goal is simple: a list you can call without stopping every five minutes.
In short
A good B2B cold calling list has one row per contact, one number per column in international format (+33 for France), plus first name, last name, company, role, data source and owner. Before importing, remove duplicates and people who objected to being called, then save the CSV as UTF-8 with a consistent separator. When your CRM is connected to your calling tool, import a CRM list directly instead: you skip manual exports and call outcomes flow back to the right place.
Why list quality matters as much as the tool
A parallel dialer dials several numbers at once and passes you the ones who answer. It speeds everything up, including mistakes. If a quarter of the list is wrong, the tool will call that quarter faster, and you will find out faster too. At Flunter, we've seen that disappointing sessions come from the list far more often than from the line settings.
Three problems keep coming back:
Unusable numbers: missing country code, leading zero dropped by Excel, two numbers in the same cell.
Duplicates: the same contact imported twice from two sources, so called twice on the same day.
Switchboards labeled as direct lines: the rep expects a decision maker and gets the front desk.
An example
Take a list of 1,000 contacts received from a partner, as an illustration. Cleaning it reveals 90 duplicates, 60 numbers without a country code (about thirty of them unrecoverable) and around 300 switchboard numbers with no label. Without cleaning, the rep spends part of the session calling the same people again and asking for transfers. With a clean list of 880 rows (1,000 minus the 90 duplicates and the 30 unrecoverable numbers), switchboards isolated in a separate campaign, the rep calls fewer rows but gets more real conversations. What matters is not the size of the list, it's the share of rows that can lead to someone. That's exactly what the contact rate measures.
The useful columns in a B2B calling list
You don't need forty columns. These cover the essentials:
Column | What it's for | Tip |
First name | Greeting the person by name | Its own column, no title |
Last name | Identifying and deduplicating | Avoid all caps, it's easier to read on screen |
Company | Preparing the opener, grouping by account | Consistent naming (not "Inc", "Inc." and nothing depending on the row) |
Role | Adapting the pitch | A short title, and ideally a category (management, procurement, HR) |
Direct phone | The line that reaches the person | International format, a single number |
Switchboard phone | The front desk number | Separate column, never mixed with the direct line |
Following up after the call | One address, lowercase | |
Source | Knowing where the data comes from | Purchased database, trade show, website, CRM: essential to answer a GDPR question |
Owner | The rep responsible for the contact | The same identifier as in your CRM |
Custom fields | Whatever helps your script: industry, headcount, software used, date of last exchange | No more than three or four, or nobody reads them during the call |
In Flunter, custom contact fields are included in every plan. They show on the contact record during the call, with the contact's history. That's the right place for information that helps open the conversation, not for everything in your database.
Phone number format
This is the number one cause of failed imports. A few simple rules:
International format: the country code (+33 for France) followed by the number without its leading zero. A Paris number 01 23 45 67 89 becomes +33 1 23 45 67 89. For contacts abroad the country code changes, the logic stays the same.
One number per column: never "01 23 45 67 89 / 01 98 76 54 32" in the same cell. If a contact has two numbers, create two columns.
No text in the cell: "ext. 214", "ask for Julie" or "don't call in the morning" go in a notes column, not in the number.
Separate direct lines from switchboards: this is data hygiene. A switchboard is not a bad number, but it isn't worked the same way. A dedicated column or a separate campaign keeps the two apart.
A classic trap comes from Excel: when opening a CSV, it can convert a number into a numeric value and drop the leading zero, or read a "+" as the start of a formula. Format the column as text before pasting or typing numbers, and check a few rows after each save.
Duplicates and opt-outs: clean before you call
Duplicates
Deduplicate on the normalized phone number, then on email. The name alone is not enough: two people with the same name can work at two different companies, and the same person can appear with or without an accent. An order that works well:
normalize every number to international format;
delete rows whose number already exists;
check by hand the few cases where one number carries two different names (often a shared switchboard).
Also think about duplicates across lists: a contact already in a running campaign has no place in the new one.
Opt-outs
In B2B, cold calling in France relies on legitimate interest, provided the offer relates to the person's job, you inform them on the first call and you respect their right to object. Someone who asked you to stop calling must leave all your lists, not just today's campaign. The simplest approach is a single exclusion list, kept in your CRM, matched against every new list before import. The "Source" column will also help if someone asks where you got their number.
Since August 11, 2026, cold calling consumers in France requires their prior consent. If your list mixes businesses and consumers, split them before any import. The rules are detailed on our GDPR and phone canvassing page.
Importing: CSV file or connected CRM
CSV files and their pitfalls
Flunter imports your lists from a CSV file or from your connected CRM. On CSV, I'll be honest: we made the import more robust this spring, because real files are rarely perfect. Here are the mistakes I see most often:
Encoding: save as UTF-8. Another encoding turns accented characters into gibberish ("François" instead of "François"). In Excel, choose "CSV UTF-8" when saving.
Separator: Excel set to a French locale often saves CSV files with semicolons, while Google Sheets or English tools use commas. Open the file in a text editor to see which one is used, and check that no cell contains the same character without quotes.
Header row: a single row, clear column names, no merged cells and no title above it.
Empty rows and totals: delete them, they turn into ghost contacts.
Importing straight from the CRM
If your team works in a CRM, a CSV export is one step too many: it creates a copy that goes stale the moment it's saved. With a connected CRM, you import a list that already exists in the CRM, and call outcomes then flow back automatically. Depending on the CRM, here's what you import in Flunter:
CRM | What you import |
HubSpot | Lists and segments, with an owner filter |
Salesforce | Campaigns (Contacts and Leads), with an owner filter |
Pipedrive | Filters on people and leads, with an owner filter |
Close | Saved searches (Smart Views) |
Boond Manager | The URL of a Boond list (contacts, actions, opportunities) |
Odoo | Saved filters on contacts |
Cleaning then happens once, at the source, in the CRM. Details per tool are on the integrations page, for example HubSpot. For teams with their own database, the Flunter API, launched in April and included in every plan, can also create campaigns and import contacts into them.
Splitting into campaigns and keeping the list fresh
A 3,000-row list called in one block makes sessions hard to manage. Split it into consistent campaigns, each with a clear message and goal:
By target: industry, company size or function. The script changes, so does the campaign.
By number type: direct lines on one side, switchboards on the other. Each campaign has its own number of lines on the parallel dialer: test a different setting for switchboards and for direct lines.
By rep: everyone works their own contacts, so nobody calls the same person twice.
In Flunter, campaign management is included in every plan, and the number of lines is set campaign by campaign.
A list also decays over time: people change roles or companies. Use call outcomes to keep it current. Remove contacts marked "wrong number" from the next list, move those who asked for a callback to a dedicated campaign, and sorting contacts by last call shows who hasn't been reached in a long time. Finally, look at your pickup rate per campaign: a campaign well below the others often points to a list problem rather than a pitch problem.
Frequently asked questions
How do I build a cold calling list?
Start from your CRM or an identified source, keep one row per contact with first name, last name, company, role, phone in international format, email, source and owner. Remove duplicates and opt-outs, then import into your calling tool.
What phone number format should I use in a CSV file?
International format: the country code (+33 for France) followed by the number without its leading zero, one number per column. Format the column as text in Excel so it doesn't drop characters.
Why do accents look broken after import?
The file is probably not UTF-8 encoded. Save it again as "CSV UTF-8" and run the import again.
Semicolon or comma in a CSV?
Both work as long as the file is consistent. Excel in a French locale often uses semicolons, Google Sheets uses commas. Check in a text editor before importing.
Can I call a purchased B2B list?
In B2B in France, cold calling relies on legitimate interest, provided the offer relates to the person's job, you inform them on the first call and you respect their right to object. For a purchased list, check that the provider told people their data could be passed on to others. Keep the source of every contact and remove people who object. See our GDPR page.
Do I need a CSV if my CRM is connected?
No. With a connected CRM, import a CRM list or filter directly: you avoid stale copies and call outcomes flow back to the CRM.
What you can do this week
Open your next list and check three things: number format, encoding and separator.
Split direct lines and switchboards into two columns or two campaigns.
Create a single exclusion list in your CRM and match it against every list before import.
Add a "Source" column to all your lists, even old ones.
If your CRM is connected, replace the CSV export with a list or filter imported directly.
After the first session, remove "wrong number" contacts and check the pickup rate per campaign.
To go further on organizing your sessions, read our guide to B2B phone prospecting.
