Free COI Tracking Spreadsheet Template for General Contractors (+ When to Upgrade)
Download a free Google Sheets COI tracking template built for general contractors. Tracks COIs, W-9s, and expirations. Plus: when you'll outgrow it and what to look for next.
TL;DR: The free Google Sheets template tracks five tabs: Subcontractor Roster, COI Tracking, W-9 Tracking, Expiration Calendar with red/yellow/green conditional formatting, and a Dashboard. It prevents the three most expensive spreadsheet failures: denied claims over $50,000 from expired COIs, $310-per-form IRS penalties for missing 1099-NECs, and roughly $9,755 in workers' comp audit adjustments when a sub's coverage lapses mid-project.
If you're a general contractor tracking subcontractor insurance with email folders and memory, you need a system. And a spreadsheet is a perfectly fine place to start.
We built a free Google Sheets template that tracks COIs, W-9s, and expiration dates for every sub on your roster. It's the template we wish we'd had when we were managing compliance with sticky notes and inbox search. You can download the free template here and start using it today.
This post walks through how the template works, what each column is for, and how to keep it useful over time. At the end, we'll be honest about when a spreadsheet stops being enough and what to look for when that happens.
Why You Need a COI Tracking System (Even a Simple One)
Most GCs don't lose sleep over subcontractor compliance until something goes wrong. An expired COI during an active project. A missing W-9 at tax time. An auditor asking for records you can't produce.
The penalties are real:
- Expired COI during an incident: your insurance carrier can deny the claim, leaving you holding the liability. A single denied claim can exceed $50,000.
- Missing W-9s: the IRS penalty is $310 per missing 1099-NEC (2026 rate). Twenty subs without W-9s on file is $6,200.
- Lapsed workers' comp: if your sub's WC lapses and their employee gets hurt on your job, your carrier pays and adjusts your premium. Average adjustment: roughly $9,755.
You don't need expensive software to avoid these problems. You need a system that tracks what's current, what's expiring, and what's missing. A well-maintained spreadsheet does that.
How to Use This Template
The template has five tabs:
- Subcontractor Roster -- your master list of every sub, their contact info, trade, and status.
- COI Tracking -- one row per policy per sub. Tracks carrier, policy number, dates, coverage amounts, and whether you're listed as additional insured.
- W-9 Tracking -- W-9 collection status, TIN/EIN, entity type, YTD payments, and 1099 filing status.
- Expiration Calendar -- a single view of every document expiration, sorted by date, with conditional formatting so you can see what's expired (red), expiring soon (yellow), and current (green).
- Dashboard -- summary stats. Total active subs, COI status breakdown, W-9 collection rate, and upcoming expirations.
To get started: make a copy of the template, delete the sample data, and add your subs to the Roster tab first. Everything else references the roster.
The Template Columns Explained
Subcontractor Roster
This is your single source of truth for who you work with. Every other tab references this list.
- Sub Company Name: legal business name, matching what's on their W-9.
- Contact Name / Email / Phone: who you call when you need a renewed COI. This should be the person who actually responds, not a generic office number.
- Trade: electrical, plumbing, HVAC, concrete, framing, etc. Useful for filtering when you're staffing a new project.
- Status: Active or Inactive. Lets you filter out subs you no longer work with without deleting their records (you'll want them for audits).
- Date Added / Notes: when you added them and anything else worth noting.
COI Tracking
This is where the real compliance work happens. Each row represents one policy type for one sub, so a sub with GL, WC, and auto coverage gets three rows.
- Policy Type: GL (general liability), WC (workers' comp), Auto, or Umbrella.
- Carrier Name / Policy Number: straight from the certificate. You'll need these during audits.
- Effective Date / Expiration Date: the coverage period. The expiration date drives everything else.
- Coverage Amount: per-occurrence limit. Check this against your contract minimums.
- Additional Insured? / Waiver of Subrogation? / Certificate Holder Correct?: the three things auditors check first. Y or N for each.
- Status: auto-calculated. The formula checks the expiration date against today and returns Valid, Expiring Soon (within 30 days), Expired, or Missing.
- Last Updated / Notes: when you last verified this row, and anything that needs context.
The status formula is:
=IF(F2="","Missing",IF(F2<TODAY(),"Expired",IF(F2<TODAY()+30,"Expiring Soon","Valid")))
Where F2 is the Expiration Date cell. This is the most important formula in the template. It turns a passive list into an active tracking system.
W-9 Tracking
Tax compliance lives here. The IRS doesn't care how good your COI tracking is if you can't produce W-9s at filing time.
- W-9 Received?: Y or N. Simple, but this column is the one that saves you $310 per sub at 1099 time.
- Date Received / TIN/EIN / Business Type: recordkeeping for audit prep.
- Total Paid YTD: update this monthly or quarterly from your accounting system. Drives the 1099 threshold calculation.
- 1099 Required? / 1099 Filed?: tracking the filing lifecycle from requirement to completion.
Expiration Calendar
This tab pulls from the COI Tracking sheet and adds a "Days Until Expiry" calculation:
=IF(C2="","N/A",C2-TODAY())
The conditional formatting rules:
- Red background: expiration date is in the past (expired)
- Yellow background: expiration date is within 30 days
- Green background: expiration date is more than 30 days away
Sort this tab by expiration date ascending. The things that need your attention are always at the top.
Dashboard
The dashboard uses COUNTIF formulas to summarize your compliance posture at a glance:
- Total Active Subs:
=COUNTIF(Roster!F:F,"Active") - Valid COIs:
=COUNTIF('COI Tracking'!L:L,"Valid") - Expired COIs:
=COUNTIF('COI Tracking'!L:L,"Expired") - Missing COIs:
=COUNTIF('COI Tracking'!L:L,"Missing") - W-9 Collection Rate:
=COUNTIF('W-9 Tracking'!B:B,"Y")/COUNTA('W-9 Tracking'!A:A) - Expiring in 30 Days:
=COUNTIF('COI Tracking'!L:L,"Expiring Soon")
These give you a 10-second answer to "how's our compliance?" without scrolling through individual rows.
Tips for Keeping It Up to Date
A spreadsheet is only as good as the person maintaining it. Here's what works:
Set a weekly calendar reminder. Every Monday morning (or whatever day works), open the Expiration Calendar tab and check what's red or yellow. Send renewal requests that day. This takes 15 minutes when you're current and an hour when you've fallen behind. Don't fall behind.
Update the spreadsheet the moment you receive a document. If a sub emails you a renewed COI, update the row immediately. "I'll do it later" is how spreadsheets go stale.
Use the Notes column. "Requested renewal 3/15, sub said new cert coming next week" is useful context. "Called twice, no response" is a flag that this sub may need a harder conversation.
Reconcile against your accounting quarterly. Pull a report of every sub you've paid in the current year. Cross-reference it against the Roster. If you're paying someone who isn't in the spreadsheet, they need to be added, and you need their COI and W-9.
Don't delete inactive subs. Change their status to Inactive. Auditors can ask for records from prior periods, and you'll want the history.
When a Spreadsheet Stops Being Enough
We're not going to pretend a spreadsheet solves this problem forever. It works well for a specific stage of your business, and then it doesn't. Here are the honest signs you've outgrown it:
You have more than 30-40 active subs. The spreadsheet becomes unwieldy. Scrolling through 40+ rows of COI data, across multiple policy types per sub, means hundreds of rows. Mistakes creep in. Things get missed.
More than one person needs to update it. Shared spreadsheets create version conflicts, accidental overwrites, and "who changed this?" confusion. Google Sheets handles concurrent editing better than Excel, but neither handles it well when compliance accuracy matters.
You're spending more than an hour a week on maintenance. If your Monday morning check has turned into a Monday morning project, the spreadsheet is creating work instead of saving it.
You need an audit trail. Spreadsheets don't track who changed what and when. If an auditor asks "when did you first notice this COI was expired?" you can't answer that from a spreadsheet.
Subs aren't responding to your manual emails. Chasing renewals by email is the most time-consuming part of compliance. When you're sending follow-up #3 to the same sub for the same expired GL policy, you're doing a computer's job with human effort.
You've had a near-miss. If you've already discovered an expired COI after the fact, or scrambled to produce records for an auditor, that's your signal. The spreadsheet didn't prevent the problem. A system with automated alerts would have.
None of these are failures. They're signs of growth. The spreadsheet got you from zero to organized. The next step gets you from organized to automated.
What to Look for in Dedicated COI Tracking Software
If you've hit the wall with spreadsheets, here's what actually matters in a dedicated tool:
Automated expiration alerts. The software should email you (and optionally the sub) when a COI is approaching expiration. You shouldn't have to open anything to know there's a problem.
Sub self-service uploads. Instead of you chasing documents by email, subs should be able to upload their own COIs and W-9s through a portal. This cuts your collection time dramatically.
Audit-ready records. Every document should be stored with a timestamp, upload history, and version trail. When an auditor asks, you pull a report, not a folder of PDFs.
Coverage verification. The software should flag when a COI doesn't meet your contract requirements: wrong limits, missing additional insured language, certificate holder name misspelled.
Reasonable pricing. You're a small GC, not an enterprise. The tool should cost less per month than the admin time it saves. If the math doesn't work at your current sub count, you're not ready yet, and that's fine.
PaperBoss was built specifically for this transition: small general contractors who've outgrown spreadsheets and need automated COI tracking, W-9 collection, and expiration alerts without enterprise pricing or complexity. But regardless of which tool you choose, the jump from manual to automated compliance tracking is one of the highest-ROI upgrades a growing GC can make.
In the meantime, grab the free template and get organized. A good spreadsheet today beats a perfect system you never set up.
Ready to automate your compliance tracking?
PaperBoss collects COIs, W-9s, and compliance documents from your subs automatically. 14-day free trial, no credit card required.
Start Free TrialRelated articles
North Carolina Subcontractor Insurance Requirements for General Contractors
NC requires subcontractors to carry GL and WC before stepping on your job site. Here's what every NC general contractor needs to verify.
Georgia Subcontractor Insurance Requirements: A General Contractor's Complete Guide
Georgia GC compliance guide: WC thresholds, lien waiver statutes, licensing rules, and subcontractor insurance requirements explained for small contractors.
The 2026 1099-NEC Threshold Change: What the $2,000 Rule Means for General Contractors
The One Big Beautiful Bill Act raised the 1099-NEC reporting threshold from $600 to $2,000 starting in 2026. Here's what changed, how it affects your sub payments, and what GCs need to do right now.