$5 free Limited time. Sign up to activate. Get your $5 →
ArticleMobile numbers

Enrichment match rate: what it measures and what it hides

Match rate is the share of records a provider returns anything for. It is the first bar of a funnel, not the last. A returned number still has to connect, belong to the right name, and belong to the profile your user asked about.

Written by Justin Winter, Head of Growth Founder and growth executive across VC-backed startups and B2B SaaS.
On this page

Key takeaways

  • Match rate is records returned divided by records sent. It counts a returned record, whatever that record contains.
  • Below it sit three more questions. Does the number connect? Does the name match? Is it the profile you asked about?
  • Measure match rate and right-person rate together, on your own sample. Then send the call outcome back so the next lookup is better.

The formula, and why "returned" is ambiguous

The arithmetic is short. Send 1,000 records, get something back for 850 of them, and the match rate is 85%. TargetWise's guide to enrichment match rates (updated Oct 27, 2026) states it the same way, records returned ÷ records submitted, and then adds the line that matters: "The problem hides in the word 'returned.'"

That page lists what a vendor can count as returned. A pattern-guessed address nobody checked. A company match logged against a person. A job title or profile URL with no email or phone behind it. Each one raises the match rate and none of them gives your user something to dial.

Unify's provider-evaluation page (updated Sep 21, 2026) shows how loose the term is in practice. Its glossary defines match rate as the share of a list "for which a provider returns any data at all, regardless of whether that data is correct." Its FAQ then answers "what's a good email match rate" in terms of the share of a list a provider returns valid emails for. Those are two numerators on one page. Neither is wrong. They answer different questions, and a vendor quoting "85%" could mean either.

So the first thing to ask about any match rate is what counted. For a Forager contact lookup the answer is the field you asked for: a work email lookup returns an address or nothing, and a personal email lookup that finds nothing returns a 200 with an empty body. An empty result is a miss, and it is counted as one.

Evidence
95%

mobile accuracy across US/Canada, EU and LATAM. Accuracy is a different measure from match rate.

Source: Forager, Mobile numbers

The funnel below match rate

Picture a funnel. Records you sent are the top bar. Records returned are the second, and that is the bar a vendor deck quotes. Three more bars sit below it, and your users judge you on the last one.

Infographic: five narrowing bars labelled records you sent, returned, reaches a live line, right name, right profile. No percentages are shown.

Reaches a live line. A number that is dead or disconnected wastes the call. A match rate counts it anyway, because something came back.

Right name. A live number for someone else is worse than none. The rep has a conversation, the person is annoyed, and the record looks "matched" in every report.

Right profile. Not a namesake, not a former owner of the number. Two people with the same name at companies with similar names is the common case, and a provider that matched the wrong one still returned a number.

Each bar is a question your users ask of every result. A number that passes all three is what we mean by a right-person result.

Infographic: three cards. Does it connect? Does the name match? Is it the profile you asked about?

The figure carries no percentages on purpose. Every match-rate figure on page 1 of Google for this term is either labelled hypothetical by the page that publishes it or is a vendor's own observation on its own list. We quote none of them, and we do not publish one of our own. The shape is the point: vendors quote the second bar, users judge the last one, and you should measure both on your own sample.

Connect rate and right-party contact: the same question, asked later

Dialer teams have measured the bottom of this funnel for years. They call it connect rate. Trellus's connect-rate guide (Apr 16, 2026) opens with the same warning data teams need: "The average cold call connect rate depends on what counts as a connection. A phone being answered, a conversation with the intended prospect and a booked meeting are different outcomes." Its formula is calls answered by a prospect ÷ outbound dial attempts × 100, and it separates "answered calls" from "target-prospect connections," meaning calls answered by the person the rep meant to reach.

Right-party contact is the dialer's name for that second thing. It is the "right profile" bar of the funnel, measured after the call instead of before it.

Put side by side, the three terms are one question asked at three points:

TermWho measures itThe question
Match rateThe data team, at lookup timeDid anything come back?
Connect rateThe dialer, after the callDid a person answer?
Right-party contactThe dialer, after the callWas it the person we meant?

The problem is that the first number lives in one team's dashboard and the other two live in another's. The data team picks a provider on match rate and never sees the connect rate its numbers produced. The last section of this post is about closing that gap. We reuse none of the percentages from the connect-rate pages: each one is a vendor's observation on its own calls, and the pages say so.

Why billing and match rate pull against each other

Who pays for a miss shapes what a provider returns.

When a provider charges per request, a lookup earns the same whether the record is right, wrong or empty. Returning something is free for the provider and costs you a credit. A high match rate is the natural result, and the funnel below it is your problem.

When a provider charges only for a found contact, the miss is the provider's cost. On Forager, a work email lookup costs 5 credits and is charged only when an address is found. A personal email lookup costs 5 credits only when at least one address is returned, and a 200 with an empty body is not charged. A mobile number lookup is 15 credits, charged only when a number is found. Search and enrichment calls, such as person details at 1 credit, are charged per request.

Per-found pricing does not settle the "returned" question by itself. A provider could still count a loose match as found. It does change the comparison you should make: divide the credits you spent by the number of right-person rows you got back. That is the cost of a right result, and it is the only price two providers can be compared on. A cheaper lookup that is often wrong costs more by this measure, before you count the support tickets about dead numbers.

How to measure on your own sample

Build the sample from your own traffic and get the contract terms in writing before a provider gets a slot. The short protocol for match rate specifically:

  1. Pull records from your own traffic. Take a few hundred people your users actually looked up last month. Keep the rows your current providers missed; that is where a new slot earns its place.
  2. Send the same input to every provider. Keep a copy of the input exactly as sent, so a difference in results is a difference in providers.
  3. Record four things per row. Returned (yes or no). Connects. Right name. Right profile. Call or verify a random subset of the returned rows to fill the last three.
  4. Compute two rates, side by side. Match rate is returned rows ÷ rows sent. Right-person rate is rows that pass all three checks ÷ rows sent. Publish both internally, never one.
  5. Add cost. Credits spent ÷ right-person rows, per provider.
ColumnValue per row
inputThe identifier as sent (profile URL, or name and company)
returnedyes / no
connectsyes / no / not checked
right_nameyes / no / not checked
right_profileyes / no / not checked
creditsWhat the row cost

Keep the counts beside the percentages. Eight right results out of 100 and 80 out of 1,000 are the same rate with very different amounts of evidence, a point Trellus makes about connect rate that applies just as well here. Break the sample out by region and seniority, because a blended rate hides the segment where a provider falls over.

Send the outcome back

A test tells you about a provider once. A feedback loop tells the provider about your calls every day. Forager's feedback endpoints take the outcome of a call or an email and store each report as its own record. A dialer or sequencer can send one automatically after every call or bounce.

You contactedEndpointcontact_statusOptional
A phone numberPOST /datastorage/feedback/phone_numbers/connected or disconnectedis_correct_person, name, person_id
A personal emailPOST /datastorage/feedback/personal_emails/valid or invalidsame
A work emailPOST /datastorage/feedback/work_emails/valid or invalidsame

is_correct_person is the right-profile bar of the funnel. Send true when the person was confirmed, false when it was the wrong person, and omit it or send null when you could not tell; a disconnected number reaches nobody. person_id ties the report to the record the contact came from.

curl -X POST "https://api-v2.forager.ai/api/$FORAGER_ACCOUNT_ID/datastorage/feedback/phone_numbers/" \
  -H "X-API-KEY: $FORAGER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone_number": "+12025550142", "contact_status": "connected", "is_correct_person": true, "person_id": 1234567}'

A stored report returns 201. Feedback requests are free and use no credits. The three endpoints share a budget of 60 requests per minute per account, which is enough for a dialer posting after each call. Phone numbers can be sent in any format and are normalized to E.164.

Wire the dialer's disposition to this endpoint and the two dashboards from earlier become one. Match rate stays the data team's number. Connect rate and right-party contact flow back to the provider, row by row, and the next lookup has that outcome behind it.

FAQ

What is a good match rate?

There is no number we can give you that would mean anything on your list. Match rate depends on what the provider counts as returned, on the segment you send, and on the identifier you send with it. Measure it on a sample pulled from your own traffic, and measure right-person rate beside it.

How is match rate different from accuracy?

Match rate counts records that came back. Accuracy counts records that were right. A record can be matched and wrong at the same time: a disconnected number, a namesake, a number that used to belong to the person. Ask every vendor for both, and ask what counted as a match.

What is connect rate?

Connect rate is the dialer's measure: calls answered by a prospect divided by dial attempts. A stricter version counts only calls answered by the person the rep meant to reach, which dialer teams call right-party contact. Both are the bottom of the same funnel that match rate sits at the top of.

Does pay-per-found pricing change how much match rate matters?

It changes who pays for a miss, so a provider has less reason to return anything just to log a match. It does not tell you whether the found contact is the right person. Compare providers on credits spent per right-person result, not on match rate alone.

How many records should a test use?

Enough that the rates mean something for each segment you care about. A few hundred rows pulled from your own traffic shows the shape; a segment with 20 rows does not. Keep the counts beside the percentages so a small difference on a small sample is not read as a result.

Bring a sample. We'll show you what we find.

Send a list of profiles your users looked up. We run it and show you what we find, number by number, so you can measure hit rate and connect rate yourself.

  • 800M+ people and 65M+ companies
  • Mobile and email lookups that find nothing cost 0 credits
  • Free API key to start

#1 of 10 in Clay's 2026 test of mobile data providers Source: Clay

Justin Winter
Justin Winter Head of Growth at Forager. Founder and growth executive across VC-backed startups and B2B SaaS.