How to Track Subcontractor Insurance Without Software: A COI Compliance System That Prevents Coverage Gaps
Three weeks. That's how long a roofing subcontractor's COI had been expired when a water damage claim hit a mid-size remodeling contractor in Denver. The GC had 18 active subs across 12 projects. His office manager, Karen, maintained a spreadsheet of insurance expiration dates — but she had 40-60 subcontractor relationships to track, and the roofer switched carriers mid-project without telling anyone. The email requesting an updated COI went out two days after the expiration date. The roofer didn't respond for three weeks. In that window, a jobsite accident happened. The claim: $140,000. The GC's carrier denied coverage because the sub was uninsured at the time of loss. The settlement came out of the GC's company — not because the work was bad, but because nobody was tracking expiration dates.
If you're a general contractor managing 5-50 subcontractors across multiple projects, you don't need me to explain why this resonates. You've got subs emailing you certificates from 6 different insurance agents. Some name you as additional insured. Some don't. Some policies renew in March, some in November, some the sub doesn't even remember. And you — the person who got into this business to build things — are now a full-time insurance compliance administrator. The worst part? The SaaS industry saw this gap and filled it with $200-400/month platforms that do exactly what a well-built spreadsheet could do for free. This guide gives you that spreadsheet — and the system to make it work.
The real cost of COI non-compliance: The average residential remodeling claim for property damage or bodily injury runs $47,000 (The Hanover Insurance Group). A single denied claim wipes out the profit from 3-5 projects. Beyond catastrophic risk, there's the operational bleed: Karen spends 6 hours/month on COI tracking at $25/hour — that's $1,800/year. For larger GCs with 50+ subs, compliance tracking consumes a full-time administrator at $45,000-55,000/year. And the COI SaaS vendors (myCOI, billy, COI Tracker)? $200-400/month for what amounts to a database with email reminders — that the owner views as "insurance on my insurance" and refuses to add.
The 4-tab COI compliance workbook: everything you need, nothing you don't
This system replaces the single-sheet "COI expiration list" that breaks the moment one sub changes carriers mid-project. Four tabs, each with a specific job. Set it up once. Maintain it 30 minutes per week. Never discover an expired COI at 10pm again.
Tab 1: Sub Roster — who's working for you, and what coverage they carry
This is your master list. Every active subcontractor gets one row. The columns:
- Company name + contact info. Sub's legal business name (match the COI exactly), primary contact, phone, email. This isn't just administrative — when a COI is 7 days from expiration and the sub isn't responding to email, you need the phone number.
- Trade. Electrical, plumbing, roofing, drywall, HVAC, flooring, concrete, framing. This matters because different trades carry different minimum coverage requirements. An electrician should carry higher limits than a painter. Flag it.
- Insurance carrier + policy number. The name of the insurance company and the policy number exactly as it appears on the COI. If a sub switches carriers, you update this cell and the old policy data goes to an archive tab (don't delete it — you may need to prove coverage for a prior period).
- Policy type. GL (general liability), WC (workers' comp), auto, umbrella. At minimum, every sub should carry GL and WC. Checkboxes work better than text — you want a visual scan to show you who's missing WC in 2 seconds.
- Coverage limits. Per occurrence and aggregate. Your contract probably requires $1M/$2M minimum. If the COI shows $500K/$1M, that sub doesn't meet your requirements — flag it red and don't let them start until it's corrected.
- Additional insured? Yes/No — the single most important column on the sheet. If you're not named as additional insured, the sub's insurance protects the sub, not you. This column should be checked for every sub, for every policy, every time a COI is received or renewed.
- Waiver of subrogation? Yes/No — this prevents the sub's insurance carrier from suing you to recover claim costs. It's standard language on commercial COIs but it's missing often enough that you must verify it.
- Expiration date + days-to-expire formula. =DAYS(expiration_date_cell, TODAY()). This auto-calculates. Negative numbers mean EXPIRED. 0-30 means DANGER ZONE. 31-60 means YELLOW — send the first reminder now. Sort the entire roster by this column every Monday morning.
- Status. Active / Expiring-30 / Expiring-14 / Expired. Set this with conditional formatting: green text for Active, yellow for Expiring-30, orange for Expiring-14, red bold for Expired. When you open the sheet Monday morning, the red rows are the only rows that matter.
Tab 2: Reminder Log — the system that prevents "I forgot to follow up"
The reminder log is the engine of the system. It auto-calculates reminder dates and tracks every communication so you never wonder "did we email Joe's Roofing about their expiring COI?"
Columns: Sub Name | COI Expiration Date | 90-Day Reminder Date | Sent? | 60-Day Reminder Date | Sent? | 30-Day Reminder Date | Sent? | 14-Day Reminder Date | Sent? | 7-Day Escalation | Sent? | New COI Received? | New COI Expiration | Notes.
How it works: when a new COI comes in, enter the expiration date. The 90/60/30/14/7-day reminder dates auto-calculate (=expiration_date - 90, etc.). On Monday morning, filter the Reminder Log for "Sent? = No" and "Reminder Date ≤ TODAY()". Those are the reminders you send today. After sending, mark "Sent? = Yes" with the date. If the sub hasn't responded by the 7-day mark, the escalation protocol kicks in: phone call + text + project manager alert.
Tab 3: Email Trail — the correspondence log that proves you tried
When a claim happens and your insurer asks "did you verify the sub's insurance?", "I sent an email" is not documentation. A dated log showing 5 email attempts, 2 phone calls, and a certified letter is. The email trail tab creates that paper trail.
Columns: Date | Sub Name | Communication Type (Initial Request / 30-Day Reminder / 14-Day Reminder / 7-Day Escalation / Phone Call / Certified Letter) | Sent By | Recipient Email/Phone | Response Received? (Yes/No) | Response Date | Response Notes | Attachment (link to PDF in Drive).
One row per communication. If a sub ignores 4 emails and a phone call, and a claim happens — you have a log showing you did everything reasonable to verify coverage. That log is the difference between your insurer accepting the claim and your insurer denying it because you "failed to perform due diligence."
Tab 4: Project Assignment — which subs are on which jobs, and are they all insured?
Subs float between projects. The electrician finishing the Johnson kitchen today starts the Miller addition tomorrow. When a COI expires, you need to know instantly which active projects that sub is on — because every one of those projects now has an uninsured contractor on site.
Columns: Project Name | Sub Name | Trade | COI Status (Active/Expiring/Expired) | COI Expiration | Project Start Date | Project Expected End Date | Flag: COI Expires Before Project Ends? (Yes/No).
This tab answers the question that keeps GCs up at night: "Is there an uninsured sub on any of my active jobs right now?" Sort by the Flag column. Every "Yes" is a fire that needs to be put out before close of business.
The monthly compliance checklist: 30 minutes, once a month, no surprises
First of the month COI compliance protocol
- Run the expiration report. Sort the Sub Roster by Days-to-Expire. Every sub with 60 days or fewer gets immediate attention. Sub with 30 days or fewer: send the 30-day reminder today with clear language — "Your COI expires [date]. I need an updated certificate by [date - 14 days] to avoid work stoppage on [project names]."
- Check the yellow zone (31-60 days). These subs aren't urgent but they will be in 30 days. Send the 60-day courtesy reminder now — "Your COI expires [date]. Please send an updated certificate at your earliest convenience. No rush — just don't want this to sneak up on either of us."
- Audit new COIs received this month. For every COI that came in during the past 30 days, verify: (a) Are you named as additional insured? (b) Is there a waiver of subrogation? (c) Do coverage limits meet your contract minimums? (d) Is the policy period correct — does it cover the full duration of the project? If any check fails, email the sub immediately with what's missing.
- Update the Project Assignment tab. Any new projects started this month? Any projects completed? Move completed projects to an archive section. Add new projects with their sub assignments. Run the "COI Expires Before Project Ends" flag check. Every "Yes" gets an immediate reminder to the sub.
- File the monthly compliance packet. Export Sub Roster (sorted by status), Reminder Log (last 90 days), and Project Assignment tabs as a single PDF. Save to Google Drive → Compliance → 2026 → [Month]. This is your audit trail. If your insurer, a homeowner, or a court asks for proof of subcontractor insurance compliance, you have it in one file — not scattered across 40 email threads.
The new sub onboarding workflow: before they set foot on site
Every subcontractor relationship starts the same way. Here's the workflow that prevents problems before they start:
- Send COI requirements document. Before the sub bids or signs a contract, send them a one-page PDF: "To work with [Your Company], you must provide: (1) Certificate of Insurance naming [Your Company] as additional insured, (2) waiver of subrogation in favor of [Your Company], (3) minimum coverage limits of $1M per occurrence / $2M aggregate for general liability, (4) workers' compensation coverage as required by [state] law. COI must be current for the full duration of the project. Renewal certificates must be provided at least 14 days before expiration." This document sets expectations before there's money on the table.
- Receive and verify the COI. When the COI arrives, check it against the requirements document. Every checkbox on the Sub Roster tab must be green before the sub's name goes on the Project Assignment tab. Missing additional insured? Send it back. Wrong coverage limits? Send it back. Waiver of subrogation missing? Send it back. Do not accept "I'll get that updated" — get the updated COI before they start.
- Enter into the tracking spreadsheet. Sub Roster: new row with all COI data. Reminder Log: auto-populate the 90/60/30/14/7-day reminder dates. Project Assignment: add to the appropriate project row. Email Trail: log the COI receipt with attachment link.
- File the PDF. Save the COI PDF to your Google Drive folder structure: Job Name → 2-COIs → SubName-COI-2026-07-08.pdf. Consistent naming. Consistent location. No hunting.
- Set the calendar reminder. Create a Google Calendar event on the COI expiration date with notifications at 30, 14, and 7 days before. This is your safety net. The spreadsheet is your primary system. The calendar notification is the backup that catches anything you missed.
What to do when a sub's insurance lapses mid-project
It happens. A sub's policy expires and they haven't sent the renewal. Here's the protocol — because how you respond in the first 24 hours determines whether you have a covered claim or a personal liability:
Immediate work stoppage. The moment you discover a sub's COI has expired, that sub cannot perform any work on your projects. Period. Not "they can finish the day." Not "they're almost done." Not "it's just drywall." If they cause damage while uninsured, your carrier will deny the claim — and telling a judge "but they were almost done" won't change the outcome. Stop work. Document the stoppage in the Email Trail tab.
- Notify the sub immediately — phone call, not email. "Your COI expired [date]. As of right now, you cannot perform any work on [project names] until I receive an updated certificate. Please send it today if possible." Follow up with an email confirming the conversation — that email becomes part of your documentation trail.
- Notify your insurance agent. Your agent needs to know there's a coverage gap on your projects. They may have advice specific to your policy and state. They may recommend notifying your carrier proactively. This call protects you.
- Document everything. Email Trail tab: log the phone call, the follow-up email, the date/time the sub was notified. Project Assignment tab: change the Flag to "Yes — EXPIRED" with the date discovered.
- Activate backup sub if available. If you have another sub in the same trade who can cover the work until the primary sub's COI is renewed, activate them. The Project Assignment tab should already show you which other subs in that trade have current COIs.
- Calculate the cost of delay. How many days of work is this sub responsible for? What's the daily cost of project delay? This goes in the Notes column — not because you'll necessarily recover it, but because you need to know whether eating the delay is cheaper than rushing an unverified sub back to work.
- Reinstate only after verification. When the updated COI arrives, verify it against ALL requirements — not just "is it current?" Check additional insured, waiver of subrogation, and coverage limits again. Subs sometimes renew with a different carrier or different limits. The new COI may not match the old one. Verify first, reinstate second.
How to audit your sub compliance annually: the numbers that tell you if your system is working
Once a year, pull these metrics from your COI compliance workbook. They tell you whether your system is preventing gaps or just documenting them after the fact:
- Percentage of project-days with fully insured subs. Total active project-days in the year vs days where at least one sub on an active project had an expired or missing COI. Your target is 100%. Anything below 98% means your reminder system is failing and you're exposing yourself to uncovered claims on 7+ days per year.
- Average days from expiration to remediation. When a COI expires, how many days pass before the sub provides an updated certificate? Track this per sub, per occurrence. Subs averaging 14+ days to remediate are a liability — they should be on your "require COI 30 days early" list or your "do not use" list.
- Subs with 2+ lapses in the year. If the same sub lets their COI expire twice in 12 months, they're not managing their insurance responsibly. Put them on probation: require COI renewal 60 days before expiration, or find a replacement. A sub who can't manage their own insurance is a sub who can't be trusted with your liability exposure.
- Red flags triggered and resolved. How many times did the system flag an expiring COI, a missing additional insured endorsement, or a sub below minimum limits? How many were resolved within 7 days? This metric tells you whether the system is catching problems before they become claims — which is the entire point.
COI tracking at a glance: spreadsheet vs SaaS vs automation
| Spreadsheet (This Guide) |
COI SaaS (myCOI, billy) |
Custom Automation (Jobs Done Labs) |
|
|---|---|---|---|
| Cost | $0 | $200-400/month | Built to scope |
| Setup time | 2 hours | 1-2 weeks | 2-4 weeks |
| Weekly maintenance | 30 minutes | 15 minutes | 0 minutes (alerts only) |
| Auto-verify COI limits? | No — manual check | Partial — OCR extracts | Yes — fully automated |
| Auto-reminders to subs? | Manual (calendar + email) | Automated | Automated + escalation |
| Sub login required? | No | Yes — most platforms | No |
| Best for | 5-20 active subs | 20-100+ subs | 20+ subs, want zero touch |
Why most GCs outgrow the spreadsheet at 20+ subs: At 5-15 active subs, the 4-tab system takes 30 minutes per week. At 20-30 subs across 8+ projects, the calendar management, email reminders, and COI verification become a part-time job. At 40+ subs, it's a full-time administrator. The SaaS platforms (myCOI, billy) solve the reminder automation but introduce a new problem: requiring subs to create logins and upload documents on a platform they'll use twice a year. Most subs won't. The custom automation path — auto-verify from email attachments, text-based reminders, no sub login — gives you the SaaS automation without the SaaS adoption problem. That's what Jobs Done Labs builds.
Frequently asked questions
How much does automating COI compliance actually cost vs doing it manually?
Manual: a GC or office manager spending 4-8 hours per week chasing COIs and tracking expiration dates — at a blended cost of $35-55/hour, that's $560-1,760/month in labor producing zero billable work. COI tracking software (myCOI, billy, COI Tracker): $200-400/month for the SaaS alone, plus setup and training — and most still require manual verification of the COI data. The free spreadsheet system in this guide: $0/month, roughly 30 minutes per week to maintain for a GC with 20-40 active subs. Custom automation (Tier 3): typically recovered within 2-3 months from the time savings alone — the risk reduction from preventing one uncovered claim can pay for the entire build many times over. Jobs Done Labs scopes every build against a hard ROI target, and our engagements are covered by the $30K-recovered-in-90-days guarantee: if documented recovery doesn't reach $30K, you pay nothing.
What happens if a subcontractor's COI expires mid-job and there's a claim?
Most commercial general liability policies exclude damage caused by subcontractors UNLESS you've collected valid COIs naming you as additional insured AND those COIs are current at the time of the loss. If your sub's policy lapsed in month 2 of a 6-month project and the damage happened in month 4, your carrier will likely deny the claim — and you're personally on the hook. The average residential remodeling claim for property damage or bodily injury runs $47,000 (The Hanover Insurance Group). A single denied claim would wipe out the profit from 3-5 projects. This is why the 30/14/7-day expiration reminder system matters: you need to know a COI is expiring BEFORE it expires, not after. Make COI submission a condition of contract acceptance — no valid COI, no signed contract, no start date. One GC I know implemented this policy and lost two reluctant subs in year one — and avoided a $140K uncovered claim in year two.
Does my general liability insurance cover me if I didn't collect COIs from my subcontractors?
Probably not. Most standard CGL policies contain a subcontractor exclusion or independent contractor exclusion that limits or excludes coverage for damage caused by subcontractors. Even when coverage exists in theory, carriers routinely deny claims when the GC cannot produce current COIs proving subs were properly insured at the time of loss. The burden of proof is on you — not the sub, not the carrier. If you cannot produce a valid COI with additional insured endorsement and waiver of subrogation, assume the claim will come out of your company. The entire point of a COI tracking system is to ensure you always have that proof ready — for every sub, for every project, for every day of work.
How long do I need to keep subcontractor COIs after a project is done?
Keep COIs for the full statute of repose in your state — in some states that's 10 years for construction defect claims. The logic: a defect discovered in year 8 that traces back to work performed in year 1 means you need to prove the sub who did that work was properly insured in year 1. If you've deleted the COI, you can't prove it. Store COIs digitally in a Google Drive folder structure per job. The cost is zero. The risk of not having them is catastrophic. Also keep: the certificate for each renewal period (if the sub renewed mid-project, keep both the original and the renewal), the email correspondence showing you requested and received the COI, and the additional insured endorsement (sometimes a separate page from the COI — don't lose it).
How does the Jobs Done Labs $30K guarantee work for subcontractor compliance automation?
We build a custom subcontractor compliance automation system — COI tracking with auto-verify, 30/14/7-day expiration reminders, auto-escalation for non-responsive subs, document filing, and a real-time compliance dashboard — and guarantee it recovers at least $30,000 in net profit within 90 days through eliminated admin labor, prevented coverage gaps, and automated document verification. If documented recovery falls short, you pay nothing. The guarantee covers the build, not just the audit. What counts as recovery: office manager hours freed from manual COI tracking (validated against time logs from before and after), subs caught before expiration — preventing coverage gaps that could result in denied claims, and labor cost reduction from automated document verification vs manual review. We track every dollar against a baseline we agree on before we start.
Find out how many hours your back office is burning on COI compliance — and what full automation would recover
Book a free 15-minute audit. We'll map your exact sub onboarding and COI tracking flow — what you're tracking now, where the hours go, and what full automation would look like. No pitch, no pressure. You keep the map either way.
Book your free audit →