> ## 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.

# Emails we send

> Every email the engine sends, who gets it, what triggers it, and what is attached

Every email leaves through one sender that keeps a ledger and checks the address first; only allowed addresses are delivered to as written, and everything else goes to the owner instead. The rule is on [Email safety](/handbook/running/email-safety). The engine sends no alert email of its own: a problem the monitor finds becomes a condition on [Sentry](/systems/sentry), and Sentry does the mailing.

Times are Ottawa time; the engine's timers run in UTC, four hours ahead of Ottawa in summer.

| Email                | Subject                                        | To                                                                         | What triggers it                                                                                                                                                                                      | Attached                                                                                                              |
| -------------------- | ---------------------------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| Booking confirmation | Your Comfort Hub appointment on …              | customer                                                                   | an appointment is saved as scheduled with **Notify Client** on and a date today or later                                                                                                              | none; an **Add to calendar** link                                                                                     |
| Appointment moved    | Your Comfort Hub appointment has moved to …    | customer                                                                   | the date changes on a scheduled appointment with **Notify Client** on                                                                                                                                 | none; an **Update your calendar** link                                                                                |
| Appointment reminder | Reminder: your Comfort Hub appointment on …    | customer                                                                   | daily at 16:10, for every scheduled appointment tomorrow with **Notify Client** on and a customer email; sent once per appointment                                                                    | none                                                                                                                  |
| Invoice              | Invoice INV… from Comfort Hub                  | customer                                                                   | the invoice gets its QuickBooks counterpart, and is not void, paid or already sent                                                                                                                    | the invoice PDF; every certificate the job earned, as on [Certificates](/handbook/invoicing/certificates); a pay link |
| Invoice reminder     | A reminder about invoice INV… from Comfort Hub | customer                                                                   | daily at 10:15, for an emailed, unpaid, non-void invoice seven or more days past due; once per invoice                                                                                                | none; a pay link                                                                                                      |
| Invoice overdue      | Invoice INV… from Comfort Hub is overdue       | customer                                                                   | daily at 10:15, for the same invoice once it is twenty-one or more days past due; once per invoice                                                                                                    | none; a pay link                                                                                                      |
| Receipt              | Payment received for INV…                      | customer                                                                   | the engine records a payment on the invoice, whether or not it clears the balance; the body shows the amount paid and the balance left. See [How payments work](/handbook/payments/how-payments-work) | the receipt PDF and the current invoice PDF                                                                           |
| Quote                | Your Comfort Hub quote for WO…                 | customer                                                                   | a quote is saved as sent                                                                                                                                                                              | none; an approve button that works for 30 days                                                                        |
| Stocking order       | Purchase order … from Comfort Hub              | the supplier email on the order; replies go to the technician who saved it | a stocking order is saved with its PDF and has not been emailed                                                                                                                                       | the order PDF, named after the order number                                                                           |
| App login invite     | Your Comfort Hub app login                     | technician                                                                 | a technician is created active with an email, or an active technician's email changes; skipped when the technician already has an app login                                                           | none; a set-password button that works once                                                                           |

## When an email is skipped

Each sender re-reads the record when it runs and declines when the email no longer makes sense. A decline is written to the integration ledger with the reason, and some declines raise a human-review flag.

| Email                                                         | Skipped, no flag                                                                                  | Skipped, flagged for a person                                                   |
| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| Booking confirmation, appointment moved, appointment reminder | **Notify Client** off; not scheduled; date in the past; a reminder for a date later than tomorrow | no date; the customer has no email                                              |
| Invoice                                                       | void; already sent; not owed; no QuickBooks counterpart; amount due is zero                       | the customer has no email; the invoice has no pay-page token                    |
| Invoice reminder, invoice overdue                             | void; the invoice email never went out; nothing owed; not seven days past due                     | the customer has no email; no pay-page token                                    |
| Receipt                                                       |                                                                                                   | the customer has no email; the invoice has no work order and is not one of ours |
| Quote                                                         | not in the sent state                                                                             | no lines; the customer has no email                                             |
| Stocking order                                                | already emailed; no PDF yet                                                                       | the order names no supplier email                                               |
| App login invite                                              | no email; the technician is inactive; already has a login                                         |                                                                                 |

## The calendar link

The two appointment emails carry a signed link that downloads a calendar file for the visit: the day, the start of the arrival window, the window's length, the property's address, and the job's lines. The link works for 30 days or until the day after the visit, whichever is later. A link whose signature does not match is refused.

## Related

* [Email safety](/handbook/running/email-safety)
* [Scheduled jobs](/reference/scheduled-jobs)
* [Resend](/systems/resend)
