Disclosure: Published by HEED. HEED sells the contact package mentioned below. This is a buyer checklist, not an independent vendor test.
A CSV can contain 1,000 rows and still give a sales team fewer than 1,000 usable contacts. The difference depends on the campaign contract. If a sequence needs both an email path and a phone path, a row without one of those fields is not ready for that sequence. I call the cost of buying, checking, and repairing those gaps the blank cell tax.
This is not a claim that any particular vendor has a specific missing-field rate. It is a way to define acceptance before data reaches your CRM.
Define the row contract first
Write down the audience, exclusions, required columns, and acceptable phone types. A company main line may be useful for a phone-first team, while another team may require a direct dial. Neither rule is universal. Keep the phone type visible when it is known, and store a source URL and checked date so a reviewer can understand where and when the record was assessed.
Your file's column names will vary. Map them to a common schema before applying a check like this:
import csv
from collections import Counter
required = (
"company", "website", "location", "decision_maker", "title",
"work_email", "business_phone", "source_url", "checked_date",
)
with open("contacts.csv", newline="", encoding="utf-8-sig") as source:
rows = list(csv.DictReader(source))
missing_columns = set(required) - set(rows[0]) if rows else set(required)
if missing_columns:
raise ValueError(f"Missing columns: {sorted(missing_columns)}")
blank_by_field = Counter()
for row in rows:
for field in required:
if not (row.get(field) or "").strip():
blank_by_field[field] += 1
print("rows:", len(rows))
print("blank required cells:", dict(blank_by_field))
That script finds missing cells. It does not verify an email, check a phone, establish consent, or prove a person will answer. Those require separate evidence and rules. Also check duplicates using a defined identity key, target-market fit, phone labels, date format, and whether the file opens cleanly in your import tool. Preserve the original file and record challenged row numbers before making changes.
Calculate the accepted unit
Use (purchase price + review labor) ÷ rows that meet your written rule. Consider a deliberately hypothetical $500 file of 100 records. Suppose 20 lack a usable work email and another 15 of the remaining 80 lack the required phone path. Then 65 meet the two-channel rule. The nominal row costs $5; the usable row costs about $7.69 before review labor. If reviewing the 35 exceptions takes six minutes each at an assumed $40 per hour, that adds $140. The result is about $9.85 per usable row. These are example inputs, not a market survey or a vendor outcome.
The denominator changes if your campaign only needs email, or if a checked company main line qualifies. That is why a buyer should define the acceptance rule before comparing quotes.
Keep the commercial promise narrow
HEED’s Zero-Blank-Row standard applies to accepted B2B rows: each must include a verified work email and checked business phone. The phone may be a direct business line or a company main line, labeled when known. Contacts 25 is $49 once for 25 accepted contacts. The terms describe the accepted fields and evidence-based review of eligible defects.
That standard is about the delivered fields. It does not promise a direct mobile, inbox placement, consent, replies, meetings, or permanent accuracy. Apply the same careful reading to every supplier: ask what is checked, what is delivered, how exceptions are reviewed, and what remedy the contract actually provides.
The useful output of this audit is not a dramatic score. It is a small set of reproducible counts and an exception list that procurement, operations, and sales can all understand.
Sources
- HEED B2B offer and terms, checked October 24, 2026.
Top comments (0)