> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comforthub.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Quote extra work

> Build a quote on the work order for work found on site, and what happens when the customer approves it

export const Touches = ({systems}) => <p>
    <strong>Systems involved:</strong>{" "}
    {systems.split(",").map((s, i) => <span key={s}>
        {i > 0 ? " · " : ""}
        <a href={"/systems/" + s.trim()}>{s.trim().replace(/-/g, " ")}</a>
      </span>)}
  </p>;

<Touches systems="the-7am-app, supabase-backend, resend, zoho-crm" />

When a technician finds more work than the job was booked for, they build a quote in the app and send it. The customer gets an email with an **Approve this quote** button. Tapping it adds the quoted lines to the work order, tells the technician, and carries the lines to Zoho. Nobody in the office has to touch it.

## Before you start

* The work order open in the app.
* The parts and labour you want to quote, in the catalog. Every quoted line comes from the catalog; you can change its quantity and its price.
* The customer has an email on their record. Without one the quote is saved but nothing is sent.

## Steps

<Steps>
  <Step title="Build the quote">
    On the work order, open **Actions**, then **Quote**. Search the catalog, add the lines, and set the quantity and price of each. The subtotal, tax and total update as you go.
  </Step>

  <Step title="Send it">
    Tap **Send** and confirm. The customer gets "Your Comfort Hub quote for WO…" with the lines, the tax and the total, and an **Approve this quote** button. The button works for 30 days.
  </Step>

  <Step title="The customer approves">
    They tap the button and see **Thank you, your quote is approved**. Tapping it again shows **Already approved** and changes nothing.
  </Step>
</Steps>

## How you know it worked

* The technician gets a push: "… approved your quote", with the total, that opens the work order.
* The quoted lines are on the work order, charged to the customer and marked as added by the quote. The original lines are untouched.
* The same lines are on the work order in Zoho within a minute, and the billing decision runs again.

## If it did not work

* **"That link is not right"** means the link was cut short or was for another quote. Send the quote again.
* **"This link has expired"** means more than 30 days went by. Send the quote again; the fresh email has a fresh link.
* **The customer has no email** on their record: the quote is saved and nothing is sent. The engine writes the refusal to the integration ledger and marks it for a person to look at; see [What replaces the audit log](/handbook/running/what-replaces-the-audit-log). Add the email in Zoho and send again.

## Related

* [A visit in the app](/handbook/on-site/a-visit-in-the-app)
* [Complete a work order](/handbook/on-site/complete-a-work-order)
* [Emails we send](/reference/emails-we-send)
