When the estimate is ready, send it. The customer gets a text (and email, if you have one on file): "Hi Sarah, your estimate for the 2019 Honda CR-V ($842.50) is ready. Review and approve: [link]." The email also carries the estimate as a PDF attachment, so customers who file paperwork have their copy without clicking anything. If the customer has texted STOP, the quote still goes out by email and the send confirms with a note saying so. When a new estimate replaces one the customer already saw (you voided and rebuilt it), the message says it was updated with the new total instead of announcing a fresh estimate.
A revised approved job that costs more goes out the same way: Send for re-authorization in the revision editor's footer texts or emails the customer "Hi Sarah, the Brake pads on your 2019 Honda CR-V changed. Please review and approve: [link]"; the link is the customer's own page for the change (what changed, the job's price before and after, the invoice before and after, Approve with a signature or Decline), and their signed approval updates the bill (see Invoices). A revision that lowers the amount offers Send updated quote beside its Confirm changes: the same page goes out as a new version of the estimate ("New total $900.00, down from $1,066.59"), the previous approval stays on record for the approved scope until the customer approves the new version, and the job reads "Updated quote sent · 2m" with the same Resend and Withdraw request meanwhile. While the request is out the job reads "Re-authorization sent · 46m" with Resend (the same link again, once every five minutes, then "Sent again · 2m"), Record approval (the counter screen: who said yes, how, and the customer's signature on your screen when they are in the shop) and Withdraw request. The link stays good until the customer answers or you withdraw it, and the job's lines are locked meanwhile: an edit says "Re-authorization is out for this job. Withdraw the request to edit, or wait for the customer."
Send for approval opens the Send quote sheet. Jobs on the left, one row each with a check at its left: checked jobs go on the quote, unchecked ones stay on the repair order (the title counts them, "1 of 3 included", with Select all beside it). A job that still needs a real part says needs a part in red at the right of its row and cannot be checked until you pick one. Open a row and you see what the customer will read: the description with a quiet Edit word, and on diagnosis jobs Show full explanation to edit every sentence of the writeup (Possible cause, If delayed, Driving) or remove the writeup for that job. Under it, the job's lines: item, quantity or hours and price or rate as small inputs, a per-line Discount cell, and the amount (the discounted price, with the list price struck through under it). The Discount cell is always editable: + Add on a line with no discount, the deal already on the line, or a job discount's share shown muted. Changing a covered cell gives that line its own deal while the others keep the job's; setting it back to zero returns the line to the job's discount. Quantities, prices, descriptions, and line discounts edit right there and the totals follow. The right side is the same one the invoice uses: Send by with a Text and an Email pill (the phone or address inside each; a pill you cannot use, such as texting off for this shop or no email on file, is greyed and says why when you hover it; when the customer has no email or no phone at all, a quiet Add email or Add phone word beside the greyed pill saves the address right there and the pill wakes up). Under Send by, one quiet line reads what the customer will see on this quote ("Customer sees: labor hours, rate, part numbers") with a Change word; it opens the same four switches your Settings keep under What customers see (labor hours, labor rate, part numbers, technician name) for this quote only, and the line then says how many changes this quote carries. Flip one and the customer link, the print and the PDF of this quote follow it, while your Settings and every other quote stay as they were; the job rows in the sheet hide the same facts as you flip. Resending this quote keeps its choices; a new quote starts from Settings again, the message the customer receives, which you can rewrite for this send (the review link is added automatically at the end, shown as a fixed [link] chip, so a message that contains a link or the word [link] will not send), Attachments with Add file, the Quote summary rows: parts, labor, charges, Discount with Add or Edit, then exactly the fee lines the customer will read: Shop supplies and Environmental fee with Edit (or On this visit's invoice when the visit's bill already carries the fee and this quote adds nothing), Tax with Details (rate, whether labor is taxed, tax-exempt customer; shown at $0.00 on untaxed work), then the quote total, and under it Expected profit on one line (tap it for the math). The footer states the fact ("1 job included · 2 need pricing") and holds Record customer approval and Send for approval. The draft builds itself in the background while you work the jobs, and the AI-written customer descriptions fill in moments later (your own edits always win). Once a quote is out, the Sent quote link in the money rail opens the same sheet for it: each job wears Approved, Declined, or Awaiting instead of a check, prices are the frozen ones the customer sees, and the footer offers Send reminder and Record customer approval; Void quote sits in the sheet's menu. The sheet is where you fix anything before sending: line items, discounts, or a flat shop-supplies charge (taxed with the sale, like your environmental fee). Discounts live in one place: tap Add discount under the totals and answer two questions. First, where it applies: the whole quote (approved work already sold on the bill is never touched) or a single job ("$50 off the brake job"). Then, what within it: everything, labor only, or parts only, so "10% off labor" never eats your parts margin, whether it covers the whole quote or just the brake job. The invoice's Discount row opens this same form, so discounting a bill works exactly like discounting a quote. Single items discount right in the job's line grid: a quiet Discount action on each part and labor row takes a percent or dollar amount, shows the savings on the row, and stays put. The job-level discount machinery never overwrites a discount you set on a specific item, and the customer sees that item's original price struck through. Every discount can carry a reason that prints on the customer's copy: whole-quote, labor, parts, and single-job discounts alike ("Military 10%" on just the brake job). Discounts your shop gives often ("Military 10%", "First visit $25") can be saved as presets in Settings, Taxes and fees. They appear at the top of the picker on every quote and draft invoice, apply with one tap, and print their name as the reason. Each active discount shows as its own row with the dollars off and a quick remove. A quote-wide discount lands ON the jobs: every job gets the same discount (a dollar amount splits across jobs by their size), so the savings show inline on each line instead of hiding in the totals, and you can still change any single line while the rest keep the discount. Discounts layer in a fixed order: a deal you set on a specific item comes off that item's list price first, then the job's discount or the quote-wide discount takes its percent off what is left (so a 10% item deal under a 5% quote-wide discount reads list, minus 10%, minus 5%). A job that has its own discount is left alone by the quote-wide one, and an item deal is never replaced by either; removing a quote-wide discount leaves the item and job deals in place. Picking a job that already has a discount edits that one rather than doubling it. The customer sees a discounted item's original price struck through next to the new one, and the other items stay full price. Set automatic shop supplies in Settings, Taxes and fees. They pre-fill only when the new quote includes priced parts, not labor-only work or standalone charges. When you approve only labor from a new mixed quote, automatic supplies stay with the parts-bearing jobs. An amount you explicitly set remains a quote-wide fee; the review screen still lets you adjust or remove it per quote, and the Shop supplies line in the vehicle page's money rail opens the same edit without leaving the page. The Environmental fee line works the same way: tap Edit to set a flat amount or remove it for this quote only. Opening either field selects the amount already in it, so what you type replaces it rather than landing after it, and a fee larger than both the work on the estimate and the fee in your Settings (a mistyped amount) is refused in words instead of saved; your flat fee on a small estimate always saves. Your shop pricing settings never change. Either edit sticks: the amount you quoted (including a removed fee) is the amount that lands on the invoice when the customer approves, and it stays put through later invoice updates. Supplies are charged once per visit: a follow-up quote in the same visit only pre-fills whatever room is left under your cap (nothing, if an earlier quote already hit it), and the bill collects the combined amount exactly once.
Send is instant: the sheet closes on the press and the money rail shows the quote as sent, "Sent 2:14 PM · not opened yet", with the customer's status flipped to awaiting approval. That line stays put while the text and email go out and changes only when the customer opens it ("· opened"; from the next day the stamp is the day alone, "Sent Oct 20 · opened", and the exact times sit on hover); there is no spinner and no "sent" notice later. The text and email leave behind that. Send reminder works the same way from the sent quote's sheet. If the server refuses, the rail goes back to where it was and one notice says what happened ("Couldn't send the quote: ...") with a Reopen word that opens the same sheet with the same jobs checked. Pressing twice never sends twice.
The email the customer gets is short and carries your brand: your logo (or your shop name) and address at the top, "Your estimate is ready", "Hi <first name>," one or two sentences naming the car, a VIEW ESTIMATE button in your booking accent (or black), the estimate total under it, "For any questions, call or text <your number>", and your address, phone and email in the footer. It comes from your shop name at our sending address, and replies go to your reply-to address or your shop email.
Send sends exactly the draft the sheet showed you. If the money changes while the sheet is open (an edit from another device, a tech adding a part), Send stops and says the estimate changed; open the sheet again, look it over, and send. Nothing goes to the customer that you did not see. Changes that do not move the total (a description filling in, a background refresh) never stop a send or an in-shop approval.
Once a quote is out, View quote under the money rail opens the customer's page exactly as they see it, with the same buttons and words. Nothing can be recorded from this view; the customer answers from their own link. Above the page sit the customer link with Copy link (paste it into any text or email) and the document's record: when it was sent, when the customer opened it, and once answered, who authorized it, how, and when ("Approved by Ana in person · Oct 15, 6:40 PM", or "Approved online by Ana (signed)"). The same line is the rail's fact on an approved quote. More holds Copy customer link and Void quote. A job awaiting approval keeps its price tag on the card after the send, list price struck beside what the customer pays.
A whole-RO discount in dollars lives on one document: the invoice once the visit has one, otherwise the estimate. A percent applies to every job on every document, the draft estimate and the bill alike; a draft that is missing the percent the bill carries picks it up the next time it re-prices. So when a car is already billed and you quote more work, "$50 off the RO" sits on the bill (the band says "on the invoice"), the new estimate goes out at list, and when that work is approved it joins the bill and the one $50 spreads across every job by size. Nothing is split between documents and nothing drifts when jobs are added or removed. A sent estimate still takes discount changes: a percent you add reaches it, and removing a discount removes it there too. The customer's page is live, so they see the current money and approve what is on it.
A dropped connection never loses a discount you typed. If a Save cannot reach the server, or the server does not answer within twenty seconds, the page goes back to what it showed before, the editor returns with your rows and says so; press Save again once you are back online. A dollar discount larger than what its lines can absorb is refused with the most they can take ("The most this job can take off is $118.95"), a percent above 100 is refused, and a discount that would reach nothing is held with the reason. Charges count: a job that is only a charge takes a discount, and Everything reaches charges too.
The quote flips to sent the moment the link is live. The text and email go out right behind it, and a delivery that fails is retried automatically. The vehicle page's quote card tells the truth about that delivery as it happens: Quote sent for approval with one line from the press on, "Sent 2:14 PM · not opened yet" (then "opened 2:20 PM"), and if nothing got through the card turns orange, reads Quote not delivered with the reason in plain words (the number could not receive texts, email bounced before, no email address on file), and offers Resend plus Send by email instead when the other channel is on file. The card updates on its own, no reload. The same lines appear at the top of the sent quote's sheet.
Approve also lives on each pending job card and on every charge row, and it approves just that job: record the customer's counter OK for one repair, or your own call for shop-side money like a sublet or tow, while the rest of the ticket keeps waiting on the customer. The confirm lists every job with its price (untick any the customer didn't say yes to and only the ticked ones are approved) and records how the OK came in (in person, phone, or text) plus who gave it, alongside the signed-in advisor it already stamps. That record lives on the approval for good. Send and Record customer approval wait for every report, part, labor, discount, and shop-supplies edit to finish saving. If an edit cannot save, the quote stays a draft and shows the error instead of sending older text or totals.
Only one sent quote can stay active for the same jobs. To send revised scope after a quote already went out, void the active quote from the vehicle first, then review and send the new draft. This prevents two live approval links or two send notifications for the same work. On mobile, tapping the sent job in the send sheet's job picker does this in one step: it confirms, cancels the quote the customer has, and folds the job into the new quote so you send one combined link. Opening a sent quote or a sent invoice in the mobile preview also offers a void link on that exact document, so mixed repair orders with several quotes are never stuck. Voiding never erases your pricing: the job discounts and the RO discount carry onto the rebuilt draft and stay listed under the quote on the phone's Quote card, the same words and amounts as the money rail. The phone's quote sheet edits shop supplies and the environmental fee the same way the web sheet does.
A send is recorded before text or email delivery begins. If a provider is temporarily unavailable, CarSignal keeps the unfinished channel queued and retries it; sending the same quote again resumes that delivery without recreating the quote or repeating a channel that already succeeded. A corrected phone number or email is picked up on the retry.
When delivery fails outright, the error says which channel failed and why: an invalid phone number, an email address that has bounced before, or a customer who marked earlier emails as spam. The quote is still saved. On web the quote card in the money rail carries the same fact and the Resend door; on mobile, the vehicle's next-step card switches to Quote not delivered with a resend button. Fix the contact info on the client, then resend.
If the job came from a Quick Estimate or an accepted diagnosis, the first quote keeps the tax and fees the estimate was priced with, the number the customer already heard. When your Settings have changed since then, the review screen says so and offers the choice: keep the estimate's pricing, or reprice with your current settings.
The readiness gate
Complaint-based quotes will not send if the diagnosis is not actually ready: still pending, no recommended repair, or confidence below 70%. That protects you from quoting guesses. You can explicitly override to send a diagnostic-only quote, and maintenance work skips the gate entirely.
Estimate-built jobs have a second check. A quote stays in draft while an estimate is still building, after a draft failure, or while a required part still needs a real price. Finish or retry the estimate and price every required part, then refresh the quote. Empty jobs that are not on the quote do not hold up other ready work. The same check runs when you send or use Record customer approval, on web and mobile.
One more check before a quote first goes out: if it carries no sales tax while your shop charges tax and the customer is not tax exempt, the send stops with the reason ("This quote has no sales tax, but your shop charges 7.25%") and the toast offers Send without sales tax. The usual fixes are to re-price the draft or mark the customer tax exempt; a reminder on a quote already sent is never asked again. It is the same question the invoice asks, moved to the moment the customer is asked to agree to a number.
The customer report
On send, CarSignal writes a customer-facing report for each issue: a plain-English headline, what is wrong, what caused it, how the shop knows, what happens if it waits, an urgency badge, and a clear can-I-keep-driving answer. The language automatically stays only as confident as the diagnosis actually is. Every section is editable per repair on the review screen, and a section you blank stays blank on the customer's page and PDF, useful when the work is already done and "if not fixed" no longer applies. Jobs where a narrative is just filler can drop it entirely: Remove writeup for this job under the report leaves the customer with the title, line items, and prices, and it stays off even as the job changes. Restore it any time from the same spot.
What happens in the app
The Send quote sheet's Attachments row lists the vehicle library files; tick the ones that should ride this quote (photos, authorization forms). They print as exhibit pages in the PDF and appear at the bottom of the customer's approval page. Nothing is attached unless you tick it. Files added anywhere on the vehicle page appear here immediately, even while still uploading; they become tickable as soon as the upload finishes.
- The quote is snapshotted: line items, tax, fees, discounts, and totals are locked so what the customer approved never drifts.
- A draft keeps the tax and fees its jobs were estimated with. If you changed those Settings since, the Send quote window says exactly what differs (for example "environmental fee off → $30") with a Use current Settings link that reprices the draft before you send.
- The customer copy prints each part's number unless you unticked part numbers under What customers see in Settings; your own screens keep the numbers either way. Quote display settings in the Send quote window's three-dot menu (next to Print) flips it for this one quote: the four switches open pinned in the window, with Done.
- The vehicle moves to Waiting approval and its next action becomes Waiting on customer.
- Re-sending the same quote reuses the existing link instead of spamming the customer with new ones.
Printing a quote at the counter
Customer standing in front of you? Tap Print at the top of the quote (open it with View customer link on the vehicle or issue page), or on a draft, at the top of the review screen, so you can show or hand over the estimate before anything is sent, then record the yes with Record customer approval. Print takes you straight to the print dialog: a small window opens with the estimate document (shop letterhead, each job with its description, parts with part numbers, labor, the totals ladder, a customer signature block on unanswered estimates, and the estimate terms), prints, and closes itself. Choose Save as PDF in the dialog for a file. Customers on their own link still get the PDF in a tab so they can keep a copy. Printing does not count as the customer viewing the quote. Customers see the same Print button on their own link, so out-of-state customers can keep a copy. Shop-side opens are read-only: the Approve and Decline buttons only appear on the customer's own link. An answered quote's PDF marks each job Approved or Declined and shows who authorized it and when. The estimate prints the line facts you allow in Settings > Quotes and invoices > What customers see (labor hours, labor rate, part numbers, technician) and closes with your estimate fine print; prices, totals and each part's name with its brand always print.
For a signature on paper before anything is sent, the vehicle page's three-dot menu has Print estimate: the open jobs with prices, an Approve and a Decline box beside each, and a customer signature line. Record the answer in the app with Record customer approval afterwards.
Approval links expire after 30 days for security. If a customer sits on a quote longer than that, re-send it to give them a fresh link.
Next: What the customer sees.