COI Trail
Guides

How to Track Subcontractor Certificates of Insurance

If you run a small commercial GC shop, you probably collect certificates of insurance (COIs) from every sub before they start. The hard part isn't getting the first one. It's keeping track of what each certificate says, noticing when the printed dates run out, and getting a fresh one before the next pay app or the next mobilization.

This guide walks through a simple process you can run in a spreadsheet: what to log, how to watch expiry dates, when to send reminders, and the mistakes that cause the most rework.

Before you start: a certificate of insurance is a summary. It doesn't change the policy it describes, and it doesn't give anyone rights the policy itself doesn't give. The model law adopted by the National Conference of Insurance Legislators says exactly that (NCOIL Certificates of Insurance Model Act). Tracking certificates means recording what they print and watching dates. Questions about what a policy actually does go to your broker, or to the policy and its endorsements.

Step 1: Write down what you ask each sub for

You can't tell whether a certificate matches what you asked for if the request was never written down. For each subcontract, keep a short list of the insurance items your contract asks for: policy lines (general liability, auto, umbrella or excess, workers' compensation, anything else), the limits, and any wording your contract asks to see on the certificate, such as your company being named as an additional insured.

Those requirements come from your contracts, owner agreements and broker, not from a tracker or from us. If you're not sure what to ask for, talk to your broker or attorney.

Step 2: Request the certificate before the sub starts

Ask for the certificate at signing, and before anyone sets foot on site. When you ask, tell the sub:

The sub will usually pass your request to their insurance agent, who issues the certificate. If something on it is wrong, the fix comes from that agent (shown in the "Producer" box), not from the sub editing the PDF.

Step 3: Log one row per policy line

A single certificate often lists four or five policies, each with its own dates. If you log one row per certificate, you'll miss the auto policy that renews in March while the general liability runs through August. Log one row per policy line instead.

Here's what to record from each certificate, exactly as printed:

FieldWhere it comes fromWhy log it
Subcontractor (named insured)Insured boxShould match the legal entity on your subcontract
TradeYour recordsLets you sort and filter by scope
Sub contact emailYour recordsWhere reminders go
Policy lineType of insurance columnGL, Auto, Umbrella, WC, Other
Insurer (as printed)Insurer A-F list, matched by letterTells you which company issued each policy
Policy numberPolicy number columnA changed number usually means a renewal or a new policy
Effective datePolicy effective columnStart of the printed policy period
Printed expiry datePolicy expiration columnThe date you track
Your requirementYour contractWhat you asked for, in your own words
Printed limitLimits columnWhat the certificate prints, side by side with your requirement
Date certificate receivedYour inboxShows when you had a current copy on file
Reminder sent onYour recordsStops double-chasing and shows follow-up history
NotesYouQuestions you sent to the sub or broker, and the answers

Keep two columns separate: "Your requirement" (what you typed from the contract) and "Printed limit" (what the certificate says). Putting them side by side makes a mismatch obvious. When they don't match, don't try to interpret it. Email the sub, copy their agent, and log the question in Notes. If it matters to your contract, check with your broker.

Step 4: File the PDF where you can find it

Save every certificate, and every endorsement copy you receive, in one shared folder with a consistent name, for example SubName_2026-10-29_COI.pdf. Use the date you received it. Save each renewal as a new file rather than overwriting the old one, so you keep a history of what you had on file and when.

Step 5: Track printed expiry dates, not certificates

A certificate shows information as of the date it was issued. A policy can be cancelled or changed after that, and the certificate won't update itself. All a tracker can do honestly is compare the printed expiry date with today's date. Track it that way, and label it that way.

In a spreadsheet, add a "Days to printed expiry" column (=PrintedExpiry - TODAY()) and a simple status column based only on dates:

That status says nothing about whether a policy is in force or whether it matches your contract. It's a to-do list. Sort by days to printed expiry once a week, and you know who to chase.

Step 6: Send reminders on a fixed schedule

Your sub and their agent need time to answer, so your request has to reach the right person early. A fixed schedule keeps you from chasing everything at the last minute. Some tracking tools use 30 days, 7 days and the expiry date itself as reminder points (Buildpass help article). A cadence that works well for a small office:

WhenWhat to send
30 days before printed expiryA friendly heads-up asking for the renewed certificate
14 days beforeA second request, copied to the agent in the Producer box
On the printed expiry dateA note that your file now shows a past date
7 days afterA final follow-up, plus whatever your subcontract says happens next

We've written ready-to-copy reminder emails for each step. What happens when a certificate isn't on file is set by your subcontract, so have your reminders point to it. Your attorney can tell you what it allows.

Step 7: When the renewal arrives, add a new row

Log the renewed certificate as new rows. Mark the old rows as replaced in Notes rather than deleting them. Compare the insurer, policy number, limits and named insured with the last certificate. If anything changed, check it against your requirement column and ask questions where needed.

Common mistakes

A 15-minute weekly routine

  1. Log every certificate that arrived this week, one row per policy line.
  2. Sort by days to printed expiry.
  3. Send the reminder that matches each row's stage, and fill in "Reminder sent on."
  4. Scan for rows where the printed limit doesn't match your requirement, and send your questions.
  5. File the PDFs.

If you want to check what each box on a certificate means while you log it, see our guide on how to read a certificate of insurance.

Get the free tracker

COI Trail's free Excel COI tracker has these columns set up already, with days to printed expiry and a date-only status calculated for you, plus a reminder email tab. We're also putting together a small founding pilot of a done-for-you tracking service. If you'd like to hear about it, email team@getcoitrail.com.

Not a determination of coverage, endorsement or contract compliance. This guide is general information, not insurance or legal advice. A certificate of insurance is a summary and doesn't change the policy. For questions about a policy, talk to your broker or read the policy itself.

Free COI tracker (Excel)
One row per policy line, days to printed expiry and a reminder email tab. No sign-up.
Download the tracker