Free · Excel & Google Sheets

Free Insurance Policy & Certificate of Insurance (COI) Tracker Template

A free two-part insurance tracker: one sheet for the policies your business holds, with premium, limit and renew-by date, and one for the certificates of insurance you collect from vendors and contractors, with a request-by date so you ask for the new certificate before the old one lapses.

Updated 28 Sep 2026No sign-upSeptember 2026 edition

In the file

6 sheets · 380 KB · opens in Excel, Google Sheets and LibreOffice

  1. Start here
  2. Our policies
  3. Vendor COIs
  4. Dashboard
  5. Import to ExpiryEdge
  6. Lists

Prefer a plain list? The CSV (1 KB) has the same columns and example rows, without formulas or colours.

Preview

The two tracker sheets, with example rows

This is the colour logic the spreadsheet uses. Move the date to see which rows turn amber or red next.

insurance-coi-tracker.xlsx

Our policies: example rows, statuses as of 28 Sep 2026
PolicyCover typeExpiry dateRenew-by dateDays leftStatus
Example – Public liability, all sitesPublic liability11 Oct 202627 Aug 202613Due ≤30 days
Example – Employers' liabilityEmployers' liability11 Oct 202627 Aug 202613Due ≤30 days
Example – Professional indemnityProfessional indemnity31 Dec 20261 Nov 202694OK
Example – Commercial vehicles (3)Motor / fleet31 Aug 20261 Aug 2026-28Expired
Example – Cyber liabilityCyber31 Mar 202730 Jan 2027184OK

1 expired, 2 due ≤30 days, 2 OK. The example dates are fixed, so as real time passes more of them turn amber and red: that is the formula working.

Start hereDashboardImport to ExpiryEdgeLists

How to use it in 3 steps

  1. List your own policies

    On "Our policies", add each policy from its schedule: cover type, insurer, limit, premium and expiry date.

  2. List the certificates you hold

    On "Vendor COIs", add one row per vendor per cover. Note whether the limit meets what your contract requires and whether you are named as additional insured, if that applies.

  3. Chase before the date

    The Dashboard combines both sheets and lists the next 10 renewals and certificate requests.

What’s inside

Start here
How to use it in three steps, the colour key and what every column means.
Our policies
Policies we hold. Filters, dropdowns, frozen header and status colours, with formulas filled down 500 rows.
Vendor COIs
Certificates of insurance from vendors. Filters, dropdowns, frozen header and status colours, with formulas filled down 500 rows.
Dashboard
Counts by status and the next 10 dates, as of today.
Import to ExpiryEdge
The same rows in the ExpiryEdge bulk-import columns, filled by formula.
Lists
The options behind every dropdown. Add your own.

Open it in Google Sheets

There is no shared Google copy to request access to. You import the same file, so you own your copy from the start.

  1. Download the .xlsx

    Use the button above. It saves straight to your computer.

  2. Import it into a blank Google Sheet

    Open Google Sheets, create a blank spreadsheet, then choose File › Import › Upload and pick the file. Select "Replace spreadsheet".

  3. Check the dates

    Formulas, dropdowns and status colours carry over. If your Google account uses a different locale, dates show in that format, which is fine: they are real dates underneath.

Columns explained

Type in the input columns. Calculated columns fill themselves on both sheets. Columns marked required are the ones the import sheet needs.

Our policies

Columns on the Our policies sheet
ColumnWhat to enterType
PolicyA name you will recognise, e.g. "Public liability, all sites".Input · required
Cover typePick from the list; add your own on the Lists sheet.Input
InsurerThe insurer on the schedule.Input
BrokerYour broker, if you use one.Input
Policy numberAs printed on the schedule.Input
LimitLimit of indemnity or cover amount.Input
Premium / yrAnnual premium.Input
CurrencyISO code.Input
Start dateInception or last renewal date.Input
Expiry dateExpiry (renewal) date on the schedule.Input · required
Lead time (days)How many days before the date you want to start acting. Leave blank for 30.Input
Renew-by dateCalculated. Expiry minus lead time: start the renewal before this.Calculated
Days leftCalculated. Days until the date; negative once it has passed.Calculated
StatusCalculated. Expired, Due ≤30 days, Due ≤90 days or OK.Calculated
OwnerWho handles the renewal.Input
Owner emailWho should be reminded. Becomes notification_email on import.Input
PriorityLow, Medium or High. Matches the ExpiryEdge priority field.Input
Schedule linkLink to the policy schedule.Input
NotesAnything the next person needs to know.Input

Vendor COIs

Columns on the Vendor COIs sheet
ColumnWhat to enterType
Vendor / contractorWho gave you the certificate.Input · required
Cover typeWhat the certificate evidences.Input
InsurerInsurer named on the certificate.Input
Policy numberAs printed on the certificate.Input
LimitLimit shown on the certificate.Input
Meets our minimum?Does the limit meet what your contract with them requires?Input
Additional insured?If your contract requires you to be named as additional insured, is it shown?Input
Expiry datePolicy expiry shown on the certificate.Input · required
Lead time (days)How many days before the date you want to start acting. Leave blank for 30.Input
Request-by dateCalculated. Ask the vendor for the renewed certificate before this.Calculated
Days leftCalculated. Days until the date; negative once it has passed.Calculated
StatusCalculated. Expired, Due ≤30 days, Due ≤90 days or OK.Calculated
Vendor contact emailWhere to send the request for a new certificate.Input
Internal owner emailWho should be reminded. Becomes notification_email on import.Input
Certificate linkLink to the certificate PDF.Input
NotesAnything the next person needs to know.Input

When a spreadsheet stops being enough

For a handful of dates and one careful owner, this template is all you need. These are the signs it has become the wrong tool.

Sign 1

More than one person owns the dates

When several people add rows, dates get typed as text, copies drift apart and nobody is sure which file is current.

Sign 2

Reminders depend on someone opening the file

The status turns red whether or not anyone is looking. If the person who checks it is on leave, the date passes quietly.

Sign 3

You need to prove what happened

An audit, insurer or inspector may ask who was told, when, and where the certificate is. A spreadsheet does not keep that history.

When you would rather not remember

What this looks like when it runs itself

The same row, tracked for you: an owner, reminders at 90, 60, 30 and 7 days by email, SMS, WhatsApp, Slack or Teams, the document on file and a log of who did what. The "Import to ExpiryEdge" sheet in this template is already laid out for Bulk Import, so moving across is one upload.

Try it with your own dates, free for 14 days, no card
FAQ

Insurance policy & COI tracker: questions, answered

A document from a vendor’s insurer or broker that summarises their cover: insurer, policy number, limits and dates. Many businesses ask contractors for one before work starts. Our COI guide explains what it proves and what it does not.

Because the certificate you hold shows the old dates. Once the policy period on it ends, you have no evidence of cover until the vendor sends a new one, and many only do when asked.

No. It records the limit and has a "Meets our minimum?" column for you to fill in against your contract. Whether cover is adequate is a question for your broker or legal adviser.

Yes. Open a blank Google Sheet, choose File › Import › Upload, pick the .xlsx and select "Replace spreadsheet". The formulas use only functions that Google Sheets, Excel and LibreOffice all support (no FILTER, SORT or XLOOKUP), so the status colours, dropdowns and dashboard carry over. The Excel table styling becomes a plain range with filters.

No. A spreadsheet only changes when someone opens it, so the colours are only as good as your habit of checking. Put a weekly calendar slot on it, or move the policies and certificates into a tool that sends the reminders for you.

It is the same rows laid out in the ExpiryEdge bulk-import columns (name, expiry_date, type and so on), filled in by formula. You can ignore it. If you ever move the list into ExpiryEdge, upload the file in Bulk Import and pick that sheet, or save the sheet as CSV. Nothing is sent anywhere by the file itself.

A free template, not legal advice. It tracks the dates you enter; it does not decide which rules apply to you. Check requirements against the official source for your situation.

Email me when this template is updated

Optional. The template is already yours without it. One email when a new edition is out, nothing else.

We use your email only for this. See our privacy policy.