Tracking Cold Calls in a Spreadsheet That Counts What Closes

    Short answer

    A paste-ready call log for Google Sheets or Excel, with outcome dropdowns, COUNTIFS weekly metrics, do-not-call and consent columns, and the point where the sheet should become a CRM.

    Artem Smirnov
    Artem Smirnov

    Last updated · 12 min read

    Artem Smirnov in a dark suit against a charcoal studio backdrop, next to the line 'LOG EVERY DIAL. A booked call is not a win'

    To track cold calls, log every dial attempt as its own row in one sheet. Pick the outcome from a fixed dropdown, and let a weekly review tab count the rows with COUNTIFS. Dials, connects, meetings booked and follow-ups due all come out of that one log. It works in Google Sheets or Excel, and you do not need to buy a dialer.

    A disclosure: my agency books meetings mostly through cold email and LinkedIn, with no cold dialing at all. If a client wants the phone, we call warm lists only: people who replied, engaged or opted in.

    The rule that makes it work is one row per attempt. If you overwrite a contact's row every time you call, the history disappears. You can still count people, but you can no longer count effort. Three tries at the same buyer should show up as three rows.

    Why does the call log also track email and LinkedIn touches?

    Most cold-call logs stop at the dial. Mine does not, because the sale is happening online before the call, not on it. By the time the phone rings, the buyer has already checked you out. So the log records what they saw first: the email and LinkedIn touches either side of each call.

    Which columns does a cold call log need, and what values go in each?

    Paste these headers into row 1 of a tab named Log. The letters matter, because the formulas further down point at them.

    ColHeaderWhat it holdsAllowed valuesValidation
    ACall IDUnique row number1, 2, 3...Text
    BDateDay of the attemptAny dateDate
    CTimeTime of the attempthh:mmTime
    DCallerWho dialedYour team's namesList
    EContact nameThe person you tried to reachFree textText
    FCompanyTheir companyFree textText
    GTitleTheir real job titleFree textText
    HPhoneNumber dialedDigits with country codeText
    IOutcomeWhat happenedNo answer, Voicemail, Gatekeeper, Not now, Callback set, Meeting booked, Wrong number, Do not callList
    JNext stepWhat happens nextCall again, Send email, LinkedIn message, None, DoneList
    KFollow-up dateWhen the next step is dueA future dateDate
    LLast touch before callWhat they saw from you before this callEmail, LinkedIn, Both, NoneList
    MNext touch after callThe channel you use nextEmail, LinkedIn, Call, NoneList
    NShowedDid a booked meeting happenYes, No, RescheduledList
    OSignedDid the meeting become a contractYes, No, OpenList
    PNotesOne line of contextFree textText

    Keep the outcome codes exactly as written, because COUNTIFS matches text character for character. Use "Gatekeeper" when someone other than your contact picked up. Use "Not now" when your contact answered and declined for the moment. Use "Callback set" when they agreed to a time. "Do not call" means they objected, and that code feeds the compliance columns in the next section.

    Google Sheets. Select column I, then choose Insert > Dropdown, or Data > Data validation > Add rule, and type the values. By default, Sheets rejects anything that is not on the list. Leave it that way. The "Show a warning" option under Advanced options lets off-list values in, and one typo like "voicemial" quietly drops out of your counts (Google Docs Editors Help).

    Excel. Select the column, open Data > Data Validation, set Allow to List, and type the values in Source separated by commas. Make sure the In-cell dropdown box is checked. On the Error Alert tab, choose the Stop style so a wrong code has to be fixed before it can be saved (Microsoft Support). Set this up before you share or protect the workbook. Excel will not let you change validation on a shared workbook or a protected sheet.

    For Follow-up date, use a Date rule set to "between". Microsoft's own example limits dates to =TODAY() through =TODAY()+3. Copy the pattern with whatever window your sequence needs, for example =TODAY()+30, so nobody types last year by accident.

    In our email and LinkedIn campaigns, replies tend to come late. Most arrive on the third follow-up. That only works when real days pass between attempts. Space the column K dates for that.

    Columns L and M exist for the same reason. I never stop at one or two messages: I plan at least 5 to 6 touches, spread over more than one channel where I can. A call is one of those touches, so the sheet shows what came before and after it.

    Which compliance columns should the sheet carry before anyone dials?

    Add these to the right of the call columns. Fill them in before the first dial.

    ColHeaderAllowed valuesValidation
    QSubscriber typeCorporate, Sole trader or partnershipList
    RScreened onDate of the last register checkDate
    SCTPS/TPS resultClear, On CTPS, On TPS, ConsentedList
    TOwn DNCYes, NoList
    UObjection dateDate the person objectedDate
    VConsent recordWhat they agreed to, when and howText
    WOffer typeBusiness use, Nondurable office or cleaning supplies, Employee personal useList
    XNumber displayedYes, NoList
    YDelete afterThe end of your retention periodDate

    This section covers the UK and the US only. EU countries have their own national rules, so check local law before dialing there.

    UK. For live B2B calls, the ICO says numbers on the TPS or on the corporate register (CTPS) are off limits unless that business has consented. You screen against both registers and against your own do-not-call list (ICO B2B marketing guidance). Columns R, S and T record that check. The same guidance treats sole traders and some partnerships as individual subscribers, which is why column Q exists. Expect changes here: the ICO flags this page as under review after the UK's 2025 data reform law.

    Regulation 21 of PECR bars calls to a subscriber who has told you not to call that line, and calls to a number on the register. The exception is a subscriber who has said it currently has no objection. That permission can be withdrawn at any time (PECR regulation 21). Column U holds the objection date. Column V holds the permission, if you have one.

    The ICO's PECR guide expects records showing what each person agreed to, the date, and the way consent was obtained. It also says callers must say who they are and display their number (ICO guide to PECR). Column X shows whether your number was displayed on each call.

    US. According to the FTC's Telemarketing Sales Rule guidance, the rule leaves out the majority of telemarketer-to-business calls. Calls that sell nondurable office or cleaning supplies are covered. Calls to a business line that pitch employees on buying for their own personal use are covered too.

    The FTC's Do Not Call Q&A adds that most calls asking a business to buy for itself are exempt from those provisions. Column W flags the rows that fall outside the usual exemption.

    If column W ever says anything other than "Business use", stop and get advice. This is not legal advice.

    What formulas turn the log into weekly metrics?

    Make a second tab called Review. Put the Monday of the week you are reviewing in B1, then name that cell WeekStart (Data > Named ranges in Sheets, Formulas > Define Name in Excel). Add three helper columns on the Log tab: Z for Hour, AA for Weekday, and AB for Connected, with this formula in AB2:

    =IF(OR(I2="Not now",I2="Callback set",I2="Meeting booked",I2="Do not call"),"Yes","No")

    A connect here means you reached the named person, whatever they said.

    Review cellMetricFormulaWhat it tells you
    B2Dials this week=COUNTIFS(Log!B:B,">="&WeekStart,Log!B:B,"<"&WeekStart+7)Raw effort
    B3Connects=COUNTIFS(Log!B:B,">="&WeekStart,Log!B:B,"<"&WeekStart+7,Log!AB:AB,"Yes")How often a real person picked up
    B4Meetings booked=COUNTIFS(Log!B:B,">="&WeekStart,Log!B:B,"<"&WeekStart+7,Log!I:I,"Meeting booked")Output of the week
    B5Voicemails=COUNTIFS(Log!B:B,">="&WeekStart,Log!B:B,"<"&WeekStart+7,Log!I:I,"Voicemail")Attempts that need a different touch
    B6Showed=COUNTIFS(Log!B:B,">="&WeekStart,Log!B:B,"<"&WeekStart+7,Log!N:N,"Yes")Meetings that actually happened
    B7Follow-ups due today=COUNTIFS(Log!K:K,TODAY(),Log!J:J,"<>Done")Today's call list
    B8Overdue follow-ups=COUNTIFS(Log!K:K,"<"&TODAY(),Log!J:J,"<>Done")Leads going cold right now
    B9Connect share=IFERROR(B3/B2,0)Data quality and timing
    B10Booked share of connects=IFERROR(B4/B3,0)Strength of your ask
    B11Showed share of booked=IFERROR(B6/B4,0)What happens between booking and meeting

    How do you read B9? Gong's analysis of 300 million calls, as summarized by Trellus, reports a 5.4% connect rate for the average rep and 13.3% for the top quartile. They count calls answered by a prospect divided by dials, the same math as B3/B2. Trellus notes these are vendor-reported figures that do not describe every industry. Treat them as a rough range to compare against.

    If B10 stays low, look at your 30-second opener and your replies to brush-offs before you blame the sheet.

    The Done value in column J keeps the follow-up counts honest. When you complete a follow-up, set the old row's Next step to Done and log the new attempt as a new row.

    To compare weeks, put =B1-7 in C1, =C1-7 in D1 and so on, then copy the B2:B11 formulas across and replace WeekStart in each column with that column's own row 1 cell (C$1, D$1 and so on). A named range does not shift when you copy it.

    That gives you four weeks side by side. Month by month, a US coaching and consulting client of ours went from 27 booked calls to 35, then 64, all from LinkedIn outreach and LinkedIn content, with no phone involved. A weekly view shows that kind of ramp early.

    Plan for no-shows on calls booked from cold outreach from day one: there is always a gap between meetings booked and meetings held.

    When in the day and week do your calls actually connect?

    Put =HOUR(C2) in Z2 and =TEXT(B2,"ddd") in AA2, then fill both down.

    Build a pivot table from the Log tab. Use Hour as the rows, Outcome as the columns, and the count of Call ID as the values. Then show the values as a percentage of each row.

    Google Sheets can show each value as a share of the whole (Google Docs Editors Help, pivot tables). Build a second pivot with Weekday as the rows to see the same pattern by day.

    There is one trap. If you filter a Sheets pivot by values, new rows are not picked up automatically. You have to update the filter after the source data changes. Make that check part of the weekly review, or the pivot will ignore your newest calls.

    ZoomInfo's analysis of over 1.4 million outbound calls found Tuesday and Wednesday were the top days. Together they accounted for 44% of all booked demos. ZoomInfo also advises treating published timing benchmarks as starting points. Industry, seniority and geography can produce a different pattern for you.

    So a safe rule: do not move your call blocks after a single good Tuesday. Wait until the same hour leads for several weeks running in your own data, then shift one block at a time.

    How long can you keep call records, and what must never be deleted?

    In the UK there is no fixed number. The ICO says UK GDPR sets no specific time limits. You should not keep data indefinitely "just in case". You need to set and document retention periods (ICO storage limitation guidance). The same guidance allows you to keep enough about someone who objected to stop marketing to them in the future.

    That leads to a tab you never delete: Suppression. Any row with "Do not call" in column I, or a date in column U, gets copied there with only the phone number, company, name and objection date. Before every calling session, check new numbers against it. Delete someone from Suppression and they end up back on your call list.

    In the US, most B2B calls never reach this point, because of the exemptions above. Where the TSR's recordkeeping does apply, 16 CFR 310.5 lists the call records to keep for 5 years.

    They include the calling and called number, date, time and duration, the disposition, and whether the call went to a consumer or a business. Time and duration go to the closest second, with time in UTC (eCFR, 16 CFR 310.5).

    For the practical routine, fill column Y with your documented period. For example, =EDATE(B2,12) if you chose 12 months. Once a month, filter for Delete after earlier than today, copy any objectors to Suppression, and delete the rest.

    When should the spreadsheet become a CRM?

    The trigger is ownership. A sheet works while one person makes the calls, reads every reply and owns every follow-up date.

    SituationStay in the sheetMove to a CRM
    One person dials and answers every replyYesLater
    A second person starts calling or answering repliesYes
    Replies arrive by phone, email and LinkedIn at onceYes
    A follow-up date in column K passed with nobody actingYes, this week
    Suppression has to apply across several toolsYes

    I keep every lead in a CRM so none gets lost, whichever CRM it is, and every reply needs one home before outbound starts. I also put one inbox manager on replies, so nothing slips through while the callers keep calling. If you also want a deal-stage view once a meeting is booked, a sales pipeline built in Excel covers that.

    When you import, map the columns one to one. Outcome becomes an activity type, Follow-up date becomes a task, and the compliance columns become contact properties. Import the Suppression tab first, so the CRM blocks those numbers from day one. If two people call, divide the accounts between them so nobody touches the same leads, and use column D to enforce it.

    What does the full funnel look like when calls are only one step?

    Count the stages between a reply and a signed contract. In one month for a German software development company, run on cold email and LinkedIn with no phone involved, 34 meetings were booked, 28 were held and 4 became contracts. Every stage loses people, and a log that stops at "booked" hides that loss.

    That is why the Log carries Showed and Signed in columns N and O, right next to Outcome. If your review tab stops at meetings booked, you are scoring yourself on the easy half. I judge a campaign by what closes, because a booked call is worth nothing until someone closes it, and what happens after the call is booked decides most of the result.

    Add Showed and Signed on day one, and read row B11 before you celebrate row B4. More dials will not fix a weak close. A funnel that leaks at small volume will leak at big volume too. Fix the close first. Then dial more.

    Building your own call log and unsure which columns your team really needs? Book a call and send me your draft sheet. I will tell you what I would cut or add.

    Questions people ask about cold call logs

    Is B2B cold calling illegal?

    In the UK and the US, live calls to businesses are generally allowed within the rules above. Two details catch people out. Under PECR regulation 21(3), a call to a number added to the register within the last 28 days is not a breach. In the UK, automated calls need consent that specifically covers automated calls from you. This is not legal advice.

    What is the 80/20 rule in cold calling?

    People use it loosely, as a version of the Pareto idea: a small share of your accounts, hours or messages produces most of your meetings. Your own log is the honest way to test it. Sort the pivot by Company or Hour and see whether a few rows really carry the result before you change anything.

    What are the 5 stages of cold calling?

    There is no official list. Most versions describe the opener, the reason for calling, a few discovery questions, handling the main objection, and asking for a next step. Whatever version you use, your outcome codes should show where calls stop. A pile of "Not now" outcomes suggests the reason for calling is weak. When "Gatekeeper" dominates, the list probably has the wrong titles.

    If an outsourced caller uses my sheet, who is responsible?

    In the UK, the ICO's PECR guide says that when you pay someone to market for you, you are both responsible for complying. In the US, 16 CFR 310.5 lets a seller and a telemarketer divide recordkeeping duties by written agreement. Without a clear agreement, both are responsible. Agree in writing who keeps the log.

    Do I need to check the US National Do Not Call Registry for B2B calls?

    Usually not. Most calls soliciting a business for its own purchases are exempt. Calls that pitch employees for personal use are a different matter. Where the Registry rules apply, the FTC says lists must be synced with it at least every 31 days. Log each US registry sync date in column R, next to your register checks.

    Want to get more B2B clients for your business?

    I help B2B companies book 10 to 100+ qualified sales calls per month with outbound. Let's see if it fits yours.

    Artem Smirnov
    Artem Smirnov

    I help B2B companies book qualified sales calls with cold email and LinkedIn outbound.