A cold email tracker is one Google Sheet with a row per person and 14 columns, plus a second tab of five formulas that give you reply rate, positive rate and meetings per 100 sends. You build it in about 20 minutes, update it in a minute a day, and read it for ten minutes a week. Below are the exact columns, the formulas to paste, and what to do when the sheet starts to strain.

Abena sells event staffing to corporate offices in Minneapolis. She is about to send her first batch of 50 and wants to know, a week later, whether it worked. A sheet is the right tool for that. It is also the kind of tool you outgrow, and the end of this page says when.

What the sheet is for

It answers four questions. Who have I written to, and at which step? Who needs a follow-up today? What did each batch produce? And which emails never arrived? It does not measure opens, because opens are unreliable (see startup cold email deliverability basics), and it does not replace your inbox. You still read every reply there. The sheet just keeps count.

The columns

Name the first tab "Sends" and put these headers in row 1, in this order:

  1. Name. The person's full name.
  2. Company.
  3. Role. The job title, so you can see which roles answer.
  4. Email.
  5. Verified. Y, Risky or N, from your address check.
  6. Batch. A label like "Oct-wk2" so you can compare batches.
  7. Date sent. The date of the first email.
  8. Step. 1, 2 or 3, meaning how many emails they have had.
  9. Last touch. The date of the most recent email.
  10. Reply type. Blank, or one of Positive, Neutral, Negative, Auto, Unsubscribe.
  11. Meeting. Y once a meeting is booked.
  12. Bounce. Blank, Hard or Soft.
  13. Next action date. A formula, given below.
  14. Notes. One line: what they said, what you promised.

Add dropdowns to Reply type and Bounce through Data, then Data validation, so every entry is spelled the same way. A sheet with "positive," "Positive" and "pos" counts only one of them. That one setup step saves more headaches than any formula.

Formulas for the Dashboard tab

Add a second tab named "Dashboard." Put the labels in column A and these formulas in column B. They assume the columns above, with Date sent in G, Reply type in J, Meeting in K and Bounce in L, and data running to row 1000. Row 1 of the Dashboard is a header. Then Sends sits in B2, Hard bounces in B3, Delivered in B4, Human replies in B5, Reply rate in B6, Positive rate in B7, Meetings in B8 and Meetings per 100 sends in B9, so the cell references below line up.

Sends, the count of rows with a date sent:

=COUNT(Sends!G2:G1000)

Hard bounces:

=COUNTIF(Sends!L2:L1000,"Hard")

Delivered, which is sends minus hard bounces:

=B2-B3

Human replies. This counts Positive, Neutral and Negative and leaves out Auto and Unsubscribe, because an out-of-office message is not a reply:

=COUNTIF(Sends!J2:J1000,"Positive")+COUNTIF(Sends!J2:J1000,"Neutral")+COUNTIF(Sends!J2:J1000,"Negative")

Reply rate (format the cell as a percent):

=IFERROR(B5/B4,0)

Positive rate:

=IFERROR(COUNTIF(Sends!J2:J1000,"Positive")/B4,0)

Meetings:

=COUNTIF(Sends!K2:K1000,"Y")

Meetings per 100 sends:

=IFERROR(B8/B2*100,0)

The definitions follow the same logic as what is a good cold email reply rate: reply and positive rates divide by delivered emails, while meetings are counted per 100 sent, because that number measures effort in against outcome out. If you want to see each batch on its own, replace the ranges with COUNTIFS that also match the Batch column.

The next-action column

This formula, placed in column M, tells you who to write to and when. It leaves the cell blank once someone has replied, so a reply removes them from your list automatically. It uses a four-working-day gap after step 1 and five after step 2, and stops at step 3. Format column M as a date:

=IF(J2<>"","",IF(H2=1,WORKDAY(I2,4),IF(H2=2,WORKDAY(I2,5),"")))

Add a filter view on column M and sort ascending. Every morning, the people whose date is today or earlier are the follow-ups to send. A count of what is due:

=COUNTIF(Sends!M2:M1000,"<="&TODAY())

Note that formula assumes you update Step and Last touch each time you send. The timing it encodes is explained in the cold email follow-up sequence.

A weekly review in ten minutes

Once a week, at the same time, look at the Dashboard and answer in this order. First, are hard bounces over 5 percent of sends? If so, stop and fix the list before anything else; cold email bounce rate has the steps. Second, how many human replies and how many positive? Third, how many meetings per 100 sent, and is that better or worse than last week? Fourth, which role or batch got the most replies, by sorting the sheet on Reply type. Fifth, write one change to try next week and put it in the Notes of the next batch. The checks to run before that next batch goes out are in email outreach best practices.

Abena's first batch of 50: 2 hard bounces, so 48 delivered. Six human replies (3 positive, 2 neutral, 1 negative), plus 2 out-of-office messages, which the sheet does not count. Reply rate 6 of 48, which is 12.5 percent. Positive rate 3 of 48, 6.3 percent. Two meetings, which is 4.0 per 100 sent. These numbers are small, so a batch of 50 can't tell her a lot. She reads them as a starting line. The test design that gives a fairer comparison is in how to test a cold email with 50 prospects.

When a sheet breaks

Three things go wrong. Two people edit at once and one overwrites the other's reply status. Someone sorts only one column and scrambles the rows, so a "Positive" lands on the wrong person; always select the whole table before sorting. And the sheet goes out of date, because the real record is the inbox and updating the sheet is a chore. A stale sheet is worse than none, since it tells you nobody needs a follow-up when three people do. Set a fixed five minutes at the end of each sending day to update it.

Past about 200 live contacts, or when you notice you are skipping the update, the sheet has done its job. A tool that logs sends and replies on its own is the next step, and the problem it solves is described in the list is not the customer and a pipeline that is really a list. If you are choosing a first channel mix, read B2B outreach strategy for a team of one.

Rocketship keeps the same record without the sheet. It finds the buyers by name, emails them from your own Gmail, logs each send and reply, follows up, and books the meeting on its own. Plans that get you customers start at $24.99 a month (Launch), and every monthly plan starts with a 7-day free trial, card required. See the AI workers.