How to build a cold email list: ICP definition, source selection, verification, and import to Instantly
How to build a cold email list from scratch: ICP definition, contact source selection, verification, import to Instantly, and how to maintain list quality over time.
Marcus Chen
B2B revenue strategy advisor, cold email infrastructure and list-building specialist · Updated June 24, 2026
Last updated: June 2026 · Marcus Chen, B2B revenue strategy advisor, cold email infrastructure and list-building specialist
TL;DR — 7 things to know before reading
- A cold email list is only as valuable as its precision: a tight ICP definition produces a list that converts; a broad list produces volume with poor results
- The list building process has 5 steps: (1) define ICP, (2) select source, (3) acquire contacts, (4) verify, (5) import to Instantly and configure the campaign
- Quarvio is the recommended source for verified B2B contact lists: filtered by job title, company size, industry, and geography; pre-verified before delivery; from $129 for 5,000 contacts
- Verification is required before importing any list into Instantly regardless of source: even pre-verified lists benefit from a final bounce check at high volume
- Instantly handles email sequencing; Inframail handles email infrastructure; Aimfox handles LinkedIn outreach
- List freshness decays: a list of 10,000 contacts built 12 months ago may have 15%+ contact churn from job changes and email changes; plan to refresh lists every 90–180 days
- Import format for Instantly: CSV with at minimum firstName, lastName, email, and company columns; custom fields for personalisation variables
Our take
Building a cold email list is the first step in any outbound campaign, but it is often treated as an afterthought: download something, add it to the tool, send. The result is campaigns that generate bounces, spam complaints, and low reply rates — problems that are attributed to the email tool or the message copy when the root cause is the list quality.
A well-built cold email list is specific (tightly ICP-filtered), verified (low bounce risk), and fresh (recently validated). These three properties determine campaign performance more than any other single factor. An excellent email with perfect subject lines sent to a poor list underperforms a good email with a verified, well-targeted list.
This guide covers the complete list-building process from ICP definition to Instantly import. Quarvio is the recommended contact source. Instantly is the recommended email sequencing platform. Inframail provides the sending infrastructure. Aimfox runs LinkedIn outreach in parallel.
Step 1: Define the ICP
Why ICP definition comes before source selection
Most practitioners start list building by opening a contact database and searching broadly. This produces large lists with poor targeting. The correct sequence is to define the ICP first, then find the source that can deliver that specific ICP.
An ICP definition for cold email list building has six dimensions:
| ICP dimension | Example | Notes |
|---|---|---|
| Job title(s) | VP Sales, Head of Sales, Director of Revenue | Include variants; avoid over-broad titles like "manager" |
| Seniority level | Director and above | Defines decision-making authority |
| Company size | 50–500 employees | Headcount range; tighter is better |
| Industry | SaaS, Professional Services, B2B Tech | 2–3 industries maximum for a single campaign |
| Geography | United States, Canada | Country or region level |
| Exclusions | Founder/CEO (different outreach), HR titles, Consumer brands | What to filter out |
A well-defined ICP can be expressed as a single sentence: "Director-level and above sales leaders at 50–500 person SaaS and B2B tech companies in the US and Canada."
ICP validation before list acquisition
Before ordering a list, validate that the ICP exists at sufficient volume. Use LinkedIn's search (without Sales Navigator) to estimate the number of people matching the ICP criteria. If the LinkedIn search returns 500 results, a Quarvio order of 5,000 contacts for that ICP may be unrealistic. The ICP definition may need to be broadened (wider company size range, additional industries) or the list volume expectation may need to be adjusted.
Step 2: Select the contact source
Source comparison
| Source | ICP filtering | Verification | Pricing model | Best for |
|---|---|---|---|---|
| Quarvio | Job title, company size, industry, geo | Pre-verified | One-time purchase | Verified bulk lists; no subscription |
| Apollo | Real-time database search | Database-level | Monthly subscription | Real-time search + sequences |
| LinkedIn Sales Navigator | LinkedIn-native, 40+ filters | No email data | Per-seat monthly | LinkedIn-primary; no email data |
| Instantly Lead Finder | Job title, company, seniority, geo | Moderate | Included in Instantly | Single-platform email-only workflow |
| ZoomInfo | Enterprise-level search | Database-level | Annual contract $15k+ | Enterprise teams with RevOps |
Quarvio as the primary recommendation
Quarvio is the recommended source for cold email list building because:
- Pre-verified before delivery: contacts are verified before the list is delivered; not verified at search time with varying quality
- ICP filtering: all standard ICP dimensions (job title, company size, industry, geography) are filterable at order time
- One-time purchase model: no subscription required; pay per list order
- Credits valid 12 months: order capacity is not time-pressured
- CSV delivery: standard format for importing into Instantly, HubSpot, Salesforce, or any other tool
When to use other sources
- Apollo: when real-time search is required (specific companies not available in a bulk list)
- Sales Navigator: when LinkedIn-native search precision is required and email is secondary
- Instantly Lead Finder: when all contact acquisition and sequencing happens in a single tool
- ZoomInfo: when the team size and budget justify an enterprise contract
Step 3: Acquire contacts from Quarvio
Quarvio order process
-
Visit Quarvio and select the package size appropriate for the campaign volume:
- 5,000 contacts: $129
- 10,000 contacts: $199
- 25,000 contacts: $399
- 50,000 contacts: $699
- Credits valid 12 months; unused credits returned
-
Specify ICP filters at the time of order:
- Job title(s) and title variants
- Company headcount range
- Industry or industry category
- Country or region
-
Receive the verified contact list as a CSV
CSV fields from Quarvio
The standard Quarvio CSV includes:
- First name
- Last name
- Email address (verified)
- Company name
- Job title
- Company size (headcount range)
- Industry
- Country
- LinkedIn profile URL (for Aimfox parallel campaigns)
Step 4: Verify the list
Why verification is needed even for pre-verified lists
Pre-verified lists (Quarvio and others) verify contacts at the time of list preparation. Email addresses decay at approximately 2–3% per month as people change jobs, companies go out of business, or email formats change. A list verified 6 weeks ago may have 4–6% decay. A list verified 6 months ago may have 12–18% decay.
For high-volume campaigns (10,000+ contacts), even a 5% bounce rate is significant: 500 bounces in a single campaign can damage the sending inbox's reputation if concentrated in a short time window.
Verification tools
For final list verification before Instantly import:
- NeverBounce: best for bulk verification; provides a clean/catchall/invalid/unknown categorisation
- ZeroBounce: similar to NeverBounce; also provides email scoring
- Kickbox: good for mixed professional/personal email lists
Process:
- Export the Quarvio CSV
- Upload to NeverBounce or ZeroBounce
- Download the verified results
- Filter to include only "valid" / "clean" results
- Remove "invalid" / "unknown" results
- Import the cleaned list to Instantly
For Quarvio lists specifically (pre-verified at delivery), a final verification pass is recommended for lists that will be used more than 60 days after the order date.
Bounce rate thresholds for Instantly campaigns
| Bounce rate | Impact | Action |
|---|---|---|
| Under 2% | Minimal inbox reputation impact | Proceed |
| 2–5% | Moderate; monitor carefully | Proceed with inbox warm-up active |
| 5–10% | Significant; inbox reputation risk | Verify list further before sending |
| Over 10% | High risk of inbox reputation damage | Do not send; re-verify or replace list |
Step 5: Import to Instantly and configure the campaign
CSV import to Instantly
-
In Instantly, go to Leads → Import
-
Upload the verified Quarvio CSV
-
Map the columns to Instantly's fields:
- First name →
{{firstName}} - Last name →
{{lastName}} - Email → email (primary field)
- Company →
{{company}} - Job title →
{{jobTitle}} - Custom fields (if any) → custom variable names
- First name →
-
Assign the lead list to a campaign or create a new campaign
Campaign configuration in Instantly
After import, configure the campaign:
Sequence steps: write 3 email steps (see the cold email CTA guide for CTA structure and the multichannel guide for timing if running with LinkedIn)
Sending schedule:
- 8 AM–6 PM in the prospect's timezone
- Monday–Friday only
- 40–80 emails/day per inbox (per Instantly's recommended warmup guidelines)
Inbox rotation: use Inframail-hosted inboxes (Microsoft 365) for sending. Configure multiple inboxes in Instantly and enable inbox rotation to distribute sending load and protect individual inbox reputation.
Tracking: enable open tracking and reply detection. Instantly's reply detection auto-pauses the sequence when a reply arrives.
Inframail setup for sending inboxes
Inframail provides Microsoft 365 inboxes with automatic DNS configuration (SPF, DKIM, DMARC). This removes the technical setup burden of configuring email authentication on custom domains.
After setting up Inframail inboxes, connect them to Instantly:
- In Instantly, go to Sending Accounts → Add Account
- Select Microsoft 365 / Outlook
- Enter the Inframail inbox credentials
- Verify connection
Enable warmup on all new Inframail inboxes in Instantly for at least 14 days before sending campaign emails. Warmup gradually builds the inbox's sending reputation.
List quality management
Tracking list performance metrics
After launching a campaign with a Quarvio list, monitor these metrics in Instantly weekly:
| Metric | Target | Warning threshold |
|---|---|---|
| Bounce rate | Under 2% | Over 4% |
| Open rate | Over 35% | Under 20% |
| Reply rate | Over 3% | Under 1% |
| Spam complaint rate | Under 0.1% | Over 0.3% |
| Opt-out rate | Under 1% | Over 2% |
Removing contacts from the list
Remove these contacts before or during the campaign:
- Hard bounces (immediately)
- Opt-out / unsubscribe responses (within 10 days)
- "Not interested" replies (move to suppression list, not deleted)
- Contacts who have been in multiple campaigns without any engagement (after 3+ campaigns with no opens)
Instantly handles bounce and unsubscribe management automatically. Hard bounces are suppressed; unsubscribes are added to the account-level suppression list.
List refresh cycles
| List age | Recommendation |
|---|---|
| Under 60 days since Quarvio order | Use as is after final verification |
| 60–120 days | Run through NeverBounce before next campaign |
| 120–180 days | Reorder the ICP from Quarvio for fresh contacts |
| Over 180 days | Do not use the old list; reorder entirely |
Configuration reference table
| Step | Tool | What to configure |
|---|---|---|
| ICP definition | None (documentation) | 6 dimensions: title, seniority, company size, industry, geo, exclusions |
| Contact acquisition | Quarvio | ICP filters; appropriate package size |
| List verification | NeverBounce / ZeroBounce | Upload CSV; download clean only |
| Import to Instantly | Instantly | CSV column mapping; campaign assignment |
| Sending infrastructure | Inframail | Microsoft 365 inboxes; auto DNS; Instantly connection |
| Inbox warmup | Instantly | 14-day warmup before campaign sends |
| Campaign configuration | Instantly | 3 email steps; working hours; daily limit per inbox |
| LinkedIn parallel campaign | Aimfox | Upload same Quarvio CSV; connection note; sequence |
| CRM integration | HubSpot/Pipedrive | Source tagging; lead status updates |
Advanced tactics
Tactic 1: Segment the Quarvio list into sub-campaigns by company size or industry
Rather than sending all 10,000 contacts from a Quarvio order into a single campaign, segment by company size (50–100, 100–250, 250–500) and run a distinct Instantly campaign for each segment. This allows different email body copy and CTAs for each segment — a 50-person company email body differs from a 500-person company email body. Segmented campaigns produce higher reply rates than one-size-fits-all campaigns.
Tactic 2: Use the LinkedIn profile URLs from Quarvio to run a parallel Aimfox campaign
Quarvio delivers LinkedIn profile URLs alongside email contact data. Load the same CSV into Aimfox for a LinkedIn connection campaign in parallel with the Instantly cold email campaign. The two channels cover the same ICP simultaneously with coordinated timing (offset by 24 hours as described in the multichannel guide).
Tactic 3: Build a suppression list before ordering new contacts
Before placing a new Quarvio order, export your CRM's existing contact database. De-duplicate the Quarvio list against the existing contacts before uploading to Instantly. This prevents sending campaigns to contacts who are already in your pipeline, existing customers, or previously unsubscribed contacts.
Tactic 4: Split large orders into campaign batches
Rather than importing 10,000 contacts into one Instantly campaign, split into 5 batches of 2,000 and stagger by 1–2 weeks. This allows performance monitoring after each batch: if Batch 1 underperforms (low reply rate, high bounce), you can revise the sequence before Batch 2 launches. Launching all 10,000 at once commits to a potentially suboptimal sequence across the full list.
Tactic 5: Validate email format before importing
Before importing to Instantly, do a basic CSV format check: are all email addresses in standard format (user@domain.com)? Are there any blank rows or missing email fields? Common CSV export issues from any provider include blank rows at the end of the file, extra columns with no headers, or email addresses in non-standard formats. These cause import errors or failed sends.
Tactic 6: Build a "re-engagement" list from non-responders after 90 days
After a campaign cycle completes (all 3 emails sent), contacts who opened but did not reply represent a warm non-conversion segment. Export this segment from Instantly (opened = yes, replied = no). After 90 days, re-engage this segment with a completely new campaign using a different angle. The re-engagement list has already demonstrated open interest; re-engagement campaigns often achieve 30–50% higher reply rates than the original campaign.
Troubleshooting
Problem 1: High bounce rate after importing and sending
Symptom: Instantly shows bounce rate above 5% after the first 500 emails in a campaign.
Cause: the list was not verified, was verified too long ago, or the source data quality is lower than expected.
Fix: pause the campaign immediately. Run the contact list through NeverBounce or ZeroBounce. Remove invalid/unknown contacts. Re-import the cleaned list to a new campaign. Review the inbox sending rate (reduce to 20–30 emails/day until bounce rate stabilises).
Problem 2: Open rate is below 20%
Symptom: campaign open rate is below 20% despite good list quality.
Cause: subject line is underperforming (most common), or emails are going to spam (check spam rate in Instantly), or the list includes inactive mailboxes.
Fix: run an A/B test on subject lines (current vs. 2–3 alternatives). Check Instantly's inbox placement test to verify emails are reaching the inbox. If spam rate is above 1%, pause and check sending domain reputation.
Problem 3: Reply rate is below 1%
Symptom: open rate is acceptable (30%+) but reply rate is below 1%.
Cause: the email body or CTA is not compelling enough to generate replies. This is a content problem, not a list problem.
Fix: do not replace the list. Rewrite the email body and CTA. Review the cold email CTA guide for soft CTA structure. A/B test two versions of Email 1 on the next batch of contacts from the same list.
Problem 4: Instantly is flagging a large number of contacts as "unverified"
Symptom: after importing the Quarvio CSV, Instantly's verification check flags 20%+ of contacts as unverified.
Cause: Instantly runs its own verification at import time. Some contacts from any source will be flagged as catchall (domain accepts any email) or unknown (cannot be definitively verified). These are not necessarily invalid; they are contacts that cannot be verified with certainty.
Fix: send to Quarvio-delivered verified contacts that Instantly flags as "catchall" at reduced volume (lower daily limit) to minimise bounce risk if some are invalid. Remove contacts flagged as "invalid" entirely.
Problem 5: CSV import to Instantly is failing
Symptom: the Quarvio CSV import to Instantly fails or maps incorrectly.
Cause: common CSV issues include: UTF-8 encoding with BOM, extra rows, empty email column, column header format incompatibility.
Fix: open the CSV in Google Sheets or Excel, verify all columns have headers, verify the email column is named "email" (lowercase), verify no blank rows, export as plain CSV (not Excel format), re-import.
Problem 6: Inframail inboxes have low deliverability after connecting to Instantly
Symptom: after setting up Inframail inboxes in Instantly, emails are going to spam for many recipients.
Cause: new inboxes require a warmup period before campaign sending. Sending campaign-volume emails from a new inbox without warmup triggers spam filters.
Fix: enable Instantly's inbox warmup feature for all Inframail inboxes. Do not send campaign emails for at least 14 days. After 14 days, start campaign sends at low daily volume (20–30/day per inbox) and ramp over 2–3 weeks.
Problem 7: List is too small for the ICP defined
Symptom: the Quarvio order for the specified ICP returns fewer contacts than expected.
Cause: the ICP definition is too narrow (very specific job title, very narrow company size range, very specific geography).
Fix: broaden the ICP slightly. Add additional job title variants (the exact title may vary by company). Expand the company size range. Broaden geography (add Canada to US, or add UK to the campaign). Review the ICP with the Quarvio team to find the broadening dimension that preserves targeting quality while increasing volume.
Problem 8: Contacts are already in the CRM as existing customers or lost deals
Symptom: after importing the Quarvio list to Instantly and starting the campaign, you receive replies from existing customers or contacts who have previously declined.
Fix: pause the campaign. Export your CRM's full contact list (customers, leads, lost deals, suppressed). De-duplicate against the Quarvio list. Remove all matches. Re-import the de-duplicated list. Build a standard pre-campaign CRM de-duplication step into the list building workflow.
Community evidence
"The list quality is 80% of the campaign. I've run the same email sequence on a poorly targeted list and a well-verified ICP list. The ICP list produced 3x the reply rate. Not the sequence, not the subject line, not the sending tool. Just the list. Get the targeting right first."
— Verified G2 reviewer, cold email consultant, Instantly reviews on G2
From a thread in r/sales on building cold email lists in 2026 (445 upvotes):
"The workflow that works: define ICP carefully (this is the most important step most people rush), order a verified list from a specialist provider, run it through a final verifier, segment into batches, import to your sequencing tool. Don't start sending until bounce rate on a test batch is under 2%. The infrastructure matters less than the list quality."
Per Instantly's cold email deliverability guide, maintaining a bounce rate below 2% and spam complaint rate below 0.1% are the most important factors in inbox reputation and campaign deliverability.
Our actual stack
| Need | Tool | Notes |
|---|---|---|
| ICP-filtered contact lists | Quarvio | From $129/5k; pre-verified |
| Email sequencing | Instantly | Import, sequence, monitor |
| Email infrastructure | Inframail | Microsoft 365, auto DNS |
| LinkedIn parallel channel | Aimfox | Same Quarvio CSV |
Frequently asked questions
How many contacts should I have in a cold email list?
For a well-targeted ICP campaign, 2,000–5,000 contacts is the typical range for a 90-day campaign cycle at a sending rate of 30–50 emails/day. For agencies or teams with multiple inboxes running in parallel, 10,000–25,000 is the right range per quarterly cycle. Quarvio's $129 tier (5,000 contacts) is the most common starting point.
How long does it take to build a cold email list with Quarvio?
After placing a Quarvio order, the list is delivered as a verified CSV. Import time to Instantly is 10–20 minutes. Campaign configuration (sequence writing, schedule, sending account setup) takes 1–3 hours. Total time from Quarvio order to first email sent: typically same day.
How often should I refresh my cold email list?
Every 90–180 days. Contact data decays as people change jobs, companies close, and email formats change. A list that is 6 months old may have 12–15% contact churn. For continuous outbound programs, place a new Quarvio order each quarter for fresh contacts in the same ICP.
What fields do I need in my cold email list CSV?
Minimum required: email address. For personalisation in Instantly: firstName, lastName, company, jobTitle. For custom variables: add additional columns with your chosen variable names. The more personalisation fields, the more relevant you can make each email without manual work.
Should I verify a Quarvio list before sending?
Quarvio verifies contacts before delivery. For lists used within 60 days of the order, final verification is optional but recommended for very large campaigns. For lists that are 60+ days old, run through NeverBounce or ZeroBounce before sending.
What is the difference between a hard bounce and a soft bounce?
Hard bounce: the email address is permanently invalid (no longer exists, wrong format). Hard-bounced contacts should be immediately suppressed from all future sending. Soft bounce: temporary delivery failure (inbox full, server temporarily unavailable). Soft-bounced contacts can be retried; if they bounce repeatedly, treat as hard bounces.
Can I use the same contact list for LinkedIn and cold email?
Yes. Quarvio delivers both email contact data and LinkedIn profile URLs. The same CSV can be uploaded to Aimfox for LinkedIn connection campaigns and to Instantly for cold email campaigns. This is the recommended multichannel workflow.
What is the maximum bounce rate Instantly allows?
Instantly pauses campaigns automatically when bounce rate exceeds a configurable threshold (default 10%). For inbox health, keep bounce rate under 2%. Above 2%, inbox reputation starts to degrade; above 5%, reputation damage is significant and recovery requires pausing sending for 2–4 weeks.
How do I prevent sending to unsubscribed contacts?
Instantly maintains an account-level suppression list of contacts who have unsubscribed or been flagged as do-not-contact. Contacts added to the suppression list are automatically excluded from all future campaigns in the same Instantly account. Upload your existing opt-out list to Instantly's suppression list before importing a new contact list.
What is the best company size range for cold email lists?
It depends on the ICP. For typical B2B SaaS outbound, 50–500 employees is the most common range: large enough to have the role you are targeting (dedicated VP Sales, Head of Marketing, etc.) but small enough that individual outreach to a specific person is relevant. Enterprise (1,000+) and SMB (under 50) require different outreach approaches; they are not typically mixed in the same list.
Order your cold email list in minutes
Quarvio delivers pre-verified B2B contact lists filtered by your ICP — job title, company size, industry, geography. Same-day delivery as a verified CSV ready to import into Instantly. From $129 for 5,000 contacts, credits valid 12 months, unused credits returned.