Skip to main content
If you already keep subcontractors in a spreadsheet, importing it is the fastest way in. Each row becomes a subcontractor, and a row with an expiry date and at least one policy (a limit, or a cell that says the policy is carried) also gets a certificate record, so it is checked against your requirements as soon as the import finishes. A sheet that keeps a row for each policy is read too. To see what your spreadsheet says before you import it, or before you have an account, run it through the free spreadsheet check. It reads the same columns and gives a verdict for every row against a starting set of requirements. The sheet is not stored on our side. Your browser keeps a copy for a week, so that setting up your account can offer the same sheet back; Check another spreadsheet, under the result, removes it.

Download the CSV template

The 17 column headings the importer reads without any correcting, with three example rows. Delete the example rows before you import.

How to import

1

Have your spreadsheet as CSV or Excel

An Excel workbook (.xlsx) can be chosen as it is, or saved as CSV. From Google Sheets: File → Download → Microsoft Excel (.xlsx) or Comma-separated values. Title rows above your headings are fine: the importer looks for the heading row in the first 15 rows.
2

Open the importer

Go to Subcontractors and choose Import, or use step 3 of onboarding. The screen is Import subcontractors from a spreadsheet. Choose Choose a CSV or Excel file.
Subcontractors page in WatchMyCover with the Import button outlined

Import, at the top right of Subcontractors.

Import subcontractors from a spreadsheet window with the Choose a CSV or Excel file area outlined

The importer. Nothing is saved until you have checked what was read.

3

Check what was read

Nothing is saved yet. The preview shows counts for Rows read, No email, No expiration date, No limits and Need checking, and every row as it was read (up to 500), with any notes. A policy read with no limit shows in the Limits column in words, as carried, no limit stated. A policy with no date read for it is marked there no date read, so not recorded: an import records a policy only with a date. What is true of how a whole column is written, such as 1M/2M in every general liability cell, is said once above the rows, with the rows it is true of, and those rows are not counted under Need checking for it.Under What each column was read as, each field WatchMyCover imports shows the heading it was read from, using the same names as the template’s columns (Company name, Email, Expiration date, GL each occurrence and so on). If one is wrong, choose the right heading, or Not imported. The preview is read again with your correction.Beneath the headings, a note names any limit or endorsement that no column of the sheet was read as. Nothing is recorded for such a limit, so a subcontractor whose requirements ask for it will read as short of it. Such an endorsement is recorded as stated and not confirmed, as a blank cell is. If the sheet does have the column, choose it above the note.The note opens with a sentence of its own where the workers’ compensation cells that were read say only that the policy is carried (Statutory, a state fund’s name, Yes) and none gives an employers’ liability figure. The sentence is not shown where the sheet has a column that may hold the figure. One cell in the workers’ compensation column that says the policy is carried and then more can take it away too, whether or not that cell was read: Yes - cancelled, Yes - exempt, Statutory? and Old BWC do, and Cancelled, Statutory - expired and Yes - lapsed do not. With the sentence or without it, an import records each policy that is said to be carried with no limit, so a subcontractor whose requirements ask for that limit will read as short of it until a certificate is recorded. Where the note does open that way, the free spreadsheet check does not hold the sheet to that limit: it lists the limit once as not checked. So a row that read Needs review there can read Non-compliant once it is imported.
Import preview showing rows read, rows with no email, no expiration date, no limits and rows that need checking

The preview: the counts, then the heading each field was read from.

4

Choose a project and requirements

Assign to a project is optional. Without it, every imported subcontractor has to be assigned by hand. The project is chosen here, not in the file. To add a project that does not exist yet, choose New project, enter its Name and Code, and choose Create; it is selected for this import.Each row ends with Requirements, which lists your requirement templates (for example Trade Subcontractor, or General Vendor / Supplier). Every row starts on Choose…. Pick one per row, or use Set every row to above the rows to give every row the same one and then change the exceptions. Each subcontractor is checked against the requirements chosen for its row. Import stays unavailable until every row has requirements, and the screen says how many rows are left. If you have no requirement templates at all, Requirements is not shown and the import goes ahead without them.
Import preview table with the Set every row to requirements selector outlined

Set every row to gives every row the same requirements; change the exceptions at the end of each row.

5

Import

Choose Import n subcontractors. The confirmation says how many subcontractors were added and updated. Rows that could not be written stay on screen with the reason: the first 20 are listed, and all of them are in the file under Download rows to fix.

Download the rows to fix

When rows carry a note in the preview, or were not imported, choose Download rows to fix for a CSV of just those rows: Row (its row number in your file), Company name, Outcome (Check before importing, Imported, check this row or Not imported) and Reason. Open it beside your spreadsheet, correct the rows, and import the sheet again; rows already imported are matched by company name rather than duplicated. While chasing is off, importing sends no email: subcontractors are only emailed once you switch chasing on. If chasing is already on, the imported subcontractors are checked like any other, and whatever is due for them is chased straight away.

Excel files

An .xlsx file is read in your browser and goes through exactly the same preview as a CSV:
  • Only the first worksheet (the leftmost tab) is read. Move the subcontractor list to the first tab, or copy it into a new workbook.
  • Cells formatted as dates are read as dates, month first (12/31/2027), whatever the cell’s display format.
  • Numbers are read as the full number stored in the cell, never in scientific notation: a limit shown as $1,000,000 or 1E+06 is read as 1000000.
  • A formula is read as the value Excel last calculated and saved.
  • Older .xls files and password-protected workbooks cannot be read. Save them as .xlsx or CSV first.

Column reference

These are the headings in the template, in order. Only Company Name is strictly required; Email is needed for chasing, and Expiration Date for a certificate. Leave any other cell blank when you do not know it. A cell is read as it looks. A character that cannot be seen, such as a soft hyphen, a zero-width space or the selector a phone puts after a tick, is taken out before the cell is read; a zero-width space between two words is read as a space. Your own headings are recognized too, for example Vendor, Subcontractor, Carrier, Exp Date, GL Each Occ, WC, Excess, AI, WOS or PNC, and you can correct any column in the preview. A sheet that names each coverage in a row above the headings, merged over that coverage’s own columns (General Liability over Occ, Agg and Exp), is read with each heading under its coverage, and the preview shows the headings that way. A lien waiver column is not read as the waiver of subrogation. A column that is somebody else’s, such as Agent Email, Broker Phone or PM Email, is not read as the subcontractor’s email, phone or contact: choose it in the preview if that is where chases should go. A heading that says the person is the subcontractor’s own, such as Sub PM Email, is read. Insurance Email and Insurance Contact Email are read as the address to chase, whoever that person works for: choose another column in the preview if chases should go elsewhere. A plain Contact, Email or Phone column is read as the subcontractor’s wherever it stands: if yours sits beside the agent’s name and holds the agent’s details, set it to Not imported in the preview. Vendor Type is read as the trade on a sheet with no Trade, Scope or Category column of its own.

A row for each policy

Some offices keep one row for each policy: the company’s name repeats down the rows, and a column says which policy the row is (General Liability, WC, Auto, Umbrella / Excess). Such a sheet is read as one subcontractor for each company, holding each policy with the limit, expiry date and policy number from its own row. Rows read in the preview then counts companies, and each company has one line. A policy with no date on its row is not recorded. A row for a policy the importer has no column for, such as Professional Liability, adds nothing. The preview says both on the company’s line, with the row’s number in your file. A company with a policy that has no date shows missing under Expiration date and is counted under No expiration date, even when its other policies have dates. Those are still recorded, each with the date on its own row: in the Limits column only the policy with no date is marked no date read, so not recorded. Where two rows give the same policy for one company, one of them is used, and the company’s line in the preview names both rows and says which. A row that shows no policy is used before one that shows it: a row with an empty limit, or with words there that do not say the policy is carried, such as Cancelled or TBD. So a row kept for a renewal and not filled in yet leaves that policy unrecorded until the row is filled in or taken out. Between two rows that both show the policy, the one with no date, the earlier date or the lower limit is used. A workers’ compensation row that says Statutory and an employers’ liability row with a limit are one policy and are read together. An employers’ liability row with an empty limit shows no policy, so it is the one used and no workers’ compensation is recorded: write the limit on it, or take the row out.

What an imported certificate looks like

A certificate is created for a row only when it has an Expiration Date and at least one policy: a limit in GL Each Occurrence, Workers Comp Each Accident, Auto Combined Single Limit or Umbrella Each Occurrence, or a cell there that says the policy is carried, such as Statutory or Yes (see Amounts). An aggregate on its own does not count. Then:
  • Every coverage with a limit, or said to be carried, is recorded. One said to be carried is recorded with no limit. Each has the row’s expiry date, or its own where the sheet has an expiry column for that coverage (see Dates).
  • The effective date is taken as 365 days before the expiry date, or the import day, whichever is earlier, so an imported policy never starts in the future.
  • The issue date is the import day.
  • The certificate is noted “Imported from a spreadsheet (row n)”.
A row with no expiry date, or with no policy read from it, adds the subcontractor with no certificate, so it shows as No certificate (or, if its template is missing, Non-compliant) until you record one.
The spreadsheet can only say so much. Check the imported figures against the actual certificates when they come in, and record each certificate properly: it gives each coverage its own dates and records endorsement forms you hold.

Amounts

An amount is recorded as the number in the cell and shown in your company’s currency. Nothing is converted. It is kept as a whole number: the cents of $1,000,000.50 are dropped, not rounded up. Accepted: $1,000,000, 1000000, 1M, 1.5M, 1MM, 500K. Also Excel’s scientific notation (1E+06) and space- or dot-grouped thousands (1 000 000, 1.000.000). A figure may have a currency’s sign before it, whichever currency it is, and is read as it is under the dollar’s sign, in full or in shorthand: £1,000,000, ₹10,00,000, ¥1,000,000, €1.000.000, £1M, €500K. Your own currency’s mark is read the same way where it is written with letters, in front of the figure as the app writes it: C$1,000,000 in a Canadian workspace, R 1,000,000 or R1M in a South African one, CHF 500K in a Swiss one. So the example of a limit that the import shows you is a cell it reads. A mark of letters alone is also how a policy number begins, so after one a long run of digits with nothing to break it up is still asked whether it is a number: R1000000 is read, R1,234,567 is read, and R1234567 is taken as a policy or account number and flagged. A full stop written after the mark is read with it (Rs. 5M, Rs.10,00,000). Straight before a figure in shorthand it may be that figure’s decimal point, so Rs.5M, Rs.25000K and R.5M are not read, and the row is told that the full stop is why: write Rs 5M or Rs. 5M for five million, or R0.5M for half a million. A mark written with letters is read only in the workspace whose currency it is. In any other, and on the free spreadsheet check, which has no workspace and is worded in US dollars, its letters are a word the reader does not know: the cell is not read and the row is flagged. So is a mark after the figure (1,000,000 R), and a currency’s three-letter code where that is not the mark the app writes (CAD 1,000,000 in a Canadian workspace, whose mark is C$). USD 1,000,000 is the exception, and is read in every workspace. Write those figures with your currency’s mark in front, or with no letters at all.
  • Words such as N/A, None, TBD, See attached, Per contract or See COI are not an amount, and no limit is recorded for that coverage. In a limit column the row is flagged, except for N/A, None or a dash, which are taken to mean the coverage is not carried.
  • Yes, X or Included in a limit column says the policy is carried. It is recorded with no limit, and the row is flagged, or the column is noted once above the rows where more than one row is written that way. So does a yes followed only by words that say nothing against it: where the proof is or who gave it (Yes - on file, Yes, see cert, Yes per agent), which policy it is in (Included in GL), or that it stands (Yes - current, Yes - verified, Yes - approved). A yes followed by a word that is not one of those, by a figure, by a mark such as a star, or by a question mark does not say the policy is carried: Yes - cancelled, Yes - exempt, OK per Tom, OK - agent on it, Yes per contract, Yes* and Yes? are left unread, no policy is recorded from the cell, and the row is flagged.
  • Statutory (or per statute) under workers’ compensation, or the name of a state fund, means the policy is carried. It is recorded with no limit, and the row is flagged, or the column is noted once above the rows where more than one row says so. A fund’s name with a number beside it is flagged on its own row, unless an EL column beside it gives the limit. An amount after the word, as in Statutory / 1M, is read as the limit, and so is one after a dash of any kind that stands off from the figure (Statutory - 1,000,000). A limit after the word that is grouped by dots or by spaces, or written with an exponent (Statutory 1.000.000, Statutory 1 000 000, Statutory 1E+06), is not read there: the policy is recorded with no limit, and the row is told to write the figure with commas. A cell that says more than that is not read as carried: a word such as expired, No or Old (Statutory - expired, No BWC, Old BWC), a question mark or a mark such as a star (Statutory?, BWC*), or a date, a policy period or a year (BWC 6/30/2025, BWC 9/1-9/1, Statutory 2019, BWC '25), whatever stands between it and the word (BWC/9/1, Statutory, 2019, BWC 9-1) or after it (BWC 9/1 / 9/1, Statutory 6/30 / 1,000,000). A date is seen with a full stop (BWC 9.1, BWC 12.2019), with spaces round its slash or hyphen (BWC 9 / 1), with its day, month and year standing apart (BWC 9 1 25), as a day and a month apart with nothing between them (BWC 9 1), or as four small figures joined by slashes, the two dates of a period (BWC 9/1/9/1). The row is told that the date is why, and to write the word or the fund’s name without it. A figure of four digits that begins 19 or 20 reads as a year, so Statutory 2000 is not a limit of 2,000: write the limit in full (Statutory 2,000,000). After # such a figure is the fund’s number, hard against it or with a space, a colon, a full stop or a dash between the two (BWC #2019, BWC #: 2019). Two figures with a full stop between them read as a date where they can be a day and a month, so Statutory 1.5 is not read: write the limit with its unit or in full (Statutory 1.5M, Statutory 1,500,000). Five to eight figures run together beside the word or a fund’s name may be a date with nothing between its day, month and year, with a nought before a lone figure or without one (BWC 090125, BWC 09012025, BWC 90125, Statutory 101000). Beside a fund’s name they may as well be its account number, and after Statutory the limit. Where they can be a date, the two cannot be told apart: the cell is not read, and the row is told to write # before an account number (BWC #090125, BWC #: 090125), or the limit with commas (Statutory 101,000). A run that cannot be a date is still the fund’s number, or the limit after Statutory (BWC 80012345, which has no month 80; Statutory 500000). So is a run that ends in three noughts and fits a date only with no nought before a lone figure, which would be in the year 2000 (Statutory 12000). Before a fund’s name only its state, a yes, or words that say the policy is with it (covered by, with, w/, carrier, coverage, policy) are read past, and a figure there leaves the cell unread. A cell that opens with Is or Has and then names what it asks about is a question, with its question mark or without, and is left unread (Is the policy with BWC); Is with BWC and Has coverage with BWC are read. The fund that pays the workers of uninsured employers is not a state fund’s name.
  • A word beside an amount is read past only when it is one an office puts beside a limit: occ, per occurrence, each, agg, CSL, limit. The amount beside it may be in full or in shorthand, whatever its size: 1M occ, 1000K occ and 25000K CSL are read as 1M, 1000K and 25000K are. Shorthand is worked out to the dollar it says, whatever the decimals before the unit: 1.5M is 1,500,000, 12.5K is 12,500 and 1234.567K is 1,234,567. What is under a dollar is dropped, not rounded up: 1.2345678901M is 1,234,567 and 99.9999999M is 99,999,999. A cell that opens with shorthand and holds more than that one amount and its words (25000K (2), 1M occ 2M agg) is not read, and the row is flagged: write the amount alone in the cell, or two amounts with a slash between them. Where a figure in full stands first, it is the one read, and the row is told the first of several was used (1,000,000 25000K), unless the cell’s own words give two amounts as the aggregate and each occurrence (below). Any other word, as in Need 1M or 1,000,000 pending, a question mark, as in 1,000,000?, or a mark such as a star or a less-than sign, as in 1,000,000* or <1,000,000, leaves the cell unread: no limit is recorded and the row is flagged. An E is read past only inside a figure in scientific notation, so 2000000E is left unread. A figure with a minus, or in brackets as a ledger prints a negative, is not an amount, alone in its cell or after a word that is read past: -1,000,000, (1,000,000), USD (1,000,000), $(1,000,000), USD -1,000,000, GL (1,000,000) and GL -1,000,000 are not read, and the row is flagged. After a word, the row is told that the minus or the brackets are why, and to write the amount without them. Brackets count wherever the cell’s first figure opens one, or closes one that was not opened: GL - (1,000,000), (1,000,000 occ), (1,000,000 and 1,000,000) are not read. Brackets round a marker, round words, or opened by a word are a remark and are read past: (2) 1,000,000, 1,000,000 (per occ), (occ 1,000,000). After a label, a dash that stands off from the figure, or joins the label to it, is a dash and not a minus: GL - 1,000,000 and GL-1,000,000 are read, and so is shorthand written that way (GL - 1M, Umb - 5M). After a currency’s sign or USD, a dash before the figure is always a minus: USD - 1,000,000 and USD-1,000,000 are not read. After Statutory, a minus written against the figure, or brackets round it (Statutory -1,000,000, Statutory (1,000,000)), leaves the policy recorded with no limit, and the row is told that the minus or the brackets are why.
  • A limit cell holding several amounts, such as $1,000,000 / $2,000,000 or 1M/2M, is read in full and flagged, on the row or once above the rows where more than one row of the column is written that way. Under general liability and umbrella the first is each occurrence and the second the aggregate, unless the aggregate column gives one or the cell’s own words say otherwise (1M agg / 2M occ). Two amounts in full with no slash between them, one beside agg and the other beside occ or each, are read by those words too, in either order (2,000,000 agg 1,000,000 occ, Occ: 1,000,000 Agg: 2,000,000). Three amounts under either give the first as each occurrence and no aggregate. Under workers’ compensation the first is used, and three bare figures such as 500/500/500 are read in thousands. Three figures under automobile liability are split limits: the policy is recorded with no limit. Under a coverage with no aggregate, where a cell of two amounts calls the first the aggregate and the second each occurrence, the second is the one used. Where the second of two amounts is the lower, no limit is recorded.
  • One amount that the cell calls the aggregate, such as 2M agg under general liability, is recorded as the aggregate, with no each-occurrence limit. A cell that speaks of the aggregate and gives no amount (Agg TBD) is flagged. An amount after a slash with nothing before it (- / 1,000,000) is not read: the cell gives no first amount.
  • A limit under $10,000 is not recorded, and the row is flagged. A sheet that gives its limits in thousands (1,000 for a million) has to be written in full.
  • A bare run of digits of 10,000 or more that is not a whole number of thousands, such as 80012345 or GL1234567, is taken as a policy or account number. So is a figure after # (#80012345, #2,000,000), unless the # is a marker of one to three figures with an amount after it (#2 $1,000,000); a figure with a short suffix, of one to three figures or beginning with a nought (2000000-01, 2000000-0001); and a figure of 10,000 or more before K that is not a whole number of thousands (80012K; 1234K is read as 1,234,000). It is not an amount: no limit is recorded from it, and the row is told which of these it was. Where such a number stands after an amount in the same cell (1,000,000 80012345, $2,000,000 GL1234567), the amount is read, and the row is told that a number beside it was passed over, or the column is noted once above the rows where more than one row is written that way. A figure written as money, with a currency sign or with commas between its thousands ($112,500, 1,250,500), is read as the amount it says. A figure grouped by spaces or by dots is not written as money by the sign before it, because a space or a dot also stands between the figures of split limits: 1 000 000, $2 000 000, 1.000.000 and €2.000.000 are read, and $112 500, £1 250 500, $100 300 100, €1.250.500 and $100.300.100 are flagged. Write such a figure with commas. A figure grouped by dots with the currency’s sign after it, or with cents after a comma (1.000.000 €, 1.000.000,00), is not read either, and the row is told to write it with commas.
  • Shorthand that comes to a hundred million or more, such as 500M or 100M/300M/100M, is not read. On older forms an M is a thousand, so the figure may be meant either way: no limit is recorded and the row is flagged. Write the amount in full.
  • In the two aggregate columns, words alone are ignored without a note. A figure there that is not an amount is flagged.
  • An amount over $1,000,000,000 is not recorded.
  • A date in a money column is not read as money.

Dates

  • Month first: 12/31/2027, 12-31-2027, 12.31.2027, or with a two-digit year, 12/31/27 (years 00–69 are read as 2000s).
  • Years from 1990 to 2100. A date outside that range is not read.
  • ISO: 2027-12-31.
  • Written months: 31-Dec-2027, Dec 31, 2027.
  • Excel date serial numbers.
A policy period such as 3/15/26 - 3/15/27 is read as its end, a date followed by a word such as renewed as that date, and so is one written exp. 3/15/27 or thru 3/15/27. A cell that still cannot be read as a date is flagged “Could not read … as a date”. Under a heading that names a coverage it leaves out that coverage and no other; in the row’s one expiry column it leaves the row with no certificate. If a row has several expiry columns and their headings name a coverage (GL Exp, WC Exp, Auto Exp), each date is used for the coverage its column names. A coverage with no expiry column of its own is given the earliest date on the row, because that is the one that decides compliance, and so is every coverage when the headings name none. The preview says this once, above the rows. A coverage that has an expiry column of its own, a limit, and no date in that column on a row (an empty cell, N/A, TBD) is not recorded for that row, and the row is flagged: it is not given another policy’s date. Columns about licenses, contracts, bonds, permits, experience mods, lien waivers, prequalification, W-9s, effective dates or issue dates are not treated as expiry dates.
Dates written in numbers are read month first. A day-first date such as 25/05/2026 is not imported, because there is no month 25. When a column contains any date like that, the rest of it is not guessed at: a date that could be read either way, such as 11/05/2026 (11 May or 5 November), is not imported either. The row is flagged with the reason and gets no certificate. The whole file is looked at for this, including rows past the first 500. Dates whose day and month are the same number, dates that can only be month first such as 12/31/2027, and dates written as 31-Dec-2027 or 2027-12-31, are still read. A column with no date that can only be day first is read month first throughout, so 03/04/2027 is March 4, not April 3. If your spreadsheet uses day-first dates, write them as 31-Dec-2027 or 2027-12-31 and import again.

Endorsement columns

The three endorsement columns apply to every coverage in the row. An import never records Endorsement form on file, even when the cell says “On file”: a spreadsheet is not the endorsement. So a subcontractor whose template requires an endorsement will show Needs review after import until you record the endorsement form. Write No when the endorsement is missing; a blank cell is recorded as stated. See Endorsements and evidence levels.

Re-importing and matching

  • Subcontractors are matched by company name, ignoring capitalization. A matching row updates the subcontractor’s trade, contact name, email and phone (blank cells change nothing) and applies the requirements chosen for that row, rather than creating a duplicate. If you chose a project for the import, the matched subcontractor is put on it too.
  • A row whose policy is already on file, with the same expiry date for a coverage in the row, adds no new certificate. Re-importing the same sheet does not replace certificates you have recorded by hand.
  • A row with a different expiry date adds a new certificate, whether the date is later or earlier, so import your current sheet rather than an old one. An older certificate is set aside only if the new one fully replaces it; see Renewals and several certificates.
  • A row matching an archived subcontractor is not imported: “Matches an archived subcontractor. Restore it first to update it from a spreadsheet.”

Limits

  • Up to 500 rows per file. For a longer file the preview says only the first 500 will be imported; split the file and import each part.
  • Files up to 4 MB. An Excel file is measured after it has been read as CSV.
  • Your plan’s subcontractor limit applies row by row. Rows past the limit are listed as “Your plan’s subcontractor limit was reached”.

Common mistakes

The template requires endorsements and the spreadsheet can only record them as stated on the certificate. This is expected. Record the endorsement forms as they arrive, or let chasing ask the brokers for them.
The cell said “Statutory”, which says the policy is carried and gives no limit. The policy is recorded, and the finding asks for the limit. Enter the employers’ liability each-accident figure (for example $1,000,000) in Workers Comp Each Accident, or record the certificate when it comes in.
Dates were day first and none had a day above 12, so the column was read month first. Write the dates as 31-Dec-2027 or 2027-12-31 and import again; rows already on file with the right expiry are left alone.
The column has at least one date that can only be day first, such as 25/05/2026, so dates that could be read either way were not imported. Those subcontractors were imported without a certificate. Write the dates as 31-Dec-2027 or 2027-12-31 and import again.
A heading such as “WC Exp” or “WC Policy #” is never read as a limit, but an unusual heading might be mapped to the wrong column. Correct the column in the preview before importing. A policy number in a limit cell is still read as a limit where nothing marks it as a number: a whole number of thousands with no # before it, no short suffix after it and no letters beside it but the ones an office puts beside a limit (GL-2000000, 80012000); a figure written as money is, with a currency sign or commas between its thousands ($80012345); a figure in Excel’s scientific notation (8E+07); and a round number with a longer number after it (2000000-2025) or a marker of one to three figures before it (# 12 2000000). Look down the Limits column of the preview for a figure that is not a limit.
They show No email on file and are not chased. Open each subcontractor, choose Edit, and add the address, or fix the sheet and import again.
The company name changed between sheets (“Acme Electric” and “Acme Electric LLC” are different names). Keep names identical, or archive the duplicate.

References