A subcontractor's COI was valid on day one. Six months later, their general liability policy expired. Nobody noticed until an incident — or an owner audit — surfaced the gap.
This is the most common failure mode in subcontractor insurance compliance. Not missing limits. Not wrong endorsements on the first certificate. Expiration during an active project.
Why expiration tracking breaks
Manual tracking usually looks like:
- COI PDF saved to a shared drive
- Expiration date typed into a spreadsheet
- Calendar reminder set by whoever onboarded the sub
- PM never told when reminder fires
Then the sub keeps working, the spreadsheet isn't updated, and compliance status shows "verified" forever.
Policies renew annually. Long remodels and commercial TI jobs routinely cross renewal dates. GL and WC often expire on different days.
The reminder cadence that works
Industry best practice for active subs:
| Days before expiry | Action |
|---|---|
| 30 days | Automated email to sub: send updated COI |
| 14 days | GC compliance owner follow-up |
| 7 days | Escalate to PM — sub may need scheduling hold |
| 0 (expired) | Status → lapsed; no new work until COI received |
Some GCs also notify at 60 days for large commercial projects with strict owner reporting.
What to track per subcontractor
For each policy line on the ACORD 25:
- Policy type (GL, WC, auto, umbrella)
- Policy number
- Effective date
- Expiration date (separate row per line)
- Verification status
- Endorsement confirmation flags (AI, WOS)
Do not track only "COI expiration" as a single date unless all lines share the same term.
When to suspend site access
If coverage lapses without a replacement COI:
- Notify sub in writing (email + portal message)
- Remove from active schedule / do not assign new tasks
- Document the lapse date and your notice
- Reinstate only after updated COI is verified
Continuing work with a lapsed policy creates audit evidence that you knew — or should have known — about the gap.
Spreadsheet limitations
Spreadsheets fail because:
- No automatic extraction from ACORD PDFs
- Reminders depend on humans maintaining dates
- Multiple PMs override status informally ("they said they renewed")
- No link between compliance status and scheduling systems
- Version control nightmares on shared drives
They work for 5 subs on one job. They collapse at 40 subs across 3 active projects.
Software workflow
Modern COI tracking for GCs:
- Extract policy dates and limits from uploaded certificates
- Compare against your requirements matrix
- Alert before expiration with sub-facing renewal requests
- Dashboard showing lapsed / expiring / compliant per project
- Audit export for owners and lenders at closeout
CoiLoop focuses on remodeling GC workflows: magic-link uploads, per-document checklist, inline PDF review, and expiration reminders — without enterprise COI platform pricing.
Owner and lender expectations
Commercial owners increasingly request continuous coverage documentation at substantial completion — proof there was no uninsured gap during the work period.
If your tracking cannot produce a timeline of COI validity per sub, closeout packages get delayed and retention releases stall.
Action plan this week
- Export all active sub COIs from email/drive
- Log GL and WC expiration dates separately
- Flag anything expiring in the next 60 days
- Email subs for renewals now — not after expiry
- Pick a system before the next project wave
Related: COI compliance checklist · Spreadsheets vs COI software