Troubleshooting and common issues
CSV uploads that refuse, parser flags you do not understand, proposals nobody can sign, billing warnings, and totals that look wrong — what each one actually means.
Troubleshooting and common issues
Grouped by where you hit them. Each entry says what the app is telling you and what to
do — including when the honest answer is "this is working as intended".
CSV uploads
"The columns do not match" / nothing imported
The importer matches on the header row. Check that row 1 names the fields you expect.
Supplier exports often carry a title block above the header — expected for the catalog
importer, but a client-list import wants the header on the first row.
A long dash or an accent shows up as â€" or é
The file is not UTF-8. Re-export choosing CSV UTF-8 rather than plain CSV — on
Windows that is usually the whole difference.
The same person appears twice
Imports are additive — there is no de-duplication pass. If you imported a list,
corrected it and imported again, delete the extras on the Clients page. Check a file
before running it a second time.
An entire row is missing
Usually one broken quote in the file ("Smith, John with no closing quote) swallowing
the line after it. Open the CSV in a plain text editor and look for an odd number of
quote marks.
Parser flags
"Verify Qty"
The parser found the line but no readable quantity. It refuses to guess a number
that changes money, so it hands the line back flagged. Read the source page and type
the quantity.
"Set Price"
The line has no price yet — normal for carrier scope listed without pricing, and normal
before your Rate Catalog has the item. The line still counts in a material takeoff,
because a shopping list needs quantities, not dollars.
A scanned or image-only PDF finds nothing
The parser reads a PDF's text layer. A scan — or a carrier's flattened export — is
a picture of text and has none. Ask for the original digital PDF or download it from
the carrier's portal rather than a photocopy. With only the scan, add the lines by
hand: everything downstream works identically.
Proposal delivery
The client cannot sign on their phone
Proposal links look like /view/quote/<long-id> (and the PDF sits at
/view/quote/<long-id>/download-pdf). Two things break signing in practice:
- An in-app browser. A link tapped inside Facebook, Instagram or a restrictive SMS
app opens in that app's own viewer, which can swallow touch input. Tell the client to
tap the ⋯ / options icon and choose Open in Safari or Open in Chrome. - A phone case that defeats the digitizer at the screen edges — signing in the
middle of the box helps.
If it still will not take, approve from a desktop browser, or print the PDF and mark it
accepted.
"Download PDF" does nothing
Usually the pop-up blocker: the PDF opens in a new tab. Allow pop-ups for the app's
address, or use the share sheet's link and open the PDF from there.
"This link has expired"
Proposal links respect the quote's validity window. Extend the expiry on the quote and
re-share; a fresh signed link is issued rather than reusing the dead one.
Subscription and billing notices
The red "Payment failed" banner
The last charge did not go through and the subscription is past due. Access is
not cut immediately — that is deliberate, and a declined card is usually a new
expiry date rather than a decision to leave. Click Update Payment Method (it goes
to Settings → Billing) or use the link in the email we sent the workspace owner.
Stripe retries on its own schedule, so replacing the card is usually the whole fix.
"Checkout cancelled" after trying to pay
Nothing was charged and the workspace is unchanged. Start again from
Pricing — checkout is safe to re-open as often as you need.
A feature looks unavailable
Check the tier in Settings → Billing. Trials include the full product; a plan change
is what alters what you see.
Estimating and calculations
A total did not change after I edited it
Totals are computed on the server, not in the browser, so the figure shown is what
the saved quote says. Lines recalculate when you save the grid; quote-level fields (tax
rate, contingency, permit fee, whether contingency is visible) recalculate when you
save that card.
Why is tax only on part of the total?
Tax is calculated on the material subtotal — labour and subcontractor lines are
excluded, which is how the trade is taxed in most US jurisdictions. If you need tax on
labour, add it as its own line rather than raising the rate, so the printed proposal
says what you meant.
My margin looks different from my markup
They measure the same money differently: markup is a percentage on cost, margin
is a percentage of price — a 25% markup is a 20% margin. The builder shows the margin
because that is what a lender asks for, and stores the markup on each line.
The whole quote needs one margin
Use the Global Gross Margin Controller: it rewrites markup across every line at
once, and each line stays individually adjustable afterwards.
Related: Gross margin and contingency and
System formulas.
When to ask instead of troubleshoot
If a total disagrees with its own lines, a document will not render, or a client cannot
open a link you can open, send us the quote reference and roughly when it happened. The
Activity Log on the quote (⋯ → Activity Log) records who changed what, which
usually answers it without guesswork.
Found something out of date? The guides live in the repository's
docs/ directory — fixing the guide is part of fixing the feature.