# SmileLine Docs
Every written guide and API concept page, in full.
Endpoint reference lives in the OpenAPI document at https://docs-stage.smileline.io/openapi.json.
---
# Automations
Source: https://docs-stage.smileline.io/guides/automations
Nurture sequences and appointment reminders that message patients for you.
Automations send the messages your team would otherwise have to remember: nurture for new enquiries, reminders around appointments, follow-ups after a missed visit. Everything lives in **Settings → Automations**, split into two tabs:
* **Sequences** — multi-step nurture tied to a lead's journey. A sequence starts when a journey enters a stage (or is created, won or lost) and works through its steps: messages, waits, tasks, notes and stage moves.
* **Reminders** — fixed cards anchored to appointments: booking confirmation, pre-visit reminders, post-visit follow-up, missed-appointment recovery and cancellation messages.
New practices start with a ready-made library: default sequences for the main treatment groups and a standard set of reminder cards, all editable.
## How automations behave
* **Messages thread into the inbox.** Every automated send lands in the patient's conversation like a human-sent message; replies arrive in the shared inbox as usual.
* **Humans win.** When a patient replies, or a team member messages the patient manually, the running sequence stops — automation never talks over a live conversation. If a shared family contact replies and SmileLine cannot safely identify one patient, reply-sensitive sequences stop for every patient that contact represents.
* **Quiet hours.** Automated SMS and WhatsApp messages only send inside the practice's send window (default Monday–Saturday, 08:00–20:00, changeable under **SEO → Reputation → Setup**). Email is exempt.
* **Consent is checked at send time.** Channel opt-outs always block that channel. Under the *explicit consent* GDPR mode, an automated message holds until marketing consent is recorded for its channel.
* **Edits apply immediately.** Changing a live sequence affects leads currently mid-sequence: removed steps are skipped, new steps apply to anyone who hasn't passed them, and pausing a sequence freezes everyone in place without ejecting them. A message already prepared when the pause wins is marked as cancelled in the Inbox and cannot be manually retried. After you re-enable the sequence, its next scheduled check resumes that exact step and message instead of creating a duplicate.
Automated activity is always visible: sequence starts, stops and sends appear
on the patient timeline, and each lead's journey shows a chip with the
running sequence and a **Stop** button.
---
# Appointment reminders
Source: https://docs-stage.smileline.io/guides/automations/reminders
Confirmations, move notices, pre-visit reminders, post-visit follow-ups and no-show recovery — anchored to the appointment.
Reminders are fixed cards under **Settings → Automations → Reminders**. Each card is one message anchored to the appointment itself, so a reschedule recalculates any delivery that is still pending and a cancellation stops pending delivery.
| Card | When it sends |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| **Booking confirmation** | As soon as an appointment is booked. |
| **Appointment moved** | When an appointment is moved to a new time. |
| **Pre-visit reminder** | A set time before the appointment starts — the defaults are 48 hours (email) and 24 hours (SMS), and you can run several. |
| **Post-visit follow-up** | A set time after the appointment ends. |
| **Missed appointment follow-up** | When an appointment is marked as a no-show. |
| **Cancellation message** | When an appointment is cancelled. |
Each reminder reads as a sentence — "Send **SMS** **24** **hours** before the appointment" — followed by the template it sends. Click the template name to edit it. Automated SMS and WhatsApp reminders respect the practice send window; a reminder that comes due overnight goes out when the window opens. A WhatsApp reminder outside the 24-hour window is sent as the template's approved Meta template, with each placeholder filled from the body's merge tags in order; if a tag has no value for that patient, the reminder is skipped (Meta rejects an empty placeholder) and the skip is recorded rather than sent as a failing message.
Reminders that talk about an appointment still to come — the pre-visit
reminder, the booking confirmation and the appointment-moved card — are not
sent once that appointment has started. A confirmation arriving after the
visit tells the patient something untrue, so a reminder delayed past the
appointment is marked as not sent rather than delivered late. The
post-visit follow-up is unaffected by the clock: it describes something that
has already happened. The missed-appointment follow-up and the cancellation
message now also require the appointment to still be in the state they
describe — if a no-show is corrected to attended, or a cancellation is undone,
before the message goes out, it is not sent. An appointment-moved message also
requires the appointment to remain both upcoming and non-terminal.
## Add and remove reminders
**Add** on a card creates another reminder of that kind, and the bin icon on a row deletes one. Pre-visit and post-visit cards can hold several reminders — two pre-visit reminders (48 hours by email, 24 hours by SMS) is the usual setup. The event-driven cards hold one each, because a second would mean two messages for the same event.
One practice can keep at most 100 reminder rules switched on at once. The page
shows the active count. At the limit, switch off an existing rule or save the
new rule switched off; archived and switched-off rules do not consume the
active allowance.
The channel picker on each row shows the connection the reminder will send from — *SMS · +44 7700 900123*, *Email · Dental By Design* — read from **Settings → Channels**. Email always uses the practice's built-in sender; SMS and WhatsApp use the number assigned to the appointment's location when there is one, otherwise the **All locations** number, otherwise the oldest active one. A channel with nothing connected reads **Not connected** with a link to Settings → Channels, and the reminder is skipped until a connection exists. See [Sequences](/guides/automations/sequences#which-sender-a-message-step-uses) for the full rule.
Timing takes **minutes**, **hours** or **days**, and shows whichever unit represents the stored value exactly — a reminder set to 90 minutes reads as 90 minutes, not as an hour and a half rounded off. Timings save when you leave the box.
The event-driven cards — appointment moved, missed appointment, cancellation — send as soon as the event happens. Use **Add a delay** on the row if you would rather wait first, for example to give a no-show an hour before you chase them. Setting the delay back to 0 returns them to sending immediately.
Card edits apply when new reminder records are created. A reminder already
scheduled keeps the rule timing, channel and template content captured at the
time it was scheduled. Switching a card off cancels deliveries that have not
started.
Deleting a reminder archives the rule and cancels only deliveries that have not
started. Existing send-history and idempotency records are retained, so an old
delivery remains auditable and cannot be recreated by deleting its rule.
There is no undo for a deleted reminder — you would need to add it again,
and the new one starts with its own delivery history.
SmileLine does not retry a technically broken reminder forever. After ten
consecutive processing failures, that reminder delivery is skipped and the
patient timeline records that it needs staff review. Other reminders keep their
own independent delivery state.
There is a matching limit on rescheduling. An appointment whose time keeps
changing — usually one being edited repeatedly in a connected practice
management system — re-arms its reminders up to twenty times. After that the
reminder stops following the appointment, and the patient timeline records that
it needs staff review.
## Reschedules and cancellations
Reminders follow the appointment record:
* **Rescheduled** — reminders recompute against the new time. This includes a reminder whose send time had already passed: booking an appointment for tomorrow does not permanently lose its 48-hour reminder, and moving that appointment further out arms it again. A reminder that genuinely reached the patient stays in the history and is not sent again; one that never made it out to a provider is re-armed for the new time. The **Appointment moved** card, if enabled, tells the patient the new time — every time the appointment moves, not just the first.
* **Moved into the past** — a reminder recomputed against a time that has already passed is not sent. Recompute follows the live appointment, so the check is made against the new time rather than the one the reminder was written for.
* **Cancelled** — pending reminders are cancelled and the cancellation message (if enabled) goes out.
* **No-show** — remaining reminders are cancelled and the missed-appointment follow-up goes out.
* **PMS correction waiting** — if the PMS contradicts a backwards or terminal appointment fact, a reminder that comes due stops at the final provider boundary and is marked as not sent until an appointment editor resolves the correction. Keeping SmileLine's fact re-arms every interrupted reminder that is still relevant. Accepting the PMS fact recomputes time-anchored reminders, but does not create a retrospective booking, move, cancellation or no-show announcement.
A live PMS update that resolves the contradiction follows the same relevance
rules. A historical backfill is different: importing history never sends a
patient message. It records the interrupted occurrence as **Not sent —
historical PMS reconciliation**, while leaving the reminder eligible for a
later live reschedule. That old message cannot be retried from the Inbox; a
future live change creates a fresh occurrence with current appointment content.
## Practice management systems
If your PMS (for example Dentally) is connected, it probably already sends
appointment reminders. To avoid double-messaging patients, SmileLine
switches every reminder card **off** when a PMS connection activates. Turn a
card back on only after switching the equivalent reminder off in the PMS —
disconnecting the PMS does not switch them back on automatically.
Appointments that arrive from the PMS get the same reminders as ones booked in SmileLine — the cards make no distinction once they're enabled.
See [PMS integrations](/guides/settings/integrations#review-appointment-corrections)
for the correction review workflow. A reminder stopped by that review remains
recoverable. If it is still relevant, resolving the correction re-arms it with
a new delivery generation. If it has become irrelevant while staff review the
correction, the failed ledger remains eligible for a later appointment
reschedule instead of being made permanently terminal.
---
# Sequences
Source: https://docs-stage.smileline.io/guides/automations/sequences
Multi-step nurture that starts when a lead enters a stage and stops the moment a human takes over.
A sequence is an ordered list of steps that runs for each journey it matches. You'll usually have one per treatment group per stage — "Implant enquiry nurture" on the **New** stage, for example.
## How a sequence is chosen
When a journey enters a stage (or is created, won or lost), SmileLine looks for one enabled sequence with that trigger:
1. A sequence **bound to the journey's treatment** wins.
2. Otherwise the **default sequence** (one with no treatments selected) runs.
3. No match — nothing sends.
One enabled sequence per trigger, stage and treatment: the editor blocks overlaps and tells you which sequence already covers the combination.
## The sequence list
**Settings → Automations → Sequences** lists each sequence once, with the treatments it covers shown as chips on its row and the number of leads currently mid-sequence beside them. The **Active | Archived** switch above the list decides which set you're looking at.
Archiving a sequence stops it matching new leads and stops every lead currently mid-sequence, so you're asked to confirm — the confirmation tells you how many leads that affects.
## Create a sequence
Go to **Settings → Automations** and click **New sequence** (or click the
⚡ icon on a stage column of the journeys board).
Name it, pick when it **starts** — *a lead enters* a stage, *a new
enquiry arrives*, *a lead is won* or *is lost* — and which
**treatments** it covers. Leave treatments empty to make it the default.
Add steps with **Add step**. Each step is one of four kinds (below) and
has its own time.
## Reading the steps
The steps are a schedule. Every step has one time, **counted from the moment the sequence starts** — *Day 0*, *Day 2*, *4 hours*, *Day 1 · 4 hours* — and the list keeps itself sorted by that time. Two steps at the same time go out together: an email and an SMS both at *Day 0* is exactly how you send on two channels at once.
Open a step to change when it runs: a number, a unit (minutes, hours or days) *after the sequence starts*, and **Only during opening hours**. Change the time and the step moves to its place in the list.
A step marked **opening hours** can only ever land later than its time,
never earlier — a *Day 2* step whose second day is a Sunday goes out on
Monday morning. Set it on a *Day 0* step to send the first message during
opening hours only.
A step you haven't finished — a message with no template, a stage move with no stage — isn't saved, and nothing else on the list saves either until you finish or remove it. The step is marked **Not saved yet** and a banner at the top of the list says what's holding it up.
## Step kinds
| Step | What it does |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Send a message** | Sends a template by email, SMS or WhatsApp. WhatsApp steps need a template with an approved Meta (HSM) reference. |
| **Create a task** | Creates a task (assigned to the journey owner or a chosen team member), with an optional note for whoever picks it up. |
| **Move to stage** | Moves the journey to another stage — if that stage has its own sequence, the lead continues there. This is how sequences chain. A sequence can't move leads into its own stage. |
| **Add a note** | Appends an internal note to the patient timeline. |
Each step has its own pause switch — a paused step is marked **Skipped** and passed over without stopping the sequence.
### Which sender a message step uses
The **Channel** picker shows each channel with the connection it will actually send from — *Email · Dental By Design*, *SMS · +44 7700 900123* — read from **Settings → Channels**. A step stores the channel, not the connection, so a sequence built before a number is connected starts sending the moment one is.
* **Email** always sends from the practice's built-in sender, on your verified sending domain when you have one. A connected Gmail or Outlook mailbox is for the inbox only and is never used by a sequence.
* **SMS and WhatsApp** use the connection assigned to the patient's location when there is one, otherwise the connection set to **All locations**, otherwise the oldest active number. A practice with one number never has to think about this.
A channel with nothing connected reads **SMS · Not connected** in the picker, the step shows a **SMS not connected** badge on its row and on the sequence in the list, and the step is skipped for every lead until a connection exists. The sequence keeps running its other steps. The picker links straight to **Settings → Channels** to fix it.
Sequence messages are marketing messages. Before every send, SmileLine checks the patient's current preference for that channel against the practice's outbound-marketing policy. Missing or withdrawn evidence holds the step for a later recheck; it is never inferred from the enquiry itself. Marketing SMS includes the practice identity and STOP instruction, and marketing email includes an unsubscribe link and one-click unsubscribe headers. Appointment reminders remain transactional and use their separate reminder rules.
## When a sequence stops
A lead drops out of a sequence when:
* the **patient replies** on any channel (if *Stops early when the patient replies* is on — the default);
* a **team member messages** the patient manually — the human owns the conversation now;
* the **journey leaves the stage** the sequence is scoped to (and, if *Stops early when the lead moves to another stage* is on, on any stage change);
* the journey is **won or lost**, the patient **opts out**, or someone presses **Stop** on the lead's enrollment chip.
A lead never runs the same sequence twice at once, but can re-enter it after a past run ended — a lead that regresses and comes back through the stage gets nurtured again.
Sequences send from your connected channels (**Settings → Channels**). A
step whose channel has no active connection — or whose patient has no email
or mobile number — is skipped and logged on the timeline, and the sequence
continues.
If SmileLine repeatedly cannot process a sequence step because of a technical
error, it does not retry forever. After ten consecutive failed attempts, the
sequence stops and the patient timeline shows **Sequence stopped for review**
so a team member can investigate and follow up manually. A later matching
journey trigger can create a fresh sequence run; the failed run itself stays
stopped for audit history.
## Editing templates
Message steps use templates from **Settings → Templates**, edited through the
same dialog as the library — click **Edit template** on the step.
Email templates open in a visual editor: plain paragraphs read like a personal
email, and typing `/` inserts layout blocks (headings, lists, buttons, dividers,
sections, columns) when you want a designed one. **Image** below the editor adds
a picture from your practice's image library. Press `Escape` once to close
the `/` menu, and again to close the dialog. The canvas is 600px wide — the
email standard — and shrinks to fit a narrow screen.
Prefer to write the markup yourself? Switch **Visual** to **HTML** above the
editor and paste your own HTML, with a preview tab beside it. See
[Message templates](/guides/inbox/templates) for how the two modes differ.
Merge tags like `{{patient.firstName}}` and `{{location.phone}}` are literal
text in the template; they resolve when each message sends. Insert them from the
chip row under the editor, in either mode.
---
# Browser extension
Source: https://docs-stage.smileline.io/guides/browser-extension
The SmileLine Chrome extension puts a free on-page SEO report, link analysis and Google result positions one click away — and, signed in, your practice dialer.
The SmileLine extension for Chrome is a free SEO toolbar. Open it on any
page — your own site, a competitor's, a directory listing — and it reads
what search engines see. None of the toolbar features needs a SmileLine
account, and while you are signed out the extension sends nothing about your
browsing to SmileLine.
Signed in with the SEO & Ads add-on, one feature does talk to SmileLine: the
domain-metrics overlay on Google results sends the visible result hostnames
to your account to look up their authority scores (see
[Domain metrics](#domain-metrics-seo--ads-add-on)). Nothing else about your
browsing is sent.
Practices on SmileLine Voice can also sign the extension into their
account and take calls straight from the toolbar — see
[the dialer](#the-dialer) below.
## Install
Open the SmileLine listing on the Chrome Web Store and click
**Add to Chrome**.
Click the puzzle-piece icon in the Chrome toolbar and pin **SmileLine** so
it stays visible.
## The on-page report
Open any page and click the SmileLine icon. The popup analyses the page in
place:
* **Findings** — the same checks SmileLine's site audit runs: missing or
badly sized titles and meta descriptions, missing or duplicate H1s,
missing canonical, pages blocked from indexing, missing local business
schema.
* **On-page facts** — title and meta description lengths, word count,
heading structure, canonical URL, meta robots, robots.txt verdict for
this page, structured-data types, and hreflang entries.
* **Heading outline** — every H1–H6 in order, indented by level.
The report reads the page as rendered in your tab. It cannot see the
server's HTTP status or response headers, so those checks are left out
rather than guessed.
## Link analysis
The **Links** section counts internal, external, nofollow, sponsored and
UGC links, and can highlight each kind directly on the page — click a
category to outline every matching link, click again to turn it off.
**Check internal links** probes the page's same-origin links (up to 100)
and lists any that return an error, feeding the broken-link finding in the
report. External links can't be checked from inside the browser.
## Google result positions
On google.com and google.co.uk searches, the extension numbers each organic
result so you can read positions at a glance — useful when you're checking
where your practice ranks for "dentist in ⟨your town⟩" without counting
rows by hand.
### Domain metrics (SEO & Ads add-on)
Signed in to a practice with the **SEO & Ads** add-on, each numbered result
also shows the domain's authority metrics — domain rank (0–1000),
backlinks, and referring domains — under its title. Lookups come out of
your practice's monthly SEO allowance; results are cached for two weeks, so
repeat searches are free. Without the add-on (or signed out) the numbering
still works and nothing else is shown.
## The dialer
With **SmileLine Voice** enabled for your practice, the extension is also a
softphone that stays registered while Chrome is open.
Right-click the SmileLine icon and choose **Options** (or click **Sign in**
in the popup). Pick your practice region and click **Sign in to
SmileLine** — a SmileLine window asks you to approve the connection for
your practice. Anyone whose role can use the dialer may connect.
Click **Enable calling (microphone)** and allow the microphone when Chrome
asks. This is needed once per browser.
Once connected, the popup shows the dialer above the SEO report:
* **Incoming calls** ring with a Chrome notification — with the patient's
name when SmileLine recognises the number — and can be answered or
declined from the notification or the popup.
* **Outbound calls** start from the popup's dial pad, or by selecting a
phone number on any web page, right-clicking it and choosing **Call with
SmileLine**.
* **In a call** you can mute, hold, hang up and send key tones. Closing the
popup does not end the call.
* **DND** pauses ringing on this browser without signing out; calls
continue to ring your other SmileLine devices.
Signing out disconnects this browser's calling endpoint entirely — calls
stop ringing here until you sign in again.
While you are on a call the popup offers **Transfer**: it lists every colleague
who has calling set up, with their do-not-disturb state, and hands the caller
to that colleague's most recently used device straight away.
A ringing or live call in the popup also shows **Open in Smileline**, which
opens the matched patient's record — or the desk with the live call — in a
new tab. When a call that was ringing you is answered by a colleague, the
popup says **Taken by** and their name for a moment instead.
---
# Diary
Source: https://docs-stage.smileline.io/guides/calendar/diary
The clinical workspace's day — a column per practitioner or room on an hour rail shaded by the rota, a date picker that shows how busy each day is, booking by click or drag, editing in the card, a 3-day view, and a short-notice gap filler.
Open **Day** in the clinical workspace. The whole page is the diary: one line of controls above the grid, no heading. The page's address carries the date and the view, so a day can be bookmarked or shared.
## The controls
From left to right: **previous** and **next** (a day, or three weekdays in the 3-day view), **Today**, the date, and the jumps **+1W**, **+3M** and **+6M** (a week, three and six months on — the usual recalls); then **Day / 3 days / List**, the site (only with more than one), and icons for **Practitioners / Rooms** (only when the site has rooms), **Columns shown** (the eye), the colour mode, **Short notice** and print. Hover an icon for its name. In the grid you book from the slots themselves; the **List** view, which has none, keeps a **+ Book** button. Each column header shows its booking count. On the keyboard, **←** and **→** move a day (three weekdays in the 3-day view) and **t** returns to today.
The eye hides and shows columns and stays in the same place in every view: it lists practitioners, or the rooms in the room view. Its badge counts what is hidden.
## Finding a free day
Click the date. Three months open at once; the arrows page a month at a time and **Today** returns to today.
* Every day is tinted by how much of its bookable time is taken — green under 40 %, yellow under 70 %, orange under 90 %, red when it is full — and a small bar under the number shows the same thing without colour.
* Bookable time is each practitioner's rota inside the site's opening hours, less approved time off; someone with no rota counts the site's hours. Cancelled and no-show appointments do not count as booked.
* A grey day is a closed day or one where nobody is working.
* Hover a day for the figures: **6h 40m free of 8h · 3 booked**.
* The tint counts the practitioners you are showing. Hide the others with the eye to see one person's free days.
Click a day to open it. The arrow keys move between days.
## Reading the grid
* Each column is a practitioner (or a room; in the 3-day view, a practitioner under each day), headed by their avatar — their initials on their diary colour, the same one the eye menu lists them by. A former practitioner who still holds a booking keeps a column; a booking with no practitioner sits under **Unassigned**.
* Grey time is outside the practitioner's rota or the site's opening hours; hatched time is a closed day or an approved absence. A day a practitioner's rota does not cover — a Saturday for someone who works Monday to Friday — is grey from top to bottom. A practitioner without a rota at all is not shaded.
* A card shows the start time, the patient, the appointment type and the note. The whole card is coloured: by status out of the box (pending yellow, booked salmon, confirmed green, arrived blue, in the chair indigo, completed grey, no-show red). Small glyphs mark a first visit, lab work still out, a mobile number on file, an appointment managed by an external practice management system, and an online booking. Hover a card for the full summary.
* The colour mode switches the cards to the practitioner's, the room's or the appointment type's colour from Settings; a resource without a colour keeps the status colour, and the status's initial sits at the right of the card's first line.
* One red line marks the current time across today's columns.
## Booking from the grid
Click an empty slot to book it, or drag down (or up) over empty time to set the length as well. The slot stays outlined on the grid and the booking form opens beside it — where an appointment's card opens — with the date, the time (to five minutes), the length you dragged, and the practitioner or room of that column already chosen. The outline shows the times and the length — and the patient's name once you have chosen one — and is still the booking: drag it to another time or column, or drag its bottom edge for more or fewer minutes, and the form follows — and changing the date, time, minutes, practitioner or room in the form moves the outline. Click anywhere else, or **Cancel**, to drop it. On a touch screen, tap; a drag scrolls the diary. **Location** starts as the site the diary is on — change it in the form and the rooms on offer follow. A practitioner is always required; a site that requires a room asks for one. A pick list with eight or more entries has a search box at the top. The same form opens in a dialog from the **List** view's **+ Book** and from **Short notice**, and sits on the patient record.
The outline turns red when it runs into something: another booking of that practitioner (or of that room), or grey or hatched time — outside the rota or the site's hours, a closed day, an absence. **Book** then asks first. Over a booking, owners and managers give a reason the record keeps, as when a card is dragged onto a taken slot; nobody else can book there. Over grey or hatched time, **Book** becomes **Outside working hours — use anyway** and a second press books; moving the outline asks again.
Beside the search, **New patient** adds someone who is not on file yet and puts them straight into the booking; whatever you had typed in the search — a name, an email or a number — is already filled in. The form also takes:
* **Status** — **Booked**, or **Confirmed** when the patient has already said yes.
* **Lab work** — **None required**, one of the patient's lab cases still on its way (this visit becomes its fit appointment), or **New lab case…**, which opens the lab case form once the appointment is booked.
* **Short notice list** — **Yes** also puts the patient on the [waiting list](/guides/patients/letters-and-waitlist) as a short-notice request for anything sooner than this visit.
Taking an earlier gap from **Short notice** books a new appointment; it does not move this one. Cancel the later visit once the earlier one is booked.
**Lab work** and **Short notice list** appear only for members who can read lab cases and the waiting list.
Consultations booked from the Today queue land here too: the booked step of the [outcome wizard](/guides/today/outcomes-and-undo#book-the-slot-without-leaving-today) opens this grid in a dialog, and the slot the caller picks becomes an appointment with the journey's treatment on the card.
## Moving, resizing and chairside statuses
* Drag a card to another time or column. A dashed outline shows where it will land, snapped to five minutes, and carries the patient's name, the new times and the length. If that slot is already taken the card returns and the diary says so; owners and managers are offered an overbook with a reason the record keeps. A change made elsewhere in the meantime refreshes the diary instead.
* Drag the bottom edge of a card to change its length.
* Click a card to edit it where it is: the date and time, the appointment type, the length, the practitioner, the room, lab work, the short notice list and the note, then **Save**. **Status** offers the next chairside step (**Confirmed**, **Arrived**, **In chair**, **Fulfilled**, **No-show**) and applies as soon as you choose it, without **Save**. **Cancel appointment** asks for a reason; the icon beside the name opens the patient.
* Click anywhere outside the card to close it; that click never starts a booking.
* A booking an external practice management system manages cannot be moved or edited here: its card shows the details and offers only **Confirmed**; the provider owns its time and outcome. Fulfilled, cancelled and no-show bookings stay in place.
* A visit shared by several practitioners appears in each of their columns and moves in time only.
## 3-day view
The chosen day and the next two diary days, each split into a narrow column per practitioner (initials in the header, the full name on hover). Hide practitioners with the eye to widen the rest. A Saturday or Sunday appears only when it holds a booking or a rota window, so a Thursday shows Thursday, Friday and Monday. The rail runs 07:30–20:30 and stretches to anything earlier or later. Whenever today is on screen, the diary opens scrolled to the current time.
## Short notice
**Short notice** lists the free time of the days on screen that fits patients on the [waiting list](/guides/patients/letters-and-waitlist): short-notice requests first, matched to the requested practitioner, the appointment type's length and buffers, and the patient's earliest and latest dates. **Book** opens the booking dialog on that gap; once booked, the waiting-list request is marked booked. If that last step fails, the booking stands and the diary offers **Retry** rather than booking twice.
The gap finder reads this site's diary. A clinician booked at another site at that time can still be offered until the availability engine is shared with the diary.
## Printing
Print the page for the day sheet: the sidebar and the controls are left out and the grid prints landscape.
---
# Calendar
Source: https://docs-stage.smileline.io/guides/calendar/overview
A month at a glance — results on past days, workload on future days, and a drill-down behind every date.
The Calendar shows your practice month as a grid you can read in seconds: what each past day produced, and what each future day holds. Use it to spot busy days ahead and to review how a day, a week or the whole month went.
Open **Calendar** from the sidebar.

## Reading the grid
Each cell is one practice day (weeks start on Monday, times in your practice's timezone). What a cell shows depends on where it sits relative to today:
* **Past days show results:** revenue won that day, journeys won and lost, new leads, and how many leads were contacted.
* **Future days show workload:** appointments taking place and tasks due.
* **Today** (outlined) shows both.
Days with nothing recorded stay blank apart from the date, so the busy days stand out. Metric meanings:
| Metric | Counts |
| ----------- | ------------------------------------------------------------ |
| Revenue won | Deal value of journeys won that day |
| won / lost | Journeys closed as won or lost that day |
| leads | New patients created that day |
| contacted | Distinct patients reached by an outbound touch that day |
| appts | Appointments taking place that day (cancelled ones excluded) |
| tasks | Open tasks due that day |
The header sums the visible month — the same numbers with the same icons, so it doubles as a legend.
## Moving around
Use the arrow buttons next to the month name to step between months. When you're viewing a different month, a **Today** button appears to jump back to the current one.
The grid stays live: as leads arrive, tasks complete and journeys close, the numbers refresh on their own.
## Open a day's detail
Click any day to see everything behind its numbers.

The dialog is a fixed size whichever tab you are on, so switching between them never resizes the panel. It opens on a row of tabs — **Overview**, **Schedule**, **Bookings**, **Leads & contacts**, **Journeys** and **Tasks**. The list tabs show their row count, and a tab only appears when it has something in it, so the strip doubles as a summary of what the day contains.
### The four cards
**Overview** opens with four cards. Two of them pair figures that only mean something next to each other:
* **Appointments** — how many took place.
* **Booked time** — the chair time the day held, with the average appointment length beside it.
* **New leads** — how many arrived, with how many were contacted beside it.
* **Revenue won** — the value of journeys closed as won.
### How the day compares
Most cards carry a small green or red badge showing how the day compares with the rest of the month you're looking at. The comparison uses two different baselines, because the two kinds of number behave differently:
* **New leads and revenue won** are compared against the month's days **so far** — future days haven't happened yet, and counting them as zeroes would make every past day look like a record.
* **Appointments** are compared against **every** day of the month, since they are booked ahead.
**Booked time** is the chair time the day held — cancelled appointments released their slot and are left out, a no-show held its slot and is counted, which is the same rule the **Appointments** card uses. Hover a badge to see which baseline it used. Ranges of several days show totals with no badge — a multi-day total isn't comparable to a daily average.
### Breakdowns
Under the cards, up to four breakdowns of the same day appear two to a row — each only when there's something to show. Every one reads the same way: a row per category with its share of the day, the count on the right and its percentage beside it.
* **Appointment status** — the mix of booked, confirmed, fulfilled, cancelled and no-show, each status keeping its own colour. This panel counts cancelled appointments, so its total can be higher than the **Appointments** card, which matches the grid cell and leaves them out.
* **Contacts by channel** — calls, SMS, email, WhatsApp and recorded outcomes.
* **New leads by source** — where the day's leads came from.
* **Won by treatment** — the day's won value split by treatment.
### Schedule
The **Schedule** tab draws the day as an hour-by-hour rail with each appointment as a block sized by its real length, coloured by status. A cancelled appointment gave its slot back, so it's drawn hollow with a dashed outline; a no-show held its slot and stays solid. Two blocks side by side means two appointments at the same time. Click a block to open that patient's record.
The rail spans from the first booking to the last. The tab is absent on a day with no bookings, and on a multi-day range — a merged range has no single day's clock to draw.
### The row tabs
The remaining tabs list the rows behind the numbers:
* **Bookings** — every appointment with a status badge (**Booked**, **Confirmed**, **Fulfilled**, **Cancelled**, **No-show**, and so on) and its time.
* **Leads & contacts** — each new patient with their lead source and arrival time, then every outbound touch with its channel.
* **Journeys** — journeys closed as won or lost that day, with their value.
* **Tasks** — open tasks due that day.
Every row with a patient links straight to their record — click through to act on what you see. Opening the calendar from a booking notification lands you on **Bookings** with that appointment highlighted.
## Look at a range of days
To review more than one day at once, drag across the grid with the mouse, or click a day and then `Shift`-click another. The same dialog opens with the stats summed over the range and the lists merged in date order, each row labelled with its day. The **Schedule** tab is absent — a merged range has no single day's clock to draw.
A range can span up to 45 days, and each section in the dialog lists up to 200 rows — a note appears if anything was cut off, and in that case the schedule and breakdowns cover the rows shown rather than the whole range. On a phone, the month renders as a tappable day list instead of a grid; tap a day to open its detail, where the schedule, breakdowns and lists stack in one column.
---
# AI assistant
Source: https://docs-stage.smileline.io/guides/chat-widget/ai-assistant
Let the widget answer dental and practice questions, qualify leads, and connect booking-ready visitors to your online funnel.
By the end of this page your widget will answer visitors' questions — prices, opening hours, what an implant consultation involves — grounded in your own website and documents, and hand the conversation to your team whenever a human should take over.
## What you need
AI answers are part of the **AI assistant** add-on: **£99/month** for GBP
practices or **$129/month** for USD practices. The EUR catalogue has not been
approved yet, so EUR practices cannot enable the add-on until SmileLine support
confirms pricing. The add-on also unlocks reply suggestions and thread summaries
in the Inbox. Enable it under **Settings → Billing**, then flip **AI answers** on
in **Settings → Chat widget**.
## How it answers
When a visitor types a free-text question, the assistant:
* retrieves the most relevant passages from your **knowledge base** and answers from them — it never invents prices or availability. If your knowledge doesn't cover the question, it says the team will confirm and asks for contact details instead;
* answers general dentistry questions at patient-education level and recommends a consultation for anything personal — it never diagnoses;
* collects the visitor's name and number naturally during the conversation and saves the lead exactly like the guided qualifier does;
* adds a **Book an appointment** button to its reply when the visitor asks to book and [online booking](/guides/online-booking/setup) is live with at least one bookable appointment type. The button opens the full booking funnel in a new tab; it does not preselect a visit type or collect booking details in chat;
* hands off to your team when the visitor asks for a person, mentions pain, or cannot use online booking — the thread flips to human mode and stays with your team. Pain and human requests always take priority over a booking button.
Everything it says is in the Inbox thread, marked as assistant messages. The visitor sees a typing indicator from the moment their message lands until the reply arrives; a reply can take some seconds when the assistant reads your knowledge base and checks online booking first.
The booking button is offered only in the reply to an explicit booking request;
it is not a permanent shortcut in the widget. If online booking is paused, has
no bookable appointment types, or becomes unavailable before the reply arrives,
the assistant falls back to your team instead.
## Build the knowledge base
The **Knowledge base** card on **Settings → Chat widget** feeds the assistant. Three source types:
* **Website crawl** — enter your practice site's address; SmileLine reads up to 150 pages on that site's apex/`www` host pair and refreshes them weekly. Re-crawl on demand after big site updates. Links that leave that pair or fail the public-destination safety policy are skipped.
* **Documents** — upload PDFs, text, Markdown or HTML files (price lists, patient information leaflets), 10 MB each.
* **Snippets** — quick free-text facts: opening hours, parking, finance options. Snippets are the fastest way to teach it something.
Each source shows its ingestion status and how many passages it contributed. Removing a source takes its knowledge out of the assistant immediately. For document sources, the uploaded file is also queued for permanent deletion from storage.
Scanned PDFs with no selectable text can't be read — paste the content as a
snippet instead.
## Test before you switch it on
Click **Test the assistant** to chat against your current knowledge base without anything reaching your website or Inbox. Ask what a visitor would — "How much is whitening?", "Are you open Saturdays?" — and check the answers cite the sources you expect.
The assistant is suppressed the moment a team member replies in a thread —
once a human joins, the AI stays out of that conversation.
---
# Guided qualifier
Source: https://docs-stage.smileline.io/guides/chat-widget/scripted-flow
Configure the treatment picker, qualifying questions and contact capture the widget walks visitors through.
By the end of this page your widget will qualify enquiries the way your front desk would: which treatment, how urgent, and how to reach them — and file the result as a journey on your board.
## How the flow works
The qualifier is a short, scripted conversation:
1. The greeting offers your configured treatments as tappable chips (plus "Something else").
2. Picking a treatment asks up to three qualifying questions you define.
3. The widget collects the visitor's **name**, **phone number** (validated) and **email** (skippable), then asks for marketing consent.
4. The lead is created: patient matched or created, a journey opened for the mapped treatment, the whole Q\&A saved as a note, and an attribution touch recorded with intake method **chat**.
If the visitor abandons midway, the conversation still sits in your Inbox with everything they said so far — nothing is lost.
## Configure treatments and questions
On **Settings → Chat widget**, the **Guided qualifier** card lists the flow's treatments:
Click **Add treatment** and give the chip a **Button label** — this is patient-facing wording ("Straighter teeth"), not your internal catalog name.
Pick which catalog treatment it **opens a journey for**. Choose **Enquiry only** to capture the lead without opening a journey.
Add up to three questions. Fill **Answer chips** with comma-separated options for one-tap answers, or leave it blank for a free-text reply.
Good qualifying questions are the ones your treatment coordinators ask first — "How many teeth are you missing?", "When would you like to start?". The answers arrive as a note on the patient's timeline, so whoever picks up the lead has the context.
No treatments configured? The widget skips the picker and goes straight to
contact capture — it still works as a lead-capture form.
## Consent and the capture step
The consent line shown before the final step and the thank-you message are part of the flow configuration. Visitors answer with the two chips, or by typing **yes** or **no** (any capitalisation); anything else re-asks. Consent is recorded on the patient's marketing-consent flag — under explicit-consent GDPR mode, automated messages hold until it's granted.
If a message fails to send — a dropped connection, a busy moment — the bubble stays in the thread with a **Didn't send — tap to retry** link. Retrying resumes the same step; it never creates a duplicate answer or a duplicate lead. While a reply is on its way the widget shows **Sending…**, and **Still working…** if it takes longer than usual.
If SmileLine itself is briefly unavailable mid-conversation, the visitor's answers and messages are stored the moment they arrive and delivered once service returns, whether or not the visitor taps retry. An answer that only lands after the visitor has already moved on is placed in the thread as an ordinary message rather than applied to a question the flow has passed, so nothing is filed against the wrong step.
## What happens after the flow
Once the details are captured:
* Without the AI assistant, the thread flips to **human** mode — further visitor messages simply wait in your Inbox.
* With the AI assistant enabled, the visitor can keep asking questions and the assistant answers — see [AI assistant](/guides/chat-widget/ai-assistant).
---
# Set up the chat widget
Source: https://docs-stage.smileline.io/guides/chat-widget/setup
Add the SmileLine messenger to your practice website with one line of code.
By the end of this page the SmileLine chat widget will be live on your practice website, branded to match, and every conversation it captures will land in your shared [Inbox](/guides/inbox/conversations).
## What the widget does
The chat widget is a messenger that sits in the corner of your practice website. Out of the box it runs a guided qualifier: visitors pick a treatment, answer a couple of questions, and leave their contact details — the lead lands on your journeys board like any other enquiry, with full [attribution](/guides/lead-capture/attribution). With the AI assistant add-on it also answers free-text questions from your own knowledge base (see [AI assistant](/guides/chat-widget/ai-assistant)).
Every message — the visitor's answers, the bot's prompts, your team's replies — is one conversation in the Inbox on the **Live chat** channel. Replies you send from the Inbox appear in the visitor's widget instantly.
## Install it
Go to **Settings → Chat widget** and click **Set up the chat widget**. SmileLine creates the widget, its Live chat channel, and a hidden capture hook for its leads.
Copy the snippet from the **Install** card and paste it before the closing `