How to measure cold email reply rate

Reply rate is replies divided by messages delivered, counted per campaign and per step. Count any human response, exclude autoresponders, and record it within a fixed window such as seven days. Compare campaigns only when the audience, sender and window are the same.

Updated October 26, 2026

Define a reply before you measure one

An out-of-office is not a reply. A bounce is not a reply. A one-word “no” is a reply, and so is an angry one, because both tell you the message reached a person and provoked a decision. Counting only positive replies hides the complaints that damage a domain.

Record replies in two buckets: human and automatic. Human replies split again into interested, not now, and not interested. That detail is what turns a percentage into a decision about the next campaign.

  • Human reply: written by a person, even if negative.
  • Automatic: out-of-office, ticket acknowledgement, delivery receipt.
  • Bounce and complaint: tracked separately, never as replies.

Bounces belong in their own measure; bounce rate covers how to interpret them.

The formula and the denominator

Use delivered messages as the denominator, not sent. Messages that bounced were never delivered and would distort the rate upward. If your provider only exposes sent, subtract hard bounces.

Count within a fixed window. Replies arrive for days; a campaign measured after two days will look worse than the same campaign measured after a week. Pick seven days for cold outreach and keep it constant so comparisons mean something.

  • Reply rate = human replies / delivered messages.
  • Window: seven days from each send, consistently.
  • Per step as well as per campaign.

Per-step numbers are what tell you which message worked; see follow-up sequences.

Why opens are not a substitute

Open tracking uses a remote image that clients block or prefetch. The result is noise: some opens are machines, some readers are never counted. A subject line can lift opens and lower replies, and an open-based dashboard will call that a win.

If you need a second signal beside replies, use a deliberate click on a link that requires intent, or a direct question answered in the reply. Both are caused by a person.

  • Do not compare subject lines by opens.
  • Use replies plus intentional clicks.
  • Disable open tracking where the provider allows it.

A worked comparison

Two hundred verified recipients, same sender, same window. Campaign A: 200 delivered, 9 human replies, 1 complaint. Campaign B: 198 delivered, 14 human replies, 0 complaints. Campaign A is 4.5 percent and B is 7.1 percent, and B is also the safer campaign.

That pair is worth acting on: B's subject and body become the base for the next segment. A single comparison at this size is a hint, not proof, so repeat it on another segment before rewriting everything.

The reporting that separates replies from opens is standard in campaign reporting.

Attribution when several steps run at once

Campaigns usually run steps for different cohorts in parallel: one group is on the first message while another receives a follow-up. A single campaign-level reply rate hides which step produced the response, so record the step on every reply.

The cleanest attribution is per-send: each outbound message has a step number, and a reply is credited to the most recent step for that recipient. Replies that arrive after the sequence ends are credited to the last step, because that is the message they were answering.

Keep the seven-day window per send rather than per campaign. A campaign that has been running for a month will otherwise mix replies from the first cohort with sends from the last, and the rate becomes an average of unrelated periods.

  • Tag every outbound message with its step.
  • Credit a reply to the recipient's most recent step.
  • Apply the window per send, not per campaign.
  • Count replies from forwarded messages too. A recipient who forwards your email to a colleague and replies from that colleague's address is still a reply, and missing it understates a campaign that worked.
  • Keep a small sample of replies verbatim for each campaign and revisit them when the rate moves. Numbers tell you that something changed; the text tells you what. Without the sample, the next campaign repeats the wording that produced the drop, and the rate stays where it is until someone guesses correctly.
  • Store the raw reply text with the classification, not only the label. A month later the labels blur, and the original wording is what tells you whether "not now" meant budget, timing or a competitor. It is also the only source of the language your next campaign should use.

What to count and where it belongs

EventCounts as a reply?Where to record it
Human answer of any kindYesReply, with sentiment
Out-of-officeNoAutomatic, pause sequence
Hard bounceNoBounce, remove address
Spam complaintNoComplaint, stop campaign
Link click without replyNoEngagement, secondary signal

Delivered messages are the denominator; sent counts overstate the denominator and understate the rate.

What reply rate will not tell you

A rate is a measurement, not a verdict.

  • It will not tell you whether the message reached the inbox rather than spam.
  • It will not prove the offer is good, only that the message was answered.
  • It will not be comparable across different audiences or windows.
  • It will not improve because you measure it more often.

Frequently asked questions

Is a reply rate of a few percent normal?

There is no universal figure. The useful comparison is your own campaign against your own campaign on the same audience, sender and window.

Should negative replies count?

Yes. They are human responses and they tell you the message reached a person. Excluding them hides the complaint risk you need to see.

How long should I wait before calculating?

Seven days from each send for cold outreach, applied consistently. Shorter windows favour fast responders and distort comparisons.

Do replies count if they come from a different address?

If the person replies from another mailbox, most providers will not thread it. Note it manually or lose a real signal.

Ready to run a campaign? Compare published plans or create a free account. Trials cannot send until a paid plan is active.

Lifetime deals — one payment each

All thirteen are sold at softwareprogrammer.app. Published prices are one-time; code SALE20 takes 15% off off. One-time payment · instant order · seat activated by hand.

Prices shown are the published one-time prices at softwareprogrammer.app. Applying SALE20 reduces the total by 15% off; nothing on this page is a ranking or income promise.

Other tools in this group

Each product is operated by the same team. Links below are editorial, not paid placements.

Looking for the product this page describes? Compare plans and prices.