Settings · AI & Alerts
Notifications
Notifications decides who hears about appointments and calls: by email, by text message, or by webhook to systems you run yourself.
Quick Answer - 30 Seconds
To get notified: Account settings → AI & Alerts → Notifications → find the event → type an email address, a phone number or a webhook URL → press Enter → done. Each list saves itself.
Leave a list empty and nobody hears of that event. Account notices always reach you, whatever you set here.
What this controls
Six events, each with its own list of recipients:
| Row | When it fires |
|---|---|
| New booking | A customer books an appointment |
| Reschedule | An appointment moves to a new time |
| Cancellation | An appointment is cancelled |
| Emergency call | A caller reported an emergency, booked or not |
| Call back overdue | An escalation passed the promised window without being marked called back |
| Unbooked call | A bookable caller hung up without a booking |
The first three fire per appointment, not per lead. A chat that never books sends nothing.
Where to find it
Location: Account settings → AI & Alerts → Notifications
→ app.onepath.ai/settings/account/notifications

Company Owners and Account Admins manage this page from Account settings.
Add a recipient
Each row has one field, Add email, phone or webhook URL. OnePath reads what you type and decides how to reach it:
| You type | OnePath reads it as | What it sends |
|---|---|---|
Anything with an @, like dispatch@example.com | An email | |
A US or Canadian number, like (512) 555-0142 | Phone | A text message |
A web address starting with http:// or https:// | Webhook | A JSON POST to your system |
- Find the event.
- Type the recipient and press Enter (or a comma). Repeat for more people or systems.
- Wait for Notification preferences updated successfully. There is no Save button; the list saves itself.
Each entry shows an icon for how it is reached: an envelope, a phone or a webhook. An entry that fits none of them stays in the field with an error, and is not saved. A phone number from outside the US and Canada cannot be texted, so the page refuses to save until you remove it.
To remove a recipient, click the × on their chip. Each event has its own list, so bookings can go to sales by email and cancellations to a dispatcher's phone.
The subject reads New Appointment Booked - [customer name] - [appointment time] (or Appointment Rescheduled / Appointment Cancelled). A View appointment button opens the appointment in OnePath. Cancellations include the reason when one was recorded.
A call event's email says what was captured on the call and the caller's number, with an Open in OnePath button.
Text messages
Type a phone number into a row and that event is texted to it. There is nothing else to turn on.
Texts go out from your OnePath number, so your account needs one. You pick it under Voice & RCS Text Messaging. Without a number, the text does not go out.
Each text is short: what happened and who it is about, the details, and a link. A cancellation reads like this:
Appointment cancelled: Harper Quinn
HVAC / Repair · November 10, 8:00 AM – 10:00 AM CST
Sick this morning
https://app.onepath.ai/customers/1042/appointments/2318
When a text goes out
From 7 AM to 9 PM in your account's time zone, a text goes out right away. Overnight, it waits until 7 AM.
These go out right away at any hour, because a crew may be on its way before the morning:
- An Emergency call.
- A New booking, Reschedule or Cancellation for a visit that starts within the next 24 hours.
- A Reschedule that moves a visit away from a time within the next 24 hours.
What counts as a change through OnePath
Appointment notifications cover changes made through OnePath, on every channel:
- Your AI assistant books, moves or cancels a visit.
- A customer uses your online scheduler.
- Someone works a task in OnePath and books, moves or cancels a visit from it.
Changes in your field service software
A change made directly in your field service software sends nothing from OnePath: no email, no text and no webhook. If your office cancels a visit there, tell the crew the way you do today.
A visit that was booked directly in your field service software can still be moved or cancelled through OnePath. That change sends the email and the text, with a View conversation button in the email. It does not send a webhook.
Webhooks
A web address on a row sends that event as a JSON POST to your own endpoint, for a CRM, dashboard or automation tool.
- Type the endpoint URL into the row and press Enter. Add more if several systems need it.
- Click Send test webhook. OnePath posts a sample payload to the web addresses in that row and reports the response, for example Test webhook delivered — endpoint responded with HTTP 200. Email addresses and phone numbers in the row are left alone.
For your developer
Every event, the retry rules and a way to verify delivery are under Webhook events. The appointment and call bodies are under Webhook payloads. Send them those links.
In short: every request is a POST with Content-Type: application/json and an X-OnePath-Event header:
| Row | X-OnePath-Event | The body carries |
|---|---|---|
| New booking | appointment.created | The appointment, the service, the customer's contacts, the service address and the marketing attribution of the visit |
| Reschedule | appointment.rescheduled | The same, with the time it moved from |
| Cancellation | appointment.cancelled | The same, with the reason |
| Emergency call | call.emergency | The conversation, the customer's contacts, the caller's number, a summary and a link |
| Call back overdue | call.callback_overdue | The same, with the task |
| Unbooked call | call.unbooked | The same as an emergency call |
Payload example
{
"event": "appointment.created",
"occurred_at": "2026-07-18T12:00:00Z",
"notification_id": 123,
"test": false,
"data": {
"source": "onepath",
"id": 1,
"status": "scheduled",
"time_window_begin": "2026-07-20T14:00:00Z",
"time_window_end": "2026-07-20T16:00:00Z",
"summary": "AC repair",
"cancelled_reason": null,
"moved_from": null,
"service": { "id": 1, "name": "HVAC / Repair", "service_type": "Repair", "serviceable_type": "HVAC" },
"customer": { "id": 9, "full_name": "John Doe", "contacts": [{ "type": "phone", "value": "5125550100" }] },
"location": { "street": "7425 Maple Ridge Dr", "unit": null, "city": "Austin", "state": "TX", "zip_code": "78727", "country": "US", "location_type": "residential" },
"attribution": {
"vendor": "google_ads", "external_id": "summer_2026",
"utm_source": "google", "utm_medium": "cpc", "utm_campaign": "summer_2026", "utm_term": null, "utm_content": null,
"campaign_url": "https://example.com/?utm_source=google",
"lead_source": { "type": "url", "value": "https://example.com/?utm_source=google" }
}
}
}
What to expect:
attributionisnullwhen the visit carried no campaign data, andlocationisnullwhen the lead has no address yet.- Test sends have
"test": trueand sample data. - Delivery retries automatically, up to 5 attempts, on anything other than a
2xxresponse. Respond within 10 seconds; redirects are not followed.
Quick Tips
- ✅ Put a phone number on the Cancellation row - a text reaches a dispatcher who is away from their inbox.
- ✅ Split events across teams - each row has its own recipients.
- ✅ Test webhooks before relying on them - Send test webhook works on every web address in the row.
- ❌ Don't rely on these for changes made in your field service software - OnePath sends nothing for those.
Related
- Who receives hand-offs from your AI assistant: Escalations.
- The same settings during setup: Escalations & notifications during setup.