Send a Quote
Build a draft quote from your price book, send it to the customer, and record a yes from the portal or the phone.
Updated October 1, 2026
A quote is a customer-facing proposal. Internally the record is an estimate; every button and email you see says Quote. Statuses: Draft, Sent, Approved, Declined, Expired, Void. The quotes list hides Void unless Status includes it. On Hold is an opt-in Status chip for sent quotes whose follow-up is paused — Sent still includes those rows. A quote reads Approving for a moment while an approval is being set up; if it stays that way, see This approval did not finish below.
You need a customer and a site first. If you do not have those yet, add them. Starting from a lead instead? Convert & Quote on the lead does both steps and opens this form with the customer and lead already picked; sending moves the lead to Quoted (Work leads on the pipeline).
Start a draft
Open Sales and BillingQuotes and click New Quote. If you have templates, you can start from one; otherwise the form is blank and seeded from the work type. Click Create Draft Quote.
Pick the work, customer, and sites
Choose the work type, the customer, and the site (or sites). Line items usually load from that work type's quote template. Amounts come from Sales and BillingPricing unless you edit them.
Set an expiry (optional)
Accept Quote by (optional) stops last season's price from being accepted months later.
Attach supporting PDFs (optional)
After the draft exists, open it from Sales and BillingQuotes. The Attachments (PDF) card sits below Terms & Conditions and above Internal notes. Click Add PDF. The customer sees the same files on the portal quote and the public approval link as Attached documents. Unlike Internal notes, these are customer-facing. They are listed on the web quote, not merged into the generated quote PDF.
Limits: PDF only, 15 MB each, 5 per quote. The upload checks the real file, so renaming a
.pngto.pdfis rejected. You can still add or remove files on a Sent quote; Add PDF and the remove control disappear once the quote is accepted or linked to a contract. Use Copy Quote if you need to attach something new after that.Send it
On the quote, leave Notify customer (respects company notification settings) checked and click Send To Customer. Sending generates a PDF and emails a link. The customer can review options and sign electronically.
Or record a yes in the office
If they approve by phone or on paper, click Record Acceptance. Methods are Paper signature, Mail, Phone, and In person. That is the same approval path as the portal — not a side door.
Copy the customer link (optional)
To text the link, share it again, or open the quote the way the customer sees it, open Actions on a Sent quote and choose Copy Customer Link. The page confirms with Link copied. Nothing is emailed or texted, and the quote's status and holds stay as they are. Office roles see this action; it is not offered on Draft, Approved, Declined, Expired, or Void quotes. On a Sent quote whose Accept Quote by date has passed it is switched off and says why: the customer can no longer approve from the link. Edit the quote to set a later date, then copy the link.
A quote sent with Mark Sent (Internal) has no link until you do this, so OpsVara creates one. The quote stays hidden from the customer's portal and follow-up stays stopped, but anyone you give the link to can view and approve it. If you later click Share With Customer, the customer's email carries that same link, so the one you already handed out keeps working.
Office notes and On Hold (optional)
Internal Notes on the quote are office only — not on the PDF or portal. Saving them does not change the customer link. To pause automatic follow-up while leaving the link live, click Put Quote On Hold on a Sent quote (a date, or Keep On Hold Indefinitely). Remove From Hold resumes follow-up. That is not Mark Sent (Internal).
Save a template once
When a quote looks right, use Save as Template on its Actions menu, or build one under SettingsQuote Templates. Future quotes for that work type take about a minute.
Verify it worked
The quote status is Sent (or Approved if they already signed). The customer received email, or you have a Record Acceptance note with a method and date.
Once the customer opens the link, the quote shows Viewed once (then Viewed N times · last … · not yet signed); until then it reads Not viewed by the customer yet. A refresh within a minute does not count as another view. With the Sales Pipeline add-on, a Follow-up sequence card on the quote shows the automated follow-ups — see Automated quote and lead follow-ups.
If you attached PDFs, the customer's link shows Attached documents. Adding a file to a Sent quote does not require a resend — the existing link lists it.
If something looks wrong
| What you see | What it means | What to do |
|---|---|---|
| Only PDF files can be attached. | The picker rejected a non-PDF | Export the file as a PDF and try again |
| That file is not a PDF. Export it as a PDF and try again. | The bytes are not a PDF (a renamed image, for example) | Export a real PDF; renaming the extension is not enough |
| That PDF is too large — the limit is 15 MB. | The file is over 15 MB | Compress or split it, then attach again |
| A quote can carry at most 5 attachments. | The quote already has five PDFs | Remove one first |
| Failed to fetch | The old browser-to-S3 upload, fixed 2026-09-12 | Retry on current OpsVara. Nothing was saved on the failed attempt |
| Add PDF is gone | The quote is accepted or linked to a contract | The listed files stay. Use Copy Quote to attach something new |
| This approval did not finish on a quote that reads Approving | The acceptance was received and saved, but creating the contract did not finish. The customer's link shows We have your approval, not an error. | Click Finish Approval (office roles). It completes the approval from the saved acceptance and continues from anything already created, so there is never a second contract. If the notice says no signature was saved, use Record Acceptance instead. |
| The acceptance was saved, but the approval did not finish. Open the quote and click Finish Approval. | Record Acceptance saved the acceptance but could not finish setting it up | Close the dialog and click Finish Approval on the quote. Do not record the acceptance again |
| This quote is already being processed. Please refresh and try again. | Someone else — the customer or a colleague — is approving the quote right now | Refresh in a moment. If it still reads Approving after ten minutes, Finish Approval appears |
| The office note is too long. | The Internal note on Record Acceptance is stored with the acceptance record, which has a length limit | Shorten the note (the field holds 1,800 characters) and record the acceptance again. Nothing was created |
| A link you copied opens to This link has expired — the quote was updated after it was sent. | The quote was edited, or Resend To Customer made a new link, after you copied it. (Share With Customer keeps the link you copied.) | Use Copy Customer Link again and send the new link |
| The Accept Quote by date on this quote has passed, so the customer can no longer approve it. | Copy Customer Link on a Sent quote past its Accept Quote by date | Edit the quote to set a later date, then copy the link |
| This quote is for a site that now belongs to another customer — void it and write a new quote. | The site was moved to another customer after the quote was written. The quote is not sent. | Void it and write a new quote for the customer who owns the site now. See Move a Site to Another Customer |
| Your browser did not allow copying. Select this link and copy it: | The browser blocked the clipboard | Select the link shown under the message and copy it yourself |
| Was Per week — now Per month. Check the price. on a line (the units named vary) | You changed the quote's Invoice Schedule on New Quote or Edit Quote, and that line's Price is unit was one the new schedule cannot bill. OpsVara moved the line to a unit the new schedule bills — or to Total for the term where it bills no rate — and kept the amount you typed. Lines already on a unit the new schedule bills, Total for the term lines and Own billing cycle lines are left alone. Lines a quote template adds after the change (when you tick another site, for example) arrive the same way, with the same note. The Quote & approval panel in a job wizard shows the note too, when the quote's schedule changed while that quote was open there. A quote that adds to a contract — or replaces one without setting its own Invoice Schedule — bills on that contract's schedule, so its units are not moved. | Check the Unit $ amount against the new unit: $80 a week is not $80 a month. The note goes away once you edit that line's Unit $ or Price is. Changing the Invoice Schedule back puts a line you have not edited back on its old unit. |
| Price Units Changed — "2 lines changed price unit when the invoice schedule changed. Check their prices before saving." | You saved a quote — or, in a job wizard's Quote & approval panel, pressed Save draft, Send for approval or Approve on-site — while lines still show the note above. The note is not kept once the quote is saved, so OpsVara asks first. | Go Back returns to the quote so you can check those lines. Save Anyway saves them as they are — the unit shown, at the amount shown. |
| Line '…' is priced Per visit, but this quote bills Monthly. (or a similar line) | A line's Price is unit is one the quote's Invoice Schedule cannot bill. Changing the schedule on New Quote or Edit Quote moves the units for you (the row above). You can still see this when the schedule changed while the quote was not open — a quote you have not customized takes its schedule from the work type's quote template, or else the company defaults — or when a line loaded from a quote template is priced in another unit. Approval would keep that line as a one-off total while the customer saw a monthly or per-visit price, so the quote is not sent. | Edit the quote and change that line's Price is to the unit the message names (or Total for the term), or change the Invoice Schedule. Saving the draft still works. A quote campaign marks just that customer's row failed with the same message. |
| Line '…' is priced Per month, but the contract this quote replaces (or adds to) bills after each visit. | A quote that replaces or adds to a contract bills on that contract's schedule, which it keeps unless the quote sets its own Invoice Schedule — and an add-on quote never changes it. The customer's quote page shows its rates on that schedule too: the contract's visits, its term and its first billing month. The line's unit is one that schedule cannot bill. | Change the line's Price is to the unit the message names (or Total for the term). For a replace quote you can instead set the Invoice Schedule on the quote, and the contract takes it when the quote is approved. |
What to do next
When the quote is approved, OpsVara can create a service contract automatically. What happens after a quote is approved explains that step.
Frequently asked questions
How do I text the quote link to a customer, or open it myself?
On a Sent quote, open Actions and choose Copy Customer Link. The link the customer uses to view and approve the quote is copied and the page says Link copied. Nothing is emailed or texted, and the quote's status and holds do not change. Office roles only. Once the Accept Quote by date has passed the action is switched off, because the customer can no longer approve from the link — edit the quote to set a later date first.
Can I get a customer link for a quote I marked sent internally?
Yes. Copy Customer Link creates one. The quote stays hidden from the customer's portal and follow-up stays stopped, and nobody is notified, but anyone you give the link to can view and approve the quote. Share With Customer later keeps that same link, so the one you copied keeps working.
Why does the button say Mark Sent (Internal)?
Uncheck Notify customer (respects company notification settings) on the draft. The quote still moves to Sent, but no email goes out and the portal hides it until you Share With Customer. That stops follow-up. To pause follow-up while leaving the customer link live, send it normally then use Put Quote On Hold.
How do I pause follow-up without hiding the quote?
On a Sent quote, click Put Quote On Hold. Pick a date or Keep On Hold Indefinitely. Status stays Sent. Remove From Hold resumes follow-up.
Where do I put notes the customer should not see?
Internal notes on the quote (detail, New Quote, or Edit Quote). They never appear on the PDF or portal. Saving notes on a sent quote does not change the customer link. PDFs you add under Attachments (PDF) are the opposite — the customer sees those.
Can the customer see the PDFs I attach?
Yes. Attachments (PDF) appear on the portal quote and the public approval link as Attached documents. They are not merged into the generated quote PDF. Internal notes stay office-only.
Why did Add PDF disappear after they signed?
Acceptance (or a linked contract) freezes the quote, including attachments. The files stay listed. Use Copy Quote if you need to attach something new.
I still see Failed to fetch when I add a PDF.
That was a bug on the old upload path, fixed 2026-09-12. Current OpsVara returns a specific error for too large, empty, not a PDF, or timeout. If you still see Failed to fetch, you are on a build from before that date — retry after the update; nothing was saved.
The customer said yes on the phone. Do they still have to click the link?
No. Use Record Acceptance and pick Phone (or Paper signature, Mail, or In person). That follows the same approval path and keeps the audit trail.
A quote says Approving and This approval did not finish. What do I do?
The customer's (or your) acceptance was received and saved, but setting up the contract did not finish. Click Finish Approval on the quote. It completes the approval from the saved acceptance and never creates a second contract. The customer does not need to sign again; their link shows We have your approval in the meantime. Office roles only.
I voided a quote and it disappeared from the list.
Status starts with Void unchecked. Check Void on the Status filter (Office mobile — tap Void). Header Search and the quote URL still open it. List search still respects Status.
Related guides
- Add a Customer and a SiteCreate the account you work for and at least one service location so you can quote, schedule, and invoice.
- Work Leads on the PipelineMove leads across the board, give each one an owner, value, and tags, keep a dated timeline, name your own stages, and go straight from a lead to a quote.
- After a Quote Is ApprovedFind the service contract a signed quote created, check the billing day, and know when no plan appears on purpose.
- Automated Quote and Lead Follow-UpsFollow up on every sent, unsigned quote and every new lead automatically, as a note from the rep, until the customer signs, replies, or is quoted.