Help

User guide, end to end.

How to set up coiNow, issue a cert, save holders, run the compliance check, back up your data, and import from EZLynx — plus a printable cheat sheet for daily work.

Topic / 01

Getting started

What coiNow does, where your data lives, and the 10-minute first-time setup.

coiNow is a tool for issuing ACORD 25 Certificates of Insurance fast. It runs entirely in your browser — your agency profile, carriers, holders, and every cert you’ve ever issued are stored locally on this device. There’s no server to log in to, no account to manage, and no monthly fee.

What this means in practice

  • Your data is yours. It never leaves this browser unless you export it (Settings → Backup).
  • Clearing your browser data wipes everything. Export regularly to a network share or cloud folder. Once a week is a reasonable cadence.
  • Each browser is a separate copy. If you want the same library on a laptop and a desktop, export from one and import on the other.

First-time setup (~10 minutes)

  1. Open Settings. The ”+ New Certificate” button up top is what you’ll use most, but Settings comes first.
  2. Fill in your producer profile. Agency name, contact, license #, phone, email, address. These auto-fill the top of every cert.
  3. Upload your signature (PNG or JPG with a transparent background works best). Appears in the “Authorized Representative” block on every cert.
  4. Skim the Carrier library. Pre-seeded with 20 common Florida-friendly carriers and their NAIC numbers. Add your own; remove any you don’t write through.
  5. Skim the Holder library. Empty by default. You can add your repeat holders here (with their standard insurance requirements) or save them inline the first time you issue a cert.
  6. Click Save profile. You’re set up.

What to do next

  • Issue your first COI — see Issuing your first COI.
  • Read Holder library & compliance check if you want certs to validate against the holder’s requirements before you Finalize.
  • Set a backup cadence — see Backup & restore.

When things go wrong

  • A field won’t accept my text. All freeform fields have a length cap (200 chars for names, 80 for cities, 30 for phones, 254 for emails). If you hit a wall, that’s why.
  • My signature didn’t upload. Max 5 MB. Save a smaller PNG/JPG and try again.
  • The PDF preview looks wrong. The right-hand preview is live and re-renders every time you type. If a field looks off, check the corresponding input on the left.
  • I closed the tab mid-cert. Drafts auto-save every 800 ms. Reopen /new (or click the insured on the dashboard) to pick up where you left off.

Topic / 02

Issuing your first COI

From "+ New Certificate" to a finalized PDF in roughly two minutes.

This walkthrough assumes you’ve already filled in your producer profile (Settings → Producer). If you haven’t, do that first — it’s a one-time cost that pays back on every cert.

The five tabs of the editor

Every COI lives in one editor with five tabs. The tab number maps to the section number on the printed ACORD 25 form.

  1. Insured (Section I) — Who the policy covers. Your client.
  2. Insurers (Section II) — Up to five carriers, lettered A through E.
  3. Coverages (Section III) — The policies themselves: limits, dates, flags.
  4. Holder (Section IV) — Who the cert goes to. The contractor’s client.
  5. Notes (Section V) — Description of operations + internal remarks.

You don’t have to fill them in order, but Finalize won’t succeed until the required pieces (insured name, at least one policy, holder name) are all present.

Step-by-step: a contractor additional-insured cert

The most common cert you’ll issue: a roofer needs to show their property-management client (the “holder”) as Additional Insured on their GL policy for a specific project.

  1. Click ”+ New Certificate” in the global nav.
  2. Insured tab. Type your client’s name (the roofer). If you’ve issued for them before, the editor pre-fills from their most recent cert — verify the address, but the insurers and policies usually carry forward.
  3. Insurers tab. Each policy needs an insurer letter (A–E). If the auto-prefill brought them in, skip. Otherwise type the carrier name; if it’s in your library, NAIC auto-fills.
  4. Coverages tab. One card per policy.
    • Pick the coverage type (Commercial General Liability, Auto, WC, Umbrella, etc.).
    • Pick the insurer letter from the dropdown.
    • Enter the policy number and effective date — expiration auto-fills to +1 year.
    • Click a preset (e.g. “Standard $1M / $2M”) to bulk-fill limits, then tweak.
  5. Holder tab. Type the holder’s name. If they’re a saved holder, the address auto-fills and a blue “Linked saved holder” panel appears with their requirements (if set). If they’re new, click Save as new holder to add them for next time.
  6. Notes tab. Click + Additional Insured to insert the standard AI language. Edit the project address in the boilerplate. If the holder also requires a Waiver of Subrogation, click + Waiver of Subrogation below.
  7. Click Finalize (top right).
    • If schema errors exist, they list at the top with clickable links that jump to the right tab.
    • If a linked holder has requirements and your policy falls short, the red “Holder requirement shortfalls” panel shows what’s missing. Either fix it on the Coverages tab, or tick Ship anyway if you’ve verified the cert is OK.
    • If both pass, the draft promotes to a finalized cert and you land on the dashboard.
  8. Download PDF from the cert’s /coi page or directly from the editor. Hand off to your client.

Time targets

Once your producer profile + carrier library + holder library are populated, a repeat-holder additional-insured cert should take under 90 seconds. The first time you issue for a new insured is slower because you’re typing everything once. After that, the editor pre-fills from the prior cert.

Pitfalls

  • Saving as a new holder doesn’t save their requirements. It only saves name + address. To attach requirements (minimum GL, AI/WoS), open Settings → Holders → click the holder and fill them in.
  • The compliance check only fires on linked holders. A free-text holder (one whose name doesn’t match any saved holder) is never checked. If you want validation, pick from the autocomplete or save them.
  • AI / WoS soft warns aren’t blocking. If the holder requires AI and you forgot the snippet, you get a yellow notice but Finalize still succeeds. Hard limits (GL/Auto/WC shortfalls) DO block unless you tick override.

Topic / 03

Holder library & compliance check

Save the GCs you issue to often, attach their insurance requirements, and let coiNow check every cert against them.

A Holder is the company that receives the certificate of insurance — typically a general contractor or property management company. The Holder library lets you save them once and reuse them on every cert.

Why save a holder

Two big wins:

  1. Auto-fill. Picking “Acme Property Mgmt” from the autocomplete fills in their address.
  2. Compliance check. Save Acme’s standard requirements (min GL $1M each-occ / $2M agg, requires AI + WoS) and every cert you issue to them gets validated against those numbers at Finalize. Limits that fall short block the cert; missing AI/WoS language warns softly.

Adding a holder

Two ways:

  • Settings → Holders → + Add holder. Full editor with all fields. Use this when you’re building the library upfront.
  • Inline from the editor’s Holder tab. Type a new name → click Save as new holder. Fast, but only captures the name and address. To set requirements, open Settings → Holders later.

What goes in “requirements”

All limits are typed as raw dollars with no $ and optional commas (1000000 or 1,000,000 both work). Leave a field blank to skip its check.

FieldWhat it checksCommon value
GL each-occurrenceMin on each-occurrence GL limit1,000,000
GL aggregateMin on general aggregate2,000,000
Auto combined single limitMin on Auto CSL1,000,000
Umbrella each-occurrenceMin on umbrella1,000,000 to 5,000,000
WC each-accidentMin on WC each-accident100,000 (FL statutory)
Requires Additional InsuredSoft-warn if “Additional Insured” missing from Description of Operationstoggle on
Requires Waiver of SubrogationSoft-warn if “Waiver of Subrogation” missingtoggle on

How the check works

At Finalize click:

  1. Schema validation runs first (required fields, etc.).
  2. If the cert is linked to a saved holder (via the Holder tab autocomplete picking an exact match), the compliance check runs.
  3. Blocking issues (limits short, coverage missing entirely) show in a red panel and prevent Finalize. To proceed anyway, tick Ship anyway.
  4. Soft warnings (missing AI/WoS phrases in the description) show in a yellow panel but do NOT block.
  5. Override resets the moment you edit the cert — a stale override can’t sneak through after a change.

Linking semantics

A cert links to a holder by exact name match, captured as holderId. If you:

  • Pick a holder from the autocomplete → linked.
  • Type a name not in the library → unlinked (free text). No check fires.
  • Type a name that matches a saved holder character-for-character → linked.
  • Edit the holder name and break the match → unlinked.

The “Linked saved holder” panel under the holder name tells you the current state.

When NOT to use the compliance check

  • One-off holders you’ll never see again. Just type the name, skip the save.
  • Holders whose requirements you don’t actually know. Empty requirements = no check fires, which is fine.

Pitfall: the description text check is literal

The AI / WoS soft warns work by searching the Description of Operations for the literal phrases “additional insured” and “waiver of subrogation” (case-insensitive). If you write your own custom AI language that doesn’t contain that exact phrase, you’ll get a soft warn even though the cert is fine. Either use the snippet buttons on the Notes tab, or live with the soft warn — it doesn’t block.

Topic / 04

Backup & restore

Why backups matter, what's in them, and how to recover after a wipe.

coiNow stores everything in your browser’s IndexedDB. Clearing your site data, switching browsers, or losing the laptop means all of it is gone unless you have an export.

What’s in a backup

A coiNow backup is a single JSON file containing:

  • Your producer profile (agency name, address, contact, signature image as base64)
  • The full carrier library (names + NAIC numbers)
  • The full holder library (names, addresses, requirements)
  • Every finalized COI (insureds, insurers, policies, holders, dates, all of it)
  • Every draft COI
  • Any AMS-imported policies and insureds

The file is plain JSON, human-readable, and versioned with a schemaVersion field so future imports stay compatible.

How to export

  1. Settings → Backup & restore → Export everything.
  2. Your browser downloads coinow-backup-YYYY-MM-DD.json.
  3. Move it somewhere durable — a network share, a Dropbox/OneDrive folder, an external drive, an email to yourself. Anywhere that isn’t this browser.

How often to back up

Weekly is reasonable for daily use. Daily if you issue 10+ certs a day. After any large bulk action (a CSV import, a holder library buildout), back up immediately so you don’t lose that work to a stray browser reset.

How to restore

  1. Settings → Backup & restore → Import from backup.
  2. Confirm the dialog — the import REPLACES your producer profile and carrier library, and MERGES certs (incoming wins on conflicts).
  3. Reload the page to see all changes.

Migrating to a new device or browser

  1. On the old browser: Export.
  2. On the new browser: visit coinow.pages.dev, go to Settings → Import from backup, pick the file.
  3. Verify your producer profile, carrier library, and a few finalized certs look right.

That’s it. Same library, same history, same compliance rules.

Recovery scenarios

  • “I cleared site data accidentally.” If you have a backup, import it. If not, your finalized certs are gone — but the PDFs you’d already downloaded still exist wherever you saved them.
  • “My laptop died.” Same as above. Backup file on a network share is your insurance.
  • “I want to undo a bad import.” Import is destructive for producer + carriers (full replace). Re-import the older backup to roll forward.

Pitfall: backups can grow large

If your signature image is high-resolution, a backup with hundreds of finalized certs can hit several megabytes. The import flow caps incoming files at 50 MB. If you ever exceed this, slim the backup via the Cleanup card in Settings (delete old drafts first) and re-export.

Topic / 05

Importing from EZLynx

Bring your existing book of business into coiNow with two CSV exports.

If you’re already running on EZLynx (or another AMS that exports similar CSVs), you can seed coiNow with your existing clients, carriers, policies, and past certificates so you’re not starting from zero.

What gets imported

Source CSVWhat it brings in
Clients exportInsureds (name + address). Available as autocomplete on the Insured tab.
Carriers exportCarrier library entries (name + NAIC). Available on the Insurers tab.
Policies exportPolicies attached to each insured. When you create a new cert for that insured, their policies auto-attach.
Past COIs exportHistorical certs, marked finalized. Visible on the dashboard.

The flow

  1. Export your clients from EZLynx as CSV. The exact menu varies by EZLynx tier — look for “Clients” or “Customers” → Export → CSV.
  2. Export your carriers from EZLynx as CSV. Same idea — Carriers / Companies → Export → CSV.
  3. In coiNow: Settings → AMS import → Choose file. Upload the clients CSV first, then the carriers CSV. The card recognizes the column shape automatically.
  4. Repeat with the policies CSV and the past-COIs CSV if you have them.

What coiNow does with the data

  • Deduplicates by name. If “John’s Roofing” already exists as an insured, the import doesn’t create a duplicate; it merges.
  • Stores imported policies separately. They live in their own bucket; when you visit /new?insured=John's%20Roofing for the first time, the editor pulls these policies as a starting point.
  • Doesn’t auto-finalize anything. Past COIs imported as finalized records carry forward visually, but you can still open them, edit, and re-issue.

Pitfalls

  • Column shape matters. The import expects EZLynx’s actual export shape. If your AMS exports CSVs in a different layout, the parser may fail or import partial data. Run a small import first (one or two clients) to verify before doing the full book.
  • Max CSV size is 25 MB. For very large books, split the export into a few smaller CSVs.
  • Imports don’t trigger the holder library. Holders come from the certs you issue going forward, not from anything imported. You can add saved holders manually in Settings → Holders.
  • Signature isn’t imported. Re-upload it in Settings → Producer profile.

After the import

  • Open the dashboard. You should see your insureds grouped, with any past COIs nested under them.
  • Spot-check 3–5 insureds: do their addresses look right? Do their past policies show up when you start a new cert for them?
  • Back up immediately. A clean post-import export is your reset point if anything goes sideways later.

Topic / 06

Cheat sheet

The 10 things you do most, in one printable page.

Quick reference for daily work. Print this and stick it next to your monitor.

The five-second moves

To do thisClick
Issue a brand-new cert+ New Certificate (top right)
Renew or duplicate a certDashboard → click insured → open a finalized cert → Duplicate
Add a holder permanentlySettings → Holders → + Add holder
Save the holder you just typedHolder tab → Save as new holder
Roll an effective date forward by a yearEdit the effective date — expiration auto-fills to +1 year
Bulk-fill standard $1M/$2M GLCoverages tab → Use Standard $1M / $2M
Insert “Additional Insured” boilerplateNotes tab → + Additional Insured
Force-finalize despite a holder shortfallTick Ship anyway in the red panel
Back up everythingSettings → Export everything
Move to a new deviceExport here → Import on the other browser

ACORD 25 tab → form-section map

Editor tabACORD 25 section
I. InsuredProducer + Insured info (top of form)
II. InsurersInsurer A–E table
III. CoveragesThe big middle grid (GL / Auto / Umbrella / WC)
IV. HolderCertificate Holder box (bottom left)
V. NotesDescription of Operations + signature block

Florida-specific quick reminders

  • WC perStatute = match state-mandated minimums (FL statute). Most contractor certs use this.
  • GL aggregate per project = the holder gets a fresh aggregate for their job. Common requirement on construction certs.
  • WC officer excluded = the corporate officers (often owner-operators) are excluded from WC. Common for one-person shops; watch for holders that won’t accept this.
  • FL Statutory WC preset uses each-accident $100k, disease policy $500k, disease each-employee $100k.

Common Additional Insured forms (reference, not required to type)

  • CG 20 10 — Additional Insured, Ongoing Operations
  • CG 20 37 — Additional Insured, Completed Operations
  • CG 20 26 — Additional Insured, Designated Person or Organization
  • CG 24 04 — Waiver of Transfer of Rights of Recovery (Waiver of Subrogation, GL)

What blocks Finalize, and what doesn’t

IssueBlocks?Override?
Insured name blank✓ BlocksNo — fill it in
No policies on the cert✓ BlocksNo — add a policy
Holder name blank✓ BlocksNo — fill it in
Linked holder requires $2M GL agg, policy is $1M✓ BlocksYes — tick Ship anyway
Coverage missing entirely (e.g., GL not on cert)✓ BlocksYes — tick Ship anyway
Linked holder requires AI, “additional insured” not in descriptionSoft warnAuto-passes
Linked holder requires WoS, “waiver of subrogation” not in descriptionSoft warnAuto-passes
Cert has zero saved-holder linkNo check firesn/a

When something feels off

  • Editor seems stuck. Try clicking another tab and back; that re-triggers the auto-save loop.
  • PDF preview blank. Wait a second — it re-renders on a 350ms debounce after typing.
  • Imported CSV did nothing. The column shape probably didn’t match. Test with two rows before the full book.
  • You don’t remember saving. Auto-saves run every 800ms while a draft is open. If the cert is in the dashboard, it’s saved.

Found something out of date or missing? The docs live in src/content/help/ — edit, commit, push.

Back to dashboard →