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:
- Your exact certificate holder name and address, written the way you want it printed.
- The project name or address, if you want it in the description box.
- Where to send it: one shared inbox, not a project manager's personal email.
- Any endorsements you want copies of. The certificate can only point to an endorsement. If your contract calls for one, ask for a copy of the endorsement itself.
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:
| Field | Where it comes from | Why log it |
|---|---|---|
| Subcontractor (named insured) | Insured box | Should match the legal entity on your subcontract |
| Trade | Your records | Lets you sort and filter by scope |
| Sub contact email | Your records | Where reminders go |
| Policy line | Type of insurance column | GL, Auto, Umbrella, WC, Other |
| Insurer (as printed) | Insurer A-F list, matched by letter | Tells you which company issued each policy |
| Policy number | Policy number column | A changed number usually means a renewal or a new policy |
| Effective date | Policy effective column | Start of the printed policy period |
| Printed expiry date | Policy expiration column | The date you track |
| Your requirement | Your contract | What you asked for, in your own words |
| Printed limit | Limits column | What the certificate prints, side by side with your requirement |
| Date certificate received | Your inbox | Shows when you had a current copy on file |
| Reminder sent on | Your records | Stops double-chasing and shows follow-up history |
| Notes | You | Questions 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:
- Current: printed expiry is more than your reminder window away.
- Expiring soon: inside your reminder window (for example, 30 days).
- Past printed expiry: the date has passed and you haven't logged a newer certificate.
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:
| When | What to send |
|---|---|
| 30 days before printed expiry | A friendly heads-up asking for the renewed certificate |
| 14 days before | A second request, copied to the agent in the Producer box |
| On the printed expiry date | A note that your file now shows a past date |
| 7 days after | A 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
- Tracking one date per sub. Policies on the same certificate can expire on different dates. Track each line.
- Treating a checked box as the endorsement. A mark in the additional insured or subrogation column is a note on a summary. The certificate itself says it doesn't replace an endorsement. Ask for the endorsement if your contract calls for it, and take any questions about it to your broker.
- Accepting a certificate a sub edited themselves. Certificates should come from the agent or insurer. The NCOIL model act bars anyone from altering a certificate after it's issued (Section 4). If something is wrong, ask the agent to reissue it.
- A wrong certificate holder name. Typos in your entity name are easy to miss and annoying to fix later. Check the holder box every time.
- Overwriting old certificates. Keep the history, both in the sheet and in the folder.
- Reminders living in one person's inbox. Use a shared address, so a vacation doesn't stall the follow-up.
A 15-minute weekly routine
- Log every certificate that arrived this week, one row per policy line.
- Sort by days to printed expiry.
- Send the reminder that matches each row's stage, and fill in "Reminder sent on."
- Scan for rows where the printed limit doesn't match your requirement, and send your questions.
- 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.