# Smileline Docs Every written guide and API concept page, in full. Endpoint reference lives in the OpenAPI document at https://docs.smileline.io/openapi.json. --- # Academy Source: https://docs.smileline.io/guides/academy Smileline's training videos and courses for dental teams, shared by every Smileline practice worldwide — watch, pick up where you left off, buy courses for your team, earn CPD certificates, comment, reply, report, run your practice's own channel and follow your team's progress. **Academy** (`/academy`) is Smileline's library of training videos and courses for dental teams. It is one community for every practice that uses Smileline, in every country: everyone sees the same videos and courses, and comments are shared across practices. Videos and courses come from Smileline's own channel and from the channels practices run themselves (see [Your practice's channel](#your-practices-channel)). ## Open Academy Open the menu at the bottom of the sidebar (your name) and choose **Academy**. Academy belongs to you rather than to a workspace, so it's there whether you work in the CRM or in the clinical workspace. Everyone at a practice can use Academy, whatever their role. It isn't available in a partner workspace, and it isn't in the Smileline phone app. ## Find something to watch The Academy home has up to four rows, each shown once it has something in it: * **Continue watching**: the videos you've started but not finished, most recently watched first; * **Smileline courses**: Smileline's newest courses; * **Courses from practices**: the newest courses from practices' channels; * **Latest videos**: the newest videos, from every channel. **See all** beside a row opens the full list, newest first: Smileline's courses on its channel page; every course, or every video, on one page. Search finds videos and courses by their title and description. Every word you type must appear, and accents and capitals don't matter, so "implantologia" finds "Implantología". Only the first 8 words of a search are used. Every video and course belongs to a channel. Click a channel's name to see everything it has published. ## Watch a video Click a video to open it, then press play: videos never start on their own. When a video has captions, they're on by default; you can switch them off in the player. Academy is only for people signed in to Smileline, so a link to a video opens only for colleagues who use Smileline. The player remembers where you stopped. Open the video again, from the home or anywhere else, and it carries on from that point. ### When a video counts as complete Smileline counts the time a video actually plays. Once that reaches 90% of the video's length, the video is complete. * Watching faster counts, up to twice normal speed. * Skipping ahead doesn't count, and nothing counts while the video is paused. * Watching a part again counts again. * Once a video is complete, it stays complete. Your progress follows you to every practice you belong to. Other members don't see it, with one exception: the owners, managers and agency staff of each practice you belong to see your whole Academy record on [Team progress](#team-progress). ## Courses A course is a set of videos, called lessons, to watch in order. The course page lists its lessons with a tick beside each one you've completed. Continuing a course opens the first lesson you haven't completed, or the first lesson once you've completed them all. A lesson counts in the same way as any other video (see [When a video counts as complete](#when-a-video-counts-as-complete)), so a video you completed on its own is already ticked in every course that uses it. A course has its own comments, one thread for the whole course, separate from the comments on each video. Some courses also issue a CPD certificate once you pass their quiz (see [CPD certificates](#cpd-certificates)), and some of Smileline's own courses are sold (see [Buying courses](#buying-courses)). ## Buying courses Smileline sells some of its own courses. Everything else in Academy is free for every practice, courses from practices' channels included. A course that's for sale shows its price, and a lock in place of its picture, until your practice buys it. Until then its lessons don't play and, on a CPD course, its quiz stays closed. Everyone can still open the course page, see its list of lessons, and read and join its comments. A link to one of its lessons opens that lesson's page with the course's price, and **Buy course** for those who can buy it, where the video would be; the lesson's comments and **Report** work as usual. ### Who can buy Your practice's owners and managers can buy courses. Agency staff can't, and neither can any other role: they see **Ask your practice's owner or a manager to buy it.** **Compare roles** on **Settings → Team members** shows this as **Buy Smileline courses for the practice**. ### What a purchase covers * **Your whole team.** Everyone at your practice can watch the course, including people who join later. If you work at more than one practice, the course plays while you're signed in to the practice that bought it. * **Every later edition.** When Smileline publishes an updated copy of the course (see [Editions](#editions)), your team gets it at no extra cost, and every edition shows **Bought**. Buying a course doesn't by itself give you a certificate: only a course whose page shows CPD hours issues one, once you pass its quiz (see [CPD certificates](#cpd-certificates)). ### Prices and tax Prices are in your practice's [billing currency](/guides/settings/billing#billing-currency) (GBP, USD or EUR) and before tax: they read "+ VAT", or "+ tax" in the United States. The invoice adds the VAT or sales tax that applies, worked out from your practice's billing address. A course with no price in your practice's currency shows **Not sold in your currency**. If Smileline changes a course's price while your purchase waits for payment, you still pay the price the purchase started with. ### Buy a course Open the course and click **Buy course**. Check the price and click **Buy course** again to confirm. Smileline invoices your practice and charges the card your practice pays Smileline with. If your bank asks you to confirm the payment, the card is declined or your practice has no card on file, click **Pay on Stripe's secure page**. It opens in a new tab: pay there. Once the payment goes through, the course page shows **Bought for your team** and the lessons play for everyone at your practice. Smileline charges the card once and never tries it again by itself: if that payment doesn't go through, finish on Stripe's secure page. A double click, or two managers buying at the same time, makes one purchase and one invoice. While a purchase waits for payment, the course page shows **Waiting for payment** and the amount due, with three buttons: * **Finish payment** carries on with the purchase, at the price it started with, and shows **Pay on Stripe's secure page** again while it still needs paying. * **Check payment** asks Stripe now, for example just after you've paid on Stripe's page. Smileline also checks by itself while your team uses Academy: every minute during the purchase's first hour, then every hour. * **Cancel purchase** cancels the unpaid invoice. You can buy the course again later. "Smileline is still confirming this payment with Stripe" means an earlier step is still being confirmed: wait a minute, then try again. If your practice hasn't set up billing with Smileline yet, the course page says so: an owner sets it up on **Settings → Billing** first. If tax needs your practice's billing address, an owner adds it from **Settings → Billing** with **Manage billing**; then try again. Each purchase is an invoice of its own, separate from your subscription. Owners find it with your practice's other Smileline invoices, through **Manage billing** on **Settings → Billing**. ### Refunds and disputes To ask for a refund, click **Support** at the bottom of the sidebar and tell us which course. * **A full refund** ends your team's access to the course: its lessons stop playing and its quiz closes. A partial refund leaves access as it is. * **A dispute** (a chargeback: your practice disputes the payment with its bank or card issuer) ends access as soon as Smileline sees it, whatever the dispute's outcome. If it was a mistake, contact Support. Either way, what your team earned stays: their progress, the lessons they completed, their quiz passes and their certificates. A certificate already issued stays valid and keeps checking. Anyone who passed the quiz before access ended can still get their certificate, or correct it, from **Your certificates**; anyone who hadn't passed needs the course bought again to take the quiz. A lesson someone already has open can keep playing for up to an hour. After a refund or a cancellation, your practice can buy the course again. ## CPD certificates Some courses issue a certificate for your continuing professional development (CPD). Their course page shows the CPD hours, the course's CPD provider and its edition, and its details say what the course covers and who quality assured it. The provider made the course and is responsible for it: Smileline for its own courses, or the practice whose channel publishes it. Smileline's own courses are quality assured by a dentist on the General Dental Council's register, named with their GDC number. A practice names who quality assured its course; Smileline doesn't review practice courses. ### Earn a certificate Complete every lesson of the course (see [When a video counts as complete](#when-a-video-counts-as-complete)). Click **Take the quiz** and answer every question. You need 70% to pass. Once you pass, click **Get your certificate**. Check your name as it should be printed and, if you like, add your registration number. Click **Print or save as PDF**. The certificate fits one landscape A4 or US Letter page. The quiz opens once you've completed every lesson. On a course Smileline sells, it also needs your practice to have bought the course (see [Buying courses](#buying-courses)). It has at least 5 questions, and the pass mark is 70% on every course. You can try as often as you like: each attempt shows your score but never which answers were wrong, and only a pass is recorded. Your first pass stands. If a lesson you haven't completed is no longer available, because its channel deleted it or Smileline took it down, the course page says so and you can't take that edition's quiz. ### What your certificate says Certificates are always printed in English. Their wording follows the country of the practice you're signed in to when the certificate is issued: | Practice's country | Certificate | It prints | | ------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | United Kingdom | **Verifiable CPD certificate** | your name and GDC number; the course, its edition and its provider; when you passed and when it was issued; the verifiable CPD hours; the learning content, aims, objectives and anticipated outcomes; the GDC development outcomes the course meets; who quality assured it; and the provider's confirmation that the information is full and accurate and that the CPD has been quality assured | | United States | **Certificate of completion** | your name and license number; the course, its edition and its provider; when you passed and when it was issued; the hours of instruction; the objectives; and a note that the course has not been reviewed or approved by ADA CERP or AGD PACE, and that your state dental board decides whether the hours count for continuing education | | Every other country | **Certificate of completion** | your name and registration number; the course, its edition and its provider; when you passed and when it was issued; the hours; the learning content and objectives; who quality assured it; and a note that your regulator decides whether it counts towards your CPD | Your registration number is printed only if you give it, and no certificate says a course is accredited. A certificate for a practice's course also says that the practice created the course and is responsible for its content and its quality assurance, and that Smileline hosts the course and records your completion. If you work at practices in more than one country, switch to the practice whose wording you need before you click **Get your certificate**. Dates are printed in UTC, so a quiz passed late in the evening in the United States can show the next day's date. ### Correct your name or number Open the certificate and click **Correct name or number**. Smileline issues a new certificate in place of the old one, worded for the practice you're signed in to at the time. You only ever have one current certificate for each edition of a course: checking the old one shows that it was replaced. ### Your certificates **Your certificates**, on the Academy home, lists every course you've passed, newest first, with its certificate. A pass keeps its certificate even if the course is later unpublished, taken down or deleted, or your practice's purchase of it is refunded: get, view or correct the certificate from here. ### Editions A CPD course can't change once its provider declares it. To update it, the provider publishes an updated copy: the next edition, with its own quiz and certificate. Your pass and your certificate belong to the edition you took, and the lessons you've completed count in every edition that uses them. ### Check a certificate Anyone can check a certificate without a Smileline account: an employer, an inspector or a regulator. Scanning its QR code opens Smileline's check page, which shows what the certificate says and whether it's current or was replaced by a correction. Without the QR code, open the address printed beside it, such as `eu.smileline.io/c`, and type the certificate's 24-character code. The EU and US addresses both check every certificate. Anyone you give the code to, or a copy of your certificate, can see what's printed on it. ### How long certificates are kept Smileline keeps each certificate for 10 years from the day it's issued. If your Smileline account is deleted, your quiz passes and certificates are deleted with it, and their codes no longer check. Save your certificates as PDFs first if you want to keep a copy. ## Comments and replies You can comment under any video or course. Your comment appears straight away, with your name and your practice's name, and every Smileline user in every country can read it. Write as you would in a professional forum, and never include anything that could identify a patient. * Comments are listed newest first. * Reply to a comment to answer it. Replies sit under the comment, oldest first, and go one level deep: you reply to a comment, not to a reply. * A comment can be up to 4,000 characters. * If posting fails, for example because you lost your connection, your text stays in the box, and so does anything you type while a comment is posting. Try again: sent unchanged, the comment is posted once, never twice; if you edit it first, it's posted as a new comment. So that nobody can flood Academy, one person can post up to 30 comments and reports a minute. Getting or correcting a certificate, and saving or copying a course's CPD declaration, count towards the same 30. ### Delete your comment You can delete your own comments, but never anyone else's. A deleted comment that has replies stays as a short note saying it was deleted, so the replies under it still make sense. A deleted comment with no replies disappears. A practice's owners and managers can also hide comments under their own channel's videos and courses (see [Hide comments on your content](#hide-comments-on-your-content)). A hidden comment follows the same rule, showing **Hidden by the channel.** while it has replies. If your Smileline account is deleted, your comments are cleared in the same way, without your name, and your progress, quiz passes and certificates are deleted (see [How long certificates are kept](#how-long-certificates-are-kept)). ## Report something You can report any video, course, comment or channel that breaks the rules, Smileline's own included: click **Report** beside it. Choose the reason that fits best and, if you like, add a note of up to 1,000 characters saying what's wrong. | Reason | When to choose it | | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | | **Illegal content** | It breaks the law. | | **A patient can be identified** | A patient could be identified from it (see [No identifiable patients](#no-identifiable-patients)). | | **Copyright: it uses someone else's work without permission** | It uses someone else's video, music or images without permission. | | **False claims that damage someone's reputation** | It makes a false statement that harms someone's reputation. | | **Harassment or bullying** | It bullies, abuses or threatens someone. | | **Harmful or unsafe clinical advice** | It shows or recommends clinical practice that is unsafe or misleading. | | **Spam or advertising** | It's advertising, repetition or links that don't belong. | | **Something else** | It breaks the rules in another way. | Your report goes only to Smileline's moderators, and you see a confirmation once it's sent. Reporting the same thing again while your first report is still open changes nothing; once Smileline has dealt with it, you can report it again. ## How Smileline moderates Comments go live without being checked first. Smileline reviews everything that's reported, starting with illegal content and patient privacy. * Smileline approves each practice's channel before it can publish anything (see [Apply for a channel](#apply-for-a-channel)). * Smileline can take down any video, course or comment. It disappears for everyone, and the comments under a video or course disappear with it. * A take-down can be undone if it turns out to be a mistake. * When Smileline takes down a comment, its text is kept, visible only to Smileline's moderators, in case of an appeal or a legal dispute. * Smileline can suspend a practice's channel. Everything on it disappears for everyone and stops playing until Smileline reinstates it (see [If Smileline suspends your channel](#if-smileline-suspends-your-channel)). To question a decision, click **Support** at the bottom of the sidebar and tell us which video, course, comment or channel it was. ## No identifiable patients Patients must never be identifiable in Academy. A video must not show anything that could identify a patient, on its own or together with something else: a face, a name, a date, a record or radiograph label, a voice, a tattoo or any other detail. Footage inside the mouth is fine when nothing else in the video identifies the patient. Everyone who uploads a video, Smileline included, confirms this for every upload. The same rule applies to comments: never write a patient's name or details. If you spot a patient who could be identified, report it with **A patient can be identified**. Smileline looks at those reports first. ## Your practice's channel Your practice can run its own Academy channel and publish videos and courses for every Smileline practice to watch. Smileline approves each practice's channel once; after that, what you publish goes live straight away, without being checked first. ### Who runs it Only your practice's owners and managers run its channel: they apply for it, upload, publish, declare courses for CPD, delete and hide comments. Agency staff can't, although they otherwise have a manager's access, and neither can any other role. **Compare roles** on **Settings → Team members** shows this as **Run the practice's Academy channel**. Owners and managers open the channel's studio from **Your channel** on the Academy home. The studio lists everything on your channel, drafts included. ### Apply for a channel Open **Academy** and click **Your channel**. Enter the channel's name (your practice's name is filled in) and, if you like, a description of what it will offer. A name can be up to 200 characters and a description up to 5,000. Read the channel terms and tick the box to accept them for your practice, which confirms that you may accept them on its behalf. Then send the application. Your channel then waits for Smileline's approval. Meanwhile you can change its name and description and prepare courses as drafts, but you can't upload videos, publish anything, or save or declare a course's CPD. If Smileline turns the application down, your studio shows the reason. Deal with what it mentions and click **Apply again**: you accept the terms once more, and the channel waits for approval again. Once approved, your channel never needs approving again. You can rename it or change its description at any time. ### Upload and publish Uploads open once your channel is approved. In your studio, click **Upload a video** and choose the file. A video can be up to 10 hours long. Give it a title, a description if you like, and its **Spoken language**: captions are written automatically in that language. Choose **None (no captions)** for a video without speech. Confirm each statement of the upload declaration, including that no patient can be identified from the video (see [No identifiable patients](#no-identifiable-patients)). Every upload, Smileline's included, confirms them. Keep the page open while the file uploads. If the upload stops, **Resume** carries on from where it stopped. The video arrives as a draft. Once it has finished processing, click **Publish**: every practice can watch it straight away. **Unpublish** turns it back into a draft. When captions can't be written automatically, for example because the video has no audio or is too long, **Upload captions (.vtt)** adds a WebVTT file of up to 10 MB. It waits while captions are being written automatically, for example after a change of the video's language. Until Stream confirms a caption file, another caption upload, a change of the video's language and **Check again** wait for it. Both settle by themselves, so try again in a few minutes. To build a course, click **New course**, give it a title, add its lessons (videos from your channel) in the order to watch them, and click **Publish**. A video that's a lesson of a published course plays inside that course even while the video itself is a draft; it just isn't listed on its own. ### Declare CPD for a course Your practice can issue CPD certificates for its own courses (see [CPD certificates](#cpd-certificates)). Declaring a course makes your practice its CPD provider, responsible for its content and its quality assurance. Smileline doesn't review practice courses, and every certificate names your practice as the provider. In your studio, click **CPD** beside the course. Fill in the declaration in English, as every certificate prints it: the provider's name; the learning content, aims, objectives and anticipated outcomes (up to 600 characters each); the GDC development outcomes the course meets (at least one of A to D); the CPD hours, printed exactly as you enter them; and who quality assured the course, a person or a body, with their GDC number if they have one. Write the quiz: 5 to 100 questions, each with 2 to 6 answers and the right one marked. Learners need 70% to pass, the same on every course, and can try as often as they like. Click **Save draft** whenever you like. Learners don't see a draft. When the course is finished, tick each statement to confirm it and click **Declare edition**. Declaring confirms, for your practice, that you're the course's CPD provider, that the person or body you named quality assured it, and that the information is full and accurate. You can declare a course only when it has lessons and every one is ready to play, with its captions finished: written, or found impossible to write automatically. A video still processing, captions still being written or a caption file still uploading holds the declaration back: wait for it, then try again. #### What can't change Once declared, the course is fixed: its title, description and lessons; each lesson video's title, description, spoken language and captions; and the declaration and quiz. You can still publish and unpublish the course and its videos, and delete them. A video stays fixed while it's a lesson of any declared course that hasn't been deleted. Deleting a declared course frees its videos, and the certificates it issued stay valid. If you delete a lesson video of a declared course, or Smileline takes it down, learners who hadn't completed it can no longer take that course's quiz. #### Make an updated copy To change a declared course, click **Make an updated copy**. You get the next edition: a new draft course with the same title, description, lessons, declaration and quiz. Change what you need, then declare and publish it. To change a lesson video's text or captions, replace it in the copy with a new upload. Unpublish the older edition when you're ready. Its certificates keep their edition and can still be checked, and learners who passed it can still get their certificate. Learners keep the lessons they've completed: those count in every edition that uses them. ### Delete videos and courses **Delete** removes a video for everyone at once and deletes its file for good, so it can't be undone. Deleting a course leaves its videos on your channel. You can delete anything on your channel at any time, except a video Smileline has taken down: it's kept for appeals and as evidence, so only Smileline can delete it. Your studio marks what Smileline took down and shows its note. For courses declared for CPD, see [What can't change](#what-cant-change). ### Hide comments on your content Your practice's owners and managers can hide a comment under your channel's own videos and courses: click **Hide** beside it and confirm. In its place readers see **Hidden by the channel.** while it has replies, so the conversation still makes sense; a hidden comment without replies disappears. Smileline keeps its text in case the author asks Smileline to review the decision. Hide only comments that break the Academy rules. Never hide a comment just because it criticises your practice or your content: the channel terms you accepted forbid it. ### If Smileline suspends your channel Smileline can suspend a channel that breaks the rules or the channel terms, and suspends the channel of a practice that closes its Smileline account. While your channel is suspended: * its videos and courses, and the comments under them, disappear from Academy for everyone; * none of its videos plays any more, though one someone already has open can keep playing for up to an hour; * your studio still lists everything, with Smileline's note but without previews. You can't upload, publish, or save, declare or copy a course's CPD, but you can still unpublish and delete. If Smileline reinstates the channel, everything you'd published comes back. To question a suspension, click **Support** at the bottom of the sidebar. ### Selling your courses **Coming soon — not yet available.** Practices can't sell their courses yet. Until selling opens, every course on a practice's channel is free for every practice. When selling opens, a practice whose channel Smileline has approved will be able to put a price on its own courses and sell them to other practices through Smileline: * **Smileline is the seller.** It sells your courses in its own name: it invoices the buying practice, adds the tax and takes the payment, the same way as for its own courses (see [Buying courses](#buying-courses)). * **Your share goes to your Stripe account.** When a buyer's payment goes through, Smileline transfers 80% of the price before tax to the Stripe account your practice connected on **Settings → Payments & deposits**. It keeps 20% and pays Stripe's fees from it. * **Your practice's owner accepts the seller agreement** for that Stripe account before the first sale. If your practice changes or disconnects the account, selling stops until the owner accepts again. * **Your team watches free.** Your practice's own priced courses play for everyone at your practice without buying them. Selling will open to practices in the United Kingdom and in the European Union countries Smileline serves, paid into a Stripe account in one of those countries. Practices in the United States won't be able to sell at first. To be ready, connect your practice's Stripe account (see [Set up booking deposits](/guides/deposits/setup#connect-stripe)) and apply for your channel (see [Apply for a channel](#apply-for-a-channel)). ## Team progress Owners, managers and agency staff can follow their team's learning: click **Team progress** on the Academy home. Other roles don't see it. It lists every member of your practice, including those who haven't watched anything yet, with: * the courses they've completed and those they're part-way through; * how many videos they've completed; * when they last watched anything. Open a member to see each course they've started: whether it's in progress or completed, how many of its lessons they've completed, and when they last watched it. Team progress shows each member's **whole** Academy record, not only what they watched while signed in to your practice. Progress belongs to the person, not to a practice, so someone who also works at another Smileline practice shows the same record in both. A course counts as completed once every lesson it has now is completed, so a completed course shows as in progress again if it gains a lesson. A course that's no longer available (unpublished, taken down or on a suspended channel) isn't listed, but the videos completed in it still count towards the member's videos completed. --- # Automations Source: https://docs.smileline.io/guides/automations One timeline of the moments in a lead's journey, with every message each moment sends. Automations send the messages your team would otherwise have to remember: a welcome for a new enquiry, a nudge after an unanswered call, the booking confirmation, the reminder the day before, a follow-up after a missed visit. **Settings → Automations** shows them as one timeline of fixed steps, from top to bottom in the order a lead meets them. Each step lists every message it sends, in send order — when, on which channel and which message — and opens its own page when you click it. New practices start with a ready-made library: follow-ups for the main treatment groups and a standard set of booking messages, all editable. ## The steps The steps are grouped in five phases: **Enquiry**, **Contact**, **Booking**, **Visit** and **Outcome**. **The visit** sits between **Before the visit** and **After the visit** as a marker. A practice that keeps its recalls in Smileline's clinical workspace also has a sixth, **Recall**, at the end — see [Recall reminders](/guides/automations/recalls). | Phase | Step | Starts when | Booking messages | Follow-ups | | ------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ---------- | | Enquiry | **New enquiry** | A lead lands in New — a new enquiry, or one moved back there. The **Also for ad enquiries** tab runs as well for an enquiry from a paid ad. | — | Yes | | Contact | **Couldn't reach them** | **First try**: the lead moves to Contact Attempted, usually on its first **No answer** or message sent on Today. **Try 2** to **Try 10**: **I called but didn't speak to them** on that attempt. **Later tries**: any later attempt without a tab of its own. | — | Yes | | Contact | **Spoke to them** | **First conversation**: the lead moves to Contacted. **Thinking about it** and **Call back later**: that answer is recorded on Today. | — | Yes | | Booking | **Booked** | Any booking — on Today, from the board or a patient's record, in the diary, online, by AI phone or in your practice system. **If plans change**: the booking is moved or cancelled. | Yes | Yes | | Booking | **Before the visit** | Every upcoming booking, counted back from its start. | Yes | — | | Visit | **After the visit** | The visit ends (booking messages) or the lead is marked attended (follow-ups). | Yes | Yes | | Visit | **Didn't turn up** | The visit is marked as a no-show. | Yes | Yes | | Outcome | **Going ahead** | The lead is recorded as going ahead, or moved to the going-ahead stage. | — | Yes | | Outcome | **Not proceeding** | The lead is closed as not proceeding. | — | Yes | | — | **Your stages** | A lead is moved to a stage your practice added to its board. Shown only when your board has one. | — | Yes | | Recall | **Recall due** | A patient's recall falls due, counted from its due date — from four weeks before to 18 months after with the recommended schedule. See [Recall reminders](/guides/automations/recalls). | Recall messages | — | Each step on the timeline says where it stands — **On**, **Off**, **Not set up** or **Needs attention** — and flags what needs fixing: **SMS not connected** (or another channel), **WhatsApp not approved**, or **Online link empty** (see [Bookings typed on Today](/guides/automations/reminders#bookings-typed-on-today)). When a connected practice management system reads your appointments and booking messages are on, a warning above the timeline reminds you to switch off the matching reminders in that system, or patients get both. The ⚡ on a column of the [journeys board](/guides/journeys/boards-and-stages) opens the step for that stage. With more than one board, **Board** at the top picks the board whose stages you're looking at: follow-ups on a stage belong to that board. ## Booking messages and follow-ups A step holds up to two kinds of message, fired by the same moment: * **Booking messages** go out for every booking — a lead or a regular patient. They're counted from the booking itself, follow the visit when it moves, and stop if it is cancelled or missed. See [Booking messages](/guides/automations/reminders). * **Follow-ups** go to leads. They run as a schedule of steps — messages, tasks, notes and stage moves — and stop when the patient replies or the lead moves on. See [Follow-ups](/guides/automations/sequences). Both are service messages: they reach every patient whatever marketing consent they've given, even when your outbound-marketing policy is explicit consent only, and carry no STOP line or unsubscribe link. An opt-out still counts, one channel at a time — a patient who replied STOP to your texts gets no texts, but still gets your emails. A WhatsApp template Meta files as marketing keeps the marketing rules. ## Messages for one treatment **For** at the top of the page switches between **Standard** and each of your treatments. Standard messages run for everyone whose treatment has none of its own. A treatment's own messages replace the standard ones on that step — booking messages and follow-ups separately — and only while they're switched on. A dot in the list marks the treatments that have messages of their own. You only set up the steps you want to be different: with a treatment picked, each step shows **Own messages** where the treatment has messages of its own, and **Uses standard** everywhere else — even where the standard step sends nothing. On a step's page, with a treatment picked, each section is in one of three states: * Its own messages — edit them as usual. * Uses the standard ones — the section says so (**Uses the standard follow-ups · 2 emails · 1 SMS**). Click **Customise for** the treatment to copy what runs now into the treatment's own messages, then change them. * Nothing set up — add the first one: **Add step** under Follow-ups, or the dashed row under Booking messages. A set of follow-ups that covers several treatments says **Also used for** and names them: a change applies to all of them. Removing the last follow-up from a treatment's own set leaves it empty, so that treatment gets no follow-ups on that step. Switch **Own follow-ups for** the treatment off to give it the standard ones again. Deleting a treatment's last booking message of a kind returns that treatment to the standard ones for that kind; the confirmation says so. ## Edit a step Go to **Settings → Automations** and click the step. Its page opens with the timeline along the top, each step's dot coloured by how it stands, so you can move to the next step without going back. Pick the moment when the step has several: a tab such as **Thinking about it** or **If plans change**, or a try on the row of tries under **Couldn't reach them**. A line above the sections says what starts the step (**Runs when**), and each section says where its times are counted from. Add, change or remove messages under **Booking messages** and **Follow-ups**. A step with no follow-ups yet saves them the moment you add the first complete message — there is nothing to create first. ## How automations behave * **One moment, one step.** However a lead was booked — on Today, from the board, in the diary, online, by AI phone or in your practice system — it fires **Booked**. The same goes for attending, missing a visit, starting treatment and not proceeding. * **Booking messages follow bookings, follow-ups follow the lead.** A second booking for a lead who is already booked sends its own booking messages, but doesn't start the **Booked** follow-ups again. * **Calls.** **First try** runs on the first unanswered try, and **Later tries** never does. When **They're thinking about it** or **They want to be contacted again later** also moves the lead to Contacted for the first time, the call result's follow-ups run instead of **First conversation**. * **Automations only move leads forward.** A **Move to stage** step never takes a lead back to an earlier stage. The one backward move is a new booking for a lead in Failed to Attend, which takes it back to Consultation Booked. * **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 follow-ups stop — automation never talks over a live conversation. If a shared family contact replies and Smileline cannot safely identify one patient, reply-sensitive follow-ups 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. * **Opt-outs are checked at send time.** A message the patient can't receive is skipped and logged on the timeline, never held indefinitely. * **Follow-up edits apply immediately.** Changing live follow-ups affects leads currently in them: removed steps are skipped, new steps apply to anyone who hasn't passed them, and switching the follow-ups off freezes everyone in place without ejecting them. A message already prepared when the switch wins is marked as cancelled in the Inbox and cannot be manually retried. After you switch them back on, the next scheduled check resumes that exact step and message instead of creating a duplicate. Booking-message edits apply to bookings made from then on. Automated activity is always visible: follow-up starts, stops and sends appear on the patient timeline, and each lead's journey shows a chip with the running follow-ups and a **Stop** button. ### Older setups Follow-ups made under a starting point the timeline no longer uses — every new enquiry, the first unanswered call, entering the going-ahead stage — are copied to the matching step when your practice moves to the timeline, keeping their switches, treatments and timings. Where your own follow-ups and the library's covered the same moment and treatment, yours win. Any still on an old starting point show as an **Older setup** tab on their step, with their own **Runs when** line. An original that was copied over but still has leads part-way through says **Finishing 3 leads**: it starts nobody new, finishes the leads already in it, and disappears once nobody is left. Links to older automation pages still open the right step. --- # Recall reminders Source: https://docs.smileline.io/guides/automations/recalls Remind patients when their check-up or hygiene visit falls due — from four weeks before to 18 months after — with a one-tap link to book it. Recall reminders bring patients back for the visits their recalls schedule: an examination, a hygiene visit, a periodontal review. They sit on the **Recall due** step, in the **Recall** phase at the end of the [automations timeline](/guides/automations), and go out at set times before and after each patient's due date until the patient books. Recall reminders work for practices that keep their recalls in Smileline's clinical workspace (see [Patient forms and recalls](/guides/patients/forms-and-recalls#recalls)). If your recalls live in another practice management system, that system's own recall messages carry on and the **Recall due** step doesn't show. ## How a patient's recall cycle works A patient's reminders follow their **earliest due recall** — of their active recalls, the one due soonest (a paused recall doesn't count). Every message is timed from that due date and goes out at **9:00**, in the time zone of the recall's site. One message covers every recall the patient has due within a week of it: a patient whose examination and hygiene visit fall due together gets one message about both, not two. When the recall is completed, its next due date starts a new cycle, and the messages follow it on their own. ## Set up the schedule Go to **Settings → Automations** and open **Recall due**. Click **Use the recommended schedule**. It adds ten messages, from 4 weeks before the due date to 18 months after it, **switched off** so you can check the wording first. Click a message to change its timing — a number of days, weeks or months **before** or **after the due date**, or **on the due date** — its channel or its text, then **Save**. Click **Turn on all**, or switch messages on one at a time. The recommended schedule: | When | Channel | | --------------- | ------------------------------------------------- | | 4 weeks before | Text and email | | 3 weeks before | Text | | On the due date | Email | | 1 month after | Text | | 3 months after | Text and email | | 6 months after | Email | | 12 months after | Text | | 18 months after | Email — the last one ("we'll stop reminding you") | A message can go from a year before the due date to two years after it. There is one schedule for every recall type; `{{recall.types}}` names the recalls each message is about. The **Recall types** button beside **Recall messages** opens [Recall types](/guides/settings/clinical-catalogue#recall-types), where you set what patients are recalled for and how often. ## When a message is skipped Every message is checked again just before it goes. It is skipped, recorded, and never sent later when: * the patient has a visit booked — any visit still to come, booked online, by phone, by the AI receptionist or in the diary (an online booking still waiting for its deposit isn't a visit yet); * the recall was completed, rescheduled or paused since the message was planned; * the patient is archived, deceased or merged into another record; * the patient opted out of that channel; * the message has been switched off. If a booked visit is cancelled, the next message in the schedule goes out as normal. A reply from the patient, or a message from your team, doesn't stop recall reminders — booking, pausing or completing the recall does. ## Switching on Patients who are already overdue when you switch the schedule on get their **next** message on its normal date — nobody is sent a burst of messages on the first day. Patients more than 18 months overdue get no automatic messages; they stay on [Recalls due](/guides/patients/worklists) for your team to call. If sending is held up for a while, the messages that came due in the meantime go out late — but only the most recent one on each channel for each patient. The earlier ones are recorded as skipped, so nobody gets two recall texts on the same morning. ## The one-tap booking link `{{recall.bookingLink}}` (**Recall booking link** in the merge-tag list) puts a short personal link in the message. It opens **Time for your check-up**: * The patient is recognised by the link: there are no details to type, and their name is never shown. * The visit to book is chosen for them — the appointment type the recall **Books online as** (see [Recall types](/guides/settings/clinical-catalogue#recall-types)), at the recall's site, with its clinician. They pick a time and click **Confirm booking**. * The booking marks the recall booked, sends your usual booking messages and shows **You're booked** with a link to manage that booking. It doesn't create a lead or move anything on your boards. Instead of the booking page, the link can show: * **You have a visit on …** — the patient already has a visit coming up. * **Nothing to book right now** — the recall has been completed or moved on. * **Please call us to book** — the visit can't be booked online: the recall type has no **Books online as** type, the type isn't bookable online, needs a deposit or your confirmation, the site books by chair, or your recalls are no longer kept in Smileline's clinical workspace. * **This link has expired** — a link works until 90 days after the last message of its cycle. While your [online booking page](/guides/online-booking/setup) is off, the tag is empty and the step marks the messages that use it **Online link empty**: turn the page on, or reword those messages. ## Merge tags | Tag | Shows | | ------------------------ | ---------------------------------------------------------------- | | `{{recall.types}}` | The recalls the message is about, e.g. "examination and hygiene" | | `{{recall.dueOn}}` | The due date of the patient's earliest recall | | `{{recall.bookingLink}}` | The one-tap booking link | ## What your team sees * Every recall message appears in the patient's conversation, like any other message. * Each active recall on the record shows **Automatic reminders** — how many were sent, the last one and the next. * [Recalls due](/guides/patients/worklists) shows each patient's **Last reminder** — the last recall message or posted recall letter — so you can call the right people first. ## Consent Recall reminders are service messages, like booking messages: they reach every patient whatever marketing consent they've given, and an opt-out still counts one channel at a time. Keep them free of offers. In the US, the recommended texts end with "Reply STOP to opt out", and each fits in a single text with its link. Keep your own recall texts short and about the visit only: that's what US rules expect of healthcare texts sent without written consent. --- # Booking messages Source: https://docs.smileline.io/guides/automations/reminders Confirmations, move notices, reminders before and after the visit, and no-show recovery — anchored to the booking. Booking messages go out for every booking — a lead or a regular patient — and are anchored to the booking itself, so a move recalculates any delivery that is still pending and a cancellation stops it. They sit under **Booking messages** on the booking and visit steps of the [automations timeline](/guides/automations): | Message | Step | When it sends | | -------------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Booking confirmation** | **Booked** | As soon as a consultation or appointment is booked — on Today, from the board or a patient's record, in the diary, online, by AI phone or in your practice system. | | **Appointment moved** | **Booked**, tab **If plans change** | When a booking is moved to a new time. | | **Cancellation message** | **Booked**, tab **If plans change** | When a booking is cancelled. | | **Pre-visit reminder** | **Before the visit** | A set time before the visit starts — the defaults are 48 hours (email) and 24 hours (SMS), and you can run several. | | **Post-visit follow-up** | **After the visit** | A set time after the visit ends. | | **Missed appointment follow-up** | **Didn't turn up** | When the visit is marked as a no-show. | Each message shows when it sends — **1 day before**, **When moved** — then the message it sends, its channel and the first line of the text. A message whose channel has nothing connected, or whose WhatsApp template is not approved yet, says so. Use its switch to turn it on or off; click anywhere else on it to change its timing, channel or message underneath, then **Save**. 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. A WhatsApp reminder can be saved with a template WhatsApp hasn't approved yet — the picker warns you — but until it is approved it reaches only patients inside the 24-hour window and skips the rest; it starts sending to everyone once approved, with nothing to re-save. Messages that talk about an appointment still to come — the pre-visit reminder, the booking confirmation and the appointment-moved message — 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. {/* Wave 7d slice 0 */} ## The manage link The `{{appointment.manageUrl}}` merge tag puts the booking's manage link in a message, so the patient can reschedule or cancel online ([how it works](/guides/online-booking/bookings#manage-links-reschedule-and-cancel)). Each message gets the link when it is sent, not when it is written, so the message history never holds it, and every message about the same appointment carries the same link. A patient who mistypes their date of birth five times locks the link; the next booking message brings a new one. Appointments owned by a connected practice management system have no manage link. {/* Wave 7d slice 4 */} ## The patient portal link The `{{patient.portalLink}}` merge tag (**Patient portal link** in the merge-tag list) puts the patient's own [patient portal](/guides/patients/patient-portal) link in a booking or recall message. Like the manage link, it is added when the message is sent, so the message history never holds it. It is the same link **Send portal link** on the patient's record gives: a message to the same mobile number or email carries the patient's current link and keeps it working for another 30 days, while a message to a different number or email, or a link more than 90 days old, brings a new link and the old one stops working. A WhatsApp message and a text to the same mobile share one link. If a message is retried, it carries the link it was first given; if that link was replaced or locked in the meantime, the message fails and is shown as not sent. The tag is empty when the portal can't open for the patient: the portal is off, there is no date of birth on file, the patient is too young to hold their own portal, or their link was locked after five wrong dates of birth (once you have checked who is asking, send a new one with **Send portal link**). An email or text still goes out without the link, so word it so the message makes sense either way. A WhatsApp message sent as a Meta template is skipped and the skip is recorded, because Meta rejects an empty placeholder. Other automations, campaigns and letters don't offer the tag. ## Bookings typed on Today When your diary lives in a system Smileline can't book into, the booked step on Today takes the date and time you booked there (see [Outcomes and undo](/guides/today/outcomes-and-undo#book-the-slot-without-leaving-today)). Booking messages follow those bookings too, counted from the date you typed: * **Booking confirmation** and **Pre-visit reminder** go out as for any appointment. * **Appointment moved** goes out when the consultation's date changes on Smileline. * **Post-visit follow-up** waits for **They attended** on the attendance question, then goes out at its usual time after the visit — or straight away if that time has already passed. A patient who didn't turn up never gets it. * **Missed appointment follow-up** goes out when you answer **They didn't turn up**. * Undoing the booking, booking again, or closing the lead as not proceeding stops what hasn't gone out yet, without a cancellation message. These bookings have no online page, so `{{appointment.manageUrl}}` is empty for them: if your booking messages say "reschedule or cancel online", change that line to something like "call us on `{{location.phone}}` to change it". While any of your locations books this way, the timeline and the step's page mark a booking message that uses the link **Online link empty**. A WhatsApp reminder that uses the link is skipped for these bookings, and the skip is recorded. When the practice later books the same visit into its diary, or a connected system brings it in, the diary appointment takes over and each message is sent once. Bookings typed on Today before this change get their pre-visit reminders but no late confirmation. ## Messages for one treatment Set **For** to a treatment on the step's page and the booking messages you add there go only to that treatment's bookings — the appointment's treatment, else the lead's — replacing the standard messages of the same kind for them. A kind the treatment has none of switched on uses the standard ones: a treatment with its own **Pre-visit reminder** but no confirmation of its own gets its own reminders and the standard confirmation. While it uses the standard ones, the section says so, and **Customise for** the treatment copies them to start from. Deleting a treatment's last message of a kind returns it to the standard ones for that kind. A booking keeps the booking messages chosen when it was made; changing its treatment later doesn't change them — new bookings use the treatment's own messages. Adding or changing a treatment's messages applies to bookings made from then on. ## Add and remove booking messages The dashed row under a kind adds a message of that kind (**Add reminder** once it has one). Pre-visit reminders and post-visit follow-ups can run several at once — two pre-visit reminders (48 hours by email, 24 hours by SMS) is the usual setup. The event-driven kinds — confirmation, moved, cancelled, missed — hold one each, so their dashed row shows only while there is none: a second would mean two messages for the same event. To delete a message, open it and choose **Delete**. One practice can keep at most 100 booking messages switched on at once, treatment versions included. At the limit, switch off an existing message or save the new one switched off; deleted and switched-off messages do not consume the active allowance. The channel picker shows the connection the message 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 message is skipped until a connection exists. See [Follow-ups](/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 message set to 90 minutes reads as 90 minutes, not as an hour and a half rounded off. Changes apply when you click **Save**, which stays unavailable until something has changed. Switching to a channel the current message can't be sent on clears the message, so you pick one for the new channel before saving. The event-driven messages — appointment moved, missed appointment, cancellation — send as soon as the event happens (a timing of 0). Enter a delay 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. Edits apply to bookings made from then on. A message already scheduled keeps the timing, channel and template content captured when it was scheduled. Switching a message off cancels deliveries that have not started. Deleting a booking message archives it 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 booking message — you would need to add it again, and the new one starts with its own delivery history. ## When a reminder keeps failing Smileline does not retry a technically broken reminder forever. After ten failed or interrupted attempts in a row, or once its automatic retries run out, that reminder is paused for review. The patient's activity shows **Reminder paused for review** with the reason in one sentence, for example *Smileline paused this reminder because it failed with an error several times in a row.*, and an **Automation step** item appears under **Couldn't be processed** in the [review queue](/guides/lead-capture/review-queue). Other reminders keep their own independent delivery state. Changes to the booking never count against a reminder: however often your team or a connected practice management system moves an appointment, its reminders follow every change. The one limit is on texting-hours holds — a text or WhatsApp reminder that falls due outside your texting hours waits for them to open, and after 50 such holds it is paused for review: *Smileline paused this reminder because texting-hours holds moved it too many times.* **Try again** on the review item sends the reminder now, or at its usual time if that is later — a post-visit follow-up still waits for the visit to end. **Reminder resumed** on the timeline names who pressed it, and a reminder that hit the texting-hours limit starts with a fresh allowance. It is sent only if: * its booking message is switched on — switch it back on first, then press **Try again**. A deleted message's reminder can't be tried again, so mark the item as handled; * the appointment still qualifies — still upcoming for a confirmation or pre-visit reminder, not cancelled or missed for a follow-up, still a no-show or still cancelled for those messages. Otherwise nothing is sent and the item stays until you mark it as handled. Rescheduling the appointment also re-arms a reminder paused after its retries ran out, but not one that hit the texting-hours limit. ## Reschedules and cancellations Booking messages 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, including one [paused for review](#when-a-reminder-keeps-failing) after its retries ran out. The **Appointment moved** message, if it is on, 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 booking message **off** when a PMS connection activates, and the timeline warns above **Booking** while any is on. Turn a message 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 booking messages as ones booked in Smileline — they make no distinction once they're on. An appointment that first arrives already attended or missed gets its post-visit follow-up or missed-appointment message, never a late booking confirmation. When someone on your team answers the attendance question on Today for a PMS appointment, that answer decides which of those two messages goes out, even if the PMS later reports otherwise; Smileline never changes the appointment in the PMS. 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. --- # Follow-ups Source: https://docs.smileline.io/guides/automations/sequences The messages, tasks and stage moves a lead gets on a step of the timeline — stopping the moment a human takes over. Follow-ups are a schedule of steps a lead works through when a moment on the [automations timeline](/guides/automations) happens: messages, tasks, notes and stage moves. Open a step under **Settings → Automations** and they sit under **Follow-ups**, beside any booking messages the step has. You'll usually keep standard follow-ups on each step and give a few treatments their own — implant leads on **New enquiry**, for example. ## When follow-ups start The step and tab you put them on decide when they start — see [the steps](/guides/automations#the-steps). Each step's page says it in full in its **Runs when** line, above the sections. A few need more explanation. **New enquiry → Every enquiry** runs when a lead lands in New: every new enquiry, whichever way it arrived, and a lead someone moves back to New. **New enquiry → Also for ad enquiries** runs once for a new enquiry whose first source is a paid ad — a lead form on Meta, Google or TikTok, an enquiry from someone who came from one of your ads, or a lead added by hand for a patient whose lead source is on a paid channel, such as **Facebook / Instagram Ads**. Changing a lead's source later doesn't start it. It runs as well as **Every enquiry**, not instead of it, so it suits a reply only ad leads should get: paid leads go cold in minutes. ### The fast reply for ad leads (UK) New practices get an **Ad lead fast response** set of follow-ups on **New enquiry → Also for ad enquiries**, switched off: a text and an email straight away, then one more text three hours later, during opening hours. When a UK practice builds an ad campaign with **Text new enquiries within a minute** on, Smileline switches it on, in one save. If you deleted it, or your practice joined before it existed, it is created again from the library. If other follow-ups already answer every ad lead, nothing changes. Building the campaign needs permission to edit automations. Practices in the US don't get the fast reply yet: their marketing starts on soft opt-in, which US law on automated texts doesn't recognise. ### After a call on Today **Couldn't reach them** and **Spoke to them** follow the answers your team records on Today, on the web or in the mobile app: * **First try** runs when the lead moves to Contact Attempted — the first **I called but didn't speak to them** (under **No answer**, or its **Call back** row) or **I didn't call — I sent a message** on that enquiry. * **Try 2** to **Try 10** run when **I called but didn't speak to them** is recorded on that attempt. The tries sit on one row in call order — **First try**, **Try 2**, … **Later tries** — each saying what it sends. The **+** on the row adds the next missing try (**Add try 3**), which is saved with its first message; to remove a try, archive its follow-ups from the **…** menu. The attempt is the same count Today shows on the lead (**3 attempts**): every try to reach them on that enquiry, including AI calls that rang and **I didn't call — I sent a message**, and counting the one being recorded. * **Later tries** runs on every later attempt without a tab of its own, including any after the tenth — never on the first try. * **Thinking about it** and **Call back later** run when **They're thinking about it** or **They want to be contacted again later** is recorded under **We spoke**. * **First conversation** runs when the lead moves to Contacted, the first time someone speaks to them. When that same answer has call-result follow-ups of its own, those run instead. Booking, going ahead, not proceeding, attending and not turning up aren't call results here, because they also happen away from Today — online booking, the board, the diary, your practice system. Their follow-ups are on **Booked**, **Going ahead**, **Not proceeding**, **After the visit** and **Didn't turn up**, which start however the lead got there. ## How follow-ups are chosen When a step's moment happens, Smileline picks one set of follow-ups that is switched on: 1. The lead's **treatment's own** follow-ups on that step and tab win. 2. Otherwise the **Standard** ones run. 3. Neither — nothing sends. For **I called but didn't speak to them**, the attempt is checked first: a **Try** for that exact attempt wins over **Later tries**, and only then does the lead's treatment decide. An implant lead's second unanswered call runs the standard **Try 2** follow-ups rather than implant **Later tries** ones. A treatment's own follow-ups count only while they're switched on — switch **Own follow-ups for** the treatment off and it gets the standard ones again. Switched on with every step removed, they still win, so that treatment gets nothing on that step. ## Add follow-ups to a step Go to **Settings → Automations**, set **For** to **Standard** or a treatment, and click the step — or click the ⚡ on a stage column of the journeys board. Pick the tab. In a treatment view that uses the standard follow-ups, click **Customise for** the treatment to start from a copy of them. Under **Follow-ups**, add a message, a task, a note or a stage move. Each has its own time. A step with no follow-ups yet saves them when you finish the first message — there is nothing to create first. The row above the steps holds the on/off switch (**Own follow-ups for** the treatment, in a treatment view), whether they stop when the patient replies or the lead moves on, and how many leads are in them now. Follow-ups that cover several treatments say **Also used for** and name them: a change applies to all of them. ## Reading the steps The steps are a schedule. Every step has one time, **counted from the moment the follow-ups start** — *Immediately*, *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 *Immediately* is exactly how you send on two channels at once. Open a step to change when it runs. Under **When**, choose **Immediately**, or **After a wait** and set a number and a unit (minutes, hours or days) after the follow-ups start — for example 2 days. Beside it is **Only during opening hours**. Change the time and the step moves to its place in the list. For a new enquiry, set **Create a task** to **Immediately** so your team has a task in Today as soon as the follow-ups start. The acknowledgement can also be **Immediately**, while a later message waits three days. 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. On an *Immediately* step it means as soon as the practice is open, so the first message goes out during opening hours only. If your practice has no opening hours set, the step goes out at its plain time. An SMS or WhatsApp step that comes due outside the practice's quiet hours waits and goes out when they next open, however far away that is — a step due on Saturday night goes out on Monday morning. If staff keep moving the quiet hours and the same step is held back eight times, it is skipped and logged on the timeline. 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: **Show me** scrolls to the step and puts you in the field it's missing, and **Remove it** deletes it. ## Step kinds | Step | What it does | | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Send a message** | Sends a template by email, SMS or WhatsApp. See [WhatsApp templates awaiting approval](#whatsapp-templates-awaiting-approval) for WhatsApp steps. | | **Create a task** | Creates a task (assigned to a chosen team member, else the journey owner — or left unassigned for the desk when that person is a dentist, hygienist or nurse, who sees only clinic tasks), with an optional note for whoever picks it up. | | **Move to stage** | Moves the journey on to a later stage — if that stage has its own follow-ups, the lead continues there. This is how follow-ups chain. It never moves a lead into the stage the follow-ups belong to, or back to an earlier one. | | **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 follow-ups. ### 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 follow-ups built before a number is connected start 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 an automation. * **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 timeline, and the step is skipped for every lead until a connection exists. The follow-ups keep running their other steps. The picker links straight to **Settings → Channels** to fix it. ### WhatsApp templates awaiting approval Outside the 24-hour window after a patient's last message, WhatsApp only delivers templates Meta has approved (see [Templates](/guides/inbox/templates)). You can still save a WhatsApp step whose template isn't approved yet: the picker warns you and the row shows a **Not approved by WhatsApp** badge. Until Meta approves it, the step reaches only patients who messaged you in the last 24 hours; everyone else skips that step — the skip is recorded — and the follow-ups carry on. Once the template is approved, the step sends to everyone without you saving anything again. Follow-ups are service messages, like booking messages. They go to every lead whatever marketing consent the lead has given — even when your outbound-marketing policy is explicit consent only — and carry no STOP line or unsubscribe link. An opt-out still counts, one channel at a time: before every send, Smileline checks whether the patient opted out of that channel — replied STOP, unsubscribed, answered **No** to a lead form's consent question, or was marked opted out by your team or your practice system. If they did, or they have no address for the channel, the step is skipped, the skip and its reason appear on the timeline, and the follow-ups move on to the next step — a patient who opted out of texts still gets your emails. An opt-out that arrives after a step has already queued its message still stops that message before it leaves; the conversation shows it as not sent. A WhatsApp template Meta files as marketing keeps the marketing rules: it reaches only patients your outbound-marketing policy allows. ### Booking date and time in a sequence **Booking date** (`{{appointment.date}}`) and **Booking time** (`{{appointment.time}}`) from the **Fields** menu fill with the lead's next booked consultation — from your diary or practice system, or the date typed on Today when the consultation was booked without a diary. They're written the way your practice's country writes dates (see [Merge tags](/guides/inbox/templates#merge-tags)). If nothing is booked, an email or SMS shows a blank where the field was, and a WhatsApp step outside the 24-hour window is skipped — Meta rejects an empty placeholder — with the skip recorded on the timeline. A consultation imported by your practice system's first sync, from before Smileline was connected, and never linked to the lead also shows blank. ### Follow-up date, time and who calls back When a call ends with **They want to be contacted again later** on Today, the follow-up you set there can go straight into a follow-up message. Pick these from the **Fields** menu: * **Follow-up date** (`{{followUp.date}}`) and **Follow-up time** (`{{followUp.time}}`) — when the call back is due, written the way your practice's country writes dates, like the booking fields. * **Follow-up assigned to** (`{{followUp.assignee}}`) — the first name of the team member the follow-up is assigned to, or of whoever recorded the call when it's assigned to no one. It's the first word of their name in **Settings → Team**, so a name saved as *Dr Sarah Patel* reads *Dr*. For example, `Hi {{patient.firstName}}, {{followUp.assignee}} from {{practice.name}}. I'll give you a ring on {{followUp.date}} at {{followUp.time}} as agreed.` sends as *Hi Sarah, Devon from Bright Smiles Dental. I'll give you a ring on Friday 17 July at 14:30 as agreed.* The fields use the lead's newest follow-up. If it has already been done or cancelled, or is due before the message sends, they are blank — and a WhatsApp step outside the 24-hour window is skipped, as with the booking fields. ### The lead owner's name **Lead owner first name** (`{{owner.firstName}}`) from the **Fields** menu fills with the first name of the lead's owner when the step sends — the first word of their name in **Settings → Team**, like **Follow-up assigned to**. Share new leads out under [Settings → Assignment](/guides/settings/assignment) and every new lead has an owner before its first message goes, so a welcome email can say *I'm Feria, one of the treatment coordinators*. If the lead has no owner, an email or SMS shows a blank where the field was, and a WhatsApp step outside the 24-hour window is skipped, as with the booking fields. ### Messages about the visit A follow-up's times count from when it starts, not from the appointment, so it can't send the day before a visit. Put messages about the visit itself under **Booking messages** — on **Booked**, **Before the visit**, **After the visit** and **Didn't turn up** — which count from the booking and follow it when it moves. See [Booking messages](/guides/automations/reminders). ## When follow-ups stop A lead drops out of its follow-ups when: * the **patient replies** on any channel (if they're set to stop when the patient replies — the default); * a **team member messages** the patient manually — the human owns the conversation now; * the **journey leaves the stage** the follow-ups belong to (and on any stage change, if they're set to stop when the lead moves on); * the journey is **going ahead or not proceeding**, or someone presses **Stop** on the lead's enrollment chip; * for follow-ups a call result started, someone **records a newer call result** or **undoes** that result on Today (below). Opting out of a channel doesn't stop follow-ups: only that channel's steps are skipped. A lead never runs the same follow-ups twice at once, but can start them again after a past run ended — a lead that regresses and comes back through the stage gets nurtured again. ### The latest call wins Follow-ups started by a call result run only until the next one. When anyone records a new result on Today for the same enquiry — another **No answer**, **We spoke**, a booking or an attendance answer — the follow-ups the earlier result started stop, and the new result's follow-ups, if you have some, start. Two unanswered calls after the first try run your **Try 2** follow-ups, then stop them and start **Try 3**. **Undo** on Today, within its window, stops the follow-ups that result started. Follow-ups the undone result had already stopped stay stopped. A result can also move the lead to a stage — the first **I called but didn't speak to them** moves a new lead to Contact Attempted, the first **They're thinking about it** moves them to Contacted. When the result has follow-ups of its own, those run instead of the stage's (**First try** or **First conversation**), so one answer never starts both. Follow-ups that started from a stage move aren't stopped by a later call result; they end by the usual rules above. Follow-ups 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 follow-ups continue. ### When a step keeps failing If Smileline repeatedly cannot process a follow-up step because of a technical error, it does not retry forever. After ten failed or interrupted attempts in a row, or once its automatic retries run out, it pauses the follow-ups instead of stopping them. The lead stays enrolled with no next step scheduled, the patient's activity shows **Sequence paused for review** with the reason in one sentence, for example *Smileline paused this sequence because a step failed with an error several times in a row.*, and an **Automation step** item appears under **Couldn't be processed** in the [review queue](/guides/lead-capture/review-queue). * **Try again** on that item resumes the same enrollment straight away, from the step it paused on (quiet hours still hold an SMS or WhatsApp step). **Sequence resumed** on the timeline names who pressed it. A message is never sent twice. * If the step is still being worked on, **Try again** says so: press it again in a few minutes. * Paused follow-ups still count as running. The lead can't start the same follow-ups again on that enquiry until this run ends or is stopped, and any of the reasons above still stops it. If that happens first, **Try again** has nothing to resume, so mark the item as handled. * **Mark as handled** leaves the follow-ups paused. To end them, press **Stop** on the lead's enrollment chip. ## 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.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. The report appears straight away; the robots.txt verdict may show **checking…** for a moment while the site's robots.txt loads. * **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.smileline.io/guides/calendar/diary The clinical workspace's day — a column per practitioner or room on an hour rail shaded by the rota, flags on each card for what needs doing, a date picker that shows how busy each day is, booking by click or drag or from any Book button with Find a time — one clinician or several together — a visit panel for arrivals, check-out and edits, answering online booking requests, a 3-day view, the List as the day's huddle, and Fill gaps, where the waiting list lives. Open **Diary** (**Schedule** in the US) 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: one group of **previous**, **Today** (shown only when you're on another day), the date and **next** (a day, or three weekdays in the 3-day view) — the date's picker also holds the jumps **+1 week**, **+3 months** and **+6 months** (the usual recalls); then **Day / 3 days / List**, the site (only with more than one), **View**, **Print**, **Fill gaps** and **Requests** (when online booking requests are waiting). There is no Book button on the **Day** and **3 days** views — book by clicking or dragging on the grid; the **List** view, which has no grid, keeps **Book**. 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. **View** holds what you see: **Columns** (practitioners or rooms, when the site has rooms), **Columns shown** (tick who to show; the button says how many are hidden) and **Colour by**. ## 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 under **View → Columns shown** 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 **View** 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 and the patient, then the status as a coloured word — **Requested** for an online booking waiting for an answer, **Done** for a finished visit — with up to two [flags](#card-flags) beside it; more read **+n**. Longer cards add the appointment type, and from 45 minutes the note. A card shorter than half an hour keeps one line, the patient's name in the status colour. Hover a card for the full summary, every flag included. * Cards are filled with the appointment type's colour from Settings; **View → Colour by** switches to the status, the practitioner or the room. A type, practitioner or room without a colour keeps the status colour (pending yellow, booked salmon, confirmed green, arrived blue, in the chair indigo, done grey, no-show red). * One red line marks the current time across today's columns. * A practice's own [appointment label](/guides/settings/vocabularies) shows as a chip beside the status, in its colour and always with its words, while it applies: "Left message" set to show while booked disappears once the visit is confirmed. A label never changes the status, reminders, deposits or anything clinical. * Up to two of the patient's flags — their [tags](/guides/settings/vocabularies) marked **Show on the diary** — show under the appointment type, then **+n**. You see them when you may see patients. * A **zone** is time a clinician's rota keeps for chosen appointment types, such as "Emergencies, weekdays 14:00–15:00". It is shaded with stripes and its name. See [Booking into a zone](#booking-into-a-zone). Label and tag names are seen by everyone who opens the diary. Keep clinical detail out of them. ### Card flags A card's flags say what still needs doing for that visit, most important first: | Flag | What it means | It reads | | ---------------- | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | | Warning triangle | The patient's most serious alert in force — its kind, never its words. Red when the alert is critical | **Alert: Allergy**, **Critical alert: Medical** | | Test tube | Lab work for this visit that is past its due date, or not back yet | **Lab work late**, **Lab work out** | | Checklist | A medical history that is due or waiting for a clinician's review, and forms waiting for review | **Medical history due**, **Medical history awaiting review**, **Forms to review: 2** | | Coins | Money the patient owes, and this visit's deposit still unpaid | **Owes £45.00**, **Deposit £50.00 unpaid** | | Note | A completed clinical note for this visit waiting to be signed | **Note to sign** | | Star | The patient's first visit | **First visit** | | Phone | A mobile number on file | **Mobile** | | Link | An appointment managed by an external practice management system | **Managed by the practice system** | | Globe | An online booking | **Booked online** | You see a flag only when you may see what it is about: money for team members who can see patients' accounts, alerts and medical histories for those who can see the medical record, and so on. In the US, while insurance's share of a bill is still being estimated, the coins read **Balance: couldn't check** instead of an amount. If the flags cannot be loaded, the cards show without them and the **List** says so. ## 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 card opens beside it 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 card follows — and changing the date, time, minutes, practitioner or room in the card moves the outline. Click anywhere else, or **Cancel**, to drop it. On a touch screen, tap; a drag scrolls the diary. The same card opens in a dialog from **Book** in the **List** view and from **Fill gaps**. The card reads from top to bottom: 1. **Patient** — search by name, phone or email. Each match shows the date of birth and the last three digits of the mobile number, so two people with the same name are told apart, and the patient you choose shows as a pill with their date of birth. Beside the search, **New patient** (for team members who can add patients) 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. Its form also takes the date of birth and lists anyone already on file with a similar name or the same date of birth, so the same person is not added twice. 2. **To book** — once a patient is chosen, their unbooked treatment-plan visits and the recall that is due. Choose one to book it: a plan visit brings its length, and the plan visit or recall is booked together with the appointment — if one of them was booked in the meantime, nothing is booked and the card says so. A check that could not load says so with **Retry**. 3. **Location**, with more than one site — it starts as the site the diary is on; change it and the rooms on offer follow. 4. **Appointment type** — your first four types as buttons, in the order you set in Settings; **Other type…** holds the rest. A type sets the length, unless a plan visit already has. Someone just added with **New patient** starts on your first type (the new-patient examination in the standard setup). 5. **When** — the date, the time and the minutes, and [**Find a time**](#find-a-time). 6. **Practitioner** (always required) and **Room** (required where the site asks for one). A pick list with eight or more entries has a search box at the top. For a visit with more than one clinician — a dentist and a hygienist together, say — press **Add clinician** under the practitioner and choose the next one, up to ten; the **×** beside an added clinician takes them off again. Every clinician on the visit is booked, and each must work at the site and be free then. When the patient asked to be seen by a female or a male clinician, the card says so under the practitioner — for example **Prefers a female clinician** — as a reminder only: nobody is filtered out or chosen for you. The preference is recorded on the patient's [Details](/guides/patients/patient-detail#care-contacts). 7. **More** — **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; and a **Note**. A new booking is **Booked**; confirm it later from its [visit panel](#the-visit-panel). **Lab work** and **Short notice list** appear only for members who can read lab cases and the waiting list. 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, managers and the front desk 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. **Book** also checks every clinician on the visit, and its room, the way [Find a time](#find-a-time) does: each one's rota, the site's hours, closed days, approved time off, their bookings at every site, and the appointment type's time to prepare and clear up. When one of them is not free it says who — **Dr Patel isn't free then — outside their hours, on time off, on a closed day or too close to another visit** — and **Book** becomes **Outside working hours — use anyway**: a second press books it all the same. Taking an earlier gap from **Fill gaps** books a new appointment; it does not move this one. Cancel the later visit once the earlier one is booked. 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. A booking made here for a patient with an open enquiry moves that enquiry to your board's consultation-booked stage — the patient's newest open one, as a connected practice-management system's bookings do — so its new-enquiry follow-ups stop and the practice's [booking messages](/guides/automations/reminders) go out. ### Booking into a zone Zones keep time; they don't confine types. A zone's appointment types can be booked anywhere free. Online booking, **Find a time**, **Fill gaps** and the AI receptionist never offer a zone's time to another type. From the diary you can still book another type there: **Book** first says **Reserved for Emergencies 14:00–15:00**, and pressing **Book** again books it. An overbook reason books it straight away. The same goes for changing a visit: dragging it into a zone, or giving it a type the zone doesn't keep its time for, first asks **Move into Emergencies?**; **Move anyway** moves it. Zones are set in the [rota](/guides/rotas#zones). ### Find a time **Find a time** in the card lists the free times for its appointment type and length at the site, day by day, a button per start time, each naming who is free then. When the card has more than one clinician, it searches them **Together**: only the times every one of them is free, with one room for the visit where the site books by room. A clinician who can't be booked at the site — no longer active, or working elsewhere — stops the search and is named, rather than being left out quietly. Choose **Any** or one person to search otherwise. It starts on the date in the card, or today if that date has passed. A treatment plan visit can't start before the plan allows, so the search starts on that day instead and tells you so. Moving an appointment searches from today unless you change its date. Narrow it to one practitioner, and to **Mornings** or **Afternoons**; **Load more** shows more times. Each search covers 90 days. When it reaches the end it says how far it looked — **Searched to Tue 26 Jan** — and **Search further** looks at the next 90 days, as many times as you need. It counts each practitioner's rota and time off, the site's hours and closures, every booking and hold, the type's buffers and minimum notice, and — where the site books by room, or the card has a room — a room free for the whole visit. Choose a time and the card takes its date, time, practitioners and room; on the grid the card moves onto that slot, which the outline marks, and keeps every clinician as you move it. Choose an appointment type first: the search needs one. When nobody is free it says so — **No free 40-minute time for Dr Patel** — with **Try any clinician**, or **No free 40-minute time for everyone together**. A site whose diary your practice management system keeps has nothing to search here. ## Booking from a Book button Every **Book** in the clinical workspace — on the patient record and its Appointments tab, a treatment plan visit, a recall, the inbox's patient summary, a visit panel's next visits — opens the diary on that patient instead of a form of its own. A banner across the top names who you are booking, with their date of birth: **Booking Jane Doe · 12 Mar 1984**. For a treatment-plan visit it adds which visit, how long and from when — **Visit 2 of 3 · Crown fit · 40 min · from Tue 28 Oct** — where the first day is the visit before's day plus the gap the plan asks for. Days before it are hatched, and a click there books nothing. * **Click a free slot** and the booking card opens there already filled in: the patient (a pill with their date of birth; it cannot be changed here), the visit, its length, and the practitioner or room of that column. Its title reads **Book Jane Doe**. * **Find a time** on the banner opens the card with the free times listed; choosing one puts the card on that slot. * **Skip** (when the plan has more visits) moves on to the next visit without booking this one. **Stop** ends booking for the patient and closes the card. Once a plan visit is booked, the banner moves straight on to the plan's next unbooked visit — **Visit 3 of 3** — with its first day counted from the one you just booked, until none is left. A recall is booked together with its appointment, in one step. When you are done, the banner goes and **Booked** offers the way back to where you started: **Back to the record**, **Back to To do**, **Back to Inbox**. Each visit is its own booking, and refreshing the page or going back never books one twice. **Move** on a visit panel works the same way: the banner reads **Moving Jane Doe**, and the card moves that appointment, keeping its length, to the slot you choose. While you are booking someone, clicking another patient's appointment first asks **Stop booking Jane Doe?** — the diary never switches patient without you saying so. In the Desk app, which shows the diary as a list, a Book button opens the booking card with **Find a time** straight away. ## Moving and resizing * 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. * Everything else you do to an appointment — its status, edits, cancelling, check-out — is in its [visit panel](#the-visit-panel). * A booking an external practice management system manages cannot be moved or edited here: its visit panel shows the details and offers only **Mark confirmed**; the provider owns its time and outcome. Done, 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. To change who is on it, open it and use **Edit**: the card lists every clinician, and **Add clinician** and **×** change the set. ## The visit panel Click a card, or a row in the **List** view, to open its visit panel. It slides in from the right over the edge of the diary, which keeps its full width, and the card wears a ring. The diary stays usable underneath: click another card to switch the panel to that visit, or click or drag on empty time to book while it stays open. Close it with **×** or **Esc**. Double-click a card or a row, or press **Enter** on it, to open the patient's record instead. Dentists, hygienists and nurses go straight to the patient's record on the **Chart** tab for that visit when they click a card. The [Desk app](/guides/desktop-app) does the same, and opens the record inside the Desk. The panel reads from top to bottom: 1. **The patient** — name, date of birth and age, patient number, an alert pill for each alert in force and the patient's price list; under it, the mobile number with a call button and the email address. Reception's pills say what kind of alert it is; dentists, hygienists and nurses also see its words there. 2. **The visit** — the time, appointment type, practitioners, room and lab work, its status, the practice's own **Label** (choose one, or **No label**, from the list under the status; an archived label can't be chosen again, but stays until you change it), the patient's flags, and one solid button for the next step. On the day of the visit that is **Mark arrived**, then **Mark in chair**, then **Mark done**; before the day it is **Mark confirmed**. **Edit** opens the booking card in the panel; **Move** places the visit again on the diary (see [Booking from a Book button](#booking-from-a-book-button)); **Cancel…** asks for a reason (see [Cancelling a visit](#cancelling-a-visit)). 3. **Before the chair** — only what still needs doing before the patient sits down: a medical history that is due — the same rule as the **Medical** tab: the latest was rejected or has expired, or there is none on file and your practice sets a review period — or **No medical history yet** (**Fill in with patient** opens the form at the desk; **Send form link** and **Show QR** let the patient [fill it in themselves](/guides/patients/form-links), and the line then says when the link was sent or opened), a form awaiting a clinician's review (the latest medical history always waits for one), a missing mobile number or email address, an unpaid deposit (**Re-send link**), money owed (**Take payment**) and lab work that is not back. When every check has answered and nothing is due, it says **All set**. A check that could not load says **Couldn't check** with **Retry** — never **All set**. 4. **Check-out**, once the visit is **Done** — see below. 5. **Medical** — every alert in force in its own words, and the patient's active allergies, conditions and medications, for anyone who may see the medical record. **None recorded.** when there is nothing. 6. **Details** — the patient's pinned note, other phone, preferred contact method and time, the channels they opted out of, and their dentist and hygienist. 7. **Upcoming** — the patient's next visits, with their status, and when the recall is due and how many treatment-plan visits are still to book. 8. **Open plans** — each open treatment plan with its status, total and treatments. 9. **Open record** and **Message**, always at the bottom. After you send a message you stay on the diary. ### Cancelling a visit **Cancel…** asks for the cancellation reason, then **Cancel appointment** cancels the visit. If the visit was booked by mistake — the wrong patient, a double booking — tick **Booked by mistake** instead: no reason is needed, and the visit does not count as a cancellation, or as an appointment at all, in [reports](/guides/reports/overview) and To do's **Missed, not rebooked**. The patient gets the same cancellation message as for any cancel, and a practice management system you are connected to is told the same way. **Cancel…** on the patient record's **Appointments** tab offers the same tick. Declining an online request never offers it. A cancelled or missed visit hands back what it booked: the patient's recall returns to **Recalls due**, the treatment-plan visit to **Treatment to book**, and a waiting-list request to the waiting list, however the visit ended — here, through the patient's own link, the AI receptionist or your practice management system. Booking the patient again takes them back. A visit the patient moved to another time with their booking link, or with the AI receptionist, reads **Moved** rather than **Cancelled**, and what it booked moves with it to the new time. ### Done and No-show ask twice **Mark done** and **No-show** cannot be undone, so the first click only turns the button into a question naming the patient — **Confirm: Jane Doe done** — and the second click records it. Clicking anywhere else, or the visit changing in the meantime, puts the button back. The same goes for the **List** view's buttons, and **Status** in the booking card, which appears only when you edit a visit, never offers **Done** or **No-show**. ### Undo arrival A visit marked **Arrived** by mistake — at the [kiosk](/guides/calendar/kiosk-check-in) or with **Mark arrived** — can be taken back until the patient is in the chair. Click **Undo arrival**, say why, and click **Undo arrival** again. The visit goes back to **Confirmed** if it had been confirmed, otherwise **Booked**, and its history keeps the reason. Anyone who can update appointments can do this; a visit managed in a practice management system can't be changed here. ### Check-out After **Done**, the panel lists the treatment completed for the patient on the day of the visit — whether or not it is part of a treatment plan — and sends each item to the right way of charging it: * **Private and membership treatment** shows its fee. **Charge** opens the charge form with the item already chosen; once posted it reads **Charged**. A reversed charge counts as uncharged again. An item with no fee reads **Nothing to charge**. * **NHS treatment** is never charged at its procedure fee. Its course of treatment carries the patient charge, so the panel shows the course — **NHS course · band 2a · £73.50** — with **Charge course**, which asks you to confirm the amount before it posts. A course is charged once; an exempt patient's course reads **No patient charge**. * **In the US**, the panel shows today's charged fees split into **Insurance estimate** and **Patient pays**, and anything the patient owed before on its own line. The insurer's part never counts as money the patient owes. **Take** names what the patient owes now and opens the payment form with it filled in. In the US it is today's own share: anything the patient owed before has its own line with its own **Take**, so today's visit is never charged with older debt by default, and today's share reads **Paid** once it is covered. After each payment the panel reads the account again and offers **Take** for whatever is left, so a split payment is simply taken twice. Under **Next** are the patient's unbooked treatment-plan visits and their recall due, each with **Book**, and **Add to waitlist**, which puts the patient on the [waiting list](/guides/patients/letters-and-waitlist) for anything sooner at this site. Money buttons appear only for team members who may post charges or take payments. ## Online booking requests When an appointment type is set to **Practice confirms**, a patient's [online booking](/guides/online-booking/bookings) lands in the diary as a request for you to answer. Open its visit panel, or find its row in the **List** view: * **Accept** books it. It becomes **Booked**, the patient's booking confirmation and reminders go out, and its **Confirm online booking** card leaves [Today](/guides/today/overview). * **Decline…** asks for a cancellation reason; press **Decline** to cancel the request. The patient gets your cancellation message, if you send one. If someone else answered the request, or it changed, while you had it open, the diary tells you and refreshes. ### Waiting for deposit A booking marked **Waiting for deposit** is one a patient is still paying the deposit for on your online booking page. The slot is held for them and there is nothing to accept: paying books it (or, for a **Practice confirms** type, turns it into a request), and an unpaid hold lapses after an hour and frees the slot. ## 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 under **View** 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. ## The List: the day's huddle **List** shows the day as a table the whole team can work from; the Desk app opens the diary this way. The segments along the top count their visits: **All**, **Requested**, **Expected**, **Arrived**, **In chair**, **To check out** and **Done**. Click a row to open its visit panel (a dentist, hygienist or nurse goes to the chart); double-click it, or press **Enter** on the patient's name, to open the record. Each row shows **Time**, **Patient** (name and age), **With**, **Room** (when the site has rooms), **Type** and **Status**, with the label and the next step beside the status. When the day has labelled visits, **All labels** filters the list to one label. Then come what the team needs to know about the visit: | Column | What it shows | | --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Planned** | The codes and teeth of the treatment-plan visit this appointment books, with teeth in the notation you chose on the chart | | **Alert** | The kind of the patient's most serious alert in force, coloured by how serious it is | | **Forms** | **Medical history due**, **Medical history awaiting review** or **No medical history yet**, and forms waiting for review | | **Owes** | What the patient owes — red when they owe, green for credit — and a deposit for this visit still unpaid. In the US, **Couldn't check** while insurance's share is still being estimated | | **Lab** | **Lab work out**, **Lab work late** or **Lab work received** (back from the lab, not yet fitted) | | **Next visit** | Their next appointment, treatment-plan visits still to book and the recall due | | **Eligibility** | US practices: the latest insurance check of the patient's main cover — **Verified**, **Inactive**, **Check failed** or **Not checked** | | **Exemption** | UK practices: the NHS exemption on the patient's open course of treatment — **Exempt**, **Paying** or **Evidence not seen** | A column appears only when you may see what it shows, and **—** means there is nothing to report. If these details cannot be loaded, one column reads **Couldn't check** with **Retry**; the rest of the list works as usual. ### To check out **To check out** lists today's visits marked **Done** with treatment completed today that is not charged yet, and counts them. NHS treatment is charged through its course and an item with no fee has nothing to charge, so neither keeps a visit here. Once everything is charged from the visit's [check-out](#check-out), the visit leaves the segment. The segment appears for team members who can see patients' accounts and treatment. ## Fill gaps **Fill gaps** opens a panel that holds the site's [waiting list](/guides/patients/letters-and-waitlist) and the free time it could fill. At the top, for the day on screen, each open request whose earliest and latest dates take that day lists its free start times, short-notice requests first, then the most urgent. They come from the same search as [Find a time](#find-a-time): the request's site, its appointment type (or 30 minutes when it has none), its practitioner (or anyone), and every site's bookings and holds, rotas, time off, rooms and buffers. Each request shows its first times, and **Load more** shows the rest. A search that could not run says so with **Retry**, keeping any times it already found. Press a time to open the booking dialog on it, with the patient, the request's appointment type and length, the practitioner and the room already chosen. The waiting-list request is booked together with the appointment, so the two are never out of step. If the request was changed after the panel showed it, the booking is refused and nothing is booked; open **Fill gaps** again to see it as it is now. If someone else took the time meanwhile, the diary says so and the request stays on the list. Times are buttons only for team members who can book. Below it, **Everyone waiting (3)** lists every open or offered request at the site, highest priority first: the patient (their name opens the record), the status, what they are waiting for, the priority, and any practitioner, appointment type and window. * **Add** puts a patient on the list: search for them, then choose what they are waiting for — **As soon as possible**, **Short notice** or **Referral to treatment** — and, if you like, the site, appointment type, practitioner, treatment plan, the earliest and latest days, the priority and a note. Press **Add**. * **Withdraw** takes a request off the list for good, so it asks first: the button turns into **Confirm: withdraw Jane Doe**, and a second click withdraws it. The panel reads the list each time you open it. If the list cannot be loaded it says so, with **Retry**, rather than showing nobody waiting. After you cancel an appointment, decline an online request or mark a no-show, the confirmation offers **Fill this gap · 2 waiting** when someone on the waiting list could take that time: waiting at that site, for that practitioner or anyone, with that day inside their window. It opens **Fill gaps**. When the waiting list cannot be checked it offers plain **Fill this gap**; when nobody waiting could take the time, or the time has already passed, it offers nothing. ## Printing Print the page for the day sheet: the sidebar and the controls are left out and the grid prints landscape. --- # Kiosk check-in Source: https://docs.smileline.io/guides/calendar/kiosk-check-in Pair a tablet at reception so patients check themselves in for today's appointment with their date of birth. A kiosk is a tablet at reception where patients check themselves in. It asks for the patient's date of birth and the first two letters of their surname, shows the time and the clinician of their appointment today, and marks them **Arrived** when they confirm it's them. The diary updates at once. A kiosk only records arrival. It never shows a patient's name, never lists who is booked, and never opens a form. Kiosks work only where Smileline runs your practice's own diary. ## Pair a tablet 1. Go to **Settings › Calendar › Kiosks** and click **Add kiosk**. 2. Give the tablet a name (for example *Reception iPad*), choose the site whose appointments it checks in, and click **Add kiosk**. 3. On the tablet, open the kiosk page the settings page names, and enter the pairing code — or scan the QR code with the tablet. The code works once, for 10 minutes. If it runs out, add the kiosk again. The tablet keeps nothing but its own pairing. Anyone who can change settings adds and revokes kiosks. **Revoke** (two clicks) stops a tablet at once; pair a new one to replace it. The list shows when each tablet was last seen. Lock the tablet to the kiosk page: use **Guided Access** on an iPad, or **screen pinning** on Android. ## What patients see 1. **Welcome to** your practice, with boxes for the date of birth and the first two letters of the surname. 2. If exactly one patient with that date of birth and those letters has an appointment at this site today: *Your appointment: 10:30 with Dr Patel. Is this you?* — **Yes, check me in** or **No**. 3. **Thank you, you're checked in. Please take a seat.** Accents don't matter (*Östberg* matches *os*). When nobody matches, or two people do — twins, say — the kiosk says **Please see reception**; it never offers a choice of names. Appointments at your other sites, on other days, or managed in a practice management system are never found. After each patient, and after a minute without a touch, the kiosk starts again and forgets everything it was shown. ## Arrivals in the diary A kiosk check-in is an ordinary arrival: the card moves to **Arrived** with its time, and the visit's history says *Checked in at the kiosk: Reception iPad*. If it was the wrong patient, use [Undo arrival](/guides/calendar/diary#undo-arrival). ## Too many misses To stop someone guessing their way through the day's patients, a kiosk allows about ten lookups that find nobody, then one more every two minutes. Past that it says **Please see reception** until it recovers. Patients who are found don't count. --- # Calendar Source: https://docs.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. ![The month grid with results on past days and workload on future days](/screenshots/calendar/month-grid.webp) ## 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:** treatment revenue that day, journeys going ahead and not proceeding, 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 | | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Treatment revenue | Deal value of journeys going ahead that day | | going ahead / not proceeding | Journeys closed as going ahead or not proceeding that day | | leads | New enquiries that came in that day — the same count as **New leads** on the Dashboard. A returning patient who enquires again counts; a patient record created without an enquiry (an import, say) doesn't | | 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 detail opens almost full screen, on a row of tabs — **Overview**, **Schedule**, **Bookings**, **Leads**, **Journeys** and **Team**. The list tabs show their row count, and a list tab only appears when it has something in it, so the strip doubles as a summary of what the day contains. ### Overview If you can open the **Dashboard**, the **Overview** is the Dashboard for that day. It shows the same cards with the same meanings: * **New leads**, **Bookings made**, **Lead → booked**, **Ad spend**, **Ad return** and **Response time**. Each is compared with the day before, or, for a range of days, with the same number of days just before it. * The **Lead funnel**, beside a card with the day's own facts: appointments, booked time, treatment revenue, and journeys going ahead and not proceeding. * A **New leads** chart by hour, showing when the day's enquiries arrived, stacked by channel. For a range, the chart shows one bar per day, as the Dashboard does. * The **Team leaderboard**, and the channel breakdown. If your role can't open the Dashboard, the **Overview** shows the day's four cards and its breakdowns instead: * **Appointments** — how many took place. * **Booked time** — the chair time the day held, with the average appointment length beside it. Cancelled appointments released their slot and are left out; a no-show held its slot and is counted. * **New leads** — how many arrived, with how many patients were contacted that day beside it. * **Treatment revenue** — the value of journeys going ahead. Each card carries a small badge comparing the day with the month you're looking at. New leads and revenue are compared with the month's days **so far**; appointments with **every** day of the month, since they're booked ahead. Below the cards, the breakdowns show: * **Appointment status** * **Contacts by channel** * **New leads by source** * **Going ahead by treatment** Every breakdown counts the whole day, however many rows are behind it. ### Leads **Leads** lists every enquiry that came in that day, oldest first. The count matches the Dashboard's **New leads**. Each row shows the lead's source, name and arrival time, its treatment and one coloured status: * **Going ahead** (with its value) * **Not proceeding** * **Archived** * The lead's **stage**, such as **Contacted** or **Consultation Booked**, once someone has reached them (they answered, replied or booked). How long that first contact took is shown when you open the lead. * **Contact attempted** (someone tried — a call with no answer or a message sent — but hasn't reached them yet) * **Not contacted** (nobody has tried yet) Once a lead has moved past **Not contacted**, its row also shows the first name of the team member who handled it — the lead's owner. Hover over it to see their full name. A lead nobody owns shows no name. Click a lead to see its whole story on the right: * **Who they are.** Their phone number, email, source and owner. **Open record** takes you to the patient. * **The journey.** The treatment and value, how far along the pipeline the lead has moved, and when it came in, was first reached (or, if nobody has reached them yet, when someone first tried) and was closed as going ahead or not proceeding. * **Activity.** The lead's full timeline, where you can add a note if your role lets you write them. * **The enquiry.** What they submitted on the form or lead ad, and the source details of this enquiry: channel, campaign and ad identifiers. On a phone, tap a lead to open it and **Back** to return to the list. ### Team **Team** shows what each person did that day. It appears if you can open the Dashboard's reports. The list starts with **Everyone**, then each person who did something, busiest first, then teammates who can work leads but did nothing that day, marked **No activity**. Each row shows the person's total, a bar of their activity through the day hour by hour, and their calls, messages, emails and outcomes. Click a row to see: * Their counts of calls, messages, emails, outcomes, stage moves, notes and anything else. * Their activity by hour. * Everything they did, newest first. Each entry names the patient it was for and links to their record. **Everyone** also shows who did each entry. **Leads worked** counts each lead once, the way the Dashboard leaderboard's **Leads worked** does. Automated sends and the AI agent aren't people, so they don't appear here. ### 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. ### Bookings and Journeys * **Bookings** lists every appointment with a status badge (**Booked**, **Confirmed**, **Fulfilled**, **Cancelled**, **No-show**, and so on) and its time. * **Journeys** lists the journeys closed as going ahead or not proceeding, with their value. Every row with a patient links straight to their record. 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. Long lists show their first rows and a **Load more** button that keeps going until everything is listed. **Leads** loads 500 at a time, so a single day almost always fits without it. The cards and breakdowns always count the whole range. A range can span up to 45 days. On a phone, the month renders as a tappable day list instead of a grid; tap a day to open its detail. --- # Call AI Source: https://docs.smileline.io/guides/calls/call-ai After each answered call, Smileline writes a summary, the outcome, the next step and a plan for the next call — plus coaching for whoever took it. Call AI transcribes your calls as they happen and, within a minute of each one ending, reads the conversation back for you: what was agreed, why a patient didn't book, what to do next and what to say on the next call. Whoever took the call, and the practice's managers, also get coaching on how it went. Call AI is available to practices in the **United Kingdom** and the **United States**, and is included in **Smileline Voice** at no extra cost. ## Which calls are analysed Call AI needs [call recording](/guides/calls/recording) switched on. A practice with recording off gets no Call AI, and neither does a practice that only uses tracking numbers without Smileline Voice. It analyses answered calls that lasted at least 30 seconds and are linked to a patient or lead: calls in and out on your Smileline numbers, calls to your [tracking numbers](/guides/lead-capture/call-tracking), and calls the AI receptionist handed over to someone at the practice. It leaves out voicemails, calls nobody answered, calls between colleagues, calls the AI receptionist handled on its own and emergency calls. One exception to the 30 seconds: when you call someone and Smileline can't tell straight away whether a person or their voicemail picked up, Call AI reads the call however short it was. A short call gets the full analysis below — a follow-up task or a suggested email too, unless it was a voicemail. ### Voicemail or answered When you call someone, Smileline listens to the first few seconds to tell a person from a voicemail, and the call log shows **Answered** or **Voicemail**. That first guess can be unsure or wrong. Once Call AI has read the whole conversation, its outcome decides: a call it reads as a voicemail shows **Voicemail**, and any other outcome shows **Answered** — in the [call log](/guides/desktop-app/call-log), the patient's timeline and Last call. The label changes within a minute of the call ending. To correct a completed outbound call yourself, open **Correct call result** in Today's **Last call** card, choose **We spoke on this call** or **Reached voicemail**, then **Save**. Your correction applies to that specific call, is recorded with your name in the audit log, and takes priority over later AI results. Today's normal outcome buttons still record the lead's outcome separately. ## The live transcript While the call is up, both sides are transcribed live, line by line, and that becomes the call's saved transcript. It also listens for card details: when it hears a card being read out, it pauses the call recording by itself and keeps transcribing, and the card digits are blanked (shown as •) in the saved transcript. See [Pause the recording while you take a payment](/guides/calls/recording#pause-the-recording-while-you-take-a-payment). ## Live suggestions In the Smileline Desk app, the call window helps while the call is still going. As the caller talks, it shows a suggestion that fits what they just said — how to answer a price worry, a fact about parking or finance, a nudge to offer a time — with prices, opening hours and the next free appointment times filled in from your own information. A checklist for the kind of call ticks itself as the conversation covers each point, and the live transcript is a click away. Click **Used** or **Dismiss** on each suggestion as you go. See [Live suggestions](/guides/desktop-app/calls#live-suggestions). The suggestions, the checklists and the scorecard the analysis marks each call on come from the practice's playbook: Smileline writes it from your own information, and managers review and edit it in [Settings → Live call suggestions](/guides/settings/call-ai) — a new card is never suggested until a manager turns it on. Live suggestions are in the desktop app only — not in the browser or on the iPhone. ## What the analysis tells you Anyone who can open the patient sees: * **Summary** — the call in a few sentences. * **Outcome** — **Booked**, **Call back agreed**, **Not booked**, **No booking needed** or **Voicemail**. * **Why not booked** and **Who can fix it** — for a call that didn't book, the reason (such as **Price** or **Wants time to think**) and whether it is down to the team on the call, the practice's offer (price, diary or services), the patient's own situation, or the quality of the lead. * **Next step** — the follow-up the call needs. Call AI adds it to [Today](/guides/today/overview) as a task only when nobody is already working the lead: not while the Today card the call was made from is still open, not once someone has recorded how a call went since this one began, not when the lead already has a task due sooner, and not when someone has set a follow-up since the call began. Then the person working the lead sets the next step, and Call AI's suggestion stays here to read. When it does add a task, **Open in Today** takes you to it. * **Suggested email** — only when an email would help the patient decide, and only about a price list, finance, consultation details or a booking link; never clinical advice. It is never sent for you: **Use** opens the patient's email with it filled in, ready to check and send, and **Dismiss** hides it. * **Say this next time** — how to open the next call and what to cover. * **Lead profile** — how the patient felt; what they need, what is holding them back and what will win the booking, a few words each, with a dash until a call has shown it; and a short recap of the lead so far. ## Coaching The person who took the call and the practice's managers also see **Coaching**: * a **score** out of 100; * the **scorecard** — each point a good call covers (a warm greeting, finding the need, asking for the booking, agreeing a next step…) marked **Met**, **Not met** or **N/A**, with a note; * what **went well** and what to **work on**; * each **objection** the patient raised, how well it was handled and **a better reply**; * **Manager review suggested** on a call worth listening to, such as a lost hot lead or a complaint. Nobody else sees the coaching. ## Where to find it * **Call log** — open an answered call: the analysis sits on the opened card beside the lead, and **Open coaching** shows the full coaching. The recording and its transcript sit under the summary; click any line to play the recording from that moment, and as it plays the line being spoken is highlighted and its words fill in, like captions. See [The call log](/guides/desktop-app/call-log#call-ai-on-the-card). * **Patient timeline** — each analysed call shows its outcome and summary, and **Transcript** opens the call in a drawer with the same analysis, the recording and the transcript. See [Activity](/guides/patients/patient-detail#activity). * **Today** — the **Last call** card in the work panel adds the summary, **Say this next time** and any email still waiting to be sent. See [Today](/guides/today/overview#last-call). * **iPhone** — the call's page in the mobile app shows the analysis. See [Calls on your phone](/guides/mobile-app/calls#open-a-call). * **Call brief** — under the lead's number, in Today's work panel and the patient record's **Log outcome**: what they need, what is in the way and what wins the booking, at a glance; click it for the recap, with the teammates who handled the lead shown by their avatars, the call's recording, and what to say next. See [Call brief](/guides/today/overview#call-brief). * **Reports** — **Call insights** adds it all up across your calls, with a Monday email and, for owners and managers, a written summary of each week. See [Call insights](/guides/reports/call-insights). ## While it is being made, and when it can't be * **Analysing the call…** — the analysis is on its way; it appears by itself. * **Waiting for the lead record** — the caller's lead is still being created; the analysis starts once it exists. * **Not analysed** — the call was out of scope, with the reason, such as **the call was too short**. * **Couldn't analyse this call** — something went wrong. The person who took the call or a manager can click **Try again**, here or in the review queue. * **New lines arrived after this analysis** — the transcript grew after the analysis was written. The person who took the call or a manager can click **Analyse again**. Until the new analysis lands, the previous one stays on screen and keeps setting the lead profile. When the practice's retention window for recordings passes before an analysis is finished, nothing is made from the conversation and the call shows **Not analysed**. Analyses, **Try again** and **Analyse again** need the practice to have Smileline Voice; without it the **Last call** card on Today still shows the call, its result and its notes. ## Privacy The live transcript is produced by AssemblyAI through Telnyx, the carrier behind Smileline Voice. Every time someone opens an analysis it is written to the practice's activity log. The coaching notes are removed together with the transcript when the practice's retention window for recordings passes. A patient's [data export](/guides/patients/patient-detail#header) includes what Call AI wrote about their calls — the summary, outcome, next step, suggested email, plan for the next call, lead profile and what they said about each concern — with the live transcript and the suggestions shown during their calls. The coaching is about the staff member, not the patient, so the score, scorecard, went well and work on, and how each objection was handled are not in it. --- # Call recording Source: https://docs.smileline.io/guides/calls/recording Record calls for training and dispute resolution with consent, central retention controls and a full audit trail. Call recording captures answered calls so you can review how enquiries are handled, coach the team, and settle "who said what" disputes. It starts on for a practice that is new to Smileline Voice, and you can switch it off in Settings; this page covers recording compliantly, how long recordings are kept, and where to play them back. ## Turn recording on or off Recording is configured at **Settings → Voice & calling** (owner or manager role): In the **Call recording** card, switch **Record calls** on or off. A practice that is new to Smileline Voice starts with it on. Click **Manage retention**, or open **Settings → Practice details → Data retention**. Enter 7–3,650 days under **Call recordings**, or leave it blank for **Forever**, then click **Save**. The default is 90 days. While it is on, every answered call is recorded. Calls that are never answered produce no recording. Smileline imports recordings up to 32 MiB. If a provider produces a larger recording, the call remains in the timeline but no playback control is added. ## Consent to record Recording a call comes with obligations: **callers must know the call is being recorded**, and in some places they must actively agree to it. Smileline does not play a spoken recording announcement — not on outgoing calls, inbound calls, or calls the AI voice agent takes. Recording relies on the consent your practice collects from patients, for example in its registration and enquiry forms, patient agreements or privacy notice. Make sure those cover call recording, or switch recording off until they do. Recordings are stereo with one party per channel, which is what lets a transcript tell the caller's words from the practice's. * **In some US states every party must consent, not just be told.** California, Washington, Illinois, Pennsylvania, Florida and several others work this way, and California's rule carries a private right of action. Call someone only when the consent you hold covers recording; if they object on the call, stop the recording or end the call rather than continuing. This is practical guidance, not legal advice. Recorded calls with patients can contain health information, so review your obligations under UK GDPR and your practice's privacy policy — and if in doubt, speak to your data protection advisor before enabling recording. ## Pause the recording while you take a payment There is nothing to press: the recording pauses by itself when card details come up on the call. The [live transcript](/guides/calls/call-ai#the-live-transcript) listens for card talk from either side, and pauses the recording when it hears: * a card phrase, such as "card number", "long number", "card details", "expiry date", "security code", "CVV", "cardholder", "take a card payment", "pay by card", "credit card" or "debit card"; * numbers said around such a phrase — the expiry after "expiry date", the three digits after "CVV"; * a card-length run of digits read out in groups by the same person, even with no card phrase. A phone number and its readback don't pause the recording, and neither do "visa", "expires", "payment link" or "deposit" on their own. While the recording is paused, the browser call bar, Smileline Desk's call window and the Chrome extension show **Card payment · recording paused · resumes in 0:27**. The recording resumes by itself, in the same file, 30 seconds after the last card talk it heard. The live transcript keeps running through the pause — that is how it hears the reading carry on — so every new group of digits restarts the 30 seconds, and a long reading stays paused all the way through. If the pause couldn't be confirmed, they show **Recording couldn't be paused — card details may be recorded** in red instead. The pause takes a couple of seconds to land, so the first words or digits can still reach the recording. Say what you're about to take — "can I take the long card number?" — and wait for **Card payment · recording paused** before the patient reads it out. Card digits are blanked (shown as •) in every saved transcript: the live transcript, the AI receptionist's transcript, and a transcript made from the recording. Phone numbers, prices, years and times said outside card talk stay readable. Every pause window is kept with the call — the times the recorder was off — so you can show which part of the call wasn't recorded. A pause still running when the call ends simply runs to the end of the call. ### Calls the pause doesn't cover The automatic pause works on recorded calls that have Call AI's live transcript: practices with Smileline Voice in the United Kingdom and the United States. Nothing listens for card talk on calls to [tracking numbers](/guides/lead-capture/call-tracking) while the transcription switch is off. Don't take card details by voice on those calls — the recording keeps running. [Send the patient a deposit payment link](/guides/deposits/requests#send-a-deposit-request) instead, so they type the card in themselves. ## Retention: recordings delete themselves Recordings are kept only for the retention window you set, then deleted automatically. There's no manual purge to remember — a shorter window is the simplest way to minimise the data you hold. New calls follow a saved window immediately. A shorter window is applied progressively to existing recordings in bounded daily batches. Extending the window or changing it to **Forever** does not restore deleted audio or postpone a recording already scheduled to expire sooner. When a recording expires, its **Play recording** control is removed. The call-history entry remains, including who called, when, how long and the line outcome. ### The phone provider's copy Once a recording is saved in Smileline and its transcript is done, Smileline asks the phone provider to delete its own copy. That copy counts as deleted only when the provider confirms the deletion, or reports that the copy is already gone. If the provider refuses, the practice's phone system is not set up, or a legal hold covers the call, Smileline tries again later. After five attempts the call appears in the [review queue](/guides/lead-capture/review-queue#phone-system-items) as a **Phone system update** that says why the last attempt failed; clear that reason, then click **Try again**. ## Play a recording back Answered, recorded calls show a **Play recording** control wherever the call appears: * On the **patient timeline** — every call is logged there with who called, when, how long and the outcome of the line. * In **Today's recent activity** for the lead you're working. Click **Play recording** and the audio starts straight away; you can jump to any point without waiting for the whole file to download. If you leave a recording paused for a long time, pressing play or jumping ahead picks it up where you were. Playback is limited to owners and managers: front desk and telesales place calls but cannot replay them, and analysts have no calling access at all. Voicemail messages are the exception — every calling role can play those in the [voicemail inbox](/guides/settings/voicemail), and read the transcript beside them. Under the player, anyone who can place calls can expand the call's **transcript**. Smileline transcribes recorded calls and voicemails automatically once the audio is stored, so a long call can be read instead of listened to. While that is still running the panel says so; if transcription fails after its automatic retries, it says **Transcription failed** with a **Retry** button (the failure also appears in the review queue, where it can be retried too). Transcripts are deleted with the recording when its retention window passes. ## When a recording fails Occasionally the carrier reports that it could not record a call. The call keeps its history entry — who called, when, how long and the outcome — but no **Play recording** control ever appears for it, and nothing is retried in the background: the audio does not exist. When the failed recording was a voicemail, the practice still gets the missed-call alert, which says the message could not be recorded, so the caller is never silently lost. ## Every listen leaves a trail Recordings are sensitive, so access is audited: **every playback is written to the practice activity log**, along with who listened and which call it was. Picking a recording back up after a long pause is logged as another listen. Turning recording on or off and changing the central retention settings are logged too. Owners and managers can review the trail at **Settings → Activity log**. --- # AI assistant Source: https://docs.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.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.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 `` tag on every page of your website (or into your site builder's "custom scripts" slot): ```html ``` The EU hostname above is illustrative. Copy the generated snippet exactly: US organizations use `widget-us.smileline.io`. **Copy for AI** under the snippet puts a ready-made brief on your clipboard for ChatGPT, Claude, Cursor or your developer: the tag, where it goes, what it injects and the Content Security Policy entries a strict site needs. Flip **Widget live** on. The launcher appears on your site within a few minutes. On each page it mounts once the page's own content is ready and the browser has an idle moment — at most 1.5 seconds after that — and loads its configuration in the background, so it never slows your site down. If Smileline is briefly unreachable, it tries once more a couple of seconds later. The key in the snippet identifies your practice — no login or API key is needed on your website. Switching **Widget live** off makes the snippet render nothing without touching your site. ## Brand it The **Appearance** card controls how the messenger looks: * **Display name** — shown in the panel header, usually your practice name. * **Greeting** — the first message visitors see. * **Brand colour** — drives the launcher, visitor bubbles and the send button. * **Logo** — optional. Pick an image from your practice's image library and it fills the round launcher button in place of the Smileline smile. A square PNG, JPEG or GIF up to 2 MB works best; **Remove** brings the smile back. * **Reply-time copy** — the expectation line under your name, e.g. "Typically replies in a few minutes". * **Position** — bottom right or bottom left. Changes reach embedded widgets within about a minute. ## Preview it live A working copy of your messenger sits in the corner of the **Settings → Chat widget** page. Click its launcher to open it, exactly as a visitor would. The launcher stays in the corner while the messenger is open — it turns into a chevron, and clicking it again closes the panel. The preview follows the form as you type, before you save: rename the practice, change the brand colour or move the widget to the left and it updates immediately. You can also click straight through the guided qualifier to check the treatments and questions read well. Nothing in the preview is real. It creates no conversation in your Inbox and captures no lead, so anything you type into it is discarded. AI answers and the online-booking button are not part of it — use **Test the assistant** on the same page for those. ## Proactive messages Proactive messages open the conversation for you on specific pages — a visitor reading your implants page gets a tailored line after a few seconds. Add them on the **Proactive messages** card: * **Page matches** — a fragment of the page URL, with `*` as a wildcard: `/treatments/implants*`. * **Message** — the teaser bubble text. * **Delay** — seconds after the widget has loaded before the teaser appears. Visitors can dismiss a teaser; it won't reappear during that browsing session. ## Replying from the Inbox Widget conversations behave like any other channel: they appear in the Inbox as **Live chat** threads, unread counts tick up as visitors write, and anything your team types is pushed to the visitor's browser in real time with the sender's first name — the "a human has joined" moment. The contact panel shows which page the visitor is chatting from. Templates can't be sent to the widget — they're built for email, SMS and WhatsApp. Attachments can. ## Sending files Visitors can send you photos and documents from the messenger — the thing people most often want to do first ("here's the tooth"). Three ways, all of them working the same: * **The paperclip** next to the message box opens their file picker. * **Paste** — a screenshot copied to the clipboard drops straight into the message box. * **Drag and drop** anywhere onto the open messenger. Files appear as thumbnails above the message box before sending, each with an × to remove it. A message can carry files with or without any text, and up to 16 MiB per file. Your team can reply with a file the same way, from the Inbox's own paperclip. Images show inline in both directions; everything else appears as a named download. While the guided qualifier is still running, a file is delivered to your Inbox straight away but doesn't count as an answer — the widget carries on asking the question it was on. That way a photo sent before someone has given their phone number still reaches you. --- # Request and track deposits Source: https://docs.smileline.io/guides/deposits/requests Send a deposit payment link mid-call, record cash payments, and handle refunds and no-shows. A deposit is requested **before the consultation is booked** — it secures the booking without blocking it. If the patient prefers to pay at the practice, record that instead; the booking never waits on the link. Patients who book themselves through [online booking](/guides/online-booking/setup) pay their deposit inside the booking flow — those deposits appear here automatically with the same refund and no-show lifecycle. If an online-booking hold expires before payment, Smileline cancels the hold, releases the diary slot and cancels the pending payment request together. If the practice has already recorded an in-person payment, or an attempted refund has failed, the slot is still released but the money record is kept and a **Booking payment review** task is created for staff. A paid or in-progress refund is left with its automatic booking or refund process instead of being silently cancelled. The same review task is created if the practice management system rejects a slot after money has been collected. A booking-payment review is durable and separate from the editable task text. Cancelling or editing its task never causes the cancelled paid appointment to reappear. Staff must explicitly arrange a replacement booking or refund the Stripe payment; a practice-collected payment is refunded outside Stripe. ## Send a deposit request From the **Today** queue or a patient's record, find the **Booking deposit** card and click its request button, which names the amount — for example **Request £25 deposit**. On Today the card also sits on the outcome wizard's booked step, under the value, so the link goes out while the consultation is being booked. The card turns amber while the deposit waits and green once it's paid. Check the amount. It's prefilled from the treatment's override (or the practice default) and can be adjusted for this patient. The amount is locked once sent and must be between 1.00 and 5,000.00 in the practice's accounting currency. Pick the channels. Your last selection is remembered, and channels the patient can't receive (no mobile number, no email, opted out) are disabled with the reason shown. {/* Wave 7d slice 0 */} Click **Send payment link**. The patient receives a link that opens a Stripe payment page; the messages also appear in the inbox thread. The link's secret sits after a `#`, so it never reaches a web server or its logs, and paying needs no date of birth: the page shows only your practice, the amount and what it is for. Each journey, appointment, or patient-only request can have at most one live deposit request. Cancel the current request before changing its amount. If the browser loses the response while sending or re-sending, retrying the same action does not create another message. Smileline keeps one send attempt per selected channel and finishes any interrupted handoff automatically. If the request is paid, cancelled or expires before a queued message reaches the channel provider, Smileline does not deliver that stale payment reminder and does not offer to retry it from the Inbox. ## Which location a deposit belongs to Every deposit request records the location its payment is recorded at, so the money lands on that location's ledger, its takings and its month end: * A request you send takes its journey's location, else the patient's location, else the practice's first location. * A deposit paid in online booking belongs to the location the patient booked at. If the visit moves to another location before the deposit is paid, the request moves with it. Once the deposit is paid, it stays at the location its payment was recorded at. The payment page and the messages a request sends show that location's details, such as its phone number. A practice with no location can't request a deposit: add one under [Locations](/guides/settings/locations-and-operatories#locations) first. {/* Wave 7d slice 0: the pay link's secret after a `#` (below). */} ## While it's pending The deposit block shows the request's state live — it flips to **Paid** the moment Stripe confirms, so you can complete the booking mid-call. * **Copy link** — paste the payment link into any other channel. A request sent before payment links were secured gets a new link here; its old link keeps working until the request expires. * **Pay by card** — the patient reads their card out on the call; see [Take a card payment over the phone](#take-a-card-payment-over-the-phone). * **Paid at practice** — the patient paid by cash or card in person; the link is voided. Refunds for these are settled in person too. * **Cancel** — voids the link. If a patient somehow pays seconds after a cancel, the payment is refunded automatically. Links expire after the configured number of days and the request is marked **Expired**. Links sent before payment links were secured (`…/l/` followed by ten characters) keep working until their request expires, then stop. A payment that lands moments after expiry still counts — the money is real, so the request flips to Paid. If the practice enters Closing or Purging, every still-pending deposit link becomes inactive immediately. A deposit confirmed before closure remains recorded and is not refunded merely because the practice closes. If Stripe first confirms payment after closure has begun, Smileline records a durable automatic-refund obligation; a refund that ultimately fails is left visible for staff review. Opening the link concurrently or retrying after a network error reuses the same Stripe payment-page generation. If Stripe ever reports a second successful payment for the same request, Smileline preserves the original payment and tracks the additional payment as its own automatic refund. A failed additional refund flags the deposit for staff review rather than hiding or resending it. Smileline also rechecks stale payment pages on the connected Stripe account, so a captured payment still converges if its webhook delivery was permanently missed; the same amount, currency and payment-identity checks apply. ## Proof of payment Once the deposit is paid — through the link, by card on the call, or recorded as paid at the practice — the card turns green and shows **Proof of payment** with **Copy**. It updates the moment the payment arrives; there's nothing to reload. The proof is the same link the patient was sent. After payment it opens a proof page with the amount, when and how it was paid and the payment reference, plus **View Stripe receipt** for a card payment. The link doesn't expire, so you can paste it into a booking or send it to the patient. A request whose link had already expired before Smileline kept payment links shows no proof link. ## The deposit on the booking When staff book a consultation for a patient whose deposit is waiting or paid, Smileline starts the appointment's note with the deposit and its link: `Booking deposit £25 — live payment status and proof: …`. This happens in the Smileline diary — from Today or the diary — and in Dentally, Open Dental and CareStack when Smileline makes the booking there. The note says no status on purpose: it isn't rewritten when the patient pays later, and the link always shows the current status. Bookings made by the AI receptionist or through online booking don't get the line. If Smileline can't book in your practice management system yet, the booked step asks you to **Book it in** your system **then enter the date and time here**. Smileline doesn't create that appointment, so copy the link from the deposit card (**Copy link** while it waits, **Proof of payment** once paid) and paste it into the booking's notes yourself. ## Take a card payment over the phone If the patient would rather read their card out than use the link, take it yourself while you're on the call. On the pending deposit, click **Pay by card**. Type the card number, expiry date, security code and postcode into the card field. The details go straight to Stripe and never pass through Smileline. Click **Charge** (it shows the deposit amount). When the payment goes through, the block flips to **Paid**. If the patient's bank wants them to approve the payment, the bank's check opens on your screen and the patient approves it in their banking app while you wait. A practice whose Stripe account takes phone payments (MOTO) skips this check — see [Phone payments](/guides/deposits/setup#phone-payments-moto). A declined card shows the bank's reason, and you can try another card straight away. Closing the card form stops the card payment; nothing is charged. While a card payment is in progress, the payment link waits: a patient who opens it is told that a payment is being taken. If the card form closed unexpectedly — for example, the browser crashed — the block shows **Card payment in progress** with **Check with Stripe** and **Cancel card payment**. Smileline also checks unfinished card payments with Stripe in the background, so a payment that went through is recorded as paid even if its confirmation was lost. Only a deposit that's still awaiting payment can be paid by card. For an expired deposit, send a new request. ## After the consultation * **Attended** — the deposit is refunded in full automatically. This works whether attendance is recorded in Smileline or arrives from your practice management system sync. * **Did not attend** — depending on the practice policy the deposit is either kept automatically or flagged **No-show review**, where a manager chooses **Refund** or **Forfeit** from the patient's record, or from **Payments → Deposits** in the clinical workspace. See [Keeping a deposit](#keeping-a-deposit). * **Refund failed** — rare (for example the patient's card was cancelled); the deposit is flagged and a manager can retry the refund. The money stays in the practice's Stripe balance until a retry succeeds or it's settled out-of-band. * **Refund needs review** — Stripe reported conflicting, truncated or differently-owned refund history, so Smileline cannot safely choose an attempt automatically. Automatic recovery stops instead of creating another refund. Review the payment in Stripe and contact Smileline support with the deposit request ID before taking another money action. Support can investigate the evidence, but Smileline does not currently provide an in-product override for conflicting refund history. The review remains visible even if new deposits or connected-account charges are later disabled. When Stripe has accepted a refund but still reports it as pending, Smileline checks that exact refund directly instead of publishing another refund job. Those checks are bounded to the provider's 35-day settlement window. If the outcome is still unclear at the attempt or deadline limit, the deposit changes to **Review required** and shows **Recheck Stripe**. A recheck never creates a second refund; it reads the same Stripe refund ID. Rechecks have a 15-minute cooldown and stop after three attempts, after which you must review the payment in Stripe. A known partial external refund can offer **Refund remainder** for only the verified unpaid amount. Queue publication exhaustion remains review-only: Smileline cannot prove that a delivery was not already accepted, so it never creates a second refund generation from a missing queue acknowledgement. Conflicting, truncated, differently-owned, or exhausted recheck evidence is also review-only and shows no money action until the Stripe outcome has been resolved. If Stripe evidence ever totals more than the original deposit, Smileline shows **Review required**, disables every refund action and keeps the displayed refunded amount capped at the original deposit. Do not issue another refund. Review the charge in Stripe and contact Smileline support with the deposit request ID. Stripe can finish an asynchronous refund after it previously reported that attempt as failed or cancelled. Smileline accepts that late success only when the exact refund ID, payment and attempt still match; an older callback can never overwrite a newer refund decision. ## Keeping a deposit When a deposit is kept — a manager clicks **Forfeit**, or the practice's no-show policy keeps it — the money goes on the patient's ledger at once, as a **Deposit kept** charge that the deposit pays. What is kept is what is left of the deposit after any refunds. The charge carries no VAT, and the deposit is no longer held for treatment. A kept deposit can't also pay for treatment, so whatever it had paid is owed again: * a bill the deposit had paid reads unpaid again on the patient's [Account tab](/guides/patients/ledger), and the balance shows it; * payment-plan instalments it had settled are open again. A plan that had completed shows **An instalment is unpaid again** — see [An instalment unpaid again](/guides/patients/ledger#an-instalment-unpaid-again). The deposit block reads **Kept · on the ledger as “Deposit kept”**. While it reads **Kept · not on the ledger yet**, Smileline is still posting it — for example, the deposit's payment is waiting in the [Review queue](/guides/lead-capture/review-queue) — and it posts on its own within a few minutes once it can. Deposits kept before kept deposits reached the ledger are added to it the same way, on their own. ### Undo a kept deposit A manager or owner can click **Undo** on a kept deposit — after a mis-click, or a no-show recorded in error. Smileline asks you to confirm with the patient's name, then: 1. the deposit goes back to **Paid**, flagged **No-show review**, so you can **Refund** it or **Forfeit** it again; 2. if its **Deposit kept** charge is on the ledger, the charge is reversed and the deposit pays again, oldest first, what it can — usually the bill it had paid. Instalments it had settled stay open: if the deposit was for them, allocate it from the plan. ### Refunds of a kept deposit A kept deposit is the practice's money. To give it back, **Undo** it first, then **Refund** it. On the ledger, **Refund** refuses a kept deposit's payment, and **Reverse** refuses a deposit's payment and its **Deposit kept** charge, so the deposit block and the ledger always agree. * If a refund made at the desk from the deposit's payment is reversed, more of the deposit is left to keep: the kept amount is updated on its own within a few minutes. * If the deposit is refunded directly in your Stripe dashboard, Smileline reverses the **Deposit kept** charge and records the refund. If the ledger can't take it at once, the refund waits in the [Review queue](/guides/lead-capture/review-queue) with the reason and is added within a few minutes once it can. Stripe is never asked to refund it again. ## Every request in one list In the clinical workspace, **Payments → Deposits** lists every deposit request, newest first, with **Load more** until the list ends. Narrow it to **Awaiting payment**, **No-show review** or **Paid**, or show **All**. Each row names the patient with their date of birth, the amount, the request's state and what happens next, and carries the same buttons as the deposit block above. Each row names its location, also one since closed, unless it is the practice's only location, and with more than one location the location picker keeps one location's requests. See [Payments](/guides/patients/payments#deposits). Who can do what: front desk and telesales send, re-send, cancel and record practice-collected deposits; refunding or forfeiting a paid deposit, and undoing a kept one, needs a manager or owner. --- # Set up booking deposits Source: https://docs.smileline.io/guides/deposits/setup Connect the practice's Stripe account and configure deposit amounts, link expiry and the no-show policy. Booking deposits let the practice take a refundable payment before a consultation is booked. Patients pay through a short link sent by SMS, email or WhatsApp; when the consultation is marked as attended, the deposit is refunded automatically. Payments go **directly into the practice's own Stripe account** — the practice is the merchant of record, receives the payouts and pays Stripe's processing fees. Smileline adds no fee on top. ## Connect Stripe Only owners and managers can connect Stripe. Stripe authorization is tied to the immutable practice country chosen during sign-up. United States practices use USD; the United Kingdom uses GBP; every other currently supported country uses EUR. Every deposit uses that same country and currency. Open **Settings → Payments & deposits**. Click **Connect Stripe**. You'll be taken to Stripe to sign in, choose the practice's existing Standard account or register one, and authorize Smileline. When Stripe sends you back, Smileline verifies the account once and shows its payment and payout status, together with the account's name, email and account ID (`acct_…`) so you can tell which Stripe account is attached. If Stripe still needs information, use **Authorize Stripe** after resolving the requirements in Stripe. Stripe can approve access before the browser returns to Smileline. Smileline records that grant independently and attaches it only after the single-use callback proves the practice and connection generation. If the callback is abandoned, rejected or superseded, the unused grant is deauthorised automatically within a bounded one-hour cleanup window rather than remaining attached indefinitely. Payments are enabled as soon as Stripe verifies the essentials; payouts to the practice's bank can take a little longer to switch on. Both are shown as status pills on the page. **Open Stripe dashboard** takes you to Stripe, where you sign in to the practice's own account to see payouts, receipts and disputes. ### Change the connected account Choose **Change Stripe account** to authorize a different Standard account. Smileline does not move payment traffic immediately. The page shows the candidate as **awaiting confirmation**, while the current account continues to receive new deposits. Confirm only after checking that you selected the intended practice account: the confirmation card shows the candidate's name, email and account ID. You can also cancel the switch; cancellation deauthorizes only the candidate and leaves the current account unchanged. Confirming a switch changes the account used for new deposit payment pages. Every payment page, captured payment and refund already in progress remains pinned to the Stripe account that created it. Smileline never attempts to refund an old charge through the newly selected account. ## Configure deposits Once connected, turn on **Deposit requests** and set: * **Default amount** — what a deposit request asks for when nothing more specific applies (€25, £25 or $25 until you change it, according to the practice's financial region). Deposit amounts must be between €1/£1/$1 and €5,000/£5,000/$5,000. * **Per-treatment amounts** — override the default for specific treatments (for example €100, £100 or $100 for implants). Leave a treatment empty to use the default. These are booking deposits, not treatment prices: an amount over 100 shows a reminder, and treatment prices are set in **Settings → Fees & prices**. * **Link expiry** — how many days a payment link stays live (1–30, default 7). Expired links tell the patient to contact the practice. * **If the patient doesn't attend** — what happens to a paid deposit on a missed appointment: * **Hold for review** (default): the deposit is flagged and staff decide whether to refund or keep it. * **Keep automatically**: the deposit is forfeited as soon as the appointment is marked as not attended. * **WhatsApp template** — WhatsApp only allows business-initiated messages outside a 24-hour reply window when they use an approved template. Pick the approved deposit template here; without one, WhatsApp sends only work within 24 hours of the patient's last message. SMS and email have no such restriction. Each deposit is recorded at one of the practice's locations, where its payment and any refund post, so the practice needs at least one [location](/guides/settings/locations-and-operatories#locations) before it requests deposits. See [Which location a deposit belongs to](/guides/deposits/requests#which-location-a-deposit-belongs-to). An appointment type that requires a deposit is unavailable in online booking whenever the connected account cannot take charges or Smileline cannot reach its configured Stripe environment. The requirement is never silently changed to a free booking. Staff can still take cash or card outside Stripe and use **Paid at practice** on a deposit request; this is an explicit staff action, not an automatic fallback. ## Phone payments (MOTO) Staff can take a deposit by card when the patient reads their card out on the call (**Pay by card** on a pending deposit — see [Take a card payment over the phone](/guides/deposits/requests#take-a-card-payment-over-the-phone)). The card details go straight to Stripe and never pass through Smileline. Stripe treats a card taken over the phone as a *mail order / telephone order* (MOTO) payment, which the patient's bank doesn't need to approve. Stripe switches MOTO on per account, after a card-security check: ask [Stripe support](https://support.stripe.com/) to enable MOTO payments on the practice's Stripe account. Until it's switched on, **Pay by card** still works: when the patient's bank wants approval, its check opens on the staff screen and the patient approves the payment in their banking app during the call. ## Refunds * Attending the consultation refunds the deposit in full, automatically — whether attendance is recorded in Smileline or synced in from your practice management system. * Staff with the manager role or above can refund or forfeit a deposit manually at any time from the patient's record. * Stripe's processing fee from the original payment is **not** returned to the practice on refunds — that's how Stripe works, not a Smileline charge. Refunds are paid out of the practice's Stripe balance. If the balance can't cover a refund, Stripe debits the practice's bank account; a refund that ultimately fails is flagged in Smileline for staff to retry. --- # Analogue adapter (ATA) Source: https://docs.smileline.io/guides/desk-phones/ata Keep an existing analogue phone by registering a Grandstream HT801 or HT802 adapter as a desk handset or on a desk phone line. An analogue telephone adapter (ATA) puts an ordinary corded or cordless analogue phone onto the line — plug the phone into the adapter, the adapter into your network. You need the phone's SIP credentials: for a desk handset — a person's or a shared one like the reception phone — click **Show setup link** on its row in **Settings → Phone → Voice & calling → Calling devices**; for a desk phone line, on the number's card in **Settings → Call routing**. See [Desk phones](/guides/desk-phones) for the difference. Connect the adapter's network port to your router and plug the analogue phone into the **Phone 1** port. Power it on. On the analogue phone, dial `***` then `02` — the adapter reads out its IP address. In a browser on the same network, open `http://` and sign in (factory password `admin` — change it while you're there). On the **FXS PORT1** tab, fill in: * **Account Active**: Yes * **Primary SIP Server**: the server shown under **Show setup link** — `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US one * **SIP User ID** and **Authenticate ID**: the line's username * **Authenticate Password**: the line's password * **SIP Transport**: **TLS** (port `5061`) * **Register Expiration**: `3` minutes Set the vocoder order, SRTP, the keep-alive and DTMF to the values in [the settings every phone needs](/guides/desk-phones#the-settings-every-phone-needs). Click **Apply**, then **Reboot**. The **Status** tab shows FXS Port 1 as **Registered**, and the phone gets a dial tone. Call the number from a mobile — the analogue phone rings. If the line is two-way, dial out to confirm outbound. Analogue phones plugged into an ATA stop working during a power cut, unlike an old exchange line. If the practice relies on this phone for emergencies, keep it on a UPS or keep a charged mobile as the fallback. Grandstream's HT8xx manuals live at [grandstream.com/support](https://www.grandstream.com/support). --- # Cisco Source: https://docs.smileline.io/guides/desk-phones/cisco Register a Cisco 68xx or 88xx multiplatform (MPP) phone as a desk handset or on a desk phone line. You need the phone's SIP credentials: for a desk handset — a person's or a shared one like the reception phone — click **Show setup link** on its row in **Settings → Phone → Voice & calling → Calling devices**; for a desk phone line, on the number's card in **Settings → Call routing**. See [Desk phones](/guides/desk-phones) for the difference. These steps apply to **multiplatform (MPP)** firmware — the open-SIP variant. A phone running Cisco's Enterprise firmware must be converted to MPP before it can register with a third-party SIP service. Connect the phone to your network and power. Press **Applications → Status → Network status** to read its IP address. In a browser on the same network, open `https://` and switch to **Admin Login → advanced**. On the **Voice → Ext 1** tab, fill in: * **Line Enable**: Yes * **Proxy** (under Proxy and Registration): the server shown under **Show setup link** — `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US one * **Register Expires**: `180` * **Display Name**: your practice name * **User ID** and **Auth ID**: the line's username * **Password**: the line's password * **SIP Transport** (under SIP Settings): **TLS**, port `5061` Under **Voice → Ext 1 → Audio Configuration**, put **G722** first, then **G711a** and **G711u** in the UK (**G711u** before **G711a** in the US), and leave G729 out. Set SRTP, the keep-alive and DTMF to the values in [the settings every phone needs](/guides/desk-phones#the-settings-every-phone-needs). Click **Submit All Changes**. The phone reboots and the line label stops flashing once registered. Call the number from a mobile — the handset rings. If the line is two-way, dial out to confirm outbound. Cisco's MPP documentation lives at [cisco.com](https://www.cisco.com/c/en/us/support/collaboration-endpoints/index.html), and the carrier's guide is [Cisco: 68xx/88xx setup](https://support.telnyx.com/en/articles/5820309-cisco-68xx-88xx-setup). --- # Cordless (DECT) Source: https://docs.smileline.io/guides/desk-phones/dect Register a Yealink W-series DECT base station so cordless handsets ring, as a desk handset or on a desk phone line. A DECT base station registers once; cordless handsets then pair with the base — useful for surgeries where the phone moves around. You need the phone's SIP credentials: for a desk handset — a person's or a shared one like the reception phone — click **Show setup link** on its row in **Settings → Phone → Voice & calling → Calling devices**; for a desk phone line, on the number's card in **Settings → Call routing**. See [Desk phones](/guides/desk-phones) for the difference. Connect the base station (for example a Yealink W70B or W73P bundle) to your network and power. Pair a handset with the base (**OK → Settings → Registration**, then press the base's pairing button). On the paired handset, press **OK → Status** to read the base's IP address. In a browser on the same network, open `https://` and sign in (factory login `admin` / `admin` — change it while you're there). Go to **Account → Register**, pick Account 1, and fill in: * **Line Active**: Enabled * **Label** and **Display Name**: your practice name * **Register Name** and **User Name**: the line's username * **Password**: the line's password * **Server Host**: the server shown under **Show setup link** — `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US one — port `5061`, transport **TLS** * **Server Expires**: `180` Under **Account → Advanced** and **Account → Codec**, set SRTP, the keep-alive, DTMF and the codec order to the values in [the settings every phone needs](/guides/desk-phones#the-settings-every-phone-needs). Under **Account → Number Assignment**, assign the account to every handset that should ring. Click **Confirm**, then call the number from a mobile — the cordless handsets ring. If the line is two-way, dial out to confirm outbound. One base station supports multiple handsets, and they all ring together — you rarely need a second registration. Yealink's DECT manuals live at [support.yealink.com](https://support.yealink.com). --- # Fanvil Source: https://docs.smileline.io/guides/desk-phones/fanvil Register a Fanvil X-series IP phone as a desk handset or on a desk phone line. Click **Show setup link** on the phone's row in **Settings → Phone → Voice & calling → Calling devices** (a desk handset — a person's or a shared one like the reception phone), or on the number's card in **Settings → Call routing** (a desk phone line). See [Desk phones](/guides/desk-phones) for the difference. ## Set up by link This needs firmware 2.2.10 or newer — update older phones first, or enter the settings by hand. On the phone's web page, open **System → Auto Provision**. Set the protocol to **HTTPS** and type the setup link into the server address without `https://`. Leave the user name, password and AES fields blank. Click **Apply**, then start provisioning (or restart the phone). The phone downloads its settings and registers; click **Refresh** on the card to see **Handset registered**. If the phone refuses the link's security certificate, update its firmware — never switch certificate checking off, because the download carries the line's password. ## Enter the settings by hand Connect the phone to your network and power. Press **Menu → Status** to read its IP address. In a browser on the same network, open `http://` and sign in (factory login `admin` / `admin` — change it while you're there). Go to **Line → SIP** and, for SIP Line 1, fill in: * **Line Active**: ticked * **Display Name**: your practice name * **Username** and **Authentication User**: the line's username * **Authentication Password**: the line's password * **Server Address**: the server shown under **Show setup link** — `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US one — **Server Port**: `5061` * Under **Global Settings** (or the line's advanced settings), set the transport protocol to **TLS** and the registration expiry to `180` seconds. In the line's advanced settings, set: * **RTP Encryption**: **Compulsory** on a desk handset, **Disabled** on a desk phone line or a handset added before Smileline turned encryption on (see [Desk phones](/guides/desk-phones#the-settings-every-phone-needs)) * **Keep Alive Type**: SIP Option, **Keep Alive Interval** `30` seconds * **DTMF Type**: RFC2833 Under **Line → Audio** (or the line's codec settings), enable **G722** first, then **PCMA** and **PCMU** in the UK (**PCMU** before **PCMA** in the US), and disable **G729**. Click **Apply**. The line shows **Registered** on the status page. Call the number from a mobile — the handset rings. If the line is two-way, dial out to confirm outbound. Fanvil's documentation lives at [fanvil.com/support](https://www.fanvil.com/support), and the carrier's guide is [Fanvil X-series: IP phone](https://support.telnyx.com/en/articles/6209971-fanvil-x-series-ip-phone). --- # Grandstream Source: https://docs.smileline.io/guides/desk-phones/grandstream Register a Grandstream GRP26xx series IP phone as a desk handset or on a desk phone line. Click **Show setup link** on the phone's row in **Settings → Phone → Voice & calling → Calling devices** (a desk handset — a person's or a shared one like the reception phone), or on the number's card in **Settings → Call routing** (a desk phone line). See [Desk phones](/guides/desk-phones) for the difference. ## Set up by link On the phone's web page, open **Maintenance → Upgrade and Provisioning**. Set **Config Upgrade Via** to **HTTPS** and type the setup link into **Config Server Path** without `https://`. Leave the config server user name and password blank. Click **Save and Apply**, then **Start Provision**. The phone downloads its settings and registers; click **Refresh** on the card to see **Handset registered**. If the phone refuses the link's security certificate, update its firmware — never switch certificate checking off, because the download carries the line's password. ## Enter the settings by hand Connect the phone to your network and power. Press the **round menu button → Status → Network** to read its IP address. In a browser on the same network, open `https://` and sign in (factory login `admin` / `admin`, or the random password on the sticker under newer units). Change it while you're there. Go to **Accounts → Account 1 → General Settings** and fill in: * **Account Active**: Yes * **Account Name**: your practice name * **SIP Server**: the server shown under **Show setup link** — `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US one * **SIP User ID** and **Authenticate ID**: the line's username * **Authenticate Password**: the line's password Under **Accounts → Account 1 → SIP Settings**, set **SIP Transport** to **TLS** (port `5061`), **Register Expiration** to `3` minutes, and turn on the SIP OPTIONS keep-alive every `30` seconds. Under **Accounts → Account 1 → Audio Settings**: * **Preferred Vocoder**: **G722** first, then **PCMA** and **PCMU** in the UK (**PCMU** before **PCMA** in the US), and no **G729** * **Send DTMF**: via RTP (RFC2833) only * **SRTP Mode**: **Enabled and forced** on a desk handset, **Disabled** on a desk phone line or a handset added before Smileline turned encryption on (see [Desk phones](/guides/desk-phones#the-settings-every-phone-needs)) Click **Save and Apply**. **Status → Account Status** shows the account as **Registered**. Call the number from a mobile — the handset rings. If the line is two-way, dial out to confirm outbound. Grandstream's manuals live at [grandstream.com/support](https://www.grandstream.com/support), and the carrier's guide is [Grandstream GRP2612: SIP trunk configuration](https://support.telnyx.com/en/collections/1513008-grandstream-devices-telnyx-setup). --- # Desk phones Source: https://docs.smileline.io/guides/desk-phones Use a physical SIP handset as a member's calling device or a shared reception phone, or move a whole number onto it as a desk phone line — and understand what each gives up. There are two ways to use a physical SIP phone with Smileline: | A desk handset (recommended) | A desk phone line | | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | One of a member's calling devices, or a shared phone such as reception that belongs to nobody — added on **Settings → Phone → Voice & calling → Calling devices** | Takes a whole number off Smileline and onto the phone, from **Settings → Call routing** | | Rings with the member's other devices, in ring groups, with the keypad menu and voicemail | No ring groups, menus, opening hours or voicemail | | Shows the caller's name; every call in the call log; transfers from the app or with keypad codes | Calls invisible to Smileline; no transfers | | Needs Smileline reachable, like every other device | Keeps ringing during a Smileline outage | The registration settings below apply to both. The handset option — for a person or shared — is described under [Desk handsets](/guides/settings/voice#desk-handsets); the rest of this page is about desk phone lines. A **desk phone line** moves one of your numbers off Smileline's call handling and onto a physical SIP handset. Calls go straight from the carrier to the phone on your desk, with Smileline completely out of the path — so the phone keeps ringing even if Smileline, or your internet-connected computers, are down. That independence has a hard trade: Smileline can no longer see the number's calls at all. | On a desk phone line | On Smileline | | ------------------------------------------ | --------------------------------------- | | Rings your handset directly, always | Rings your team's devices via Smileline | | Works during a Smileline outage | Depends on Smileline being reachable | | No ring groups, menus or opening hours | Full call routing | | No voicemail, recording or AI receptionist | All included | | Calls do not appear in call history | Every call on the timeline | | No screen pop or patient matching | Both built in | Moving a number to a desk phone is the practice owner's decision and takes effect for every caller. Most practices are better served keeping numbers on Smileline and adding a [backup number](/guides/settings/call-routing) — the caller is then forwarded only when Smileline can't take the call. ## Turn a number into a desk phone line You need the **owner** role, and the number can't be your outbound caller ID (pick a different caller ID first on **Settings → Phone numbers**). Open **Settings → Call routing** and find the number's card. Click **Move to a desk phone…** and confirm. The card switches to the desk-phone panel and shows **Setting up** for a minute or so. When the panel shows the line is live, click **Show setup link**. You'll see the line's setup link and, under it, the server, username and password. Each reveal is recorded in the activity log. Type the link into the phone's **Auto Provision** URL (see [Set up by link](#set-up-by-link)), or enter the three values by hand — pick your brand below for step-by-step instructions. ## Set up by link Yealink, Poly, Grandstream and Fanvil phones can download their settings themselves, so nobody has to type a SIP password on a keypad. The card's **Show setup link** gives each phone line a short link such as `https://api-eu.smileline.io/p/48291365720418273645`. Open the phone's **Auto Provision** (or **Provisioning**) settings, on its screen or its web page — your brand's page below has the exact menu. Type the link into the **URL** (or server) field. On a phone with a protocol menu, choose **HTTPS** and type the link without `https://`. Leave the username, password and AES fields blank. Save and start provisioning (**Autoprovision Now** on a Yealink). The phone downloads its settings, registers, and the card shows **Handset registered** after **Refresh**. The download also sets everything in [the settings every phone needs](#the-settings-every-phone-needs) — the registrar for your country, encryption, keep-alive, keypad tones, codec order and network priority — so there's nothing else to change on the phone. Setup links work for practices in the UK and the US, like desk phones themselves. Every download is recorded in the activity log with the phone's model, so a phone you don't recognise stands out. The link works for as long as the line is live: it stops when the handset is removed, when a desk phone line's password is reset, and when a desk phone line stops being live on its way back to Smileline. Reveal it again for the new link. If the phone refuses the link's security certificate, update the phone's firmware. Never switch certificate checking off: the download carries the line's password. ## The settings every phone needs Whatever the brand, the registration values are the same: | Setting | Value | | ----------------------- | ------------------------------------------------------------------------------------------------------- | | SIP server / registrar | `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US practice — **Show setup link** shows yours | | Username / auth ID | from **Show setup link** | | Password | from **Show setup link** | | Transport and port | TLS on port `5061` only — never `5060` with UDP or TCP | | Media encryption (SRTP) | Required on a desk handset (see below); off on a desk phone line | | Registration expiry | `180` seconds | | Keep-alive | On, every `30` seconds (SIP OPTIONS where the phone offers a choice) | | DTMF (keypad tones) | RFC 2833 (also shown as RTP event or out-of-band) | | Codecs, in order | G.722, then G.711 A-law and µ-law in the UK, or µ-law and A-law in the US. G.729 off | | QoS (DSCP) | `46` for audio, `26` for signalling | | STUN / ICE | off | Desk handsets encrypt their call audio (SRTP), so the phone must require it. A handset added before Smileline turned encryption on keeps unencrypted audio: leave encryption off on that phone, or remove it and add it again to switch encryption on. Desk phone lines don't encrypt audio. The setup link always sets the right value for the phone it belongs to. On a desk phone line you can register more than one handset with the same credentials — they all ring together. A desk handset's credentials belong to one phone: its registration status is per phone. The line carries up to **two concurrent calls**. The desk-phone card checks with the carrier each time it opens whether a handset is actually registered: **Handset registered** means it will ring; **No handset is registered** or **last registration failed** usually means a mistyped password or server. **Unknown** means the carrier has not confirmed a state yet. What happens to calls until the phone registers depends on the option: * **Desk phone line** — calls fall to the backup number, if you've set one (see [If the handset goes offline](#if-the-handset-goes-offline)). * **Desk handset** — the card shows **Not registered** and the phone doesn't ring. Calls follow the number's [call routing](/guides/settings/call-routing): on a number with no routing saved, they move on to the practice's other devices, then voicemail. Calls on the line count towards the practice's fair-use calling like every other Voice call: Smileline reads the line's call records from the carrier once a day to count them. ## Network checklist Most desk-phone problems — one-way audio, calls that drop, a phone that keeps losing its registration — come from the network, not the phone. Check these with whoever looks after your router or firewall: * **SIP ALG off.** Many routers rewrite SIP traffic "to help", which breaks calls. Turn it off (it may be called SIP helper, SIP fixup or SIP passthrough). * **Outbound TLS on port `5061` allowed**, for the phone's registration and call setup. * **UDP ports `16384`–`32768` open in both directions**, for the call audio. * **QoS marks honoured.** The phones mark audio `46` and signalling `26` (DSCP). Make sure your router and switches keep and prioritise them, especially on a busy connection. * **Wired Ethernet where you can.** Wi-Fi and powerline adapters add the delays and dropouts that make calls break up. ## Receiving and making calls The line starts **inbound-only**: the handset receives calls immediately, but can't dial out. UK and US law require emergency numbers (999/112/911) to work from any line that can place calls, so outbound activates only after you register the handset's physical address — click **Register emergency address…** on the number's card. Once the carrier confirms it, the panel shows **Two-way** and the handset can dial out (domestic numbers only). If the practice moves, register the new address before relying on the handset for emergency calls — responders are dispatched to the registered address. Numbers that stay on Smileline (the softphone, desktop app and extension) register per location instead — see [Emergency calling](/guides/settings/emergency-calling). ## If the handset goes offline Set a **Backup number** on the same card. If your handsets are unplugged or lose registration, the carrier forwards callers there instead — the same safety net Smileline-handled numbers get. ## Set up your phone ## Moving back to Smileline Click **Move back to Smileline** on the number's card. The handset stops ringing, the line's credentials stop working, and Smileline answers the number again — its routing starts unconfigured, like a newly bought number, so set it up on the same page. Once the move has finished, click **Register address** under the number on **Settings → Phone numbers** — until you do, 999/112/911 can't use the number (see [Emergency calling](/guides/settings/emergency-calling)). The move is carried out at the carrier in the background. If it keeps failing there, Smileline stops retrying after a bounded run of attempts and parks the move in [**Review queue**](/guides/lead-capture/review-queue#phone-system-items) rather than failing silently — the row names the error. Click **Move back to Smileline** again to retry it. --- # Poly Source: https://docs.smileline.io/guides/desk-phones/poly Register a Poly VVX x50 or Edge E series IP phone as a desk handset or on a desk phone line. Click **Show setup link** on the phone's row in **Settings → Phone → Voice & calling → Calling devices** (a desk handset — a person's or a shared one like the reception phone), or on the number's card in **Settings → Call routing** (a desk phone line). See [Desk phones](/guides/desk-phones) for the difference. ## Set up by link On the phone's web page, open **Settings → Provisioning Server** (on the phone: **Settings → Advanced → Administration Settings → Network Configuration → Provisioning Server**). Set **Server Type** to **HTTPS** and type the setup link into **Server Address** without `https://`. Leave the server user and password blank. Save. The phone restarts, downloads its settings and registers; click **Refresh** on the card to see **Handset registered**. If the phone refuses the link's security certificate, update its firmware — never switch certificate checking off, because the download carries the line's password. ## Enter the settings by hand Connect the phone to your network and power, let it boot to the home screen, then read its IP address under **Menu → Settings → Status → Network → TCP/IP Parameters**. In a browser on the same network, open `https://` and sign in as **Admin** (factory password `456` — change it while you're there). Go to **Simple Setup** (or **Settings → Lines → Line 1**) and fill in: * **SIP Server Address**: the server shown under **Show setup link** — `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US one — port `5061`, transport **TLS** * **SIP Outbound Proxy**: leave empty * **Phone Display Name**: your practice name * **Address**, **Auth User ID**: the line's username * **Auth Password**: the line's password Under the line's **Registration** settings, set the expiry to `180` seconds if the field is exposed; the default re-registration also works. Set SRTP, the keep-alive, DTMF and the codec order to the values in [the settings every phone needs](/guides/desk-phones#the-settings-every-phone-needs). The setup link does this for you, which is the easier route on a Poly. Click **Save**. The line key on the handset turns solid once registered. Call the number from a mobile — the handset rings. If the line is two-way, dial out to confirm outbound. Poly's documentation lives at [docs.poly.com](https://docs.poly.com), and the carrier's guide is [Polycom: setup with Telnyx](https://support.telnyx.com/en/articles/5619617-polycom-setup-with-telnyx). --- # Yealink Source: https://docs.smileline.io/guides/desk-phones/yealink Register a Yealink T3x, T4x or T5x series IP phone as a desk handset or on a desk phone line. Click **Show setup link** on the phone's row in **Settings → Phone → Voice & calling → Calling devices** (a desk handset — a person's or a shared one like the reception phone), or on the number's card in **Settings → Call routing** (a desk phone line). See [Desk phones](/guides/desk-phones) for the difference. ## Set up by link On the phone, open **Menu → Settings → Advanced Settings → Auto Provision** (factory admin password `admin`) — or, on its web page, **Settings → Auto Provision**. Type the setup link into **URL** (or **Server URL**), including `https://`. Leave **Username**, **Password**, **Common AES** and **MAC-Oriented AES** blank. Save, then choose **Autoprovision Now**. The phone downloads its settings and registers; click **Refresh** on the card to see **Handset registered**. If the phone refuses the link's security certificate, update its firmware — never switch certificate checking off, because the download carries the line's password. ## The phone's own keys On a desk handset set up by link, the phone's own keys work with Smileline: * **Transfer** asks the colleague first: press it, type their extension, then `#`. The caller hears hold music while the colleague's devices ring. Press `#` to hand the caller over, or `*` to take them back. * **Send now**, a soft key during a call, asks for the extension on screen and transfers straight away. If the colleague doesn't answer, your phone rings again, then the caller can leave a voicemail. * **Voicemail**, a soft key during a call, sends the caller to voicemail. * **Hold** puts the caller on the practice's [hold music](/guides/settings/voice#hold-music); **Resume** brings them back straight away. A hold started with the app's **Hold** is ended with the app's **Resume**, not the phone's. A handset whose settings were entered by hand keeps the phone's own Transfer, which Smileline can't follow: use the keypad codes in [Settings → Voice](/guides/settings/voice) or the app's call bar instead, or set the phone up by link. A desk phone line is never transferred by Smileline. ## Enter the settings by hand Connect the phone to your network and power. When it boots, press **OK** (or **Menu → Status**) to read its IP address off the screen. In a browser on the same network, open `https://` and sign in. The factory login is `admin` / `admin` — change it while you're there. Go to **Account → Register** and fill in, for Account 1: * **Line Active**: Enabled * **Label** and **Display Name**: your practice name * **Register Name** and **User Name**: the line's username * **Password**: the line's password * **Server Host**: the server shown under **Show setup link** — `sip.telnyx.eu` for a UK practice, `sip.telnyx.com` for a US one — port `5061` * **Transport**: TLS * **Server Expires**: `180` Under **Account → Advanced**, set: * **RTP Encryption (SRTP)**: **Compulsory** on a desk handset, **Disabled** on a desk phone line or a handset added before Smileline turned encryption on (see [Desk phones](/guides/desk-phones#the-settings-every-phone-needs)) * **Keep Alive Type**: Options, every `30` seconds * **DTMF Type**: RFC2833 Under **Account → Codec**, enable **G722** first, then **PCMA** and **PCMU** in the UK (**PCMU** before **PCMA** in the US), and disable **G729**. Click **Confirm**. The account status shows **Registered** within a few seconds, and the line icon on the handset turns solid. Call the number from a mobile — the handset rings. If the line is two-way, dial out to confirm outbound. More than one Yealink can register with the same credentials; they ring together. Repeat these steps on each handset. If registration fails, check the password was copied exactly (reveal it again if unsure), and run through the [network checklist](/guides/desk-phones#network-checklist). Yealink's own manuals live at [support.yealink.com](https://support.yealink.com), and the carrier's guide is [Yealink: Setup with Telnyx](https://support.telnyx.com/en/articles/3074710-yealink-setup-with-telnyx). --- # The call log Source: https://docs.smileline.io/guides/desktop-app/call-log Every call in and out of the practice, with recordings, AI transcripts and summaries, without leaving the desk. The desk keeps one screen open all day. The rail down the left switches between them, and your phone line stays registered the whole time — changing screens never drops a call. ## All calls Click **Calls** in the rail. Every call the practice has made or taken appears newest first, grouped by day (**Today**, **Yesterday**, then the date), with who it was with, who handled it, how it ended, how long it lasted and the time it started. A call with a patient also shows where that patient's journey stands now: the last outcome recorded for them, such as **Call back later · Thu 15 Oct**, **Booked · Mon 12 Oct** or **Not proceeding · Too expensive**. It is the same on every call with that patient, and it changes as soon as someone records a new outcome or moves the callback. While the patient has an open journey, it shows that journey's last outcome, so a patient who was not proceeding and has since come back — a new enquiry or a reopened lead — no longer shows **Not proceeding**. Click the person icon beside the call button to open the patient — in Today on the desk, their patient record elsewhere. The tabs at the top pick which calls you see. Only one is on at a time: * **All** shows every call. * **Incoming** and **Outgoing** narrow by direction. * **Missed** shows [missed calls](#missed-calls). On the desk, the tab shows how many are still waiting for a call back. Click **Answered**, under the tabs, to see only the calls that were really answered — never one a voicemail picked up — on whichever tab is open. Click it again to see every call. It isn't offered on **Missed**: no missed call was answered. The search box matches a phone number or a patient's name. Numbers match however they were typed: `07700 900 077` finds the same call as `+447700900077`. Click **+ Filter** to narrow the list further. Each filter becomes a chip you can click to change, or remove with its ✕: | Filter | What it does | | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Date** | A preset such as **Today** or **Last 7 days**, or your own dates on the practice's calendar | | **Handled by** | Calls one team member took or made | | **Result** | **Answered**, **Not answered** or **Voicemail** (a message left for the practice, or an outgoing call the other person's voicemail picked up). An AI call counts by the agent's own outcome, as its label shows | | **Outcome** | Calls with patients whose journey now stands at one outcome, such as **Call back later** or **Booked** | | **Recorded** | Only calls with a stored recording | The count beside the title is the number of calls that match what you picked. When nothing matches, the list says so and offers **Clear filters**. Click any call to open it. Everything about the call is on the opened card, so nothing needs a second panel. The top line shows who handled it — the team member's photo and name, the shared desk phone, or the AI receptionist; a call nobody picked up says **Nobody answered** — beside **[how the call went](#how-the-call-went)**, the call as one coloured bar. Below it the card has two columns: * **The call**, on the left — [Call AI](#call-ai-on-the-card)'s read of an answered call, then the recording and its transcript. * **The lead**, on the right — when the call is linked to a patient, the journey's current outcome and their lead card: the treatment and its value, where the journey stands in the pipeline, who owns the lead and how many times the practice has tried to reach them. Click **Open lead** to work the lead in Today, or their patient record when nothing of theirs is due today. If a recording is stored, its player loads as soon as you open the call — the audio waits, paused, until you press play — and the transcript appears right under it. While it plays, a transcript written live during the call follows along like captions: the line being spoken is highlighted, its words fill in as they are said, and the list scrolls to keep it in view. Click a line to play the recording from that moment. A call with no recording keeps a **Show transcript** button instead. Listening to recordings and reading transcripts needs the calling media permission. Without it you still see that a call happened, who it was with and how it ended — you just cannot open what was said. Ask an owner to change this on **Settings → Team**. ## Call AI on the card An answered call shows [Call AI](/guides/calls/call-ai)'s analysis right on the opened card. On the call's side: * **Summary** — what the call came to (**Booked**, **Call back agreed**, **Not booked**, **No booking needed**), what was said and, when the patient didn't book, why and who can fix it. The recording and transcript follow it. * **Next step** — what to do now, with **Open in Today** when Call AI added the task. * **Suggested email** — a follow-up to send, with **Use** and **Dismiss**. On the lead's side, under the lead card: * **Lead profile** — how the patient felt; what they need, what is holding them back and what will win the booking, a few words each; and a short recap of the lead so far. * **Say this next time** — how to open the next call and what to cover. * **Coaching** — for the person who took the call and the practice's managers: the score, how many checks the call met and the first thing to work on. **Open coaching** shows the full scorecard, what went well and the objections. A transcript written live during the call names who said each line, **Caller** or **Practice**. Call AI is there for practices in the United Kingdom and the United States. ## How the call went An ended call opens with **How the call went**: the call as one bar, with the time it started on the left and the time it ended on the right. Each step is a coloured stretch of the bar showing how long it lasted — blue while it rang, green while you talked, grey on hold, amber when nobody picked up. On a call that rang for 16 seconds and then lasted 18 and a half minutes, the bar reads `16s` then `18m 33s`. Hover a stretch, or tab to it, to see what it was and the time it began: * the route it took — **While open**, **While closed**, **Closed today**, **No routing saved**, **Known patient** or **Withheld number** — starting with **Tracking number** on a call to one of your [tracking numbers](/guides/lead-capture/call-tracking); * the keypad menu choice: **Pressed 1**, or **No choice in the menu**; * who it rang, such as **Rang Front desk: Anna, Ben, Cara +2**, with **no answer** added when nobody picked up; * who answered and on which device, such as **Answered by Anna · Desktop app**, or the outside number a forward reached; * **Voicemail at** a number, when a voicemail picked up instead of a person: the number you called, or the phone a forward rang; * holds (**On hold**) and talking again (**Off hold**), transfers (**Transferred to Ben**, or **Transfer didn't connect**) and forwards; * the AI receptionist answering or passing the call on, an announcement, the couldn't-connect message or voicemail; * why it was turned away, such as **Blocked number** or **Voicemail full**. The hang-up icon at the end says who hung up: **Caller hung up** on an incoming call, the patient's name (such as **Emma Butler hung up**) on an outgoing one, **Practice hung up** or **Call ended**. A voicemail that cuts you off while you're leaving a message shows the patient's name too: the hang-up came from their phone or voicemail service, not from Smileline. Someone who has since left the practice shows as **Former member**, and a very long call ends its bar with **+N more**. Seeing the path doesn't need the calling media permission. It appears on calls to your Smileline numbers, on calls placed with a call button in Smileline and on the calls the AI voice agent places ([AI outbound calling](/guides/settings/ai-outbound-calling)). Calls from before Smileline began recording it have none, and nor do calls Smileline doesn't route: on a desk phone line or dialled from a desk phone's own keypad, or through another phone provider. ## Missed calls An inbound call nobody answered carries a badge saying what became of it: * **Missed** — nobody has called the number back yet. * **Called back** — someone at the practice called that number afterwards, from the browser, the desk app or a desk phone. It counts whether or not the caller picked up. It also counts if the same caller rang again and got through. A call the carrier refused before it rang does not count. * **Dismissed** — a team member marked it as dealt with without calling back. Every call in the list has a call button at the end of its row, so you can ring the other party straight from the log. Click **Dismiss** on a missed call to close that one call without calling back, for example a wrong number or a caller you reached another way. Other missed calls from the same number stay open. The **Missed** tab opens on **To call back**: the missed calls nobody has returned or dismissed yet. When there are none, the list says **Nothing to call back**. Switch to **All missed** to see every missed call, including the ones already called back or dismissed. The red **Missed** badge next to the day chips on [Today](/guides/today/overview) counts the same open missed calls, and clicking it opens this list in a window over Today, on **Missed → To call back**. The full list is also at **Settings → Phone → Call log**. ## AI calls Click **AI calls** in the rail for the same list narrowed to calls your AI voice agent handled. It has the same **All**, **Incoming** and **Outgoing** tabs and the same filters, apart from **Handled by**: the agent handled them. There is no **Missed** tab, because the agent answers every call it takes. Each call shows the agent's outcome (**Answered**, **No answer**, **Busy**, **Voicemail**, **Failed** or **Transferred**), and opening it adds the agent's written summary under the recording. The summary is only there once the agent has finished writing it, which happens a short time after the call ends. Until then the transcript alone is shown. If the summary or transcript looks wrong or inappropriate, click **Report AI content** under the transcript and say what was wrong. Your note goes to the Smileline team as a support message together with the call reference — the transcript itself is not sent. The same option is on the desk's **Account** screen for anything else the AI produced. ## What each call tells you | Part of the row | Meaning | | ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Icon | Which way the call went: green for incoming, blue for outgoing, red for a missed call, violet for an AI call | | Name or number | The patient's name when the call is linked to a record, otherwise the other party's number | | Second line | The number (when a name is shown) and who handled the call: a team member, a shared desk phone, or the AI receptionist | | Outcome label | Where the patient's journey stands now: the last outcome recorded for them, with the callback or booking date, or the reason they are not proceeding | | Coloured label | How the call ended. **Missed**, **Called back** or **Dismissed** for a missed call; the agent's own outcome for an AI call; otherwise **Answered**, **No answer**, **Busy**, **Failed**, **Cancelled** or **Voicemail** | | Microphone | A recording is stored for this call | | Duration and time | How long the call was connected, and the time it started | | Person icon | Opens the patient: in Today on the desk, their patient record elsewhere | An outgoing call you place from Smileline — with a call button or the **Keypad** — shows **Voicemail**, not **Answered**, when the other person's voicemail picks up. Smileline recognises the voicemail greeting a few seconds into the call. The call isn't cut off, so you can still leave a message, and how long it lasted still counts. Recordings and transcripts are removed when the practice's retention window passes, so an older call may show no recording even though one was made. ## Call quality A small dot beside a call shows how the audio held up on the devices that carried it: green for a clean call, amber for noticeable jitter or loss, red when it was poor. Hover it for the measured numbers. Each device reports its own leg once, at the end of the call; nothing is sent while you are talking. --- # Calls on the desk Source: https://docs.smileline.io/guides/desktop-app/calls Incoming screen pops, click-to-call and Auto-call for Smileline Voice practices. ## With Smileline Voice Click **Enable calling on this device** the first time you open the desk, and allow microphone access when your computer asks. The desk is now a registered device — it rings alongside any browser tab you also have open, and whoever answers first takes the call. When a call comes in, the incoming-call card shows who it is. A known patient opens straight into the work panel — on the clinical rail, into their [patient panel](/guides/desktop-app) instead; several possible matches offer a picker; an unknown caller shows the number. Click **Answer** or **Decline** on the card. Once you answer, the call moves to the floating call window, with mute, hold, keypad, transfer and hang up. {/* screenshot owed: /screenshots/desktop-app/screen-pop.webp — the incoming-call card with a matched patient */} ### When the desk isn't in front A call that rings while the desk is closed to the tray (the menu bar on Mac), minimised, hidden with **Cmd+H** on Mac, or simply behind another app brings up a small incoming-call window on top of your other apps — the desk itself stays where it is, out of sight. On Mac the window sits in the top-right corner of the screen, just under the menu bar; on Windows, in the bottom-right corner, just above the taskbar by the tray. It appears on the same screen as the desk. The window shows who is calling — the patient's name, or the number — with the **Marketing line** badge on calls to your tracking numbers, and **Answer** and **Decline**. It never takes your keyboard, so you can carry on typing where you are. A ringing call shows no desktop notification: the window is the alert, and a notification would land in the same corner, over its buttons. The Dock icon bounces (on Windows, the taskbar icon flashes) until the call is answered or stops ringing. Missed calls and voicemails still send their usual notifications. * **Answer**, and the window becomes your call controls — timer, mute, hold and hang up — so you can talk without leaving the app you are in. * **Decline**, a colleague answering first, or the caller hanging up closes it. If you are already on a call, the ring shows above that call in the same window, and the call's controls stay where they are. With the desk in front, nothing extra appears: the incoming-call card on the desk shows the call. {/* screenshot owed: /screenshots/desktop-app/incoming-call-window.webp — the small incoming-call window in the top-right corner of a Mac screen */} ### Marketing-line calls Calls to your tracking numbers — the ones your adverts and website show — ring the desk with a **Marketing line** badge. While it rings, nothing opens by itself. If the number matches a patient, their name is shown — click it to open them; if the number is unknown, the card offers **Not a known patient — create a lead**. You rarely need it: Smileline files the call as a lead as soon as it rings, and when you answer, the desk switches to Today with that lead open (on the clinic side, their patient panel opens instead). {/* screenshot owed: /screenshots/desktop-app/marketing-line-pop.webp — the incoming-call card with the Marketing line badge and the create-a-lead button */} ### Calling out Every lead in the queue with a phone number has a call button in the work panel. Click it and the call panel shows the patient's name with **Calling…** straight away. Your desk answers its own ring, you hear a ringing tone while the patient's phone rings, and you are connected the moment they pick up — the timer starts then. If the patient's voicemail picks up instead, **Voicemail** shows beside the timer a few seconds in. The call stays connected, so you can leave a message or hang up. A short tone tells you when the call has ended. A call is placed once: while it is being set up, every call button waits for it, so a second click never starts a second call. The desk's Today has the same **Auto-call** switch as the browser: with it on, saving an outcome rings the next due lead after a 3-second countdown you can stop. See [Auto-call the next lead](/guides/today/overview#auto-call-the-next-lead). ### Calling any number **Keypad** in the left rail dials anything — a lab, a referring practice, a number read off a note. Type it or tap it out, in whatever form you would read it aloud, and click the round call button (or press Enter); the desk sorts out the country code. Calling works the same way as calling a lead: the panel shows **Calling…** and you hear a ringing tone until the number you dialled answers. Under the pad are the practice's last five calls, in and out. Start typing a patient's name, or a number, and the list shows the matching patients instead — so a number you type that belongs to a patient shows their name. Click a row to put its number on the pad — it is not dialled until you click call. The full [call log](/guides/desktop-app/call-log) is **Calls** in the left rail. {/* screenshot owed: /screenshots/desktop-app/keypad.webp — the Keypad view with a number entered */} ### While you are on a call Every call — one you answer, or one you place from the keypad, the call log, a patient's record or the inbox — shows in a small call window that floats on top of the desk and your other apps for the whole call. It stays above every other window, including other apps' windows set to stay on top, menus and notifications, and it can't be minimised. Only your computer's own screens, such as the lock screen, cover it — and on a Mac, another app in full screen, where macOS doesn't let it show. It never takes your keyboard when it appears, so you can carry on typing where you are. Drag it by its top bar to wherever suits you: the next call comes back to the same spot until you quit the app. The window goes away by itself when the call ends, and the arrow on its top bar (**Open desk**) brings the desk forward — on the caller's lead, when the window shows one (see **Open lead** below). On a Mac it follows you between desktops (Spaces). Because the call has its own window, moving between the desk's screens never drops it. Hover a button on the window to see what it does. **Keypad** sends tones down the live call, for phone menus and extensions; click it again to close it. The keypad and the transfer list open one at a time, and the window grows to fit whichever is open. When the call is with a lead, the window shows under the caller's name: the treatment and its value, the journey's stage, who owns the lead and how many times the practice has tried to reach them. This works for a lead you rang from anywhere in the desk and for an incoming caller the desk recognised. Click **Open lead** to work them in Today — the desk comes forward on that lead. When nothing of theirs is due today, it opens their patient record instead, with their journeys. This stays hidden while that lead is already open in Today, where you can see all of it. **Hold** and **Transfer** appear once the person you called answers. **Hold** plays them music, and they cannot hear you until you take them off hold. When card details are read out, the call recording pauses by itself and the window shows **Card payment · recording paused** with a countdown to when it resumes; see [Call recording](/guides/calls/recording#pause-the-recording-while-you-take-a-payment). {/* screenshot owed: /screenshots/desktop-app/call-window.webp — the floating call window during a call, with the lead card */} **Transfer** opens the transfer list in the call window; click **Transfer** again to close it. It hands the caller to a colleague — the list shows everyone with calling set up and whether they are on do-not-disturb — or to a number you type. **Announce first** rings the colleague while the caller hears hold music, connects you to them when they answer, and waits for **Complete** (hand the caller over) or **Cancel** (take the caller back); **Blind** moves the caller to the colleague's most recently used device at once and ends your call. If the colleague doesn't answer a blind transfer, your desk rings again so you can take the caller back; if you don't answer either, the caller can leave a voicemail, and if they leave no message a task to call them back appears in **Today**. **Send to voicemail** works from here on calls you made as well as calls you took. Closing the list while an **Announce first** transfer is ringing doesn't stop it: open **Transfer** again for **Complete** or **Cancel**. A call that was ringing you and was answered elsewhere closes with **Taken by** and the colleague's name. While you are on a call your other devices are left out of the ring for new calls. On the **Keypad** screen, a practice with more than one number chooses which one the person you call sees under **Show as**. Left on **Automatic**, the call presents the number routed to your device's location, or the practice's default caller ID when that location has none. After a Smileline update the desk reloads itself to load the new version. During a call it waits: a screen the update replaced shows an error until the call ends, and the desk reloads then, so an update never cuts a call off. For the same reason, F5, Ctrl+R, Cmd+R and **Reload** in the right-click menu don't reload the desk during a call. If the call controls ever stop working, the call stays connected and a card says **The call controls stopped working**. Click **Try again** to bring the controls back. ### Live suggestions With [Call AI](/guides/calls/call-ai) — for practices in the United Kingdom and the United States with Smileline Voice — the call window helps while you talk. Under the call's controls, **Live assist** shows the newest suggestion the moment it fits what the caller just said: its kind (**Objection**, **Answer**, **Booking** or **Reminder**), a title and what to say, with prices, opening hours and the next free appointment times already filled in from your own information. Click **Used** if you said it, or **Dismiss** to set it aside; either way it clears, and the next suggestion appears when the conversation calls for one. The arrow beside **Live assist** (**Show all**) unfolds the rest, and clicking it again (**Collapse**) folds it back: * the **checklist** for this kind of call — a new enquiry, an existing patient or a follow-up call. Each item ticks itself once the conversation covers it, and the count beside **Live assist** (such as 2/6) tracks them. * every suggestion so far, newest first, marked **Used** or **Dismissed** once you have acted on it. * **Live transcript** — open it to read both sides as **Caller** and **Practice**, each speaker's words gathered into one turn until the other speaks. Every call starts folded. Suggestions come from the practice's playbook, which managers edit in [Settings → Live call suggestions](/guides/settings/call-ai) — only cards a manager has turned on are ever suggested. The live transcript keeps running while the recording is paused for card details, with the card digits blanked (•). Live suggestions are in the Smileline Desk app only — the browser and the iPhone app don't show them. As with reading a transcript, the practice's activity log records each time the call window loads a call's suggestions and transcript. {/* screenshot owed: /screenshots/desktop-app/live-suggestions.webp — the call window with Live assist unfolded: checklist, cards and transcript */} ### If your connection or headset drops A short Wi-Fi or internet drop does not end the call. If its sound has to be reconnected, the call window shows **Reconnecting… stay on the line** until it is back, and the call carries on by itself — there is no need to hang up and call again. The call window also warns you, under the caller's name, while something is wrong — its dot turns amber too: * **Weak connection — audio may break up**: your network is slow or unsteady. Move closer to the Wi-Fi router, use a cable, or pause large downloads. * **Audio isn't getting through — check your headset and internet**: one of you may not be able to hear the other. Check the headset is plugged in and not muted, then your connection. * **Microphone unplugged — switched to your default microphone**: your headset came out mid-call, so the call moved to your computer's default microphone and carries on. If you picked a speaker that was unplugged, the sound moves to your default speaker in the same way. When you call from your browser, the call bar shows a short version beside the timer — **Weak connection**, for example — with the same amber dot; hover it for the full sentence. ## Without Smileline Voice A call button hands the number to your computer's own phone app, the same as clicking a phone number anywhere else. Record how each call went on the lead's card as usual. ## If calls don't ring * Check the tray menu says **Available**, not **Do not disturb** — see [Tray and availability](/guides/desktop-app/tray-and-availability). * Check your computer's microphone permission for Smileline Desk (System Settings on Mac, Settings → Privacy on Windows). * On macOS 13, keep the Smileline Desk window open. * Check your network lets calls through — see [Network](/guides/desktop-app/install#network). --- # Imaging Source: https://docs.smileline.io/guides/desktop-app/imaging Set up the computer beside your imaging software to send new x-rays and photos to Smileline from a folder, and open your imaging program from a patient's record. The desktop app can watch one folder on the computer next to your imaging software. Every new JPEG, PNG or DICOM image your imaging software exports there is sent to your practice's **Images to file**, where someone files it to a patient. Smileline never files an image on its own, and never deletes or changes a file in that folder. Imaging works the same in every country Smileline serves. It needs the desktop app downloaded from smileline.io: the Mac App Store version can't watch a folder. ## Set up a computer An owner or manager sets each computer up once. Right-click the tray icon (the menu bar icon on Mac) and choose **Set up imaging…**. The **Imaging** window opens. Under **Set up this computer for imaging**, enter a **Computer name** — "Surgery 2 x-ray PC", say — and choose its **Site** if your practice has more than one. Click **Set up imaging**. The computer now belongs to your practice. Only people signed in to your practice on that computer can send its images; anyone else, or someone signed out, gets nothing, and the window shows why. Setting the computer up for another practice clears its folder, its programs and its list of files. An owner or manager can stop a computer sending images at any time from [Settings › Practice](/guides/settings/practice#imaging) with **Revoke**. **Stop using this computer for imaging** in the window does the same from the computer itself. ## Choose the folder Click **Choose folder…** under **Watch folder** and pick the folder your imaging software exports to. A shared network folder works. * Files already in the folder are listed as **Already in the folder** and are not sent. Click **Send these too** to send them. * From then on, a new file is sent once it has stopped changing. Files in subfolders and shortcuts are ignored. * **Waiting to send**, **Sent** and **Filed** show where each file is. A file counts as sent only once Smileline confirms it holds the exact bytes; until then your folder keeps it, and the app tries again. * Two computers watching the same shared folder send each image once between them: Smileline keeps one copy of the same file. While you're signed out, or Smileline can't be reached, the window says so and nothing is sent; your images wait in the folder. ### Files Smileline doesn't take * **Too large**: a file over 32 MB stays in your folder, listed as **Too large for Smileline (41 MB, limit 32 MB): it stays in your folder**. The limit is the server's memory, not a cost. * **Not recognised**: a TIFF or BMP file, or a file whose name says image but whose contents aren't JPEG, PNG or DICOM, is listed with the reason. Click **Send for review** to send it anyway: it's kept under **Kept for review** in **Images to file**, where you can download or discard it. It is never filed as an image. ### Move filed images On Windows you can turn on **Move filed images to a ‘Filed by Smileline’ folder**. Once an image is filed to a patient, the app moves it into that folder beside your watch folder, after checking it is still the same file. If it can't, it leaves the file where it is and tries again later. ## Imaging programs On Windows, the **Imaging programs** section lists Planmeca Romexis, Sidexis and CS Imaging. Click **Choose program…** to pick the program's launcher on this computer; the app checks it is installed under Program Files and signed by its maker. **Forget** removes it. This lets **Open in…** on a patient's record open the program on this computer (see [Clinical chart › Open in…](/guides/patients/clinical-chart#open-in)): * **Planmeca Romexis** opens on the patient. * **Sidexis** and **CS Imaging** open without a patient, and Smileline copies the patient's number for you to paste. A computer opens only its own site's imaging programs: a patient's number in another site's program, or in one that has been archived, is never sent to it, because there it could belong to someone else. Test mode: until a program has been tested with a practice on real hardware, nothing is launched. The app shows exactly what it would run instead, and the window says **Test mode: nothing is launched until Planmeca Romexis is tested with a practice.** --- # Desktop app Source: https://docs.smileline.io/guides/desktop-app Smileline Desk keeps the Today queue, inbox, calendar, patients, the clinical diary, To do and patient records, and optional practice calling together in a dedicated desktop app. Smileline Desk puts the Today queue on your desk as its own app. It lives in your system tray (menu bar on Mac), stays signed in, and is built around one job: working calls. {/* screenshot owed: /screenshots/desktop-app/call-desk.webp — the call desk showing the queue, work panel and an incoming-call card */} ## What it does * **The Today queue, call-first.** The same leads, day tabs, filters, keyboard shortcuts, work panel and **New lead** button as the **Today** page in your browser — without the rest of the app around it. * **A rail for the rest of the day.** Switch between Today, the keypad, the [call log](/guides/desktop-app/call-log), voicemail, AI calls, your inbox, the calendar, patients and **Account** without leaving the app. **Team chat** at the bottom of the rail opens the same [team chat](/guides/team-chat) as the browser, over whichever view you are on. When your role opens both [workspaces](/guides/getting-started/workspaces), a **CRM** / **Clinical** control at the top of the rail swaps it: the clinical rail holds the **Diary** (**Schedule** in the US) — the day's appointments — [**To do**](/guides/patients/worklists) and the inbox. If you [hide the other workspace](/guides/getting-started/workspaces#hiding-the-other-workspace), the control goes and the rail keeps only your own: with the CRM hidden that is the **Diary**, **To do** and the inbox, without the keypad, calls or voicemail, but incoming calls still ring here and can be answered. Your phone line stays registered across every screen, so changing view never drops a call. * **Patient records open in the desk.** In the **Diary**, owners, managers, agency staff and the front desk click an appointment to open its [visit panel](/guides/calendar/diary#the-visit-panel); dentists, hygienists and nurses go straight to the patient's record on the **Chart** tab for that visit, exactly as in the browser. The clinical record opens inside the desk, as does every **Open record** and every **Book** — so a call carries on while you work in it. In **Patients**, a click on a row opens the same [side panel](/guides/patients/list-and-filters#look-at-a-patient-without-leaving-the-list) as in your browser; an incoming call's pop stays on top of it, so you can still answer. * **A phone that follows you.** A live call sits in a small window that floats above the desk and your other apps for the whole call — drag it wherever suits you — so you can reach it from any screen or any app. * **Back and forward, the way your browser does it.** Your mouse's two side buttons step back and forward through the screens you have opened, including in and out of a patient record. On a Mac, Cmd+\[ and Cmd+] do the same, as does a two-finger swipe on the trackpad. It only ever moves between the app's own screens, so a call in progress carries on. * **With Smileline Voice, it is the phone on the desk.** Once you enable calling, the app stays registered all day. Incoming calls ring here even when the window is hidden to the tray, with a small window in the corner of your screen showing who is calling, to answer or decline without opening the app. * **The caller's details on the clinical rail.** When a known patient calls while the clinical rail is showing, their patient panel opens beside the screen you are on: date of birth, alerts, balance, the next visits and open plans, with **Book**, **Message** and **Open record**. On the CRM rail the caller opens in Today's work panel. A call never swaps a patient panel you already have open — the incoming-call card shows **Open** beside the caller's name instead — and while you are booking a patient in the **Diary**, a call opens nothing: **Open** on another patient's call first asks whether to stop booking, and only **Stop booking** switches. * **Without Voice, it is still your calling desk.** The same call-optimised queue, with each call button handing the number to your computer's phone app. ## How it fits with the browser The desk and the browser app work on the same queue at the same time. If both are signed in, an incoming call rings both, and whoever answers first takes it — the other stops ringing. Opening the same lead in two places shows the usual takeover prompt, exactly as it does between two browser tabs. Anything that isn't call work — settings, reports, marketing — opens in your normal browser with one click. The desk itself never navigates away from the queue. Open **Account** at the bottom of the rail to delete your account, read the Terms and Privacy Policy, or sign out. Profile, password and two-factor settings open in your normal browser so the live desk stays available. If you belong to more than one practice, **Account** also lists them under **Switch practice**: pick one and the desk reloads on that practice's queue and phone line. Signing out, switching practice and deleting your account all reload the desk, which would end a call, so during a call they wait until it ends. ## Get support For questions, sign-in problems or help with Smileline Desk, email [support@smileline.io](mailto:support@smileline.io). You do not need to sign in to request help. Include your app version, macOS or Windows version, and the steps that led to the problem. Do not include patient information or passwords. You can also find our support details on the [Smileline contact page](https://smileline.io/contact). ## Next steps --- # Install and sign in Source: https://docs.smileline.io/guides/desktop-app/install Download Smileline Desk for macOS or Windows, sign in once, and stay signed in. ## Requirements * **macOS** 13 (Ventura) or later. On macOS 13, calls ring most reliably while the Smileline Desk window is open. * **Windows** 10 or 11. * A headset is recommended. Calls work through your computer's speakers and microphone, but a headset keeps the caller from hearing their own echo. ### Network Calling from Smileline Desk, or from Smileline in your browser, needs at least 100 kbps per call and under 100 ms round trip. If your practice's firewall limits outgoing traffic, ask whoever manages it to allow: | Address | Port | Used for | | ------------------ | ---------------------- | ------------------------------------------ | | `rtc.telnyx.com` | 443 (secure WebSocket) | Signing in to calls and ringing | | `stun.telnyx.com` | 3478 UDP | Finding the shortest route for call audio | | `turn.telnyx.com` | 3478 UDP and TCP | Call audio when a direct route is blocked | | `turn2.telnyx.com` | 443 TLS | Call audio through the strictest firewalls | ## Install Get **Smileline Desk** from your computer's store: the [Mac App Store](https://apps.apple.com/app/smileline-desk/id6804313657) on Mac, or the [Microsoft Store](https://apps.microsoft.com/detail/9plzclv70lmg) on Windows. Select **Get** (or **Install**) and wait for the store to finish. Launch the app. It appears in your system tray (menu bar on Mac) and opens its window. When asked **Open Smileline Desk when you log in, so you never miss a call?**, choose **Yes**. The app then opens by itself, quietly in the tray, every time you log in — so it rings after a restart. You can change this later: see [Open at login](/guides/desktop-app/tray-and-availability#open-at-login). When the desk isn't in front, a ringing call comes up in a small window with **Answer** and **Decline**, so you can take it without opening the app, and the taskbar icon flashes (the Dock icon bounces on Mac) while it rings — see [When the desk isn't in front](/guides/desktop-app/calls#when-the-desk-isnt-in-front). On Windows, a missed-call or voicemail notification cannot open the app on its own: open Smileline Desk from the tray. On Mac, clicking the app in the Dock brings the window back. {/* screenshot owed: /screenshots/desktop-app/sign-in.webp — the sign-in screen inside the desk window */} ## Sign in Sign in with the same email and password you use in the browser. Your region is handled automatically — the app finds the right Smileline service for your practice on its own. Smileline Desk is for existing practice accounts. Create an account or organisation, and manage subscription billing, in the web app. Prefer **Continue with Google** or **Continue with Apple**? Choose your practice's service region if prompted. * In the Mac App Store version, **Continue with Apple** opens Apple's native sign-in sheet inside Smileline. Directly downloaded Mac versions use the system web authentication session for Apple sign-in. * On macOS, **Continue with Google** uses the system's secure web authentication session. macOS may ask whether Smileline can use its sign-in website, then open your default browser or Safari. Complete the prompts to return to Smileline automatically. * On Windows, social sign-in opens your normal browser and returns you to Smileline when you finish. Keep Smileline open during sign-in. If you cancel, you can select a provider again. If sign-in cannot start, select **Try again** or **Sign in with email**. On macOS, a failed authentication session returns you to the sign-in screen. The desktop flow accepts existing accounts throughout; it does not register a new account through a social provider. You stay signed in across restarts: quit the app, launch it again, and the queue is back without another sign-in. The Mac App Store and Microsoft Store deliver updates for store installs. A directly downloaded build prompts when its own update is ready. --- # Tray and availability Source: https://docs.smileline.io/guides/desktop-app/tray-and-availability Hide the desk to the tray and keep ringing, open it at login, or switch to Do not disturb when you step away. ## Hide to tray, keep ringing Closing the desk window doesn't quit the app — it hides to the system tray (menu bar on Mac) and stays registered. An incoming call still rings: a small incoming-call window comes up in the corner of your screen with **Answer** and **Decline**, without opening the desk or taking your keyboard (see [When the desk isn't in front](/guides/desktop-app/calls#when-the-desk-isnt-in-front)). The app also asks for your attention in the Dock or taskbar. A ringing call shows no desktop notification: the incoming-call window is the alert, and a notification would cover its buttons. Click the tray icon (or the Dock icon on Mac), choose **Open Smileline Desk** in the tray menu, or open the app again to bring the window back — a minimised window comes back too. On Mac, you can also choose **Window → Open Smileline Desk** or press **Cmd+Shift+0**, including after closing the main window. {/* screenshot owed: /screenshots/desktop-app/tray-menu.webp — the tray menu showing Available, Open at login, Open Smileline Desk and Quit */} ## Open at login Smileline Desk can open by itself when you log in to your computer, so it rings after a restart without anyone opening it. * The first time you open the app, it asks: **Open Smileline Desk when you log in, so you never miss a call?** Choose **Yes** to turn it on, or **No** to leave it off. It asks only once. * Change your mind at any time: right-click the tray icon (the menu bar icon on Mac) and choose **Open at login**. A tick means it is on. * When it opens at login, the app starts quietly — no window, just the tray icon (the menu bar icon on Mac) — signed in and ready to ring. Calls ring in the small incoming-call window; click the icon to open the desk. Your computer has the final say. If its settings block Smileline Desk from opening at login, ticking **Open at login** takes you to those settings so you can allow it. The tick always shows your computer's own setting, so if a change doesn't take, the tick goes back. On macOS 13, calls ring most reliably with the window open, so open it after you log in. ## Quit To quit completely, choose **Quit** in the tray menu — on Mac, **Cmd+Q** and **Quit** in the Dock icon's menu do the same. The app checks first: **If you quit, this computer won't ring for calls. Quit anyway?** Choose **Quit** to close it, or **Keep running** to stay reachable. **Keep running** is the default, so pressing Enter (Return on Mac) never quits by accident, and neither does Escape. Logging out, restarting or shutting down your computer closes the app without asking, and so do store updates. ## Do not disturb **Available** in the tray menu is your ringing switch. Untick it and this desk is skipped when calls ring the practice — they go to your colleagues' devices, or to voicemail if nobody else is available. Tick it again to rejoin the ring. Do not disturb applies to this desk only. Your browser tab, if it is also enabled for calling, keeps its own setting. --- # Create your practice Source: https://docs.smileline.io/guides/getting-started/create-organization Set up your practice organisation in Smileline and invite your team with the right roles. By the end of this page your practice will exist in Smileline, its country, service region and accounting currency will be locked, and your colleagues can be invited with the right roles. GBP and USD practices can also start the free trial; EUR subscription onboarding remains unavailable until its catalogue is approved. ## Choose the practice country Choose **Practice country** before entering your account details. Smileline uses the country where the practice operates to select its service region and accounting currency: * Practices in the United States use the US service region and **USD**. * Practices in the United Kingdom use the EU service region and **GBP**. * Practices in every other country currently offered in the selector use the EU service region and **EUR**. You can click **Change country** before creating the account. The country cannot be changed after the practice organisation is created. Check the practice country carefully. It cannot be changed later because it controls where the practice is served, the currency used for existing values, reports and deposits, and the legal country used by provider accounts. Working as a temp dental nurse or hygienist? You don't create a practice: sign up, then open your temp area at `/pro` to join Smileline Staffing. Once temp work is open in the UK, onboarding links to it: **Working as a temp? Join temp work instead**. Once you have joined, signing in with no practice of your own takes you straight there. See [Working as a temp](/guides/staffing/working-as-a-temp). ## Create the organisation Right after you create your account, Smileline walks the owner through three setup steps. Enter the **Practice name** and optional website. The **Financial region** shows the country and accounting currency selected during sign-up. When you continue, Smileline creates the practice with its default pipeline, treatments, lead sources, message templates, nurture sequences and appointment reminders, and shows each setup stage as it runs. If you entered a website, Smileline also reads it at the same time. This takes a few seconds. Enter the first location's contact details, opening hours and IANA timezone. If you entered a website, the phone, email, address, nation or state and opening hours it publishes are already filled in — check them and correct anything that is wrong before continuing. Anything the site does not state is left blank, and a value you have already typed is never replaced. The timezone starts from your practice country's default; US practices choose theirs explicitly here before continuing. Accept any pending practice agreement. If your practice uses GBP or USD, start the 14-day trial through Stripe; when Stripe confirms it, you land on **Today**. EUR practices must contact Smileline support and cannot start a trial yet. You become the practice's **Owner** automatically. The accounting currency is used throughout the CRM, connected Stripe account and Smileline subscription. The GBP and USD subscription catalogues are approved; EUR subscription Checkout remains unavailable until Smileline confirms EUR pricing. Setup progress is saved after each step. If you close the tab, cancel Checkout, or return to the Smileline home page, onboarding resumes at the first incomplete step instead of restarting the practice details. An unfinished Checkout can be resumed from **Start free trial** at any time until Stripe expires the session (24 hours); after that, the next click opens a fresh Checkout. After Stripe Checkout, Smileline verifies the existing Stripe customer and subscription before offering another Checkout. A delayed or missed webhook is reconciled from Stripe directly; **Check again** repeats that safe verification and does not create another subscription. If Stripe reports an ambiguous state, setup stops for staff review instead of guessing or charging again. ## Switch practice Open the menu at the bottom of the sidebar and pick another practice. You stay on the page you were on, now showing that practice's data. If you had a record open, such as a patient or an automation, you land on its list instead, since the record belongs to the practice you left. If your role in the new practice can't open the page, or the practice doesn't use it, you go to the nearest page you can open. ## Add another practice Open the menu at the bottom of the sidebar and choose **New organization** to set up an additional practice on the same account. It walks the same three steps, and the new practice becomes the one you are working in as soon as step 1 completes — the footer links back to the practice you came from if you want to stop partway. Two things differ from your first practice: * **The 14-day free trial runs once per account.** An additional practice is charged when you complete Checkout, and the wizard says so before you pay. * **Each practice keeps its own subscription, add-ons and invoices.** Nothing is shared between them except your login. An additional practice must be in a country served by the region you are signed in to. If it belongs to the other region, sign in there and create it from that side. There is also a limit on how many practices one account can hold; if you reach it, contact Smileline. ## Accept the Data Processing Agreement Before an eligible practice starts its free trial, you'll be asked to tick **I accept the Data Processing Agreement on behalf of your practice**. This is the contract that authorises Smileline to store and process your patients' data on the practice's behalf. * The link in the checkbox opens the full document so you can read it first. * Only the practice **Owner** can accept it — it binds the practice, not just your account. * Who accepted, when, and which version are recorded. You can review the record any time in **Settings**, then **Agreements**. If we later publish a new version of an agreement, the owner is asked to accept it on their next visit. The rest of the team keeps working uninterrupted — they just see a small dismissible notice. A practice set up for you by a Smileline partner skips the trial step: it starts on the [free plan](/guides/settings/billing#free-plan-for-partner-created-practices), and the first owner to sign in is asked to accept the agreements on their first visit. ## Invite your team Go to **Settings**, then **Team members**. Click **Invite member**. Enter their **Email** and pick a **Role** (see below). Click **Send invitation**. They'll get an email with a link to join the practice. The link opens a **Join *your practice*** page that already knows who was invited: someone without an account gets the sign-up form, someone with one gets the sign-in form, and either way the **Email** field is fixed to the invited address. Once they've signed up or signed in there, they're in the practice — no second step. A person who was already signed in with the invited email is asked to click **Accept invitation** instead. ![The invite-a-team-member dialog with email and role cards](/screenshots/getting-started/invite-member.webp) Pending invitations appear on the same **Team members** page until they're accepted. Their email badge shows **Email queued**, **Email sent**, or **Email needs attention**. The badge normally reads **Email sent** as soon as the page refreshes, because the invitation is sent the moment you click **Send invitation**. **Email queued** means it hasn't gone out yet and is retried automatically; if it needs attention, the invitation still exists, so check the address and resend or contact support instead of creating duplicate invitations. If the email doesn't arrive, click **Copy link** on the invitation and send the link yourself — by text or chat, for example. It is the same link as in the email. An invitation lasts 48 hours. An expired one shows **Expired** and has no **Copy link**, because its link no longer works: click **Resend** to renew the same invitation for another 48 hours (the email goes out again), then copy the link. A practice that a Smileline partner set up is handed over to its owner by invitation. Until that owner joins, one address receives at most three **Owner** invitation emails for the practice in 24 hours, so a fourth send or **Resend** is refused until the oldest is a day old. The invitations already sent keep working. Once the owner has joined, and in every other practice, this limit does not apply. Send the link only to the person you invited. Whoever opens it can create the account for the invited email address and join your practice. If the invitee is already signed in with a different email, the page tells them which address the invitation was sent to and offers **Sign out and continue**. ### Give each member a location Once the practice has at least one location, every row on **Team members** carries a **Locations** control (the pin icon). Open it, search if the list is long, and tick every site the person works at — a receptionist who covers two practices holds both. The control then reads the site names, or a count once there are several. Owners and managers can change it; everyone else sees the assignment. It is what a ring group set to **A location's staff** rings, so when someone moves between sites, change it here rather than editing every ring group. See [Call routing](/guides/settings/call-routing#ring-groups). ### Choose where each member lands Once the practice's clinical workspace is available, **Manage** on the row of a member whose role opens both workspaces shows a **Workspace** field — **CRM** or **Clinical**. It sets the page the member lands on after sign-in (**Today** or the **Diary**). Under it, **Hide Clinical** (or **Hide CRM**) hides the workspace they don't land in from their menu, search and patient records; settings are not affected, and the member can turn it back off from **Settings → Account**. Anyone can change their own; changing someone else's needs an owner or manager. See [Workspaces](/guides/getting-started/workspaces#hiding-the-other-workspace). ### Give each member an extension Practices with Smileline Voice also see an **Extension** field on each row: three digits (100–999) a desk phone dials as `*` extension `#` to transfer a call to that person. Type one, or click **Auto** for the lowest free number. Extensions are unique within the practice. See [Desk handsets](/guides/settings/voice#desk-handsets). ### Link a clinician to their profile A team member who also treats patients can be tied to their [practitioner](/guides/settings/practitioners) profile: owners and managers pick it from the clinical-profile select (the stethoscope icon) on the member's row, which offers **No clinical profile** and every profile nobody else is linked to. Pick another profile to move the link, or **No clinical profile** to clear it. One account links to one practitioner. ### Suspend a member's access Owners and managers can lock a member out of the practice without removing them: click the **Suspend access** icon on the row and confirm. Only an owner can suspend another owner, and nobody can suspend themselves. In a practice whose agency is still handing it over, the last active Agency member cannot be suspended until the owner joins. While suspended, the person cannot open this practice on the web, in the mobile app, through an API key or a connected integration; their softphone registration is revoked, and no notification, report, digest, team-chat alert or number-porting email is sent to them for this practice. Everything else stays: their seat, role, sites, clinical profile, assigned work and history. The row shows a **Suspended** badge, and **Restore access** on the same row undoes it. This is a practice-level lock. It does not affect the person's other practices, and it is not the account-wide lock that only Smileline support can apply. ## Roles in plain words * **Front desk** — works patients, journeys, tasks, the inbox, the clinical diary and payments, and may double-book with a reason, without administrative or deletion authority. The default role for reception and treatment coordinators. * **Telesales** — everything the front desk does on the phone and in the inbox: the call list, bookings, deposit requests and the dialler. Marketing (reputation, SEO, lead ads) and practice reporting are not included, so the dashboard and reports are hidden. Their own call and booking figures still show on **Today**. * **Manager** — manages the CRM, settings, integrations and team membership, and can buy [Academy courses](/guides/academy#buying-courses) for the team, but not owner-only billing decisions. * **Analyst** — read-only access for reporting and oversight, without inbox or configuration access. * **Owner** — full operational and billing control, including owner-role changes. Practice deletion remains unavailable while durable offboarding is being rebuilt. * **Dentist**, **Hygienist** and **Nurse** — the clinical roles. They work in the clinical workspace only: patient records, the diary, the inbox and their own tasks. Dentists and hygienists also book existing patients. They never see the CRM, marketing or settings. Their own tasks are the ones assigned to them or that they wrote — staff tasks, tasks made from a **To do** list and due compliance checks — never a lead's follow-up or the CRM's **Today** queue. * **Agency** — the staff of the partner agency that set the practice up or that the practice is linked to. They have a manager's access, can also override diary clashes and receive number-porting alerts, but cannot manage billing, accept the practice's agreements, delete the practice, erase a patient, or run the practice's [Academy](/guides/academy) channel or buy its Academy courses. Nobody can be invited with this role; an owner can switch the linked agency's staff to it, and only an owner can change it. See [Partner programme → The Agency role](/guides/partner-programme#the-agency-role). **Compare roles** on **Settings → Team members** shows the exact grid. Advertising has a third level on top of view and manage — **Set campaigns live & change ad spend** — held by owners and managers only, so front desk and analysts can view ads and results but can never start or raise spend. See the [Ads workspace](/guides/marketing/ads#who-can-do-what). Only owners can invite other owners — managers won't see the **Owner** option in the invite dialog. The one exception is a practice an agency is still handing over: until its owner joins, the agency's staff can invite that first owner. ## Next step --- # Demo data Source: https://docs.smileline.io/guides/getting-started/demo-data Seed your practice with realistic sample records, then remove an unchanged set or archive a modified one safely. By the end of this page your practice will be full of realistic sample patients, journeys, appointments and conversations, so you can explore without touching real data. You'll also know when Smileline deletes that sample set and when it must archive it to preserve activity history or money records. ## Seed demo data Go to **Settings**, then **Demo data**. Click **Seed demo data**, then confirm in the dialog. Seeding takes a few seconds. When it finishes, the page shows **Demo data present** with a count of everything that was created — and every page in the app now has sample volume to explore. ![The demo data settings page showing seeded record counts](/screenshots/getting-started/demo-data-seeded.webp) Only owners and managers can seed or remove demo data. Everyone else can view the status but can't change it. ## What's included The seeder builds a believable UK practice: * **400 sample patients** across every status — fresh enquiries, leads mid-journey, active patients, and inactive or archived records — with British names, fictional UK mobile numbers and values in the practice's accounting currency. * **Journeys in every stage** of your board, with realistic treatment values. * **Appointments** past and future, plus **tasks** and full patient **timelines**, so Today, Calendar and Reports all have something to show. * **Inbox conversations** across SMS, WhatsApp and email — including threads from unknown senders so you can try linking a conversation to a patient. * **Four fake staff members** the sample work is attributed to. They can't log in; they exist so assignee lists and leaderboards look real. * **A demo Dentally connection**, unless your practice already has one: two sample patients linked to it, one of them with a paid sample invoice, and three possible matches to review. * Any missing vocabularies — tags, practitioners, rooms, appointment types — are created too. Every record is marked as demo data. An unchanged sample set can be removed together. If staff change its activity history, Smileline preserves that history instead of relabelling or deleting it. ## Clinical demo data On the stage cell, a platform admin can add a clinical layer on top of a seeded practice from the same page: click **Add clinical demo data**. It fills the sample patients with what a real practice record holds: * **Three months of diaries** for every demo dentist and hygienist — past visits fulfilled, cancelled or missed, future visits booked and confirmed — around a lunch break, two approved absences and the Christmas closure when it falls in the window. * **Charts**: findings, existing restorations and completed treatment on every active patient, with children given a primary dentition. * **Treatment plans** presented from planned procedures, with their visits booked into the diary. * **Clinical notes** signed by the treating clinician, with addenda. * **Ledger**: every completed procedure charged at the practice's Private fees, payments in full, in part or outstanding, deposits on implant cases and invoices — including an overdue debtor. * **Recalls** due and overdue, some already booked. * **Perio exams**: BPE screens, a full probing chart for periodontal patients and BEWE scores for tooth wear. * **Medical histories**, alerts, lab cases, a referral, prescriptions, waitlist requests, recall letters and radiographs. The top-up runs one step at a time — the page shows **Step n of 8** and moves on by itself — and every step is recorded, so a page you close or a request that fails resumes where it stopped instead of writing anything twice. Within a step the data lands patient by patient, so the rest of the practice keeps working while it runs. Without clinical document storage on the cell, plans stop at **presented** (acceptance needs a stored signature) and medical-history forms, letters and radiographs are skipped. The page lists what was skipped. Removing demo data from a practice that ran the clinical top-up always archives rather than deletes: plans are cancelled, recalls paused, waitlist requests withdrawn, lab cases and referrals cancelled, prescriptions voided and planned treatment removed from the chart, while notes, ledger entries, invoices, perio exams and documents stay as evidence. That practice cannot seed the sample set again, which is why the clinical top-up is limited to the stage cell. ## Remove demo data Go to **Settings**, then **Demo data**. Click **Remove demo data**, then confirm in the dialog. If the sample activity history is unchanged and the sample set holds no money records, the status returns to **No demo data**. Your real records are untouched. If anyone changed the sample activity history, or the sample set holds money records — invoices, charges or payments on a sample patient, including the paid sample invoice that comes with the demo Dentally connection — Smileline archives the whole linked sample set instead of deleting it. Money records are never deleted: they stay exactly as they were. The sample patients, journeys and Inbox threads disappear from active work; demo staff, messaging, PMS connections, resources and automations are disabled. Linked sample referrals and rewards also disappear from active lists and reports, while their recorded history remains intact. The retained records stay explicitly marked as sample data, and that practice cannot seed or remove the sample set again. The page reports **Modified sample data archived**. ## Next step --- # Quick search Source: https://docs.smileline.io/guides/getting-started/quick-search Jump to any patient, page or setting from anywhere in Smileline with one shortcut. Quick search is the fastest way to move around Smileline. Open it from any page, type a few characters, and jump straight to a patient record, a page, a setting, a journey board or a saved view — or start creating something new without hunting for the button. ## Open quick search * Press **⌘K** (Mac) or **Ctrl K** (Windows), or * Click **Search** at the top of the sidebar. ![The quick search palette open over the app with mixed results](/screenshots/getting-started/quick-search.webp) ## What it searches | Group | What you get | | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Quick actions | **New patient** and **New journey** on every page, plus the page's own action when it has one: **New message** on the Inbox, **New campaign** on Campaigns and **New post** on Social. Selecting one opens the create dialog on the right page. | | Pages | Every page in the app, including each report. | | Settings | Every settings page, e.g. "Treatments" or "Team members". | | Journey boards | Your boards — selecting one opens it on the Journeys page. | | Saved views | Your saved patient views, applied on the Patients page. | | Patients | Live results from your patient list. | Results respect your role: pages, settings and actions you don't have access to never appear. Settings and reports also match the words people use for them, not just their names. When a result was found that way, the word it matched shows beside the name — "pitch" lists **Treatments** tagged *pitch*. Page-specific actions stay searchable from anywhere: type "campaign" on Today and **New campaign** still appears, marked with the page it belongs to. ## Finding patients Patient results match on far more than the name. Type any part of a patient's: * first, last or preferred name, * email address, * mobile or other phone number (digits only is fine — `7700 900` works), * codice fiscale (Italian practices), * street address, city or postcode. Several words narrow the results: every word has to match, so a first name and the start of a surname (`philip garf`) find Phillip Garforth rather than every Philip. It also finds a patient by their whole date of birth, read in your practice's order (month first in the US, day first everywhere else), by their chart number, or by the number a previous system gave them, typed exactly as it was imported. See [Search](/guides/patients/list-and-filters#search) for the formats. The top matches appear as you type, best match first. Each shows the patient's date of birth with their age beside their contact details, so two people with the same name are told apart. Select one to open the patient's record. A result can carry a tag saying why it matched: * **Date of birth** — you searched for a date, and it is this patient's birthday. * **Similar name** — the name is close to what you typed but not the same, for example `Jhonson` finding Mrs Johnson. Check it is the patient you mean before you open it. ## Typos are fine Search is typo-tolerant end to end: `pateints` still finds the Patients page, and `Jhonson` still finds Mrs Johnson. You don't need to spell it right — a close attempt is enough. Very short searches (one or two characters) only match exact fragments — typo tolerance kicks in from three characters, so a stray letter can't flood the list with noise. --- # Setup guide Source: https://docs.smileline.io/guides/getting-started/setup-guide The checklist in the sidebar that walks a new practice through inviting the team, choosing a practice management path, completing locations, connecting leads, payments, phone numbers, channels and ads. Once your practice exists, a **Setup guide** card appears at the bottom of the sidebar. It shows how many setup tasks are done and which one to do next, and opens into the full checklist. Every tick is worked out from what your practice has actually set up: nothing is marked done by hand, and finishing a task anywhere in Smileline ticks it for everyone. The card is shown to owners and managers. It disappears on its own once every task is done, or when you choose **Hide guide**. An [AI agent](/guides/settings/ai-agents) that an owner or manager of your practice approved can read the same checklist, and the rest of your practice's setup, through `GET /settings/practice/setup-status`. ## Open the checklist Click the row to open the checklist. Each task is a link to the page where you finish it. When you arrive, the control to use is highlighted for you. If that control opens a window, the highlight moves onto the window and disappears when you close it. If it opens another page, the highlight continues on that page. Otherwise close the highlight to carry on as normal. Tasks marked **Skip** are optional. Skipping one takes it out of the count; **Undo** brings it back. A task that needs another task first (for example practitioner rotas need at least one practitioner) stays greyed out until that task is done, and hovering it says which. ## What ticks each task ### Invite your team Done once a second member has joined or an invitation is still open. See [Create your practice](/guides/getting-started/create-organization). ### Practice management The guide first asks where your diary will live: * **Connect my existing PMS** shows one task: connect your practice management system on [Integrations](/guides/settings/integrations). It is done once a real connection exists, or once you have requested your PMS there — if it is not in the list, request **PMS not listed** and type its name. A demo connection does not count. * **Use Smileline's** shows three tasks: add at least one [practitioner](/guides/settings/practitioners), set up your [operatories](/guides/settings/locations-and-operatories) (the seeded rooms count once you have renamed, reordered or removed any, or added one), and give at least one practitioner a [rota](/guides/rotas) with working hours. The two paths are a switch: pick one, and switch to the other at any time until a PMS connection exists, which settles it. ### Complete your locations Done when every active site has an address, a phone number and opening hours. The site created with your practice starts empty, so this task begins open. ### Connect your website leads Done when a detected form's mapping is confirmed, a custom endpoint is live, the Zapier hook is active, or a lead has already arrived through any of them. See [Website forms](/guides/lead-capture/website-forms). ### Connect Stripe for deposits (optional) Done when your Stripe account can take charges. Skip it if you do not take booking deposits. See [Deposits](/guides/deposits/setup). ### Verify and add phone numbers Shown only when your practice has the Smileline Voice add-on, in the countries Voice serves (United Kingdom and United States). Done once a voice number is active. See [Phone numbers](/guides/settings/voice-numbers). ### Channels **Add a sending domain** is done once a domain of your own is verified, so emails leave from your address. One task each for SMS, WhatsApp and Messenger & Instagram, done when a connection of that channel is active; all three are optional. See [Sending domains](/guides/settings/sending-domains) and [Channels](/guides/settings/channels). ### Advertising (optional) Shown when your practice has the SEO & Ads add-on. One task each for Google Ads and Meta Ads, done when that ad account is connected. See [Ads](/guides/marketing/ads). ## Hiding and reopening **Hide guide** hides the card for the whole practice. The tasks keep counting in the background, and the guide also hides itself once everything left is done. --- # Sign in Source: https://docs.smileline.io/guides/getting-started/sign-in Sign in to Smileline with your email and password or with Google or Apple, and reset your password when you forget it. By the end of this page you'll be signed in and looking at your landing page — the [Today queue](/guides/today/overview) for most roles, the **Diary** (**Schedule** in the US) for clinical roles. [Workspaces](/guides/getting-started/workspaces) explains which is which. ## Sign in On [smileline.io](https://smileline.io), choose **Log in**. On mobile, open the menu in the top-right corner first. Desktop and mobile menus reveal smoothly; if your device requests reduced motion, the menus open without animation. Moving between desktop navigation items slides and fades between menus. Go to the Smileline sign-in page, enter your **Email**, and click **Continue**. On the regional login card, enter your **Password** and click **Login**. To check what you typed, click the eye icon in the password box; click it again to hide it. The sign-up and reset-password forms have the same eye. If your email has accounts in both service regions, choose the account you want first. You land in your default workspace: **Today**, the daily work queue, in the CRM — or the **Diary** if your role works in the clinical workspace. ![The regional Smileline login card with email and password fields](/screenshots/getting-started/sign-in.webp) Don't have an account yet? Click **Sign up** on the login card and enter your **Full name**, **Email** and a **Password** (at least 8 characters). Tick **I agree to Smileline's Terms of Service and Privacy Policy** — the links open both documents, and your acceptance (version, time) is recorded to your account — then click **Create account**. After you choose your practice country you can also sign up with **Continue with Google** or **Continue with Apple** instead. If a colleague invited you, use the link in the invitation email instead: it opens the right form with your email already filled in and takes you straight into their practice. ## Sign in with Google or Apple On the login card, click **Continue with Google** or **Continue with Apple** and approve the request with that provider. If you already have a Smileline account under the same verified email address you're signed straight into it. If there's no Smileline account for that Google or Apple ID yet, you're taken to **Sign up**. Choose your practice country and click **Continue**: Smileline goes back to the same provider — Google usually doesn't ask again, Apple does — creates your account, and you continue into practice setup. If your account lives in the other service region, the login card can't see it and also sends you to **Sign up**. Choose your practice country and you're signed in to your existing account instead of getting a new one; you may see the provider screen once or twice more. When the region genuinely can't be determined, sign in with your email and password instead. Signing in with Google or Apple skips Smileline's two-factor verification: the provider's own protections — password, passkey, and device checks — stand in for it. Apple can hide your real email address behind a private relay address. If your Smileline account uses your real address, a first Apple sign-in with **Hide My Email** creates a separate, empty account instead of opening yours. To use Apple with an existing account, sign in with your password first and connect Apple under **Settings → Account → Sign-in methods**. If Smileline cannot reach the sign-in service, the login card shows an error and lets you try again. Check your connection before resubmitting your password. If you reach the wrong service region, click **Try EU account region** or **Try US account region** after the failed login. You can also pin the region before you sign in: the selector in the top-right corner of the login card offers **Auto**, **EU** and **US**. **Auto** locates your account from the email address you enter; **EU** or **US** sends you straight to that region and is remembered on this browser. These choices are always available and do not confirm whether an account exists in a region. ## Complete two-factor verification If two-factor authentication is enabled on your account, **Login** opens a second verification page instead of signing you in immediately. Open your authenticator app and enter the current six-digit code. Click **Verify and continue**. Smileline creates your signed-in session only after the code succeeds. If you cannot use the authenticator, click **Use a backup code instead** and enter one unused backup code. Each backup code works once. Store the remaining codes somewhere private; they are not shown again after setup. Five failed checks exhaust the current verification request. Return to **Sign in** and start again. Repeated failed requests can lock second-factor checks for 15 minutes; wait for the lock to end before trying again. ## Reset a forgotten password On the login card, click **Forgot password?**. Enter your **Email** and click **Send reset link**. If an account exists for that address, a reset link is on its way. Open the email and follow the link. Choose a **New password** (at least 8 characters) and click **Reset password**. You're taken back to the login card — sign in with the new password. Reset links expire. If the page says the link is invalid or has expired, click **Request a new one** and start again from your inbox. ## Account emails Verification, password-reset and invitation emails come from **Smileline** at `support@smileline.io`. Replies go to Smileline support. If an expected email lands in junk or spam, mark it as **Not spam** and add the address to your contacts. Never share your password or a sign-in or reset link in a reply. ## Manage your sign-in methods Open **Settings → Account** and find **Sign-in methods** to see what's connected to your account: **Email & password**, **Google**, and **Apple**. * **Connect** sends you to the provider to approve the link, then returns you to Settings with the method attached. This is the safe way to add Apple to an existing account, whatever email Apple shows. * **Disconnect** removes a method. Your last remaining sign-in method can never be removed. * Changing sign-in methods requires a recent sign-in. If Smileline asks you to sign in again first, do so and retry. ## Staying signed in Once you sign in, Smileline keeps your session on that browser, in Smileline Desk, and in the mobile app — you won't be asked for your password on every visit. A session lasts 30 days, and every day you use Smileline extends it by another 30, so you are only signed out after a month without using it. Updates and new releases never sign you out. The only other things that end a session are deliberate: you sign out, you choose **Sign out other sessions** in **Settings → Account**, you delete your account, or a platform administrator revokes your access. A few sensitive actions — connecting or disconnecting a sign-in method, deleting your account — ask you to sign in again if your last sign-in was more than a day ago, but that does not end your session anywhere else. Your practice can also sign people out sooner, under [Settings → Security](/guides/settings/security): after a period without activity, or after a maximum session length. Two minutes before an inactivity sign-out, the web app asks whether to **Stay signed in**. If you're signed out by one of these rules, the sign-in screen tells you why. It signs that browser or phone out of every practice you belong to; signing in again always works. On a shared front-desk computer, sign out when you finish: click your name at the bottom of the sidebar, then **Sign out**. ## Next step --- # Switching from another CRM Source: https://docs.smileline.io/guides/getting-started/switching-crm Run Smileline alongside your old CRM, then import its history without duplicating the leads that already reached Smileline. By the end of this page you'll know how to run Smileline next to your old CRM, what to export at switch-over, and exactly what the import does to leads Smileline already has. ## Run both side by side Connect your lead sources to Smileline — website forms, lead ads, call tracking — while your team keeps working in the old CRM. Smileline creates a journey and a **New · Call now** card on [Today](/guides/today/overview) for every lead that arrives. That's expected: the import at switch-over updates those leads rather than adding them twice. Choose one system to report ad conversions while both run. If Smileline and the old CRM both report the same leads, Google, Meta and TikTok count them twice. [Conversion feedback](/guides/marketing/conversion-feedback) switches on by default when you connect an ad account, so either turn off its **Conversion tracking** in Smileline until switch-over, or stop the old CRM's uploads now. ## Switch over in this order ### Send new leads to Smileline only Stop anything that still forwards leads into the old CRM. ### Stop working in the old CRM Ask your team to stop working leads there, and note the time. ### Export straight away Export every lead, following [What to export](#what-to-export). ### Import straight away Go to **Settings → Import & export → Import data** and pick your old CRM's preset, or **Other CRM / CSV**. Run the check, read it (see [Read the check first](#read-the-check-first)), then import. Pick a time when the front desk is quiet — see [While the import runs](#while-the-import-runs). ### Hand ad conversions to Smileline Within the hour, turn off the old CRM's conversion uploads. If you turned off **Conversion tracking** in Smileline, turn it back on. ### Review held matches Rows that look like an existing patient but don't agree strongly enough wait under **Needs review**. See [Review held matches in bulk](#review-held-matches-in-bulk). ## What to export One row per lead, with a first name and an email address or mobile number. Then, for the import to recognise leads Smileline already has: * **Created date** — when this enquiry arrived. Some CRMs fold a repeat enquiry into the person's original lead and keep the original date. From those, export the date of the latest enquiry instead. * **External ID** — the old CRM's id for each lead. A later file or a re-run with the same id updates the same records. DenGro's Unique ID maps to it automatically. * **Journey ID** — the deal's own id, when one person can have several deals (some CRMs call them opportunities). Map it from your first import onward. A later file can't match deals an earlier file brought in without one, so it adds those deals again as new journeys. Also export whatever you have of the journey status, stage, lost reason, first-contact dates, values, treatment and attribution. Without a created date, the import can't recognise a lead Smileline already has by its date, and the mapping step warns you. Rows then only match by id. ## Leads already in Smileline Each row settles one deal for one person, on the board you import into. For a person Smileline already has, the import looks for that deal among their journeys on that board: * **By id.** A deal an earlier import brought in under the same id (see [Import a second file later](#import-a-second-file-later)) goes to that same journey, whatever its date. * **By date.** Otherwise, a Smileline lead for the same person on the same board, created up to 2 days before or after the row's **Created date** (and before you uploaded the file), is the same enquiry. What happens next depends on whether anyone worked the lead in Smileline: * **Nobody has worked it** — the lead is updated, not duplicated. It takes the file's stage, status, dates and values. A lead matched by date has to be untouched as well; see below. * **Otherwise** — it's left exactly as it is. The file never overwrites work done in Smileline. * **No match** — the row becomes a new journey. The 2-day rule is a judgement, not proof. Two genuinely separate enquiries from one person within 2 days of each other are treated as one. ### What counts as worked in Smileline A lead counts as worked once someone on your team has changed it, logged an outcome on it, worked one of its tasks or booked an appointment linked to it. A lead matched by date is only updated when it's untouched: it arrived live (for example from a form, a lead ad or a call), it's still open with no first contact recorded, nobody has worked it, and no import has updated it before. Worked is decided on a best-effort basis from the lead's own history and the tasks and appointments linked to it now. A task that was moved to a different lead no longer counts. A booking made at the very moment the import reaches that lead can be missed. ### When more than one lead could match * **A person with two untouched leads in the window.** The import updates the one holding the **New · Call now** card, or else the one created closest to the row's date. The other stays exactly as it is, including its card, its sequences and its AI calling. * **Two rows for one person within 2 days of each other**, without Journey IDs of their own. They're one enquiry: the first row decides the journey and the later row leaves it as it is. Rows further apart become separate journeys. * **One id on several rows of the same file.** The later rows are reported as errors: "The same id is used for two deals — map a Journey ID column". Put just those rows in a new file with a Journey ID column and import it. * **An id another import still holds.** While an earlier import is still open (waiting in review, or failed and not cancelled), rows that name the same deals are reported as errors: "Another import that is still open (in review or failed) holds this record — finish or cancel it, then import this file again". Finish reviewing or cancel the earlier import, then upload the file again. * **An id that belongs to someone else.** When an id points to a different person or board in Smileline, the row is reported as an error instead of being imported. * **A Journey ID Smileline hasn't seen.** It never updates a different deal. It takes over an untouched live lead from the same enquiry, or starts a new journey. ## Cards and enquiries the old CRM already worked A row counts as worked in the old CRM when it's won or lost, has a first-contact date, or sits in any stage after your board's first stage. When the import updates the lead or adds its journey from such a row, it tidies up Today quietly: * The lead's **New · Call now** card closes. It's cancelled with no outcome, so nobody is recorded as having called. * A website enquiry from the same person, waiting for triage within 2 days of the row's date, becomes a lead with the imported journey. * A lead-form task for a known patient within 2 days of the row's date closes. * The lead's sequences stop, and it's taken out of AI calling, as if your team had picked it up. An untouched row (blank status, first stage, no contact dates) changes no card. The lead stays in **New · Call now** for your team, and a waiting enquiry stays for triage. Cards and enquiries more than 2 days from the row's date belong to a different enquiry and are never touched. ## Rows with no status Some leads in an export have no status at all. Decide what they mean before you export: * **Leave status and stage blank** — the row counts as untouched. A matching Smileline lead keeps its card, and a new journey opens in your board's first stage. * **Set status to Lost with a lost reason** — the lead is closed as not proceeding. * **Set an open stage after the first one** (for example "Contacted") — the lead counts as handled and stays open. The check shows the effect before anything is written. ## Follow-ups for open leads The board and stages step has a follow-up option, off by default. Turn it on and every imported lead that stays open gets one task, "Call" plus the patient's name, due straight away and assigned to the journey's owner. Its note says which file it came from. It appears with Today's other due tasks, never in **New · Call now**. A lead gets no follow-up when: * it's going ahead or not proceeding; * it already has an open task; * the person still has an open **New · Call now** card, which is already the work; * an import has created a follow-up for that journey before. Re-running the file or importing a second one never adds another, even after your team completes the first. ## Read the check first The check reads every row without writing anything. Next to the new, updated, to-review and error counts, it shows how many leads are already in Smileline and will be updated rather than duplicated, how many are left as they are, how many new journeys it will add, how many **New · Call now** cards and enquiries will close, and how many follow-ups the follow-up option would add. If the number already in Smileline is far below the number of leads that arrived while both systems ran, don't import. The board is probably wrong, or the created date is missing or holds when the lead was first created instead of the latest enquiry. Fix it and run the check again. The check can't foresee repeats inside the same file. A person who appears twice within 2 days shows as two new journeys, but the import treats them as one enquiry. One id used for several deals shows as left as it is, but the import reports those rows as errors. The job's counts after the import are the final word. ## Review held matches in bulk A row whose contact details match an existing patient, without enough else agreeing, is held for review. The review sheet groups held rows by what matched and how strongly, and shows the existing patient's date of birth next to each one. * **Merge all** and **Import all as new** resolve a whole group after you confirm. A row that fails doesn't stop the rest. Failed rows are listed afterwards with **Retry failed**. * A group whose dates of birth differ is marked **DOB differs** and can't be resolved in bulk. Review those rows one at a time; you can still merge one yourself. * Merging a held row follows the same rules as the rest of the import: it updates the matching Smileline lead, or adds the journey. ## Import a second file later * **Same preset, same id column.** Journeys nobody has worked in Smileline take the new file's state. Leads your team has worked stay as they are. Patient details only fill blanks. * **Ids carry across files only under a preset**, such as DenGro. Under **Other CRM / CSV**, a file's ids are recognised only inside that file. A different CSV matches by person and created date instead, and leaves leads an earlier import brought in as they are. * **A later CSV with a Journey ID column** can't recognise deals an earlier CSV imported, so it adds them again as new journeys. Leave those rows out of the later file. * **Boxly** exports have no id. A later Boxly file matches by person and created date and leaves leads already imported as they are. Uploading the same leads file again adds no journeys, follow-ups, cards or notes. Consent evidence may be recorded again. ## What never happens An import never: * sends a text, WhatsApp message or email, or starts a sequence; * places an AI call; * reports an ad conversion; * sends an outbound webhook; * sends a notification; * records that someone called — the lead's activity shows one line saying the import updated it; * overwrites work your team did in Smileline; * brings back an archived journey. ## Limits * **One board per import.** Split the export if leads belong on different boards. * **No bulk undo.** Read the check before importing. **Cancel** stops a running import at its next batch, and rows already written stay. * **Closed dates.** A lead imported as not proceeding (Lost in the file) is dated closed on its created date. A lead imported as going ahead (Won) uses its treatment start date when the file has one, or else its created date. A later file that leaves the lead closed, without a date, keeps its closed date. ## While the import runs When the import and your team change the same lead at the same moment, the import steps back and retries. Even so, while it works through a lead: * an action on that lead in Today may briefly ask you to try again; * a journey you have open may say "This journey was changed by someone else. We loaded the latest version — review it, then try again." Check the latest version and save again, or refresh the page. Everything else about running, cancelling and resuming an import is in [Import & export](/guides/settings/import-export#while-an-import-runs). --- # Workspaces Source: https://docs.smileline.io/guides/getting-started/workspaces Smileline has a CRM workspace and a clinical workspace. Learn which one your role opens, where you land after sign-in, how to switch between them, and how to hide the one you don't use. By the end of this page you'll know which workspace each role works in, how to set where a team member lands, how to hide the workspace someone doesn't use, and what the clinical workspace offers today. ## Two workspaces Smileline is split into two workspaces, each with its own sidebar: * **CRM** — the front-desk product most of this guide is about: [Today](/guides/today/overview), Patients, Journeys, Calendar, Inbox, Marketing, Referrals and Reports. Its pages live under `/crm/…` — for example `/crm/today`, `/crm/patients` and `/crm/journeys`. * **Clinical** — the practice management workspace, built around the day's appointments: the **Diary** (**Schedule** in the US), **Patients**, **To do**, **Inbox**, **Payments** and **Reports**, plus the patient record. Its pages live under `/pms/…` — for example `/pms/day-list`. **Settings** is shared. `/settings/…` is the same hub from either workspace, and it only lists the pages you can open. **Rotas** (`/rotas`) and **Academy** (`/academy`) are shared too: open the menu at the bottom of the sidebar (your name) to reach them from either workspace. Rotas shows a **coming soon** page for now. [Academy](/guides/academy) holds Smileline's training videos and courses for dental teams. Main CRM and Clinical pages use title-only headers, with any available actions beside the title. Settings pages keep their introductory subtitles, and patient and campaign records keep their identifying details. Bookmarks and saved links to the old addresses — `/today`, `/patients`, `/pipeline`, `/calendar`, `/inbox`, `/marketing/…`, `/referrals` and `/reports/…` — now open a **not found** page. There are no redirects, so update them to the `/crm/…` addresses. When you are signed in, that page opens inside the workspace of the address you typed (your default workspace for any other address); signed out, it is a plain page. ## Which roles see which workspace | Role | Workspaces | | -------------------------- | ---------------------------------------------------------------------- | | Owner, Manager, Front desk | CRM — and Clinical once the practice's clinical workspace is available | | Telesales, Analyst | CRM only | | Dentist, Hygienist, Nurse | Clinical only | Until launch, the clinical workspace pages show a **coming soon** notice on production, with a preview of the diary and a card for each clinical page (Diary, Patients, To do, Inbox, Payments, Reports); the sidebar, the workspace switcher and your account stay reachable. The clinical workspace exists only for practices where Smileline has switched it on. Until then owners, managers and the front desk see the CRM alone, and a member whose role opens the clinical workspace only lands on a **Nothing to open yet** page: it asks an owner or manager to change their role or to switch the clinical workspace on, and keeps **Your account** and the practice switcher reachable. Clinical roles never see the CRM — no CRM pages and no CRM settings. **Compare roles** on **Settings → Team members** describes every role in a line: * **Owner** — Full control of the practice, including billing and deletion. * **Manager** — Runs the practice: settings, integrations, team and exports. No billing changes. * **Front desk** — Works patients, journeys, tasks, the inbox, the diary and payments; may double-book with a reason. Settings are read-only. * **Telesales** — Works the call list, the inbox and bookings. No marketing or reports. * **Analyst** — Read-only reports and CRM data. No inbox, no edits, no exports. * **Dentist** — Clinical workspace: patients, the diary (books existing patients), plan acceptances, the inbox and their own tasks. No CRM or settings. * **Hygienist** — Clinical workspace: patients, the diary (books existing patients), plan acceptances, the inbox and their own tasks. No CRM or settings. * **Nurse** — Clinical workspace: patient records, the diary, the inbox and their own tasks; records findings, perio and notes, but never signs, prescribes or books. ## Where you land Opening the app at its root address — or clicking the Smileline logo at the top of the sidebar — takes you to your **default workspace**: **Today** for the CRM, the **Diary** for the clinical workspace. A member with one workspace always lands there; a member with both lands in whichever is set as their default. To change a default: * **Your own** — open **Settings → Account** and pick **CRM** or **Clinical** under **Workspace**. The section only appears when your role opens both. * **Someone else's** — on **Settings → Team members**, **Manage** on their row opens their settings, where **Workspace** offers the workspaces their role opens. Anyone can change their own; changing another member's needs an owner or manager. ## Switching between them When your role opens both workspaces, the bottom of the sidebar carries a **CRM** / **Clinical** toggle under **Support**; the current workspace is highlighted and picking the other one opens it. [Quick search](/guides/getting-started/quick-search) lists pages from both, with a **CRM** or **Clinical** hint beside each so you can tell them apart. ## Hiding the other workspace When your role opens both workspaces but you only work in one, you can hide the other. Open **Settings → Account** and, under **Workspace**, turn on **Hide Clinical** — or **Hide CRM** if you land in the clinical workspace. The switch always names the workspace you don't land in, so changing your landing workspace while it is on swaps which one is hidden. The page reloads so the change shows straight away; if you are on a call, it waits and applies on your next page load, so the call is never dropped. Hiding is a display preference, not a permission. Your role still decides what you can do: **Settings** keeps every page your role allows, whichever workspace is hidden, and the **Workspace** section stays on **Settings → Account** so you can turn the switch off again at any time. With the other workspace hidden: * The sidebar's **CRM** / **Clinical** toggle, the **CRM | Clinical** switch on a patient record and **Open in CRM** on the clinical record disappear, and [quick search](/guides/getting-started/quick-search) stops listing the hidden workspace's pages. * **Hiding Clinical** removes the Diary, the clinical Patients, To do, Inbox, Payments and Reports pages and the clinical patient record. An address under `/pms/…` opens **Today** instead. On [Smileline Desk](/guides/desktop-app) the rail loses the **Diary** and **To do** views, and in the [mobile app](/guides/mobile-app) the **Diary** tab goes and a patient opens as a CRM record. * **Hiding the CRM** removes Today, Journeys, Calendar, Marketing, Referrals and the CRM's Patients, Inbox and Reports pages. A CRM patient record opens the same patient's clinical record, the CRM inbox opens the clinical inbox, the calendar opens the **Diary**, and any other `/crm/…` address opens the **Diary**. On Smileline Desk the rail keeps only the **Diary**, **To do** and the **Inbox**, so the keypad, calls, voicemail, AI calls, calendar and patients views go. In the mobile app the **Today**, **Calls** and **Dashboard** tabs go, which also removes the phone's keypad for outbound calls. * **Incoming calls still ring** on the web, on Desk and on your phone, and you can answer, transfer and hang up as usual. With the CRM hidden, Desk no longer opens the Today queue when a call rings: a known caller's patient panel opens beside the screen you are on instead, and its **Open record** opens their clinical record inside the Desk. To undo it, open **Settings → Account** and turn the switch off. Owners and managers can set it for someone else: on **Settings → Team members**, click **Manage** on the member's row and use the same switch under **Workspace**. It appears only when the member's role opens both workspaces. The member can still turn it off from their own **Settings → Account**. ## The settings hub **Settings** is a set of sections, each a card on the hub and a row in the settings sidebar that expands to its pages. **Account**, **Practice**, **Calendar** and **Data & compliance** are shared by both workspaces; **Leads & journeys**, **Website & booking**, **Messaging**, **Phone** and **Integrations** belong to the CRM; **Clinical catalogue**, **Clinical templates**, **Insurance** and **NHS** belong to the clinical workspace. A page only shows for members whose workspace, country and role can open it, and a section with nothing to show is hidden — so clinical roles never see the CRM sections or **Team members**, a UK practice sees **NHS** rather than **Insurance**, and an Italian one sees neither. Type in the **Filter settings** box at the top of the hub to narrow the cards to matching pages. A page found through a related word shows that word beside its name — type "pitch" and **Treatments** appears tagged *pitch*, because sales pitches live there. ## The clinical workspace The clinical sidebar has nine pages. A practice day happens in three places — the day, the patient and the list of things to do — and the rest serve them. * **Diary** (`/pms/day-list`; **Schedule** in the US) — the [diary](/guides/calendar/diary): a column per practitioner or room on an hour rail shaded by the rota, a 3-day view and the list. Book from an empty slot, drag a card to move or resize it; click it for the visit panel (arrival, check-out, edit, cancel) — clinicians open the patient's chart instead. The page's address carries the date, so a day can be bookmarked or shared. * **Patients** (`/pms/patients`) — the same patient list as the CRM, with its filters, saved views and export; a row opens the clinical patient record. Anyone you add in the clinical workspace is a patient straight away, so they appear in this list rather than as an enquiry on the CRM's **Today**. * **To do** (`/pms/worklists`) — the [lists of work](/guides/patients/worklists) your role can act on, each with its count (for the desk: online requests, recalls due, treatment to book, undecided plans and missed visits not rebooked; for clinicians: notes to sign, note drafts, forms to review, lab work and referral replies), and **My tasks**, the tasks assigned to you, where you add a task, hand it to a colleague and mark it done — for the desk, **Team tasks** too: every open clinic task, unassigned ones included. The **To do** item in the sidebar shows how many of your tasks are due today or late. * **Lab** (`/pms/lab`) — [every lab case](/guides/patients/lab-and-referrals#the-lab-page) of the practice, sent by hand or to a [connected lab](/guides/settings/connected-labs), with filters for status, lab and due date; in the UK and the US also the connected labs' orders that need you and their invoices. * **Inbox** (`/pms/inbox`) — the same inbox as the CRM's ([conversations](/guides/inbox/conversations)): the thread list, filters, composer and live updates, for dentists, hygienists, owners, managers and the front desk. It lists only conversations with the practice's patients (active or inactive), never enquiries or leads, and a patient's name opens the clinical record. * **Payments** (`/pms/till`) — the [practice's money](/guides/patients/payments), one segment at a time: **Today** (what was taken and the till — open it with a float, cash up against the count, reconcile it), **Owed** (balances patients owe, with **Take payment** and statements), the claims to chase (**Claims** in the US, **NHS claims** in the UK) and **Deposits**; owners and managers close periods from **Month end**. * **Inventory** (`/pms/inventory`) — the [stock](/guides/inventory) in each store room: what is left, what is running low, and who took or restocked each item. A store-room iPad running the Smileline app records takes and restocks under the name tapped. * **Staffing** (`/pms/staffing`) — [hiring](/guides/staffing), for owners and managers: **Jobs** to advertise permanent jobs and take applicants, and, for practices in the UK, **Bank** and **Cover** to book temp dental nurses and hygienists employed by Smileline Staffing. * **Reports** (`/pms/reports`) — the money reports (day sheet, aged debt, production, collections, associate pay, chair utilisation), the appointment reports and retention, from the same catalogue as the CRM's [reports](/guides/reports/overview). Booking happens on the **Diary**, not on a page of its own. Every **Book** button — on the patient record and its **Appointments** tab, on a treatment plan visit, on a recall, and beside a conversation in the clinical inbox — opens the Diary with that patient already chosen. A banner across the top of the diary names the patient and their date of birth, so you always know who you are booking. Click a free time on the diary to book there, or click **Find a time** in the banner and the diary looks for free times that fit; **Stop** leaves without booking. Once the appointment is saved, the confirmation offers to take you back to where you started — the record, the plan, the recall or the conversation. The **patient record** (`/pms/patients/…`) carries the clinical modules — chart, notes, perio, medical history, plans, prescriptions, lab, referrals, letters, recalls, forms, insurance or NHS, and the ledger — each described under [Patients](/guides/patients/patient-detail). ## On the desk and on your phone * [Smileline Desk](/guides/desktop-app) tags its rail by workspace. When you have both, a **CRM** / **Clinical** control at the top of the rail switches between them; the clinical rail holds the **Diary**, **To do** and the **Inbox**. * The [mobile app](/guides/mobile-app) derives its tabs from your role and workspaces: **Diary** (**Schedule** in the US) for the clinical workspace; **Today**, **Calls** and **Dashboard** for the CRM; **Inbox** for anyone whose role can read conversations. **Account** switches practice. --- # AI assist Source: https://docs.smileline.io/guides/inbox/ai-assist Draft replies and summarise long conversations with AI, without anything sending on its own. AI assist gives you two tools inside the composer: a suggested reply and a conversation summary. Both read the recent thread — and the linked patient's name, language and active journeys — so the output fits the conversation. Nothing is ever sent automatically: a suggestion is only ever a draft you review. ## Get a suggested reply Open the conversation, click the sparkles icon under the composer (titled **AI assist**), and choose **Suggest a reply**. The draft fills the composer. An "AI draft" marker appears above it with three links: **undo** restores whatever you had typed, **regenerate** asks for a fresh draft, and **report** sends a note about the draft to the Smileline team (see below). Edit the draft like any other message, then press `Enter` or click **Send**. ![An AI-suggested draft in the composer with the undo and regenerate links](/screenshots/inbox/ai-suggest.webp) The suggestion matches the channel the reply will ride — short and informal for WhatsApp and SMS, fuller for email — and answers the patient's latest messages. ## Summarise a conversation Long thread, new shift? Choose **Summarize conversation** from the same **AI assist** menu. A summary appears as a notification with a **Save as note** action — click it to keep the summary in the thread as an internal note the patient never sees. ## Report AI content Anything the AI wrote can be reported. Messages the AI sent in a thread — the website widget's assistant replies and the AI voice agent's confirmations — show **Report** next to their timestamp, and an AI draft in the composer has its own **report** link. Say what was wrong and click **Send report**. A report reaches the Smileline team as a support message. It carries your words, the message or conversation reference, and your name and practice — never the AI text itself. Reports share the platform support limit of 30 messages per minute. ## Limits * **Rate limit.** AI assist is rate-limited per organisation, shared by everyone at the practice: bursts of up to about 30 requests, roughly 180 per hour in sustained use. Past the limit you'll see "AI assist rate limit reached — try again shortly". * **Empty threads.** Both actions need at least one message in the thread to work from. * **Availability.** If AI assist isn't configured for your workspace, the actions return "AI assist is not configured" — contact your administrator. AI output is a starting point, not a decision. Always review a draft before sending, especially anything touching clinical or pricing questions. --- # Channels Source: https://docs.smileline.io/guides/inbox/channels How WhatsApp, SMS, email, Telegram, Messenger, Instagram, TikTok, comments and live-chat messages reach the Inbox, and the rules for each channel. Smileline connects your messaging channels into one shared Inbox: **WhatsApp**, **SMS** (via Twilio, or from your own Voice number), **Email**, **Telegram**, **Messenger**, **Instagram DMs**, **TikTok direct messages**, **Facebook and Instagram comments**, and **Live chat** (the website [chat widget](/guides/chat-widget/setup)). This page explains how messages flow into the Inbox and what each channel allows, so you know what to expect when replying. ## How conversations flow in Once a channel is connected, inbound messages arrive in the Inbox automatically: * A message from a number or address Smileline already knows lands in that patient's existing thread. * A message from a sender who is not linked to a patient opens a new conversation. The conversation and **Contact details** panel show the sender's name when available, otherwise their number, address or channel ID. [Link it to a patient](/guides/inbox/conversations#link-a-conversation-to-a-patient) so it lands on their timeline. * A patient reply reopens a closed or snoozed conversation, so it always resurfaces in the **Open** tab. * A message that arrives while its connection is paused or in error (a failed **Test**, an expired token) is kept and delivered into the Inbox once the connection is active again — it is never lost. Each patient has a single thread that can span channels. Their WhatsApp messages, texts and emails all appear in one conversation, and every message carries the icon of the channel it travelled on. Replying **STOP** by WhatsApp or SMS immediately blocks that channel for the linked contact, even if the connection has just been paused or disconnected. Provider retries do not append another opt-out record. One shared contact can represent up to 25 patients. If a legacy contact exceeds that limit, Smileline keeps the whole contact blocked while the patient links are reviewed. **START** can restore consent only through an active connection and cannot clear a block that still needs review. On Messenger and Instagram, **STOP** works differently: it stops only the [Instagram DM and Messenger campaigns](/guides/marketing/consent#instagram-dm-and-messenger-opt-outs) of the Page or Instagram account it was sent to, and **START** resumes them. Only a typed STOP or START counts, never a tapped button with that label. Your team can still reply in the Inbox, and [Auto-DM](/guides/marketing/social-auto-dm) replies still go; the [automatic holding message](#the-automatic-holding-message) does not. Incoming attachments on WhatsApp, Telegram, Messenger, Instagram, comments and MMS can briefly show **Loading…** while Smileline copies them from the provider into durable storage. That copy is retried automatically if the provider or storage is temporarily unavailable. If the provider no longer makes the file available after all retries, the thread shows **Attachment unavailable** rather than loading forever. Photos and stickers show inline, and videos and voice notes play in the thread. PDFs, documents, active content and unknown file types download instead of opening as a page on the API origin. Every file chip shows its size. Now and then a channel sends something Smileline can't display — a card sent by another tool, someone else's contact card, a poll, or a message type the provider itself marks unsupported. It still lands in the thread, as **This message can't be shown here. Open it in Messenger to see it.** (naming the channel it came from), and the original is kept for review so nothing is lost. A WhatsApp reaction shows as its emoji. **Live chat** threads come from the website widget. Replies you type are pushed to the visitor's browser in real time (with your first name, so they know a human joined), and the contact panel shows which page they're chatting from. Templates aren't available on live chat, but attachments are — in both directions: visitors can paste, drag or pick a file in the widget, and you can reply with one from the composer. The widget's own visitors show read ticks on your latest message once they've seen it. ## Choosing a channel for a reply When a thread spans channels, the composer's channel picker decides which one your reply rides. It defaults to the channel the patient last wrote on that is still connected — after you reconnect an account, replies go out on the new connection. A channel is unavailable when its connection is disconnected or the patient has opted out — the picker greys it out and shows the reason (**Channel disconnected** or **Patient opted out**). ## Channel rules WhatsApp allows free-text replies only within 24 hours of the patient's last message (the "24-hour window"). While the window is open, the composer shows a countdown when it's about to close. Once it closes, the composer switches to approved templates only — pick one to restart the conversation, reply on another channel, or leave an internal note instead. **Reopen chat (WhatsApp)** comes first: a short apology for the late reply that asks the patient to write back, so the window opens again. In the mobile app the approved templates appear as buttons above the reply box; when a chat covers several patients, send the template from the Smileline app on your computer, where you can choose who it is about. Starting a brand-new WhatsApp conversation also requires an approved template. See [Message templates](/guides/inbox/templates). One attachment per message while the window is open, following WhatsApp's own media rules: JPEG or PNG photos up to 5 MB and MP4 video or audio up to 16 MB go out as media; a small WebP goes out as a sticker; anything else — a PDF, a Word document, a GIF, a larger photo — is delivered as a file the patient can open, exactly as WhatsApp itself does. Text sent with a photo, video or file becomes its caption; WhatsApp has no caption on a voice note or sticker, so the composer asks you to send that text separately. If you connected your WhatsApp Business app, new messages your team sends there also appear in Smileline, labelled **sent outside Smileline**. They are shown as outbound messages without an unread notification or a new reply window. Earlier chats are not imported. When a patient deletes a WhatsApp message, its bubble becomes **Message unsent** — the history stays, the content goes. WhatsApp does not share edits, pins or other actions on earlier messages: they appear as **This message can't be shown here. Open it in WhatsApp to see it.** without marking the chat unread or notifying anyone. Content WhatsApp can't deliver to Smileline, such as a poll, shows the same line but counts as a new message. When a patient changes their WhatsApp number, a line in the thread says so; new messages from the new number arrive as that number writes in. No subject lines. Sent through your connected Twilio number, or from your own Smileline Voice number once texting is enabled on it (see [Settings → Channels](/guides/settings/channels)). A text of **HELP** or **INFO** is answered automatically with the practice's name, contact details and opt-out instructions — once per request, even after STOP. **MMS** — picture messages — exists only between US and Canadian numbers, so the paperclip appears when both your sending number and the patient's are +1 and stays hidden otherwise. From a Voice number a message carries up to 10 files and 1 MB of media in total (JPEG, PNG, GIF, MP4, 3GP or a vCard); on Twilio, up to 10 files and 5 MB. Incoming MMS photos and videos land in the thread like any other attachment. Supports subject lines, formatted content and attachments. When replying, leave the subject blank to continue the thread's latest subject. Long emails are collapsed in the thread — click **Show full email** to expand. An outbound email can include up to 20 attachments, each no larger than 16 MiB and no larger than 25 MiB combined. An incoming email is limited to 25 MiB for the complete raw message and up to 20 attachments, each no larger than 10 MiB and no larger than 20 MiB combined. A connected Outlook mailbox uploads files over 3 MB in parts, as Microsoft requires; a connected Gmail mailbox refuses the executable file types Google blocks (.exe, .bat, .js, .msi and similar), and the composer says so before sending. For abuse and cost protection, each connected email address accepts a fair-use quota of up to 10,000 incoming messages or 10 GiB of raw email per UTC day, whichever is reached first. Mail above a limit is refused with an error naming the reason, so the sending server returns it to the sender rather than the message silently disappearing — nothing is ever partially imported. When a page contains several exceptionally large formatted emails, Smileline may show the safe plain-text version for later messages instead of loading more stored HTML. The message and its attachments remain in the conversation. A connected Gmail or Outlook mailbox behaves the same in the composer, with replies sent from your own address and filed in the mailbox's Sent folder. Incoming mail written by a person creates or continues a conversation; newsletters, no-reply notifications, auto-responders and delivery reports stay in the mailbox and are skipped, as does anything Gmail has labelled spam or trash and any message over the 25 MiB limit. Each skip is recorded: the connection's card under **Settings → Channels** shows *12 emails skipped* under its status line once the count is above zero, and if the rules change later that mail can be brought in without re-syncing the mailbox. A mailbox whose sync paused after repeated failures says so on its card under **Settings → Channels**; a successful **Test** there resumes it. Mail your team sends directly from Gmail or Outlook appears in the thread labelled as sent outside Smileline. Telegram conversations start with the patient: they message your practice's bot, and the thread appears in the Inbox. Replies go out as the bot, with no time window — you can reply whenever consent allows. New conversations cannot be started from Smileline on Telegram. Messages are plain text up to 4,096 characters. A reply can carry one attachment, and text sent with an attachment is its caption, limited to 1,024 characters — the composer refuses anything longer before it sends. Photos, GIFs, MP4 videos, MP3/M4A audio and OGG voice notes go out in Telegram's own form for each; anything else goes as a document. Incoming photos, GIFs, documents, voice notes, stickers and videos up to 16 MiB are copied into the conversation like WhatsApp media. Messenger and Instagram direct messages allow replies within 24 hours of the person's last message, with no template escape. The composer shows a countdown as the window nears its end. Meta's Human Agent rule lets a person on your team answer for up to 7 days after the person's last message, for enquiries that need longer than a day. Where Smileline has Meta's approval for it, a reply you write in the Smileline app or mobile app after the first 24 hours goes out as a staff support reply, and the composer says so above the reply box. Use it only to continue the person's enquiry — never for promotions. Automated messages, Social campaigns, Auto-DMs and messages sent through the API or a connected app keep the 24-hour limit, and only a person can retry a staff support reply. Once the window closes the endpoint shows **Too long since their last message to reply here**, your draft stays in the box, and you reply on another channel instead; a new message from the person opens the window again. Meta's messages carry only an account id. Smileline looks up the person's Meta profile, then checks the participants in that specific conversation if the profile gives no name. Messenger uses the person's name; Instagram uses their profile name or @username. Meta must grant access to the requested information. If neither lookup provides a name, the thread keeps the id and tries again when another message arrives. A full profile name automatically links an unassigned conversation when it exactly matches one eligible patient's first name and surname in your practice, ignoring capitalisation and extra spaces. A username or a name shared by several patients needs a manual link. Existing names and patient links are preserved. See [patient matching and linking](/guides/inbox/conversations#link-a-conversation-to-a-patient). Messages that arrive while another tool (a separate inbox product connected to the same Page) owns the conversation still land in the thread, but Meta refuses replies from Smileline until that tool releases the conversation. Replies staff type in Meta's own apps appear in the thread too, labelled **sent outside Smileline**, so the conversation always reads complete. When someone unsends a message, the bubble becomes **Message unsent** — the history stays, the content goes. A reply can carry one attachment while the window is open, sent without text (Meta has no caption): on Messenger any image, video, audio or file; on Instagram a JPEG or PNG image, an MP4/MOV/WebM video, AAC/M4A/WAV audio, or a PDF — the composer refuses other formats before sending. Incoming stickers, reels and shared posts arrive in the thread too. When someone taps a button in a Messenger or Instagram message, the tap appears in the thread as their reply, showing the button's label. A tap on the button of a Social [Auto-DM](/guides/marketing/social-auto-dm) appears the same way, but it doesn't notify your team or mark the conversation unread: Smileline answers it with the automation's link. TikTok conversations start with the patient: they message your practice's TikTok Business Account, and the thread appears in the Inbox named after their TikTok profile. New conversations cannot be started from Smileline on TikTok. Replies are allowed only within 48 hours of the patient's last message, with no template escape — once the window closes the endpoint shows **Too long since their last message to reply here** and you reply on another channel instead. TikTok also limits a business to 10 consecutive messages before the patient answers again; a reply over that limit fails with TikTok's reason on the message. Replies are text-only. Incoming photos are copied into the conversation; a shared TikTok post arrives as its link; stickers, videos and voice notes arrive as **Unsupported TikTok message. Open TikTok to view it.** so nothing goes missing. Replies your team types in the TikTok app appear in the thread too, labelled **sent outside Smileline**. TikTok does not deliver direct messages through its API for Business Accounts registered in the United Kingdom, the European Economic Area, Switzerland or the United States; see [Settings → Channels](/guides/settings/channels#connect-tiktok). Comments on your Facebook Page posts and Instagram posts arrive as conversations, one thread per person — all of someone's comments across posts share a thread, and each message notes which post it was on. A **Public reply | Private reply** switch at the right of the composer's Reply and Note tabs picks where the reply goes: **Public reply** posts under the comment; **Private reply** sends a one-time DM (Meta allows one private reply per comment, within 7 days). A public reply on a Facebook comment can carry one image (JPEG, PNG or GIF); private replies and Instagram comment replies are text-only. If the person answers your private reply, the conversation continues as an ordinary Messenger or Instagram DM thread. A comment the author deletes becomes **Message unsent** in the thread. Social's [Auto-DM](/guides/marketing/social-auto-dm) automations answer comments too, and everything they send carries an **Auto-DM** label, which opens the automation for everyone who can open Social. They share Meta's one private reply per comment with the **Private reply** switch: once an automation has answered a comment privately, a private reply to that comment from the Inbox fails, and an automation skips a comment your team has already answered privately. Replies your team posts directly on Facebook or Instagram appear in the thread of the person they answer or tag, labelled **sent outside Smileline**. If that person's comment predates the connection, it is pulled into the thread too, without being marked unread — usually within 5 minutes. A reply Smileline can't attribute to anyone waits in the [review queue](/guides/lead-capture/review-queue); your Page's own comments that answer no one are not shown. Attachment limits depend on the channel, and the composer shows the rule for the channel you are replying on (hover the paperclip). Every upload is limited to 16 MiB per file. Outbound email supports up to 20 files and 25 MiB combined; incoming email allows up to 20 files, 10 MiB per file and 20 MiB combined. ## Reply windows and reminders WhatsApp, Messenger and Instagram only let you reply for a limited time after the customer's last message (see the tabs above). Smileline warns your team before an unanswered chat closes and, if nobody gets to it, sends the customer one holding message. ### Chat closing soon alerts If nobody has replied, Smileline alerts your team **1 hour** and **10 minutes** before the chat's reply window closes. The alert goes to the conversation's assignee — conversations are [assigned automatically](/guides/inbox/conversations#who-gets-a-conversation). If nobody is assigned, or the assignee can't receive chat alerts (their role can't take chats, or they are suspended), everyone who receives patient-reply notifications is alerted. Its title names the customer, the channel and the closing time in your practice's timezone — for example "Reply to Alex Brown on WhatsApp before 14:30" — and clicking it opens the conversation. Alerts arrive in the bell and by push, never by email; a push that can't arrive before the chat closes is dropped. Each person can switch them off under [Settings → Notifications](/guides/settings/notifications#chat-closing-soon). On Messenger and Instagram, where Smileline has Meta's approval for Human Agent (see the **Messenger & Instagram** tab), a person can reply for up to 7 days, so the alerts count down to the 7-day close instead of the 24-hour one. On WhatsApp the window always closes after 24 hours; after that you can only send an approved template, and **Reopen chat (WhatsApp)** is the first one offered. See [Message templates](/guides/inbox/templates#whatsapp-templates-and-meta-approval). ### The automatic holding message WhatsApp, Messenger and Instagram allow automatic messages for only 24 hours after the customer's last message. If nobody has replied, Smileline sends one holding message before that limit: * It goes once per customer message, aiming for 10 minutes before the limit. * It goes only inside your practice's sending hours. If the limit falls outside them, it goes 10 minutes before your sending hours end on the last day before the limit. * It never goes within 1 hour of the customer's message. If the only possible moment is earlier than that, no holding message is sent. * Without the AI add-on it sends your practice's standard text with the customer's first name. * With the AI add-on, AI writes a short personalised message in the customer's language: it thanks them, mentions what they wrote about in general words, says the team will reply here, and invites them to reply to keep the chat open. Fixed checks and a second, independent AI check reject anything else — advice, prices, dates or times, availability, links or phone numbers — and Smileline sends the standard text instead. The standard text is also used when the customer mentions pain or an urgent problem, asks for a person or sounds frustrated. * It always ends with **(Automatic message)**, or **(Automatic message written with AI)** when AI wrote it. The holding message does not extend the reply window: only a new message from the customer does. If it can't be sent before the limit after trying, an internal note in the thread says so, so you can follow up yourself. If things change after it is queued — someone replies, the customer writes again, the chat is closed, the switch is turned off or sending hours end — it is cancelled and shows **Not sent — no longer needed**. The holding message is on for every practice by default. Turn it off, or write your own text, under [Settings → Practice details](/guides/settings/practice#automatic-holding-message). ### When nothing is sent There is no alert and no holding message when: * **A person has already replied** — in Smileline on the web or the mobile app, or in Meta's own apps or the WhatsApp Business app. Automatic messages, campaigns and messages sent through the API or a connected app don't count. * **The conversation is closed.** * **The customer's last message only acknowledges or signs off** — "ok", "thanks", "bye", 👍, "grazie", "gracias" and the like. A message with a question, a number, an attachment or anything more is always treated as needing a reply. The holding message alone is also skipped, while the alerts still go, when: * **The contact represents several patients.** An internal note in the thread explains, and you reply yourself. * **The customer sent STOP** — on WhatsApp, or to that Page or Instagram account on Messenger and Instagram. * **Your practice has switched it off.** * **AI judges the message needs no answer** (AI add-on only). If you use Meta's instant replies or away messages, Smileline may count them as a reply from your team. That chat then gets no alert and no holding message. ## Connecting and managing channels Channels are set up in **Settings → Channels** by an owner or admin: choose **Add channel** to connect a WhatsApp number, an SMS number, an email address or a Telegram bot, then use **Test** to verify the connection. The full setup walkthrough, including the webhook and inbound-address details your provider needs, lives in [Settings → Channels](/guides/settings/channels). ![The channel filter and channel icons in the conversation list](/screenshots/inbox/channel-icons.webp) If no channel is connected yet, the **New** conversation dialog will tell you — connect one in **Settings → Channels** first. --- # Working with conversations Source: https://docs.smileline.io/guides/inbox/conversations Read, answer and triage patient messages from every channel in one place. The Inbox gathers every WhatsApp, SMS and email exchange into one screen. This page shows you how to read a conversation, reply, leave internal notes, attach files, and keep the queue tidy with assign, snooze and close. On web and mobile, conversation titles show the linked patient's name, or the sender's profile name when the conversation is unlinked. Messenger and Instagram recipient labels also use the available profile name in the thread header and reply-channel picker. Phone numbers and email addresses stay visible in the picker so you can choose the right destination. A channel ID is the fallback when no profile name is available. Open the Inbox from the sidebar. The page has three panes: the conversation list on the left, the open thread in the middle, and the contact panel on the right. ![The Inbox with the conversation list, an open thread and the contact panel](/screenshots/inbox/inbox-overview.webp) ## Find the conversation you need * Switch between the **Open**, **Snoozed** and **Closed** tabs above the list. **Open** is everything that still needs attention. * Narrow the list with the channel filter (**All channels**, WhatsApp, SMS, Email), the assignee filter (**Mine**, **Unassigned**, **Anyone**, or a colleague), and the **Unread** toggle. * Type in **Search conversations** to match a contact's name, phone number, email address or the last message. Unread conversations show a badge with the unread count, and the header shows how many conversations are unread in total. New inbound messages appear in the list the moment they arrive. The list works from the keyboard: press `j`/`k` (or the arrow keys) to move, `Enter` to open, and `Esc` to close the thread. Opening a conversation marks it as read. ## Read the thread Messages from the patient sit on the left; yours sit on the right with delivery ticks — a clock while sending, one tick for **Sent**, two for **Delivered**, and two coloured ticks for **Read**. Scroll up to load older messages. Emails show their subject line; click **Show full email** to expand a long one. A web address in a message is clickable and opens in a new tab. Message times and the day separators follow the practice timezone set under **Settings → Practice details**, not the clock of the device you are reading on, so a message sent at 09:10 at the practice reads 09:10 from anywhere. The mobile app does the same. A conversation can span more than one channel — the same contact's WhatsApp, SMS and email messages live in a single thread, each message marked with its channel icon. A parent, guardian or guarantor may represent more than one patient through that contact. In that case, each message records which patient it concerns before consent, timeline and automation effects are applied. When a practice retention period removes patient-bearing message content, the thread keeps the message's direction, channel, time and delivery state but replaces its body with **Content removed by your data retention policy**. ## Reply Open the conversation and click into the composer at the bottom. Make sure the **Reply** tab is active. If the thread spans several channels, check the channel picker next to the attach button. It defaults to the channel the patient last wrote on; click it to reply on a different one. If the contact represents more than one patient, use **Message about** to choose the patient this reply concerns. Smileline uses that choice for consent checks, the patient timeline and automation. Type your message. For email replies you can set a subject — leave it blank to reply on the thread's latest subject. Press `Enter` or click **Send**. `Shift+Enter` adds a new line instead. Email replies use the same visual editor as email templates, so a reply can be formatted rather than plain text. The reply box turns into the editor when you click into it (or expand it), keeping anything you have already typed: type `/` for layout blocks, select text for formatting, and paste or drag in an image to add one inline. Because `Enter` starts a new line in an email reply, it sends with `Cmd`/`Ctrl` + `Enter` or the **Send** button. Every other channel — and internal notes — stays a plain text box where `Enter` sends. For a longer email, click the expand button in the composer's toolbar to write it in a full window. Everything works the same there — subject, templates, AI assist, attachments and the channel picker — and closing the window puts the draft, formatting included, back in the thread. You can't send on a channel that is disconnected or that the patient has opted out of — the composer tells you why and lets you pick another channel. WhatsApp replies are also subject to the 24-hour window; see [Channels](/guides/inbox/channels). When a shared family contact replies and the message cannot honestly be tied to one patient, Smileline stops reply-sensitive nurture for every patient that contact represents. It does not put the reply on one patient's timeline or count it as that patient's campaign response. ## Your unsent drafts Whatever you type in a conversation's composer is saved as your draft about a second after you stop typing, and **Saved** appears beside **Send**. Switch to another conversation, reload the page or open the Inbox on another computer, and your draft is back where you left it. Drafts are personal: nobody else sees yours, and there is no limit on how many conversations you keep one in. * Sending clears only the text that was sent. Anything you type while the message is still on its way stays in the composer and becomes your next draft. * If a message doesn't reach Smileline — you went offline, or the send failed — your text stays in the composer and in your draft, so nothing is lost. Press **Send** again without changing the text, or **Retry** on the message: if the first attempt did arrive after all, the patient still gets it only once. * If **Not saved** appears, click **Retry**. Your text stays in the composer meanwhile. * When two conversations merge and you had a draft in each, both texts are kept: the second follows a "From merged conversation" line. * Attachments aren't kept in drafts. Add files again after reopening a draft. ## Attach a file Click the paperclip icon in the composer and pick one or more files, drag them onto the composer, or paste a copied image or file straight into the message box. Each file is limited to 16 MiB; email takes up to 20 files and 25 MiB combined, and the other channels follow their provider's own rules — hover the paperclip to see the rule for the channel you are replying on, and see [Channels](/guides/inbox/channels) for the full list. The paperclip is hidden where the channel cannot carry files (SMS outside the US and Canada, Instagram comment replies). A file that the channel cannot deliver is refused before it uploads, with the reason. Smileline keeps an uploaded file private until you send the message. The upload expires after one hour if you abandon the draft, and each upload can be sent only once. If it expires, upload the file again. Images show as thumbnails before and after sending; click one to see it full size, and **Open original** opens it in a new tab. Videos and voice notes play in the thread — in Safari and on iPad too — and you can skip to any point in them. Documents and unknown file types download instead of opening as a page. ## Leave an internal note Switch the composer to the **Note** tab, write your note, and click **Add note**. Notes appear in the thread on an amber card marked "not visible to the patient" — they are never sent. Use them for handovers and context. ## Who gets a conversation Every conversation is assigned to someone automatically, so its alerts go to one person rather than the whole team. Each time a message arrives, Smileline gives the conversation to the first of these who can take chats: 1. The person it is already assigned to. 2. The lead's owner (the owner of their newest open journey). 3. The person set for the channel the message came in on, under [Settings → Assignment](/guides/settings/assignment#who-gets-new-chats). 4. The person set for **Everything else** on the same page. 5. The practice owner. Owners, managers, front desk and telesales can take chats. Anyone else, and anyone who is suspended, is skipped. If nobody on the list can take the conversation, it is left unassigned and everyone who receives patient replies is alerted. Working a lead makes its conversation yours, even when a colleague had it: * sending a reply in it (an internal note doesn't count, and automatic messages never move it); * recording an outcome on the lead in Today — see [Who gets the lead's chats](/guides/today/outcomes-and-undo#who-gets-the-leads-chats); * creating a lead from it. ## Triage a conversation The thread header carries the triage actions: * Click **Close** when the conversation is dealt with (or **Reopen** to bring it back). * Open the actions menu (the `⋮` button) for the rest: * **Assign to** — hand the conversation to a colleague, or set it back to **Unassigned**. Only people who can take chats are listed. A conversation set back to **Unassigned** is assigned again when the next message arrives. * **Snooze** — hide it until **Later today (+3h)**, **Tomorrow 9:00** or **Next Monday 9:00**. * **Mark unread** — put it back in the unread queue for a second look. * **Create lead** and **Link to patient** — see below. ![The conversation actions menu with assign and snooze options](/screenshots/inbox/triage-menu.webp) Snoozed conversations reopen on their own when the timer runs out — and immediately if the patient replies. An inbound message also reopens a closed conversation, so nothing slips past the **Open** tab. ## Link a conversation to a patient Incoming messages match existing patients in your practice by email first, then mobile number, then **Other phone** when no other patient has that number. If none matches, the sender's full name can link the conversation when it matches exactly one eligible patient's first name and surname. Capitalisation and extra spaces are ignored; partial names, nicknames and usernames do not match. Archived, deceased and merged-away patient records are excluded. Messenger and Instagram also check after their profile name becomes available, including cached names when another message arrives. If the patient already has a thread, the conversations join and their message history is preserved. Existing patient links and shared-contact relationships are kept. If several patients share the same full name, or no match is available, link the conversation yourself — or, for someone new, [create a lead from it](#create-a-lead-from-a-conversation). The **Contact details** panel still shows the sender's name when available, otherwise their number, address or channel ID; **Unknown contact** appears only when none is available. Names and contact details written inside message text are not extracted for matching. Click **Link to patient** in the contact panel (or in the `⋮` menu). The search starts with the sender's name when available, otherwise their number, email address or channel ID. Search by name, phone or email and pick the right patient — or click **Create lead** for someone who isn't in the CRM yet. The conversation and all its past messages are added to the patient's timeline. A reachable contact has one conversation thread. If the contact you link already has one, the two threads merge into it automatically, and so do your drafts in them. For a shared family contact, choose the represented patient for each new outbound message; Smileline never guesses from the shared phone number or email address. Once linked, the contact panel on the right shows the patient's details and journeys. You can edit contact fields directly there, or click **Open full patient record**. In the clinical workspace inbox, the panel shows the clinical picture in place of journeys: * **Medical**: the alerts in force today, and the patient's active allergies, conditions and medications. * **Next appointment**: the next booking that hasn't been cancelled, with **Book** to make a new one. * **Treatment**: the open treatment plans, with their status, total and procedures. * **Patient note**: the record's note. Click it to edit it in place. Each section appears only if your role can read it. ## Create a lead from a conversation A conversation that isn't linked to anyone — a Facebook or Instagram comment, a DM, a website chat — becomes a lead in one step, with its journey, its first task and the conversation linked. Click **Create lead** in the contact panel. On a phone the panel is hidden: use **Create lead** in the thread header or the `⋮` menu. Check the details. The name is filled in, along with any email address or mobile number found in the conversation — including contact-form answers in earlier messages. Messenger and Instagram account IDs are never used as mobile numbers. The location comes from the channel. The lead source comes from where the chat came in, when your practice has a source for it: your social source for comments and DMs, your email source for email. **Email** and **Mobile** are optional, because you can reply in the chat — so a lead from a social comment needs neither. Pick the **Treatment** they're interested in. It is required: the lead's journey starts on it. Click **Create lead**, or **Create & record outcome →** to open the new lead on [Today](/guides/today/outcomes-and-undo) and record what happened straight away. If they may already be in the CRM, **Already in the CRM?** lists people with the same email, mobile or name. **Link to *name* instead** links the conversation to that person rather than creating someone new. An email or mobile number that already belongs to someone can't start a new lead: **Create lead** stays off until you link them or change the detail. Someone with exactly the same name is only a warning, and **Create anyway** adds the new person. The new lead starts like any other: it gets its first task and runs your sequences and conversion tracking. The conversation becomes yours when your role can take chats. No AI call is booked for it. **Create lead** appears when your role can create patients and journeys. It isn't offered when the contact already represents a patient (a parent writing for a child, say): link that patient instead. ## Mark a WhatsApp ad lead A WhatsApp chat that began from a click-to-WhatsApp ad shows **WhatsApp ad lead** in the contact panel. When the conversation shows a genuine enquiry, select **Mark qualified lead** to tell Meta, which sends only Meta's click ID and your WhatsApp account. Your practice must first turn on **Report qualified leads to Meta** for the number under **Settings → Channels**. See [WhatsApp qualified leads](/guides/marketing/conversion-feedback#whatsapp-qualified-leads) for what is sent and what each outcome means. ## Retry a failed message Most ordinary messages that cannot be delivered show **Not delivered** with the failure reason and a **Retry** button. Fix the cause if there is one (for example, a wrong number) and click **Retry** to send that message again. If an SMS or WhatsApp provider may have accepted a message but did not return a conclusive response, the bubble instead shows **Delivery status unknown**. Smileline does not offer **Retry** for that message because sending it again could give the patient a duplicate. A later signed delivery callback can still recover the message to **Sent**, **Delivered**, **Read** or a confirmed failure. An appointment reminder suppressed while a historical PMS import resolves a source correction is also non-retryable. Its frozen message may describe an old appointment time. Smileline leaves the reminder lifecycle available for a later live appointment change, which creates a new message with current content. Smileline also removes **Retry** after retention has removed the message content. The API reports `MESSAGE_CONTENT_REDACTED` rather than risking an empty message being delivered to the patient. Smileline also withholds **Retry** when the original reason for a scheduled message no longer exists: for example, its automation was cancelled or its deposit request was already paid, cancelled or expired. Campaign messages are retried through their campaign workflow, not from the Inbox. Write a fresh manual message if the patient still needs a different follow-up. **Retry** is also withheld once a message has stopped being worth sending rather than merely failing. A reminder whose appointment has already started shows **Not sent — the appointment time had already passed**. Ordinary failed messages, by contrast, are never refused for their age or for how many times they have been retried: every **Retry** starts a fresh delivery attempt. Email waits in the delivery queue when the shared email provider is busy. Provider rate limits are retried automatically without using up the email’s ordinary failure attempts. Queued email does not expire merely because it has waited for capacity. Genuine delivery problems remain visible and recoverable. If a new message cannot be handed to the delivery queue, Smileline retries that handoff on a finite backoff for up to 48 hours. A handoff recorded as accepted is not published again merely because processing is delayed. If the worker cannot tell whether an older handoff succeeded, recovery can create another queue copy after 30 minutes; a persisted provider-attempt claim allows only one copy to submit the patient message, and the generation is not failed while a sibling could still be delivered. For other channels, if a delivery attempt is still queued when its own 48-hour horizon elapses, it is marked as no longer timely instead of being delivered late — and **Retry** starts a fresh attempt with a fresh horizon. A **send attempt 2** label appears on later attempts. Each attempt has its own finite queue-publication budget, so a retry can never restart earlier attempts' work — only add one more. ## Start a new conversation Click **New** in the Inbox header, choose a channel, enter the recipient's phone number or email address, and write the first message. If a thread already exists for that contact and channel, your message lands there instead of creating a duplicate. Business-initiated WhatsApp messages must use an approved template — see [Message templates](/guides/inbox/templates). --- # Message templates Source: https://docs.smileline.io/guides/inbox/templates Insert reusable message snippets in the composer, and manage the practice's template library. Templates save you retyping the same answers — opening hours, directions, deposit reminders. This page shows you how to insert one while replying and how to manage the practice's template library. ## Insert a template while replying Open the conversation and click the template icon (the leftmost button under the composer, titled **Insert template**). Pick a template from the popover. It only lists templates that fit the reply's channel, plus channel-agnostic ones. The template body is inserted into the composer with its merge tags already filled in — the patient's name, your practice details and so on. What you see is exactly what will send. Edit the text if you like, then send. On an email reply that is `Cmd`/`Ctrl` + `Enter` or the **Send** button; on every other channel `Enter` sends. ![The template picker open above the composer](/screenshots/inbox/template-picker.webp) For email replies, a template with a subject also fills the subject field if it's still empty. ## Merge tags Template bodies can contain merge tags that resolve when the template is inserted: | Tag | Resolves to | | --------------------------- | ---------------------------------------------------------------------------------------- | | `{{patient.firstName}}` | The patient's first name (their preferred name when set) | | `{{patient.lastName}}` | The patient's last name | | `{{practice.name}}` | Your practice name | | `{{practice.website}}` | Your practice website | | `{{practice.signature}}` | The email signature from **Settings → Practice** | | `{{practice.logo}}` | The email logo from **Settings → Practice**, as a picture | | `{{location.name}}` | The location's name | | `{{location.phone}}` | The location's phone number — a tap-to-call link in emails | | `{{location.email}}` | The location's email address | | `{{location.address}}` | The location's full address | | `{{location.openingHours}}` | The location's opening hours, formatted | | `{{appointment.date}}` | **Booking date** — the day of the booking, such as *Friday 17 July* | | `{{appointment.time}}` | **Booking time** — the time of the booking, such as *14:30* | | `{{followUp.date}}` | **Follow-up date** — the day of the call back agreed on Today, such as *Friday 17 July* | | `{{followUp.time}}` | **Follow-up time** — the time of that call back, such as *14:30* | | `{{followUp.assignee}}` | **Follow-up assigned to** — the first name of the team member making it, such as *Devon* | | `{{owner.firstName}}` | **Lead owner first name** — the first name of the lead's owner, such as *Feria* | Location tags resolve against the site set as the automation location in **Settings → Practice**, falling back to your first location. **Booking date** and **Booking time** fill in only when an automation sends the message. In [booking messages](/guides/automations/reminders) they are the date and time of the booking the message is about. In [follow-ups](/guides/automations/sequences#booking-date-and-time-in-a-sequence) they are the lead's next booked consultation, and blank when nothing is booked. Inserted by hand into a reply they are blank, and campaigns don't offer them. Both are written the way your practice's country writes dates: *Friday 17 July* and *14:30* in the UK, *Friday, July 17* and *2:30 PM* in the US, and in Italian in Italy (*venerdì 17 luglio*). The three **Follow-up** fields fill in only in [follow-ups](/guides/automations/sequences#follow-up-date-time-and-who-calls-back), and **Lead owner first name** only in [follow-ups](/guides/automations/sequences#the-lead-owners-name); anywhere else they are blank. In an email, `{{location.phone}}` becomes a link that starts a call when tapped. A text or WhatsApp message can't carry a link, but the patient's phone makes the number tappable on its own. A tag that can't be resolved — for example a patient tag in an unlinked conversation — is inserted as blank text, never as raw braces. ## WhatsApp templates and Meta approval WhatsApp only allows free-text messages within 24 hours of the patient's last message. Outside that window — and when starting a new WhatsApp conversation — you must send a template that Meta has approved for your account. Smileline handles the approval for you. Every WhatsApp-channel template is submitted to Meta automatically: * The standard reminder set (booking confirmation, appointment moved, 48-hour and 24-hour reminders, after your visit, missed appointment, cancellation) comes with every practice as WhatsApp templates. They are submitted the moment your WhatsApp connection is active. * **Reopen chat (WhatsApp)** comes with every practice too, in your practice's language. It apologises for missing the patient's message and asks them to reply: "Hi, sorry we couldn't get back to you in time about your message to `{{practice.name}}`. Reply here and we'll carry on the conversation." It names only your practice, never the patient, so it sends in any chat. Once approved it is the first button the composer offers after the 24-hour window closes. * A WhatsApp template you write yourself is submitted within a few minutes of saving it. * Templates you already created in WhatsApp Manager are imported into the list, with their Meta status. Each WhatsApp template shows its status in **Settings → Templates**: | Status | Meaning | | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Not submitted** | Waiting for a WhatsApp connection. Connect WhatsApp under **Settings → Channels** and it goes out by itself. | | **Submitting shortly** | Saved; Smileline sends it to Meta within a few minutes. | | **In review at WhatsApp** | Meta is reviewing it. Most decisions arrive within an hour; Meta allows itself up to 24 hours. | | **Approved by WhatsApp** | Ready. The composer offers it as a one-click send when the 24-hour window is closed; hover over the button to read the message the patient will get. | | **Rejected by WhatsApp** | Open the template: Meta's reason is shown. Fix the text, save, and it is submitted again as a new version. | | **Paused / Disabled by WhatsApp** | Meta stopped it after negative feedback. It is withdrawn from the composer until Meta reinstates it. | | **Needs attention** | Something outside the text: the connection lacks the template permission, the account's template quota is full, or several submissions failed in a row. The template says which. | The merge tags in your text become Meta's placeholders in the order they appear, so what you see in Smileline is what Meta approves and what sends. Each merge tag can appear only once in a WhatsApp template, because Meta rejects a template that reuses a placeholder; the editor tells you if you repeat one. Choose a **Category** when you write the template: **Utility** for appointment confirmations, reminders and account updates, **Marketing** for offers and promotions. Meta reviews the category too and may re-file it — the template then shows the category Meta chose. Marketing templates cost more per message, are subject to WhatsApp's marketing opt-out, and are not delivered to US numbers. **Language** defaults to your practice's country; pick another when the text is written in a different language. ### Editing an approved template Saving a change to an approved template sends the new text to Meta as a new version. The approved text keeps sending until the new version is approved, at which point the template switches over — nothing is interrupted, and reminders already scheduled with the old text keep working. Smileline asks you to confirm before it submits. A change that only swaps one merge tag for another — `{{patient.firstName}}` for `{{patient.preferredName}}`, say — does not go back to Meta at all, because Meta's copy is unchanged. ### Imported templates A template created in WhatsApp Manager arrives with Meta's numbered placeholders (`{{1}}`, `{{2}}`, …). Replace each one with a merge tag and save; the template is then ready to send without going back to Meta. A template that uses features Smileline cannot fill yet — named parameters, a picture or document header, buttons with variables, or an authentication template — is shown read-only with the reason. ### Numbers in several WhatsApp accounts When your WhatsApp numbers belong to more than one WhatsApp Business Account, each account reviews its own copy of every template. You still write one text, with one set of merge tags; Smileline submits it to every account. * An edit goes live only once **every** account has approved it. Until then, every number keeps sending the approved text. * Each number sends the copy its own account approved, so a template paused in one account keeps sending from numbers in the others. * A number whose account hasn't approved a template yet can't send it. The composer says "This template isn't approved for this WhatsApp number yet.", an automation skips that message instead of sending it, and a campaign through that number can't be launched until the account approves. * A text one of your automations still uses is submitted to a newly connected account too, so the automation keeps sending from every number. The template dialog shows each account's review separately. In **Settings → Templates** a template shows **Approved by WhatsApp** only once every account has approved it; if any account rejected, paused or disabled it, that is what you see. **Resubmit for review** resubmits it wherever it was turned down, or where the approved version waiting to go live uses a feature Smileline cannot fill. ## Manage the template library Templates live in **Settings → Templates**. Owners and managers can create and edit them; everyone else can use them in the composer. Go to **Settings → Templates** and click **New template**. Give it a **Name** and choose a **Channel** — **Any channel** makes it available everywhere, or pick WhatsApp, SMS or Email to scope it. Write the message. Email templates get the visual editor and a **Subject**; SMS, WhatsApp and **Any channel** templates get a plain text box. WhatsApp templates also take a **Category** and a **Language**, and are submitted to Meta for approval when you save. Add merge tags where you want them. In an email, type `{` and pick a field from the list that appears. On any channel, the merge-tag buttons under the editor insert one at the cursor. Click **Save**. The template appears in every composer straight away. It is the same editor everywhere a template is edited, including the **Edit template** button inside an automation step — so an email keeps its design no matter where you change it. To retire a template, click **Archive** on its row — it disappears from the composer but stays in the list, and **Restore** brings it back. ## The email visual editor Email templates are written in a visual editor rather than a plain text box. * Plain paragraphs read like a personal email — that is the default, and usually the right one for a follow-up. * Type `/` for layout blocks: headings, lists, quotes, buttons, dividers, sections and columns. * Type `{` to search the merge tags and insert one. Keep typing to filter the list, then press `Enter`, or click the one you want. * Select text to get formatting options. * Click **Image** to add a picture, or paste and drag one straight into the body. * Press `Escape` once to close an open menu, and again to close the dialog. ### Images Click **Image** below the editor to upload a picture or reuse one you have already uploaded. Anything you upload joins your practice's image library and stays available in every template, campaign and reply, so a logo only needs uploading once. Use JPEG, PNG or GIF, up to 2 MB each. Images are hosted for you and load from a link in the email, so keep them small enough to appear quickly on a phone. The library lists the newest images first; **Load more** at the bottom brings up older ones. Deleting an image from the library breaks it in emails you have already sent, because those emails load it from that same link. Leave it in place unless you want it gone everywhere. WebP images are rejected. Outlook cannot display them, and a picture that silently fails to load in a patient's inbox is worse than one you could not upload. Many people read email with images switched off, so never put words that matter, such as an appointment time or a cancellation link, inside a picture. The editor writes the email at 600px wide, which is the standard for email clients. On a narrow screen it shrinks to fit — what recipients see on a phone. ## Writing the HTML yourself Some emails are easier to paste than to rebuild — a design an agency sent you, a layout with its own styling, a newsletter you already use elsewhere. Above the body, switch from **Visual** to **HTML** and write the markup directly. Click **HTML** above the editor. If you have not written any HTML yet, Smileline starts you off with the current design's markup, so you can adjust it rather than begin from nothing. Type or paste your HTML in the **Code** tab. It is a real code editor — highlighting, closing tags and indentation all behave as you would expect. Merge tags work exactly as they do in the visual editor. Type them yourself, or click a tag button below the editor to drop one in at the cursor. **Image** adds a picture from your library as an `img` tag. Open the **Preview** tab to see the result. Merge tags appear as themselves here — they only resolve when a message actually sends. Click **Save**. The template sends your HTML exactly as written. Your HTML is sent untouched, `style` blocks and all, so responsive layouts keep working. Smileline builds the plain-text version of the email from your markup automatically, for the small number of people whose mail app cannot show HTML — which is why a design made only of images is refused unless it has a subject to fall back on. The two modes hold separate drafts, and **Save** commits whichever one you have open. Saving in HTML replaces the visual design; saving in Visual replaces your HTML. Switching back and forth before saving changes nothing, so it is safe to look. An HTML template cannot be re-opened in the visual editor with its markup intact — the visual editor only understands its own blocks. Keep a template in one mode or the other. --- # Welcome to Smileline Source: https://docs.smileline.io/guides The CRM built for dental practices — capture leads, run your day, and keep every patient conversation in one place. Smileline helps your front desk turn enquiries into booked appointments. This guide walks through every part of the app, from your first sign-in to reports. Preview a practice day on the [Smileline homepage](https://smileline.io/). Scroll through **A Monday at the front desk** to follow four sample enquiries. On a phone, each enquiry gives way to its patient record as you scroll. You can also tap a time on the timeline to jump to that moment. With reduced motion or too little screen space, all four stories appear together so you can read them at your own pace. Scroll through **Most practices run on a patchwork** to see how separate tools leave gaps between enquiries and bookings. The tiles include call tracking, automation, rotas, social management, messaging and website analytics. On a phone, the block of tools opens up above six problems, shown one at a time. Scroll to move through the story. After the sixth problem, each tile becomes a piece of the Smileline logo and moves straight into its place. Keep scrolling to reveal **All your practice** beneath it, then **One subscription** after the first line finishes appearing. With reduced motion, data saving or too little screen space, read the full list beside still images, followed by the logo and message. The globe under **Your patients' data stays home** shows small sample activity labels on its existing EU and US practice dots. Drag it to look around. Hover to hold the globe still while activity continues, or use **Pause** and **Resume** to control both. With reduced motion, the globe and activity hold still until you drag. The examples contain no patient data. ## Start here ## Work smarter ## Building an integration? The [API Reference](/reference) documents every endpoint, with an interactive playground to try requests against your own data. --- # Inventory Source: https://docs.smileline.io/guides/inventory Keep count of the equipment and consumables in each store room, see what is running low, and know who took or restocked every item, on the web and on a store-room iPad. **Inventory** (`/pms/inventory`, in the clinical workspace) keeps a count of everything the practice stocks: gloves, bibs, burs, cartridges, instruments. Every take, restock and count is recorded with who did it and how many were left, so each item has its full history. ## Rooms and General stock Stock lives in rooms. Add the rooms where you keep it under **Settings → Calendar → Stock rooms**, for each location. You can rename and reorder them there too. An item that isn't in a room is the location's **General** stock, so a practice with one store cupboard doesn't need any rooms. A room that still holds items can't be archived: move its items to another room, or archive them, first. ## Add items Owners and managers add and change items. Open **Inventory** and click **Add item**. The most common items are listed straight away. Start typing to search Smileline's catalogue of dental equipment and supplies. The list narrows as you type and understands abbreviations (OPG, CBCT, BPE), brand names (Septanest finds articaine), both spellings (steriliser, sterilizer) and names in English, Spanish and Italian. Pick an item to use its name, unit and stock photo. If the item isn't in the catalogue, choose **Create “…”** at the end of the list to add it under the name you typed. Check the name, then choose its room (or **General**) and, if you like, the unit you count it in, such as box or pack. Enter the **Starting count**: how many you have now. It becomes the first entry in the item's history. Set a **Min level** to be warned before the item runs out. Leave it empty if you don't need a warning. ### Photos Every catalogue item comes with a stock photo, shown in the list and when you open the item. For an item you created, or to show your own product instead, click **Upload photo** when adding or editing it. **Remove photo** goes back to the catalogue photo, if the item has one. Some catalogue photos are shared under a Creative Commons licence; their credit is shown under the photo when you open the item, and listed under [Photo credits](#photo-credits). To move an item to another room, rename it, change its min level or photo, open it and click **Edit**. A renamed catalogue item keeps its photo. **Archive** removes an item from the list without losing its history; turn on **Show archived** to find it again and restore it. ## Take, restock and count Anyone who works the clinic can take, restock and count: the front desk, dentists, hygienists and nurses as well as owners and managers. On the web, the change is recorded under your own name. * In the **Items** list, click **−** to take one or **+** to add one. * For a larger amount, open the item and click **Update quantity**. Choose **Take** or **Restock** and enter how many, or choose **Count** and enter how many there are now. Stock never goes below zero. If you try to take more than the count shows, nothing is saved and Smileline tells you how many are left. The count was wrong, so correct it with **Count**. A count is checked against the number you saw. If someone takes or restocks the item on another screen before you save, Smileline asks you to count it again rather than overwrite their change. If the connection drops before Smileline answers, your change may or may not have been saved, and the item shows **Not confirmed**. Click **−** or **+** on it, or **Save** in its quantity window, which still shows your change: either one sends that same change again, and Smileline records it only once, so nothing is taken twice. Once it is confirmed, the next click is a new change. ## Low stock An item at or below its min level shows **Low stock**, and at zero **Out of stock**. Choose **Low stock** above the list to see only what needs reordering. Search and the room filter narrow the list further. ## History and activity Open an item to see its history, newest first: what was taken, restocked or counted, by whom, when, and how many were left afterwards. The **Activity** tab shows the same for every item at the location. The history can't be edited or deleted. If a number is wrong, record a new **Count**. ## Set up a store-room iPad The Smileline app turns an iPad into a stock station for one room. Staff tap − or + on what they take or put back, then tap their name, so every item has a record of who took it. You can put an iPad in each store room. Install **Smileline** from the App Store on the iPad. On an iPad the app opens straight into the stock station. It never rings for calls and shows no notifications. Sign in with a team member's account that can take stock, as on the [mobile app](/guides/mobile-app). If that person leaves the practice, sign the iPad in again with another account. Choose the location, if the practice has more than one. Then choose the room the iPad is in. **General** shows every item at the location, with a filter for each room. Keep the iPad on and on Smileline: in the iPad's **Settings**, set **Display & Brightness → Auto-Lock** to **Never**, and turn on **Accessibility → Guided Access** so the screen can't leave the app. ## Use the iPad 1. Tap **−** on each item you take, or **+** on each one you put back. For more than a few, tap the number on the item and choose **Take**, **Restock** or **Count**. 2. Tap **Save**. **Who's this?** lists the changes you are about to save. 3. Tap your name. The iPad confirms **Saved for** your name. The names are the practice's active team members who can take stock; staff from an agency that works with the practice aren't listed. A name is a tap, not a password, so the record is only as honest as the people using it. If an item has run out, or another iPad changed it after you counted, nothing is saved and the item is marked. Correct it and save again. To move the iPad to another room, use **Change room**. To sign out or switch practice, open **Account**. ## Photo credits These catalogue photos are shared under a Creative Commons licence. Each link opens the original photo and its licence. | Item | Photo | Licence | | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | Dental chair | [AuliRaha](https://commons.wikimedia.org/wiki/File:Full_automatic_Dental_Chair_in_Kar_Clinic.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Spittoon | [Sterilgutassistentin](https://commons.wikimedia.org/wiki/File:Speibecken_an_zahn%C3%A4rztlicher_Behandlungseinheit_20100307_001.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | High volume suction line | [Markmons](https://commons.wikimedia.org/wiki/File:Suction_%2813%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | 3-in-1 syringe | [Cardglaser](https://commons.wikimedia.org/wiki/File:P14209_Dreiwegespritze.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | High speed turbine handpiece | [Politikaner](https://commons.wikimedia.org/wiki/File:Turbine_Zahnarzt_20090422_010.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Speed increasing contra-angle (red band) | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_391.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Slow speed contra-angle (blue band) | [Schildwerk](https://commons.wikimedia.org/wiki/File:Instrumente_20120912_%2834%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Reduction contra-angle (green band) | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Low_speed_handpiece.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Straight handpiece | [Gertident](https://commons.wikimedia.org/wiki/File:Handst%C3%BCck_39.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Air motor | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Zahn%C3%A4rztlicher_Mikromotor_mit_Winkelst%C3%BCckkupplung_0004.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Electric motor | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Zahn%C3%A4rztlicher_Mikromotor_mit_Winkelst%C3%BCckkupplung_0001.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Handpiece coupling | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_393.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Piezo scaler | [RosarioVanTulpe](https://commons.wikimedia.org/wiki/File:Dental_instrument_to_remove_Calculus_5.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Scaler tips | [RosarioVanTulpe](https://commons.wikimedia.org/wiki/File:Dental_instrument_to_remove_Calculus_2.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Air polisher | [Kulzwerker](https://commons.wikimedia.org/wiki/File:Prophyflex2a.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | LED curing light | [Entrancess](https://commons.wikimedia.org/wiki/File:Bluephase_LED-Polymerisationsger%C3%A4t.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Obturation system | [Guttstiftchen](https://commons.wikimedia.org/wiki/File:Stifte_Guttapercha_namenlos.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Electric pulp tester | [Coronation Dental Specialty Group](https://commons.wikimedia.org/wiki/File:Electric_pulp_tester_unit.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Electrosurgery unit | [JBARRETO](https://commons.wikimedia.org/w/index.php?curid=14489191) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/) | | Caries detection device | [Hanabishi](https://commons.wikimedia.org/wiki/File:Diagnodent.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Intraoral camera | [Raimond Spekking](https://commons.wikimedia.org/wiki/File:Monitex_MoniCam_PX520-8624.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Loupes | [Rainm123](https://commons.wikimedia.org/wiki/File:Ergo_%2810X%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Headlight | [Hs1195](https://commons.wikimedia.org/wiki/File:Dental_loupe_with_loupe_light.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Dental microscope | [Ірина Олександрівна](https://commons.wikimedia.org/wiki/File:%D0%A5%D1%96%D1%80%D1%83%D1%80%D0%B3%D1%96%D1%87%D0%BD%D0%B8%D0%B9_%D0%BC%D1%96%D0%BA%D1%80%D0%BE%D1%81%D0%BA%D0%BE%D0%BF_%D0%B2_%D1%81%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%BE%D0%BB%D0%BE%D0%B3%D1%96%D1%97_zumax.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Digital shade device | [Matthew Ferguson 57](https://commons.wikimedia.org/wiki/File:VITA_shade_guide.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Impression material mixing machine | [Kaltpressen](https://commons.wikimedia.org/wiki/File:Dispensing_gun_a.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Wipeable keyboard | [Kai Hendry](https://commons.wikimedia.org/wiki/File:Medical_touch_keyboard.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Sensor or elbow taps | [SuSanA Secretariat](https://commons.wikimedia.org/wiki/File:Tap_with_an_included_sensor_for_water_saving_%284343167291%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Sanitiser dispenser | [TaurusEmerald](https://commons.wikimedia.org/wiki/File:Rubbermaid_Hand_Sanitizer_Dispenser.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Paper towel dispenser | [Ser Amantio di Nicolao](https://commons.wikimedia.org/wiki/File:EnMotion_motion-activated_paper_towel_dispenser.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Glove dispenser | [mikecogh](https://www.flickr.com/photos/89165847@N00/20464487373) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/) | | Mask dispenser | [Steve Morgan](https://commons.wikimedia.org/wiki/File:Face_mask_dispenser_inside_a_TriMet_bus_%28Portland%29,_May_2021.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Clinical waste bin | [Viv Rolfe](https://commons.wikimedia.org/wiki/File:UK_Yellow_Biological_Waste_Bin.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sharps bin | [William Rafti](https://commons.wikimedia.org/wiki/File:Sharps_Container.jpg) | [CC BY 2.5](https://creativecommons.org/licenses/by/2.5) | | Amalgam waste container | [NovemberElla at Slovenian Wikipedia](https://commons.wikimedia.org/wiki/File:Amalgam_separator.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Pharmaceutical waste bin | [Bluerasberry](https://commons.wikimedia.org/wiki/File:Drug_disposal_receptacle.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Patient safety glasses | [Jacek Halicki](https://commons.wikimedia.org/wiki/File:2023_Okulary_ochronne_%281%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Intraoral X-ray unit | [Kiran891](https://commons.wikimedia.org/wiki/File:X-Mind_Unity_dental_X-ray_generator_for_Intraoral_Imaging_%28cropped%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Digital X-ray sensor | [Linnenband](https://commons.wikimedia.org/wiki/File:Dentalbild_12821.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Phosphor plates | [Linnenband](https://commons.wikimedia.org/wiki/File:R%C3%B6ntgen_10010.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Phosphor plate scanner | [Linnenband](https://commons.wikimedia.org/wiki/File:R%C3%B6ntgen_10010.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sensor and plate holders | [Linnenband](https://commons.wikimedia.org/wiki/File:Dentalbild_12821.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bitewing tabs | [Linnenband](https://commons.wikimedia.org/wiki/File:Dentalbild_12821.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Endo X-ray holders | [Linnenband](https://commons.wikimedia.org/wiki/File:Dentalbild_12822.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sensor barrier sleeves | [Linnenband](https://commons.wikimedia.org/wiki/File:R%C3%B6ntgen_10010.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Rectangular collimator | [Kiran891](https://commons.wikimedia.org/wiki/File:X-Mind_Unity_dental_X-ray_generator_for_Intraoral_Imaging_%28cropped%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | OPG | [East Midtown](https://commons.wikimedia.org/wiki/File:Orthophos_XG3_%2813878025764%29.jpg) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0) | | Ceph arm | [Ptrump16](https://commons.wikimedia.org/wiki/File:Cone_Beam_CT.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | CBCT | [Ptrump16](https://commons.wikimedia.org/wiki/File:Cone_Beam_CT.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Intraoral scanner | [Викидим](https://commons.wikimedia.org/wiki/File:Dentsply_Sirona_Primescan_intraoral_scanner_01.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Face scanner | [Викидим](https://commons.wikimedia.org/wiki/File:Dentsply_Sirona_Primescan_intraoral_scanner_01.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Clinical camera | [Rolf Dietrich Brecher from Germany](https://commons.wikimedia.org/wiki/File:Camera_%2825139963617%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Macro lens | [Lucasbosch](https://commons.wikimedia.org/wiki/File:Canon_EF_100mm_f2.8L_Macro_IS_USM_front_angled.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Ring or twin flash | [Diego Delso](https://commons.wikimedia.org/wiki/File:Canon_Macro_Ring_Lite_MR-14EX_2017-02-05,_DD_FS.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Photo mirrors | [Rachmaninoff](https://commons.wikimedia.org/wiki/File:Dental_mirror.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Imaging software | [Rusty Clark \~ 100K Photos](https://www.flickr.com/photos/23206546@N04/27518496753) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/) | | Radiation warning signs | [أمين](https://commons.wikimedia.org/wiki/File:X-ray_radiation_warning_sign.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Radiation warning light | [Erereony](https://commons.wikimedia.org/wiki/File:X-Ray_Room_Entrance_Warning_Light_%28Nigeria%29.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Thyroid collar | [Kiran891](https://commons.wikimedia.org/wiki/File:Darby_X-Ray_apron_20230316_105852.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Lead apron | [Kiran891](https://commons.wikimedia.org/wiki/File:Darby_X-Ray_apron_20230316_105852.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | QA test phantom / step wedge | [Kiran891](https://commons.wikimedia.org/wiki/File:X-Mind_Unity_dental_X-ray_generator_for_Intraoral_Imaging_%28cropped%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Dosimeter badges | [Erereony](https://commons.wikimedia.org/wiki/File:Thermoluminescent_Dosimeter_Badge.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Compressor | [R-E-AL (German Wikipedia)](https://commons.wikimedia.org/wiki/File:2003-12-03-Kompressor.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Suction pump | [R-E-AL (German Wikipedia)](https://commons.wikimedia.org/wiki/File:2003-12-03-Saugmaschine.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Amalgam separator | [NovemberElla at Slovenian Wikipedia](https://commons.wikimedia.org/wiki/File:Amalgam_separator.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Suction filters | [R-E-AL (German Wikipedia)](https://commons.wikimedia.org/wiki/File:2003-12-03-Saugmaschine.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Water softener | [రవిచంద్ర](https://commons.wikimedia.org/wiki/File:Water_softener.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Reverse osmosis unit | [Kingfish101](https://commons.wikimedia.org/wiki/File:Rodi.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Backflow protection | [Mds08011](https://commons.wikimedia.org/wiki/File:Backflow_preventer_PQ.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Dip slides | [Ivanhoe](https://commons.wikimedia.org/wiki/File:Indicators_for_autoclaves.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Air conditioning | [Dinkun Chen](https://commons.wikimedia.org/wiki/File:Panasonic_AIR_CONDITIONER_INDOOR_UNIT_CS-C10KJ2.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Mechanical ventilation | [Dinkun Chen](https://commons.wikimedia.org/wiki/File:Panasonic_VENTILATION_FAN_%282%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Air purifier | [Home Air Quality Guides](https://commons.wikimedia.org/wiki/File:Air_Purifier_%28Levoit_Core_300%29_%2849317752928%29.jpg) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0) | | Water heater | [DryPot](https://commons.wikimedia.org/wiki/File:Japanese_Electric_Water_Heater.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Non-vacuum autoclave (N type) | [Juan de Vojníkov](https://commons.wikimedia.org/wiki/File:Autoclave_Prestige_Medical_Omega_from_side.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Autoclave data logger or printer | [Aperegoy](https://commons.wikimedia.org/wiki/File:Data_Logger.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Washer disinfector | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Internationale_Dental-Schau_IDS_2011_Cologne_012.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Ultrasonic bath | [W.carter](https://commons.wikimedia.org/wiki/File:Transsonic_T_310_ultrasound_cleaner.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Handpiece cleaning and oiling unit | [Wolfemood](https://commons.wikimedia.org/wiki/File:Delicia_Silicon_Spray_200.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Handpiece oil | [Wolfemood](https://commons.wikimedia.org/wiki/File:Delicia_Silicon_Spray_200.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Pouch sealer | [M5s](https://commons.wikimedia.org/wiki/File:Continuous_Band_Sealer_Machine.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Decontamination rinse sink | [Alex Rio Brazil](https://commons.wikimedia.org/wiki/File:Whasing_basin_in_stainless_steel_for_hospital_-_Lavat%C3%B3rio.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Helix / Bowie-Dick test | [Ivanhoe](https://commons.wikimedia.org/wiki/File:Indicators_for_autoclaves.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | TST strips | [Ivanhoe](https://commons.wikimedia.org/wiki/File:Indicators_for_autoclaves.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Protein residue test | [Ivanhoe](https://commons.wikimedia.org/wiki/File:Indicators_for_autoclaves.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Ultrasonic foil test | [W.carter](https://commons.wikimedia.org/wiki/File:Transsonic_T_310_ultrasound_cleaner.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Ultrasonic soil test | [W.carter](https://commons.wikimedia.org/wiki/File:Transsonic_T_310_ultrasound_cleaner.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sterilisation pouches | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Beladungsmuster_f%C3%BCr_Sterilisation_Zahnarztinstrumente_02.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Sterilisation wraps | [Ibrahim Achiri](https://commons.wikimedia.org/wiki/File:Medical_Equipment_Setup_in_Theatre.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Autoclave indicator tape | [Dakoman](https://commons.wikimedia.org/w/index.php?curid=4851743) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0/) | | Instrument trays | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Beladungsmuster_f%C3%BCr_Sterilisation_Zahnarztinstrumente_01.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Bur stand | [Markmons](https://commons.wikimedia.org/wiki/File:Bohrerst%C3%A4nder_%2812%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Endo file stand | [Kaltpressen](https://commons.wikimedia.org/wiki/File:Becht_Derfla_Opalglasschale_Nr._7.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Lidded transport boxes | [Daniel Rosehill](https://commons.wikimedia.org/wiki/File:A_stack_of_attached_lid_containers_at_an_industrial_plastic_supplier_in_Israel.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Heavy-duty gloves | [russellstreet](https://www.flickr.com/photos/27345927@N07/6052055119) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/) | | Date labeller | [GeoTrinity](https://commons.wikimedia.org/wiki/File:Preisauszeichner_METO_Eagle.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Clean instrument storage | [Lunaris2](https://commons.wikimedia.org/wiki/File:Dentalschrank_%2812%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Decontamination logbook | [Katherine Stember](https://commons.wikimedia.org/wiki/File:Lab_Notebook.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Mouth mirror heads | [Rachmaninoff](https://commons.wikimedia.org/wiki/File:Dental_mirror.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Mirror handles | [AfroBrazilian](https://commons.wikimedia.org/wiki/File:Dental_Mirror_01.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Straight probe | [AfroBrazilian](https://commons.wikimedia.org/wiki/File:Dental_probe_no6_01.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Briault probe | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_366.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sickle probe | [Dozenist](https://commons.wikimedia.org/wiki/File:Dental_explorer_05-09-08.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | BPE / WHO probe | [Coronation Dental Specialty Group](https://commons.wikimedia.org/wiki/File:Dental_explorer_and_periodontal_probe.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Williams probe | [AfroBrazilian](https://commons.wikimedia.org/wiki/File:Periodontal_probe_01.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Nabers furcation probe | [Dozenist](https://commons.wikimedia.org/wiki/File:Periodontalprobes09-09-2005.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | College tweezers | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_371.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sickle scalers | [Haragayato](https://commons.wikimedia.org/wiki/File:Dental_scaler.JPG) | [CC BY-SA 2.5](https://creativecommons.org/licenses/by-sa/2.5) | | Universal curettes | [Milenafoto](https://commons.wikimedia.org/wiki/File:Curettes.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Gracey curettes | [Leandro Martinez](https://commons.wikimedia.org/wiki/File:Curetas-gracey.JPG) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0) | | Sharpening stone | [Mauro Cateb](https://commons.wikimedia.org/wiki/File:Arkansas_stone_-_Novaculite.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Excavators | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_%28112%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Ball burnisher | [Gertident](https://commons.wikimedia.org/wiki/File:MLW_Kugelstopfer.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Amalgam carrier | [Schildwerk](https://commons.wikimedia.org/wiki/File:Instrumente_20120912_%2826%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Half Hollenback carver | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_360.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Composite placement instruments | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_%28110%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Siqveland matrix retainer | [Gertident](https://commons.wikimedia.org/wiki/File:F%C3%BCllung_2020_%2811%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Tofflemire matrix retainer | [Gertident](https://commons.wikimedia.org/wiki/File:F%C3%BCllung_2020_%2810%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sectional matrix system | [Symposius](https://commons.wikimedia.org/wiki/File:Hilfsmittel_300.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sectional matrix rings | [Symposius](https://commons.wikimedia.org/wiki/File:Hilfsmittel_300.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Mixing spatula | [Gertident](https://commons.wikimedia.org/wiki/File:Anr%C3%BChrspatel_2021.42.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Mixing pad | [Gertident](https://commons.wikimedia.org/wiki/File:Anmischplatte_2021.43.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Glass slab | [Lagerassistent](https://commons.wikimedia.org/wiki/File:Anr%C3%BChrplatte_%2837%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Dappens pots | [Dr.kleine](https://commons.wikimedia.org/wiki/File:Dappenglas.TIF) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Crown remover | [Markmons](https://commons.wikimedia.org/wiki/File:Behandlung_%2821%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Crown scissors | [Ian Furst](https://commons.wikimedia.org/wiki/File:Tenotomy_scissors_curved.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Articulating paper holder | [Rababahmad](https://commons.wikimedia.org/w/index.php?curid=76825175) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) | | Retraction cord packer | [Symposius](https://commons.wikimedia.org/wiki/File:Instrumente_%28113%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Rubber dam clamps | [Santhyego](https://commons.wikimedia.org/wiki/File:Clamp_o_Grapa_Anterior.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Rubber dam frame | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Phantomkopf_009.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Endo explorer (DG16) | [Toothscraper](https://commons.wikimedia.org/wiki/File:Dental_Explorer_11-12.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | K-files | [Symposius](https://commons.wikimedia.org/wiki/File:K-Feile_%2810%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Hedström files | [Cardglaser](https://commons.wikimedia.org/wiki/File:P14207_Wurzelkanalinstrumente.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Rotary NiTi files | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Rotary_files.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Gates Glidden drills | [Michele Gardini](https://commons.wikimedia.org/wiki/File:Endodontic_instruments.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Endo ruler | [Qurren](https://commons.wikimedia.org/wiki/File:Shinwa_Rules_ruler_13005.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Endo ring | [Qurren](https://commons.wikimedia.org/wiki/File:Shinwa_Rules_ruler_13005.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Side-vented irrigation needles | [Victorg.india](https://commons.wikimedia.org/wiki/File:Blunt_Dispensing_Needles_22G,_23G,_24G,_25G,_26G,_27G.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Upper extraction forceps set | [Revolver00870](https://commons.wikimedia.org/wiki/File:Dental_extraction_forceps.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Lower extraction forceps set | [Politikaner](https://commons.wikimedia.org/wiki/File:Extraktionszange_UK_20090401_007.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Root forceps | [Sterilgutassistentin](https://commons.wikimedia.org/wiki/File:Extraktionszange_20100113_005.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Coupland's elevators | [Sadandy](https://commons.wikimedia.org/wiki/File:Couplands%27_Elevators.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Cryer's elevators | [SterilverbandGG](https://commons.wikimedia.org/wiki/File:ZA_Instrumente_2026_108.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Warwick James elevators | [Sadandy](https://commons.wikimedia.org/wiki/File:Warwick_james_dental_elevators.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Luxators | [SterilverbandGG](https://commons.wikimedia.org/wiki/File:ZA_Instrumente_2026_107.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Periotomes | [Haldu](https://commons.wikimedia.org/wiki/File:Syndesmotome_st%C3%A9rilis%C3%A9.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Scalpel handles | [Symposius](https://commons.wikimedia.org/wiki/File:Aesculap_scalpel_handle_No.3.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Scalpel blades | [Autom](https://commons.wikimedia.org/wiki/File:Scalpel_blade_10A.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Periosteal elevator | [Gertident](https://commons.wikimedia.org/wiki/File:Raspatorium_2020.80.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Minnesota retractor | [Gertident](https://commons.wikimedia.org/wiki/File:Wundkaken_2021.80.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Austin retractor | [Schildwerk](https://commons.wikimedia.org/wiki/File:Instrumente_20120950_%281%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bone rongeurs | [Saltanat ebli](https://commons.wikimedia.org/wiki/File:Rongeur.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Bone file | [Gertident](https://commons.wikimedia.org/wiki/File:Raspatorium_2020.80.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Mitchell's trimmer | [AfroBrazilian](https://commons.wikimedia.org/wiki/File:Bone_Curette_01.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Surgical curettes | [AfroBrazilian](https://commons.wikimedia.org/wiki/File:Bone_Curette_01.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Needle holders | [Rschiedon at Dutch Wikipedia](https://commons.wikimedia.org/wiki/File:Naaldvoerder_Mayo-hegar.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Suture scissors | [Pete unseth](https://commons.wikimedia.org/wiki/File:Suture_scissors_on_gray.png) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Tissue forceps | [Uwe Gille](https://commons.wikimedia.org/wiki/File:Chirurgische_Pinzette.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Haemostats | [SterilverbandGG](https://commons.wikimedia.org/wiki/File:ZA,_Chir._Instrumente_2026_109.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Surgical suction tips | [Schildwerk](https://commons.wikimedia.org/wiki/File:Instrumente_20120966.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Metal stock impression trays | [Lunaris2](https://commons.wikimedia.org/wiki/File:L%C3%B6ffel_%2822%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Plastic stock impression trays | [kilezz](https://commons.wikimedia.org/wiki/File:Cubetas_de_plastico.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Special tray material | [Lunaris2](https://commons.wikimedia.org/wiki/File:Prothesenkunststoff_Teig5.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Fox's occlusal plane | [Alutal](https://commons.wikimedia.org/wiki/File:Bi%C3%9Fgabel_94.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Wax knife | [Alutal](https://commons.wikimedia.org/wiki/File:Wachsmesser_01.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Le Cron carver | [Kulzwerker](https://commons.wikimedia.org/wiki/File:DDR_Modellierinstrument.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Modelling wax | [Dentina54](https://commons.wikimedia.org/wiki/File:Modellierwachs_A_Wachsplatte_a.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Bite fork | [Alutal](https://commons.wikimedia.org/wiki/File:Bi%C3%9Fgabel_19.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Shade guide | [Matthew Ferguson 57](https://commons.wikimedia.org/wiki/File:VITA_shade_guide.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bunsen burner | [Amfeli](https://commons.wikimedia.org/wiki/File:Mechero_Bunsen.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Hot air torch | [Hustvedt](https://commons.wikimedia.org/wiki/File:Butane_torch.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Mixing bowl | [Haustechnikerr](https://commons.wikimedia.org/wiki/File:P2500590_Gipsbecher_DDR.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Alginate spatula | [Gertident](https://commons.wikimedia.org/wiki/File:Anr%C3%BChrspatel_2021.42.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Nitrile gloves | [KOchstudiO](https://commons.wikimedia.org/wiki/File:Nitrilhandschuhe_verschiedenfarben.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | FFP2 masks | [dronepicr](https://commons.wikimedia.org/wiki/File:Covid_Face_mask_FFP2_%2850577264611%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | FFP3 masks | [dronepicr](https://commons.wikimedia.org/wiki/File:Corona_Face_mask_FFP3_%2850560133268%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Safety glasses | [Jacek Halicki](https://commons.wikimedia.org/wiki/File:2023_Okulary_ochronne_%281%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Disposable aprons | [Benjamin Healley / Museums Victoria](https://collections.museumsvictoria.com.au/items/2496977) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) | | Disposable gowns | [Benjamin Healley / Museums Victoria](https://collections.museumsvictoria.com.au/items/2496977) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/) | | Shoe covers | [Sergeev Pavel](https://commons.wikimedia.org/wiki/File:Shoes_in_shoe_covers_3.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Dental needles (long) | [RosarioVanTulpe](https://commons.wikimedia.org/wiki/File:Karpulenspritze11.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Dental needles (ultra short) | [RosarioVanTulpe](https://commons.wikimedia.org/wiki/File:Karpulenspritze14.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Safety syringe system | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Sicherheitsspritze_001.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Topical anaesthetic gel | [Whispyhistory](https://commons.wikimedia.org/wiki/File:Instillagel.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Diamond burs | [Albert](https://commons.wikimedia.org/wiki/File:Diamond_burs.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Steel rosehead burs | [Xauxa](https://commons.wikimedia.org/wiki/File:Drill_round.jpg) | [CC BY 2.5](https://creativecommons.org/licenses/by/2.5) | | Finishing burs | [Xauxa](https://commons.wikimedia.org/wiki/File:Drill_long.jpg) | [CC BY 2.5](https://creativecommons.org/licenses/by/2.5) | | Acrylic trimmers | [Markmons](https://commons.wikimedia.org/wiki/File:Bohrerst%C3%A4nder_%2812%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Polishing points | [Gertident](https://commons.wikimedia.org/wiki/File:Polierer_2021.45.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Polishing discs | [Gertident](https://commons.wikimedia.org/wiki/File:Finierscheiben_2021.47.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Polishing strips | [Schildwerk](https://commons.wikimedia.org/wiki/File:Polierstreifen_20120965_%2802%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Prophy paste | [Milenafoto](https://commons.wikimedia.org/wiki/File:Airflow_%28dental_care%29.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Disposable prophy angles | [Milenafoto](https://commons.wikimedia.org/wiki/File:Airflow_%28dental_care%29.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Air polisher powder | [Kulzwerker](https://commons.wikimedia.org/wiki/File:Prophyflex2a.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Etch | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Composite_material.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bonding agent | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Dental_bonding_agents.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Flowable composite | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Composite_material.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Glass ionomer | [Isonandra gutta](https://commons.wikimedia.org/wiki/File:Glas-_jonomer_cement,_kapusle.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Resin-modified glass ionomer | [Isonandra gutta](https://commons.wikimedia.org/wiki/File:Glas-_jonomer_cement,_kapusle.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Amalgam capsules | [Dentina54](https://commons.wikimedia.org/wiki/File:Amalgampulver_%281%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Calcium hydroxide liner | [Kaltpressen](https://commons.wikimedia.org/wiki/File:OCO_Dose_Calxyl.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | MTA | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Calcium_silicate_liner.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bioceramic liner | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Calcium_silicate_liner.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Temporary filling material | [Isonandra gutta](https://commons.wikimedia.org/wiki/File:Glas-_jonomer_cement,_kapusle.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Fibre posts | [Symposius](https://commons.wikimedia.org/wiki/File:Wurzelstifte_%2811%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Matrix bands | [Gertident](https://commons.wikimedia.org/wiki/File:F%C3%BCllung_2020_%2810%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Wedges | [Gertident](https://commons.wikimedia.org/wiki/File:Keile_2021.76.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Cellulose strips | [Schildwerk](https://commons.wikimedia.org/wiki/File:Polierstreifen_20120965_%2802%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Mixing tips | [Gertident](https://commons.wikimedia.org/wiki/File:Mischkan%C3%BCle_2021.41.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Articulating paper | [Rababahmad](https://commons.wikimedia.org/wiki/File:Occlusal_Examination_Instruments.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Retraction cord | [Oiguodala](https://commons.wikimedia.org/wiki/File:Gingival_Traction_Cord.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Haemostatic agent | [Jaydeep Ratani](https://commons.wikimedia.org/wiki/File:Absorbable_gelatin_sponge.png) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Desensitiser | [Nizil Shah](https://commons.wikimedia.org/wiki/File:Potassium_Nitrate_gel.jpg) | [CC BY-SA 1.0](https://creativecommons.org/licenses/by-sa/1.0) | | Fissure sealant | [Micki](https://commons.wikimedia.org/wiki/File:Fissurit.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Temporary crown material | [Lunaris2](https://commons.wikimedia.org/wiki/File:Imitatkronen_%283%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Temporary cement | [Isonandra gutta](https://commons.wikimedia.org/wiki/File:Glas-_jonomer_cement,_kapusle.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Resin cement | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Composite_material.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Glass ionomer cement | [Isonandra gutta](https://commons.wikimedia.org/wiki/File:Glas-_jonomer_cement,_kapusle.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Resin-modified glass ionomer cement | [Trikkelle](https://commons.wikimedia.org/wiki/File:StainlessSteelCement.jpg) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0) | | Porcelain etch | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Composite_material.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Silane | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Dental_bonding_agents.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Try-in paste | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Composite_material.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Preformed stainless steel crowns | [Trikkelle](https://commons.wikimedia.org/wiki/File:PreformSSC.jpg) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0) | | Polycarbonate crown forms | [Lagerassistent](https://commons.wikimedia.org/wiki/File:Lagerbest%C3%A4nde_%2841%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Alginate | [Linnenband](https://commons.wikimedia.org/wiki/File:Anr%C3%BChrbecher_10944.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Silicone putty | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Zahnabdruck_2012_PD_01.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Silicone light body | [Symposius](https://commons.wikimedia.org/wiki/File:Dimension_Garant_%285%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Silicone medium body | [Kaltpressen](https://commons.wikimedia.org/wiki/File:Heraeus_Kulzer_Xantopren_M_und_Activator.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Polyether | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Unterkiefer_Sammelabdruck_mit_Teleskopken_Impregum_ein_Polyether.JPG) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bite registration material | [Symposius](https://commons.wikimedia.org/wiki/File:Registrat_%283%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Tray adhesive | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Dental_bonding_agents.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Disposable impression trays | [kilezz](https://commons.wikimedia.org/wiki/File:Cubetas_de_plastico.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Lab bags | [Tony Webster](https://commons.wikimedia.org/wiki/File:Urine_Sample_Collection_in_Biohazard_Specimen_Bag_%2854127453036%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Lab boxes | [Dentina54](https://commons.wikimedia.org/wiki/File:ZM_Stripkronen_%2801%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sodium hypochlorite | [Ca.garcia.s](https://commons.wikimedia.org/wiki/File:Laboratory_decontamination_bottles.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Calcium hydroxide paste | [Kaltpressen](https://commons.wikimedia.org/wiki/File:OCO_Dose_Calxyl.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Paper points | [Alutal](https://commons.wikimedia.org/wiki/File:Stifte_48.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Gutta-percha points | [Guttstiftchen](https://commons.wikimedia.org/wiki/File:Stifte_Guttapercha_namenlos.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Root canal sealer | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Resin_based_root_canal_sealer.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Rubber dam sheets | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Phantomkopf_009.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Cold spray | [Politikaner](https://commons.wikimedia.org/wiki/File:K%C3%A4ltespray_2009_PD_IMG_5196.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Haemostatic sponge | [Jaydeep Ratani](https://commons.wikimedia.org/wiki/File:Absorbable_gelatin_sponge.png) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Dry socket dressing | [Symposius](https://commons.wikimedia.org/wiki/File:Paroverband_289.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sterile saline | [BrokenSphere](https://commons.wikimedia.org/wiki/File:Baxter_sodium_chloride_irrigation.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Fluoride varnish | [Awvh](https://commons.wikimedia.org/wiki/File:Fluoride_varnish.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Whitening gels | [Jameswasswa](https://commons.wikimedia.org/wiki/File:Preparing_Teeth_Whitening_Materials_for_Dental_Treatment.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Block-out resin | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Composite_material.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Gingival barrier | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Caulking_or_sealing_agent.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Aspirator tips | [Markmons](https://commons.wikimedia.org/wiki/File:Suction_%2812%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Saliva ejectors | [Markmons](https://commons.wikimedia.org/wiki/File:Suction_%2811%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | 3-in-1 syringe tips | [Cardglaser](https://commons.wikimedia.org/wiki/File:P14209_Dreiwegespritze.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Patient cups | [Daniel Jim Carballido](https://commons.wikimedia.org/wiki/File:Vasos_desechables_y_sus_tapas.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Tray liners | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Beladungsmuster_f%C3%BCr_Sterilisation_Zahnarztinstrumente_01.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Cotton pellets | [derivative work: דוד שי](https://commons.wikimedia.org/wiki/File:Cottonballs.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Barrier film | [Luccadomina](https://commons.wikimedia.org/wiki/File:Pvc-Film.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Headrest covers | [Tony Webster](https://commons.wikimedia.org/wiki/File:Dentist_Chair.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Light handle covers | [Luccadomina](https://commons.wikimedia.org/wiki/File:Pvc-Film.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Surface disinfectant wipes | [PortlandSaint](https://commons.wikimedia.org/wiki/File:WaxieDisWipes.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Hand soap | [Brett Jordan](https://commons.wikimedia.org/wiki/File:Liquid_Soap_%2848008067931%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Clinical waste bags (orange) | [Nadina Wiórkiewicz](https://commons.wikimedia.org/wiki/File:Biohazard_waste_bag.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Offensive waste bags (tiger stripe) | [Nadina Wiórkiewicz](https://commons.wikimedia.org/wiki/File:Biohazard_waste_bag.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Paper towels | [Santeri Viinamäki](https://commons.wikimedia.org/wiki/File:Paper_towel.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Adrenaline 1:1000 | [Whispyhistory](https://commons.wikimedia.org/wiki/File:Adrenaline_ampoule.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Aspirin 300 mg dispersible | [sk8geek](https://www.flickr.com/photos/26170836@N05/5137558900) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/) | | GTN spray | [Whispyhistory](https://commons.wikimedia.org/w/index.php?curid=111761339) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) | | Salbutamol inhaler | [Tomino de WS](https://commons.wikimedia.org/wiki/File:Ventolin_Inhaler_N_100_ug_inh.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Oxygen cylinder with regulator | [Tony Webster](https://commons.wikimedia.org/wiki/File:Oxygen_Tank_Regulator_and_Non-rebreather_Mask_-_EMT_Oxygen_Administration_%2854127742248%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Non-rebreathe masks | [ICUnurses](https://commons.wikimedia.org/wiki/File:Non_Rebreather_Mask.JPG) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bag valve mask (adult) | [Mike6271](https://commons.wikimedia.org/wiki/File:Ambu_Bag_valve_mask.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Bag valve mask (child) | [Hospital](https://commons.wikimedia.org/wiki/File:Bag_Valve_Mask_%28AMBU_-_bag%29.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Oropharyngeal airways (sizes 0–4) | [ICUnurses](https://commons.wikimedia.org/wiki/File:Oral_Airway_%284%29_Adult_Large.JPG) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Pocket mask | [Rama](https://commons.wikimedia.org/wiki/File:CPR-mask.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Spacer device | [Tradimus](https://commons.wikimedia.org/wiki/File:Asthma_spacer_adult.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Portable suction | [PeterEasthope](https://commons.wikimedia.org/wiki/File:LaerdalPortableSuction.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | AED | [IM027](https://commons.wikimedia.org/wiki/File:Automated_External_Defibrillator_-_Orange_and_Black_-_With_Screen_-_Mindray_Brand.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | AED pads (adult) | [Raimond Spekking](https://commons.wikimedia.org/wiki/File:Philips_self-adhesive_electrodes_of_adefibrillator-9857.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | AED pads (paediatric) | [Raimond Spekking](https://commons.wikimedia.org/wiki/File:Philips_self-adhesive_electrodes_of_adefibrillator-9858.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Blood glucose monitor | [Roy Zuo](https://commons.wikimedia.org/wiki/File:%2820250417%29_Blood_glucose_meter_07.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Pulse oximeter | [ParasharSarthak](https://commons.wikimedia.org/wiki/File:Pulse_Oximeter_Blue_Colour.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Blood pressure monitor | [Jacek Halicki](https://commons.wikimedia.org/wiki/File:2020_Sfigmomanometr_elektroniczny.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Syringes | [Nadina Wiórkiewicz](https://commons.wikimedia.org/wiki/File:Disposable_syringe_5ml_3.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Hypodermic needles | [Intropin](https://commons.wikimedia.org/wiki/File:Hypodermic_needle_%281%29.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | First aid kit | [Renée Kools](https://commons.wikimedia.org/wiki/File:First-aid_travel_kit_1.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Eyewash station | [Ildar Sagdejev (Specious)](https://commons.wikimedia.org/wiki/File:2008-07-02_Eye_wash_station.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Mercury spillage kit | [eliduke](https://www.flickr.com/photos/80547277@N00/3412500201) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/) | | Body fluid spillage kit | [eliduke](https://www.flickr.com/photos/80547277@N00/3412500201) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/) | | Fire extinguisher | [Anna.Massini](https://commons.wikimedia.org/wiki/File:Estintori.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Fire blanket | [Praewnaaaaaam](https://commons.wikimedia.org/wiki/File:Fire_blanket.jpeg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Fire alarm | [Ps14159](https://commons.wikimedia.org/wiki/File:Gent_System_3300_3380_Manual_Call_Point.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Emergency lighting | [Epolk](https://commons.wikimedia.org/wiki/File:Emergency_lights.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Safety signage | [TeWeBs](https://commons.wikimedia.org/wiki/File:Safety_Signs.JPG) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | COSHH cabinet | [Bamrsykp](https://commons.wikimedia.org/wiki/File:Flammable_solvent_cabinet.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Accident book | [Katherine Stember](https://commons.wikimedia.org/wiki/File:Lab_Notebook.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Implant handpiece (20:1) | [Bin im Garten](https://commons.wikimedia.org/wiki/File:Zahn%C3%A4rztlicher_Mikromotor_mit_Winkelst%C3%BCckkupplung_0001.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Implants | [IsabelGomez78](https://commons.wikimedia.org/wiki/File:Implante_dental.JPG) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Cover screws | [Frank C. Müller](https://commons.wikimedia.org/wiki/File:Abdeckschraube_01_%28fcm%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Healing abutments | [Frank C. Müller](https://commons.wikimedia.org/wiki/File:Einheilpfosten_1_%28fcm%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Impression copings | [Michele Gardini](https://commons.wikimedia.org/wiki/File:Implant_parts.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Scan bodies | [Frank C. Müller](https://commons.wikimedia.org/wiki/File:Einheilpfosten_1_%28fcm%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Implant analogues | [IsabelGomez78](https://commons.wikimedia.org/wiki/File:Implante_dental.JPG) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Abutments | [Michele Gardini](https://commons.wikimedia.org/wiki/File:Implant_parts.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Abutment screws | [Michele Gardini](https://commons.wikimedia.org/wiki/File:Implant_parts.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Torque wrench | [Ian Furst](https://commons.wikimedia.org/wiki/File:Dental_torque_wrench.png) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Bone graft material | [Dr.kleine](https://commons.wikimedia.org/wiki/File:Dappenglas.TIF) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Membranes | [Jaydeep Ratani](https://commons.wikimedia.org/wiki/File:Absorbable_gelatin_sponge.png) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Membrane pins and tacks | [Frank C. Müller](https://commons.wikimedia.org/wiki/File:Abdeckschraube_01_%28fcm%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Sterile irrigation sets | [AfroBrazilian](https://commons.wikimedia.org/wiki/File:Infusion_Set_01.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Surgical guides | [Zypcu](https://commons.wikimedia.org/wiki/File:Surgicalguideimplantation1.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Brackets | [Nielson2000](https://commons.wikimedia.org/wiki/File:Brackets-metall.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Orthodontic bands | [Ian Furst](https://commons.wikimedia.org/wiki/File:Hyrax_rapid_palatal_expander.png) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Buccal tubes | [Challiyan](https://commons.wikimedia.org/wiki/File:Pendulum_appliance.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Archwires | [Håkan Svensson (Xauxa)](https://commons.wikimedia.org/wiki/File:Archwires.jpg) | [CC BY 2.5](https://creativecommons.org/licenses/by/2.5) | | Orthodontic elastics | [saotin](https://www.flickr.com/photos/11131442@N00/352319925) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/) | | Power chain | [saotin](https://www.flickr.com/photos/11131442@N00/215619363) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/) | | Orthodontic adhesive | [Shaimaa Abdellatif](https://commons.wikimedia.org/wiki/File:Composite_material.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Orthodontic pliers | [Håkan Svensson (Xauxa)](https://commons.wikimedia.org/wiki/File:Ortodonti_instruments.jpg) | [CC BY 2.5](https://creativecommons.org/licenses/by/2.5) | | IPR strips | [Schildwerk](https://commons.wikimedia.org/wiki/File:Polierstreifen_20120965_%2802%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | IPR discs | [Gertident](https://commons.wikimedia.org/wiki/File:Finierscheiben_2021.47.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Clear aligner systems | [Smikey Io](https://commons.wikimedia.org/wiki/File:Invisalign_aligner.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Retainers | [Hondur](https://commons.wikimedia.org/wiki/File:Retainer.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Orthodontic wax | [Dentina54](https://commons.wikimedia.org/wiki/File:Modellierwachs_A_Wachsplatte_a.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Tourniquets | [Raimond Spekking](https://commons.wikimedia.org/wiki/File:Pr%C3%A4meta_tourniquet-4981.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Midazolam injection | [James Heilman, MD](https://commons.wikimedia.org/wiki/File:Midazolam.JPG) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0) | | Flumazenil | [James Heilman, MD; derivative work: Fvasconcellos](https://commons.wikimedia.org/wiki/File:Flumazenil_vial.JPG) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0) | | Capnography monitor | [副局長](https://commons.wikimedia.org/wiki/File:PatientMonitor-2.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | 3D printer | [Windell Oskay from Sunnyvale, CA, USA](https://commons.wikimedia.org/wiki/File:BAMF_2014_94_%2814041866489%29_%28cropped%29_Formlabs_Form_1.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Wash and cure unit | [Windell Oskay from Sunnyvale, CA, USA](https://commons.wikimedia.org/wiki/File:BAMF_2014_94_%2814041866489%29_%28cropped%29_Formlabs_Form_1.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Vacuum former | [R. Engelhardt (R-E-AL)](https://commons.wikimedia.org/wiki/File:2003-12-03-Erkopressger%C3%A4t.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Vacuum forming blanks | [R. Engelhardt (R-E-AL)](https://commons.wikimedia.org/wiki/File:2003-12-03-Erkopressger%C3%A4t.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Dental plaster | [Alutal](https://commons.wikimedia.org/wiki/File:Dentalgips_30.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Dental stone | [Alutal](https://commons.wikimedia.org/wiki/File:Dentalgips_20.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Polishing lathe | [R. Engelhardt (R-E-AL)](https://commons.wikimedia.org/wiki/File:2003-12-03-Poliermotor.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Pressure pot | [Fix 1998](https://commons.wikimedia.org/wiki/File:Dampfreiniger_betrieb.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Steam cleaner | [Fix 1998](https://commons.wikimedia.org/wiki/File:Dampfreiniger_betrieb.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Practice management software | [Gdbanks at English Wikipedia](https://commons.wikimedia.org/wiki/File:Open_dental_Chart2.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Monitor | [Lucasbosch](https://commons.wikimedia.org/wiki/File:EIZO_Foris_FG2421_VGA_computer_monitor_displaying_test_pattern.png) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Server | [Btrs](https://commons.wikimedia.org/wiki/File:Rack_of_Cisco_Hyperflex_HXAF_240c_M5_nodes.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Cloud backup | [DYVER](https://commons.wikimedia.org/wiki/File:Synology_Disk_Station_DS223J_-_NAS-Server.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Network switch | [Simon A. Eugster](https://commons.wikimedia.org/wiki/File:Netgear_Gigabit_Switch_5-port.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Router | [Solijon Solayev](https://commons.wikimedia.org/wiki/File:Wi-fi_router.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Wi-Fi access point | [Sabbo91](https://commons.wikimedia.org/wiki/File:Access_Point_UniFi.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | UPS | [Hundehalter](https://commons.wikimedia.org/wiki/File:Apc_ups_rs500_01.jpg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Document scanner | [Zuzu](https://commons.wikimedia.org/wiki/File:Fujitsu_ScanSnap_fi-5100C_tray_open.jpeg) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Label printer | [TaurusEmerald](https://commons.wikimedia.org/wiki/File:Dymo_LabelWriter_450_Turbo.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Signature pad | [KKPCW(Kyu3)](https://commons.wikimedia.org/wiki/File:Wacom_Signature_Pad_STU-430.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Card terminal | [Basile Morin](https://commons.wikimedia.org/wiki/File:Credit_card_terminal_in_Laos.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Phone system | [Reinhard Müller](https://commons.wikimedia.org/wiki/File:Snom_D715_black.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Call recording | [Zephyris at English Wikipedia](https://commons.wikimedia.org/wiki/File:Headphones_with_Microphone.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Online booking and reminder system | [Brett Jordan](https://www.flickr.com/photos/55497864@N00/50371761196) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/) | | CCTV | [MichalPL](https://commons.wikimedia.org/wiki/File:CCTV_camera_in_Poland_%281%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Waiting room seating | [Infrogmation of New Orleans](https://commons.wikimedia.org/wiki/File:Social_Distanced_Waiting_Room,_LSU_Healthcare,_New_Orleans,_Sept_2022_01.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Display screen | [cogdogblog](https://www.flickr.com/photos/37996646802@N01/8589152904) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/) | | Water dispenser | [Rusliner](https://commons.wikimedia.org/wiki/File:Water_cooler_36TD.jpg) | [CC BY 3.0](https://creativecommons.org/licenses/by/3.0) | | Retail display stand | [Baryonic Being](https://commons.wikimedia.org/wiki/File:Easter_PoS_Display.JPG) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Signage | [Jaggery](https://commons.wikimedia.org/wiki/File:W_is_for_Williams_Dental_Practice,_High_Street,_Marlborough_-_geograph.org.uk_-_6130044.jpg) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0) | | Hearing loop | [Zalasem1](https://commons.wikimedia.org/wiki/File:Portable_audio_induction_loop_device.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Baby changing unit | [Iketsi](https://commons.wikimedia.org/wiki/File:Foundations_baby_changing_table_with_Braille_in_Houston_restaurant_20231203_190352.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Electric toothbrushes | [Jacek Halicki](https://commons.wikimedia.org/wiki/File:2024_Szczoteczka_do_z%C4%99b%C3%B3w_Oral-B_Pro_3_3000_%281%29.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Interdental brushes | [Berthold Werner](https://commons.wikimedia.org/wiki/File:Interdental_Brush_BW_2012-04-03_19-13-45.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Floss | [Stan Zurek](https://commons.wikimedia.org/wiki/File:Dental_floss_%28whole%29.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Whitening top-up gels | [Jameswasswa](https://commons.wikimedia.org/wiki/File:Preparing_Teeth_Whitening_Materials_for_Dental_Treatment.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Denture care products | [Raimond Spekking](https://commons.wikimedia.org/wiki/File:Effervescent_tablet_with_cleaning_agent_for_dentures-1930.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Ortho care kits | [Ivan2010](https://commons.wikimedia.org/wiki/File:Toothbrush_on_some_teeth_with_Bracket.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Uniforms | [Samir](https://commons.wikimedia.org/wiki/File:Lab_coat_and_scrubs.jpg) | [CC BY-SA 3.0](http://creativecommons.org/licenses/by-sa/3.0/) | | Scrubs | [James Heilman, MD](https://commons.wikimedia.org/wiki/File:Scrubtop.JPG) | [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) | | Clinical shoes | [Skyeyemx](https://commons.wikimedia.org/wiki/File:Crocs-synthetic-clogs.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Staff room appliances | [U.S. Army Corps of Engineers Europe District](https://commons.wikimedia.org/wiki/File:Kitchenette,_2009-%2802%29.jpg) | [CC BY 2.0](https://creativecommons.org/licenses/by/2.0) | | Colour-coded mops | [Shannon Clark from San Francisco, USA](https://commons.wikimedia.org/wiki/File:Mops_cleaning_equpement.jpg) | [CC BY-SA 2.0](https://creativecommons.org/licenses/by-sa/2.0) | | Colour-coded buckets | [W.carter](https://commons.wikimedia.org/wiki/File:Mop_and_bucket.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Vacuum cleaner | [DYVER](https://commons.wikimedia.org/wiki/File:Staubsauger_Henry_plus!_170.jpg) | [CC BY 4.0](https://creativecommons.org/licenses/by/4.0) | | Sanitary bins | [Lajmmoore](https://commons.wikimedia.org/wiki/File:Sanitary_bin_at_The_Village_Market.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | General waste bins | [DrThneed](https://commons.wikimedia.org/wiki/File:Pedal_bin_closed.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | | Recycling bins | [Terence Ong](https://commons.wikimedia.org/wiki/File:NEA_recycling_bins,_Orchard_Road.JPG) | [CC BY 2.5](https://creativecommons.org/licenses/by/2.5) | | Stationery | [Mervat Salman](https://commons.wikimedia.org/wiki/File:Office_supplies_box.jpg) | [CC BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0) | --- # Boards and stages Source: https://docs.smileline.io/guides/journeys/boards-and-stages Track every treatment enquiry through your pipeline on the Journeys board. Open **Journeys** in the sidebar to see your board: a kanban view where every card is one patient's journey towards one treatment, and every column is a stage of your pipeline — from first enquiry to treatment started. ![The Journeys board with stage columns and journey cards](/screenshots/journeys/board.webp) ## Boards A board is one pipeline of stages. Most practices run a single board; if yours has several (for example, one per treatment type), switch between them with the board picker in the header. Each board remembers its own stages, and new journeys land on the board configured for their treatment. ## Manage boards and stages Owners and managers click **Manage boards** in the header — or open **Settings → Journey boards** — to edit the funnel itself. On a phone (screens narrower than 768px) the header button is hidden; use the Settings route. The page is a two-part editor: pick a board in the list at the top, and that board's stages load underneath it. Click anywhere on a board's row. The selected row is tinted, marked with a bar down its left edge, and its arrow turns to point at the stage list below, which now reads **Stages on** that board. Edit the stages: drag the grip handle to reorder them, click a stage name to rename it in place, or click the stage's pencil to set its name, category, colour, likelihood to go ahead and **Rotten after (days)** together. Click **Add stage** to append a blank row to the bottom of the list, type a name, and press Enter. The row stays open so you can add several stages in a row — press Escape, click the **✕**, or click away to close it. Each board row carries its own actions on the right: the pencil renames the board, the pin makes it the default that new journeys land on, and the archive icon hides it from the Journeys page. The default board can't be archived — make another board the default first. A stage's category is either **Open** or **Going ahead**, and it's what keeps reporting comparable however you rename the stage. Archived boards and stages stay reachable through the **Archived** toggle above each list, where a restore icon brings them back. ## Stages and column totals Each column header shows the stage's name, the number of cards in it, and the total value of those cards. Open stages sum the potential value of active journeys — your pipeline. A going-ahead stage sums what those journeys are actually worth — your booked revenue. ## Cards A card shows the patient's name, the treatment, the journey's value, and how long it has sat in its current stage. It also shows the same lead details as the [Patients list](/guides/patients/list-and-filters): * **Where the lead came from** — the source, followed by the campaign (and the ad set and ad, when the lead arrived on an ad). Hover over it to read it in full, along with the lead form's name. * **How far it has got** — a dot for each open stage of the board, with the current one ringed, followed by its name (for example **Contacted**). **Failed to Attend** is a side step most leads skip, so it has a dot only while the lead is in it, ringed in amber. * **Lead status** — a coloured pill: **Not contacted**, **Contact attempted**, **Contacted in** followed by how long the first real contact took, **Going ahead** or **Not proceeding**. * **Calls** — once the lead has been called, the number of calls made and received. An active journey also carries a **Stale** badge after it has spent the stage's configured **Rotten after (days)** period there. Snoozing a journey hides its **Stale** badge until the snooze ends. The original time in stage still applies when it wakes. Journeys that are going ahead, not proceeding or archived are never marked stale. Archiving a patient takes their cards off every board, even while the journey itself is still active. The journey is kept and stays visible on the patient's own record; find archived patients through the **Archived** preset view on the Patients page. Owners and managers set **Rotten after (days)** when editing a stage under **Manage boards**. Leave it empty when that stage should never mark journeys stale. * Click the card, or the patient's name, to open the patient in the same panel as the [Patients list](/guides/patients/list-and-filters#look-at-a-patient-without-leaving-the-list): their full record and journeys on **Overview**, their conversation on **Chat**. Close it and the board reloads, so anything you changed shows on the cards. The address bar names the patient, so a refresh opens the panel again. * Ctrl-click (⌘-click on a Mac) the patient's name, or pick **View patient** in the card menu, to open their [patient record](/guides/patients/patient-detail) page instead. * The **⋯** menu on each card offers **Move to…** (any other column, the going-ahead one included), **Reopen** once a journey is going ahead or not proceeding, and **Mark as junk…** — see [Move, close, and reopen](/guides/journeys/move-close-reopen). ## Filter the board Use **Search patients…** to find cards by patient, and **+ Filter** to narrow the board by: * **Owner** — one or more team members, or **No owner** for unassigned journeys. * **Treatment**, **Practitioner**, **Location** — one or more entries. * **Channel** — where the enquiry came from. * **Created** and **Entered stage** — date ranges with the same relative presets as the [patients list](/guides/patients/list-and-filters). Filters appear as chips; click a chip to edit it, its **✕** to remove it, or **Clear** to reset. The board URL carries your board, search, and filters, so you can bookmark or share the exact view. ## Not proceeding and board size Journeys not proceeding stay in the stage where they stalled but are hidden by default — toggle **Show not proceeding** in the header to reveal them. The board displays up to 500 journeys at a time. If you see "Showing the first 500 journeys", add filters to narrow the board. ## Start a new journey Click **New journey** in the header. Search for the patient and pick them from the results. Choose the **Treatment**. Optionally set the **Location** and an estimated value — left empty, the value defaults from the treatment's price. Click **Create journey**. The card lands in the board's first stage, and a first-contact task appears on the Today page. You can also start a journey from the **Journeys** panel on a [patient record](/guides/patients/patient-detail), where the patient is already filled in. --- # Move, close, and reopen Source: https://docs.smileline.io/guides/journeys/move-close-reopen Move journeys between stages, record that a patient is going ahead or not proceeding, and reopen closed ones. A journey's place on the board should always reflect reality: move the card as the patient progresses, record **Going ahead** when they accept treatment, **Not proceeding** when they don't — with a reason — and reopen it if they come back. ## Move a card between stages Drag a card to another column and drop it. On a touch screen, press and hold the card for a moment, then drag. You can also change the stage by clicking a step on the journey's stage timeline in the **Journeys** panel of the [patient record](/guides/patients/patient-detail). Moving a card forward tells Smileline you've acted on the lead: the first forward move records the first contact attempt, and any open first-contact task for that journey on the Today page is completed automatically. Most of the time you shouldn't have to. Stages move on their own from the work you record — the [Today outcome wizard](/guides/today/outcomes-and-undo), a booking made in the diary, online or by AI phone, an appointment marked **Fulfilled** or **No-show** in the [Calendar](/guides/calendar/overview), and a connected [practice-management system](/guides/settings/integrations). That's why the stage beside a lead's name on Today is a read-out rather than a dropdown: the board and the patient record are where a manual correction belongs. ### Booked, attended and failed to attend Three stages stand for something that happened, so moving a lead into one records it rather than just moving the card. The card stays where it is until it's recorded, and the board reloads when you close the lead's record. * **Consultation Booked** opens the lead's record with the outcome wizard on the booked step. Book the visit and the lead moves with the booking — which also sends its [booking messages](/guides/automations/reminders). When the only things open on the lead are an attendance question or an online booking waiting for approval, the record asks you to answer that first, because a booking can't be recorded while it is open. * **Consultation Attended** and **Failed to Attend** record the attendance answer: on the lead's open attendance question when it has one, otherwise on its booking in the diary — made there, online or by AI phone — once you confirm, for example **Mark the 13 Oct visit as attended?**. A visit your practice system manages says **Your practice system records attendance for this visit**, and a lead with no booking to answer says **Book first**. Either way the lead stays where it is. The stage dots on the [patient record](/guides/patients/patient-detail#journeys) behave the same way. A team member whose role doesn't work leads gets a message instead, and nothing moves. A new booking for a lead in Failed to Attend takes it back to Consultation Booked — the only time a lead moves back on its own. Automations never move a lead backwards. Only active journeys can be dragged. To move a journey that is going ahead or not proceeding, **Reopen** it first. ## Record that a patient is going ahead Once the consultation has happened, record it as the lead's outcome: * Answer the lead's attendance question with **They're going ahead with treatment**. * Or, after a conversation, choose it under **We spoke** — on [Today](/guides/today/outcomes-and-undo#if-theyre-going-ahead), or with **Log outcome** on the patient record. It's offered once the lead is at your board's consultation-attended stage or past it. The wizard asks for the **Agreed treatment value**, filled in with the value last agreed or else the estimate, so the price the patient accepted is what your revenue reports, ad-platform conversions and referral rewards use. You can also drag the card into your board's going-ahead column (**Treatment Started** on the default board), or pick that column under **Move to…** in the card's **⋯** menu. That skips the value question: the lead keeps its estimate until someone edits the value. Either way the journey moves to the going-ahead stage, its status becomes **Going ahead**, and the close date is recorded. ## Record that a patient is not proceeding This is an outcome too. In the outcome wizard, choose **They're not proceeding** after **We spoke** and click the **Reason** that fits. It's required, and it feeds your missed-revenue reports. When nobody ever reached the lead, **Give up on this lead — not proceeding** closes it with the reason **Unable to contact**. See [If they're not proceeding](/guides/today/outcomes-and-undo#if-theyre-not-proceeding). Admins and owners manage the reasons in [Settings](/guides/settings/vocabularies#default-not-proceeding-reasons). Closing as not proceeding is not a stage move: the journey keeps the stage where it stalled, along with all its history. The card fades and disappears from the board unless **Show not proceeding** is on (the toggle is hidden on phones narrower than 768px). Any open first-contact task for the journey is cancelled. ### Mark a lead as junk A spam, duplicate or fake enquiry closes as not proceeding like any other. To also keep it out of the conversions sent to ad platforms, choose **Mark as junk…** from the card's **⋯** menu, or the journey's menu on the patient record, and optionally say why. **Unmark junk** takes the mark off. A reason set to mark leads as junk adds the mark by itself when a lead closes with it. ## Reopen a journey People change their minds. To bring back a journey that is going ahead or not proceeding, choose **Reopen** from the card's **⋯** menu or the journey's menu on the patient record. * A journey that was not proceeding becomes active again in the stage where it stopped. * A journey that was going ahead returns to its last open stage before that: **Consultation Attended** when it went ahead from the attendance question. If that stage is no longer available, it returns to the board's entry stage. Reopening clears the close date and the not-proceeding reason and note. The agreed value stays. --- # Attribution Source: https://docs.smileline.io/guides/lead-capture/attribution How Smileline records where every lead came from, and where to see it. By the end of this page you'll know what Smileline records about a lead's origin, how the channel is worked out, and where that information surfaces in the app. ## Touches: the capture record Every time a lead arrives through a [website form](/guides/lead-capture/website-forms), a [tracked call](/guides/lead-capture/call-tracking) or a capture endpoint, Smileline records a **touch**: a snapshot of where that contact came from at that moment. A tracked call carries the caller's web session — the UTMs and click IDs their browser held when the number was assigned — so a phone enquiry attributes like a form one. A touch stores: * **When** it was captured and **how** it arrived (form, webhook, Zapier, lead ad, WhatsApp, SMS, call, chat, manual, import) * The derived **channel** (see below) and the **source** name * The **UTM set**: source, medium, campaign, term, content * The **landing URL** and **referrer domain** * Which **capture form** (hook) received it, and the **affiliate** label if the hook carries one A patient can accumulate several touches — an enquiry from a Google ad in March and another from Instagram in June are both kept. The **first touch** is treated as the origin; the newest one shows as **Last touch** when it differs. Technical match data recorded alongside a touch (IP address, device details, approximate geolocation, cookie snapshots, consent flags) stays server-side. It is never shown in the app or returned by list APIs. When a server posts on the visitor's behalf and forwards their address as `client_ip`, that is the IP recorded rather than the posting server's own; see [Direct posting](/guides/lead-capture/direct-posting#attribution-is-automatic). ## Channels on journeys Each journey also carries a single **channel** — the origin bucket used to group boards, reports and the dashboard lead flow. Captured leads get it derived from their touch. A lead with no touch — added by hand, created from a chat, or imported without attribution — takes the channel of its patient's **Lead source** (each entry in **Settings → Lead sources** belongs to a channel — see [Vocabularies](/guides/settings/vocabularies)). * Change the patient's lead source and the channel of those leads follows it. Changing a source's channel in **Settings → Lead sources** only affects leads created afterwards. * A lead filed under a paid source this way counts as an ad lead from the moment it is created: it starts the [follow-ups](/guides/automations/sequences) under **New enquiry → Also for ad enquiries**, and the AI receptionist calls it when an ad campaign asked it to call new enquiries — except a lead created from a chat, which the AI leaves to whoever created it. Imported history starts neither, and changing the source later doesn't start them again. * A website form, ad lead form or tracked call that becomes the lead's first touch replaces the inherited channel, and so does a friend's referral recorded by name. The channel buckets are: paid search, paid social, paid AI, organic search, social, referral (website / friend / practice), existing patient, email, chat, direct, phone, walk-in, print, AI, other and unknown. ## How the channel is derived For captured leads the channel is worked out automatically, in order of confidence: 1. **Ad click ids** — a `gclid` means paid search, an `fbclid` means paid social, an `oppref` (OpenAI's [ChatGPT Ads](/guides/marketing/chatgpt-ads) click id) means paid AI, and so on for the other platforms' click ids. 2. **`utm_medium`** — explicit mediums like `cpc`, `paid-social`, `paid_ai` or `email` win over guesses. A `cpc` or `ppc` medium from a social platform (`utm_source=facebook`, `instagram`, `meta`, `tiktok`, `linkedin`, …) is paid social, not paid search, and a `print`, `newspaper`, `magazine` or `press` medium is print. 3. **Referrer** — a social network referrer becomes social, a search engine becomes organic search, an AI assistant becomes AI. A visit from chatgpt.com with no click id stays AI, not paid AI. 4. Otherwise the lead counts as **direct** — a visit with no campaign parameters and no external referrer. You don't configure any of this. With the [tracking script](/guides/lead-capture/website-tracking) installed, the visitor's marketing parameters travel with every captured submission automatically. If you post to a capture endpoint from your own code instead, make sure your form forwards the page's query parameters (see [Post leads from your own code](/guides/lead-capture/direct-posting)). ## How the lead source is chosen A new patient created from a website form or a tracked call also gets a **Lead source** from **Settings → Lead sources**, chosen from the same signals — you no longer pick one per tracking pool. In order: 1. **Name match** — the `utm_source` (or the ad platform behind a click id such as `gclid` or `fbclid`) is matched by name against your Lead sources list, within the channel the medium or click id implies: `utm_source=google` with `utm_medium=cpc` picks **Google Ads**, a paid `tiktok` picks **TikTok Ads**, a paid `facebook`, `instagram` or `meta` picks **Facebook / Instagram Ads**, and an `oppref` click picks **ChatGPT Ads** (seeded for new practices; an existing practice gets it on its first ChatGPT lead). A bare `utm_source` with no medium matches across every channel. 2. **Create** — a paid-search, paid-social or paid-AI source that matches nothing is added to the list under its own name (a `bing` click becomes **Bing**); a bare `utm_source` that matches nothing (say `utm_source=leaflet`) becomes a new source on the **Other** channel. Creation stops at 50 active lead sources; referring websites never create sources. 3. **Channel anchor** — organic search, social, email, AI assistants, referring websites, print and phone calls use your first lead source on that channel (**Organic search**, **Social media**, **Email**, **AI assistants**, **Print advertising**, **Phone call**, …). Paid channels never anchor, so an unmatched Bing click is not booked as Google Ads. 4. **Fallback** — anything else (a direct visit with no tags, a submission with no attribution) uses the form's **Lead source if the submission has no attribution**. A plain direct visit with no form fallback gets **Website**; a submission with no attribution and no fallback gets none. A lead from a [native lead form](/guides/lead-capture/native-lead-ads) is matched as a click on that platform's ad would be — Meta leads get **Facebook / Instagram Ads**, Google Ads leads **Google Ads** and TikTok leads **TikTok Ads** — unless the form's **Settings** pick another lead source. A call to a rotating pool number follows the same rules as a form when the caller had a web session, and gets **Phone call** when they didn't. A call to a [static tracking number](/guides/lead-capture/call-tracking#track-printed-and-offline-ads) skips the list above entirely: it is attributed to the one lead source pinned to that number. Sources Smileline creates appear in **Settings → Lead sources** like any other; they are not logged in the activity log as a user action. ## Where you see attribution ### On the lead Open a lead from the Today page: the **Source** group on the lead panel shows **Channel**, **Source**, **Campaign**, **Capture form** and **Captured**, plus a **Last touch** row when a newer touch exists. A lead with no touch shows the channel it takes from its lead source. ![Source group on the lead panel showing channel, campaign and capture form](/screenshots/lead-capture/lead-source-panel.webp) ### On the patient record Open the full patient record: the **Source** group on the profile card lists the whole first touch — channel, source, capture form, captured time, affiliate, landing URL, referrer, every UTM parameter, the ad campaign / ad group / ad / placement / network / keyword / match type / device, every click ID under its own parameter name (`gclid`, `fbclid`, `msclkid`, `ttclid`, `li_fat_id`, …, plus pixel IDs such as `fbp` and `fbc`), and the GA client and session IDs. When a newer touch exists, the origin and the newest touch sit in separate **First touch** and **Last touch** boxes, each headed with its channel and how long ago it arrived. Nothing here is editable; the lead source in the Marketing group above it is. ### On a form's deliveries **Settings → Website**, open a form and pick a delivery under **Deliveries**, then switch to **Field mapping**: the **Attribution** block above the payload names every marketing parameter that arrived with that submission, its value, and the channel and lead source it produced. When nothing arrived it says so, and points at the fix — attribution is never a mapping problem, it is a question of what the sender forwards. ### In reports Attribution feeds several reports (see [Reports](/guides/reports/overview)): * **Lead sources** — channel mix, top sources and how each converts * **Attribution (UTM)** — touches by UTM source and campaign, with the journeys, go-aheads and revenue credited to each first touch * **Lead volume** and the **Conversion funnel** — split and stacked by channel * The dashboard's **Conversion by channel** card and **lead flow** graph both start from the channel ### Conversion by channel The dashboard's **Conversion by channel** card answers the question channels exist to answer: of the leads that arrived in the selected window, how many came from each channel and how many of those booked. Its table puts each channel's leads next to its bookings and adds the share of the whole period, the booking rate, journeys going ahead, treatment revenue, ad spend and the return that spend produced, and every channel opens into the campaigns and sources behind it. A lead counts in the window it was **created** in, and its bookings and go-aheads count whenever they happened since — so 50 leads with 10 bookings is 20% however long those bookings took to land. Each channel row carries a small trend line of its leads over the window. The bar beside **Share** is the channel's part of all the leads, and the bar beside **Booked** its part of all the bookings, so a channel whose bookings bar is longer than its leads bar books above its weight. Inside an expanded channel, both bars are parts of that channel's own leads and bookings. #### Expanding a channel The arrow beside a channel opens the rows underneath it, each with the same columns as the channel itself. What a row is depends on what the leads carried: * **Paid search, paid social, paid AI and email** break down by **campaign** — the `utm_campaign` on the click, or the campaign name from your connected ad account when the click carried its campaign id. * **Organic search, social and AI assistants** break down by **source** — the `utm_source` or the site the visitor arrived from. * **Phone, print, walk-ins, referrals and existing patients** have no web touch to read, so they break down by the **lead source** recorded against the patient. Rows are attributed on the journey's **first** touch, the same touch its channel came from, so a row and its channel always describe the same visit. A lead with no touch shows under its patient's lead source, and a journey with nothing recorded under **Unattributed**. Where a channel has more rows than the card lists, the remainder is gathered into **Other campaigns** — the rows always add up to the channel above them. #### Seeing the leads behind a row Click a channel's name, or a campaign or source under it, to open **Patients** filtered to exactly those leads: the people whose lead on that channel (and campaign or source) was created in the dashboard's window. The filter shows as a **Journey** chip, which you can edit or save as a view like any other. **Other campaigns** and rows with no leads aren't links. The list counts people, not leads. Someone with two leads in the window appears once, so when the people listed have more leads than there are people, the count under the list adds the lead total — `1–2 of 2 · 3 leads` — which matches the row you clicked. Archived patients are listed too: a lead someone gave up on still counts on the dashboard, so the link adds a **Status** chip naming every status, archived included. Remove the chip to hide them again. A campaign row only shows ad spend when its clicks carried the campaign id, or when its `utm_campaign` matched the name of a campaign in a connected ad account. Spend that could not be matched to a campaign's leads still appears — as its own row, with leads at zero — rather than being dropped. ### Return on ad spend **Return** is treatment revenue divided by ad spend, shown as a multiple: `4.2×` means every £1 spent came back as £4.20 of treatment going ahead. **Ad return** in the KPI strip does the same sum across every channel that took spend, so spend that produced nothing still counts against it. Spend comes from your connected [ad accounts](/guides/marketing/ads) — Google Ads lands on paid search, Meta and TikTok on paid social, ChatGPT Ads on paid AI — which is the same rule that puts an ad click's lead in that channel. Channels Smileline has no cost for — organic search, referrals, phone, walk-ins, print — show a dash rather than a return. Nothing in the app records what those cost you, and a return computed without a cost would be wrong rather than optimistic. A channel that took spend and produced nothing shows `0×`, which is a real answer. Ad spend is read in the ad account's own currency and shown in the practice's, so a practice whose ad accounts bill in a different currency should read the return as indicative. ### The lead flow graph The dashboard's **Lead flow** card reads left to right, one column per dimension. **Columns** offers ready-made sets — channel to contacted by to outcome, lead source to outcome, campaign to lead source to outcome, owner to current stage to outcome, treatment to contacted by to outcome — and you can still build your own from two to four columns underneath. Hover any card and the rest of the graph answers for that card alone: every other column switches to the leads it shares with the one you are pointing at, and the percentage becomes its share of that card rather than of the whole period. Hovering **Organic search** turns the outcome column into organic search's own outcomes. Click a card to pin it, click the background to release it. ![Attribution report with UTM campaign breakdown table](/screenshots/lead-capture/attribution-report.webp) Every report accepts a **Channel** filter, so any number in the app can be narrowed to, say, paid social only. ## Keep attribution clean * Set each form's **Lead source if the submission has no attribution** — it's used only when a submission arrives with no marketing parameters, since tagged submissions pick their source from the campaign data. * Keep the **Lead sources** vocabulary tidy and each source on the right channel, since manual leads depend on it entirely. * Use consistent `utm_campaign` names in your ads — the Attribution report groups by the exact string. --- # Call tracking Source: https://docs.smileline.io/guides/lead-capture/call-tracking Phone numbers that attribute every call — rotating numbers for your website, and static numbers for the adverts you print. Most patients still pick up the phone. Call tracking closes the gap web forms leave: a visitor who arrived from an ad sees a dedicated tracking number on your site, and when they call it, Smileline knows exactly which campaign, keyword and click brought them — the same attribution a form submission gets. Call tracking is part of the core plan, for UK and US practices. There is no add-on to enable: you pay only for the numbers you hold and the minutes you use, listed on the [billing page](/guides/settings/billing). ## How it works 1. You create a **tracking pool** and buy a few numbers into it. 2. The [website tracking script](/guides/lead-capture/website-tracking) you already installed swaps your published phone number for one from the pool, per visitor. Each visitor keeps their number for a few hours after their last visit, so a same-day callback still matches. 3. When the number is called, Smileline answers and records the call, then puts it through as the pool's [call routing](/guides/settings/call-routing#tracking-numbers) says: ringing your team, playing a keypad menu or forwarding it to the practice's phone. The caller's web session — UTM parameters, click IDs, landing page — is attached to the call. 4. The call becomes a lead the moment it is put through — while your phones are still ringing: a known caller is matched by their mobile number, or by their **Other phone** when no other patient has that number; an unknown caller becomes a patient with a journey and a Today task, exactly like a form submission. Whoever answers gets that lead opened on Today, so you can work it during the call. Missed calls become leads too — a missed call is someone to ring back. Only a caller who picks a keypad option that isn't a [New-patient line](#keypad-menu-with-new-patient-line), or whose number you have blocked, is just logged. An unknown caller is listed as **Unknown caller** with their number beside it until somebody learns their name: the outcome wizard asks for it once you have spoken to them (see [when nobody knows their name](/guides/today/outcomes-and-undo#when-nobody-knows-their-name)), and a form, online booking or lead ad they fill in later with the same number or email adds it. Messages sent to them greet them without a name — never as "Unknown caller". If the caller turns out to be someone already in Smileline who rang from another number, [merge the two records](/guides/patients/patient-detail#merging-duplicate-records). Every tracked call is logged and recorded, and transcribed when the transcription switch is on. That is the rotating pool your website uses. Anything printed — a leaflet, a newspaper advert, a radio slot, your Google Business Profile — has no website visit to read, so it gets a **static tracking number** instead: one number, one lead source, no rotation. See [Track printed and offline ads](#track-printed-and-offline-ads). ## Set up a pool Go to **Settings → Call tracking** (you need a role that manages phone settings) and click **New pool**. **Name it after the audience** — for example “Website — Google Ads”. One pool per website is a fine start; add more when different pages' calls should go to different places. Up to ten pools can be live at once — archive one to make room. Archiving stops the pool's numbers being swapped into the page; calls to the numbers it still holds keep following its routing, and those numbers keep billing until you release them. **Choose its location.** Every pool needs one. New callers become leads at this location, and until you set where the pool's calls go they follow it: with Smileline Voice the location's staff ring, without it calls are forwarded to the location's phone. The location's phone is also the pool's safety net: if Smileline itself is ever unavailable, calls to the pool's numbers are forwarded straight there, and each one is written to the review queue within the hour so you can ring the caller back. It updates by itself within about five minutes of a change to the pool's location or to the location's phone. **Choose where calls go — without Smileline Voice.** Under **Where calls go**, **Phone to forward to** starts as the location's phone. Type another number to send the pool's calls there instead — a mobile or landline in your practice's country, outside Smileline — and pick what **That phone sees**: **This practice number** (the tracking number that was dialled) or **The caller's number**. Leave it as it is and calls keep going to the location's phone. If the pool already plays a keypad menu, an announcement or the AI agent, or takes a different route while closed, the dialog says **This pool has its own call routing.** with a link to change it on [Call routing](/guides/settings/call-routing#without-smileline-voice). With Smileline Voice this field isn't shown: set where the pool's calls go on Call routing. **Pick what new enquiries become.** The treatment is required while the pool is live — it is what guarantees an unknown caller turns into a journey on the board and a task in Today. **Choose where the number appears.** Under **Where the tracking number appears on your website** pick any mix of three ways — all optional: * **Replace every phone number on the site** (off by default) — the script finds every phone-shaped number on the page, in text and `tel:` links, and swaps them all for this pool's number. Only one live pool per practice can have this on; saving a second fails with *“Another live pool already replaces every number on the site”*. * **Specific numbers to replace** — list the numbers currently shown on your site in international form (`+44…`); only those are swapped. * **Tag the elements yourself** — mark any phone link or text element on the site and the script fills it, no number list needed. See [Mark the elements on your site](#mark-the-elements-on-your-site). **Buy numbers into the pool.** Click **Buy number** on the pool. It searches straight away for numbers where the pool's site is, with the **Town or area code** filled in from that site; type another town or area code and press Enter to search elsewhere. Tick the numbers you want — or the box beside **N selected** to take every number listed — and click **Buy**. They are ordered one after another; if one can't be ordered, the rest stay ticked so **Buy** tries them again. Numbers you hold or have on order drop out of the results, so search again to buy more. Two or three numbers cover a typical site; busy campaigns need more. A visitor keeps their number for four hours after they were last seen (30 minutes if they never came back, so crawlers and one-page visits don't hold numbers all day), and a freed number waits ten minutes before it is handed to someone else. Sized against real traffic: at four new visitors an hour a pool of **three** numbers shows a tracking number to more than **85 %** of them, and two numbers cover a quieter site with two an hour. When every number is held, new visitors simply see your real number, the pool shows **All numbers held**, and the card counts the page loads it could not serve — **N unserved requests today / this week** — so you can see whether it happens once a week or every afternoon. Pool size is the dial to turn if it does. Anyone who knows your public site key could hold numbers the same way; the page always keeps working, and the badge and the counter are how you'd notice. **Set where its calls go.** Click **Set where its calls go** on the pool's card. It opens the pool on **Settings → Call routing**, where all its numbers share one routing: opening hours, a keypad menu, where calls forward and, with Smileline Voice, who rings. See [Tracking numbers](/guides/settings/call-routing#tracking-numbers). Every number the practice holds — pool members, static numbers and phone-system lines — is listed together on **Settings → Phone numbers**, with the role each one plays. Release a number, or move one between roles, from there; this page keeps the pools themselves. UK numbers need approved business verification first (an Ofcom requirement). One verification covers Voice numbers and tracking numbers alike — start it from the banner on the Call tracking page, and click **View review** there to see the reviewer's verdict on each detail, their messages, and to fix anything declined. See [Complete UK verification](/guides/settings/voice-numbers#complete-uk-verification). Use **Replace every phone number on the site** only when the site shows a single practice number. Every number it swaps forwards to this pool, and it also rewrites other phone-shaped numbers on the page — a partner practice's number, an NHS helpline — so those callers reach you instead. ### Mark the elements on your site Add `class="sl-phone"` (or the attribute `data-sl-phone`) to any phone link or text element. The script fills its text and its `tel:` link — the element itself when it is the link, otherwise the link around or inside it — with the visitor's tracking number: ```html 020 7946 0958 ``` With several pools, `data-sl-phone=""` picks which pool the element shows — the id is displayed in the pool dialog. **Copy for AI** beside the example puts a ready-made brief on your clipboard for ChatGPT, Claude, Cursor or your developer: the markup, this pool's id and swap rules, and the reasons a number is left alone. The script processes roughly the first 2,000 text nodes that contain a digit on a page (indentation and prose cost nothing) and watches content added during the first 10 seconds after load, so keep phone numbers in the page's own markup rather than in late-loading widgets. It only ever rewrites a run that is exactly one of the numbers a pool lists — a number glued to other digits, like an opening-hours line, is left alone rather than damaged. A visitor who already holds a tracking number keeps the swap rules that came with it for up to 10 minutes, so a change to these settings reaches returning visitors after that. ## Keypad menu with New-patient line A tracking number needs no menu: without one, every caller is captured as a lead. If regulars keep calling it, give its routing a [keypad menu](/guides/settings/call-routing#keypad-menus) on **Settings → Call routing** — for example *“If you're a new patient, press 1. If you're an existing patient, press 2.”* — and turn on **New-patient line** for the new-patient option. With Smileline Voice, **New ring group → Patient menu** sets exactly that up, with who answers each key; without it, choosing **Keypad menu** starts from it, with both options forwarding to the location's phone. Every caller is still answered, recorded and logged, whatever they press. A caller who picks a New-patient line, or presses nothing, becomes a lead. A caller who picks any other option is only logged: one whose number matches a patient gets the call on their timeline instead of a fresh lead in Today. ## Track printed and offline ads A pool answers the question *which campaign sent this visitor to my website*. A leaflet, a press advert, a radio slot or your Google Business Profile listing has no visit to read, so a pool cannot attribute it — a caller with no web session is simply recorded as **Phone call**. Give each of those its own **static tracking number** instead: one number, printed in one place, pinned to one lead source. Every call to it is attributed to that source, however the caller found it. | | Website pool | Static tracking number | | ------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | | Who sees the number | one website visitor at a time, swapped in by the script | whoever reads the advert | | Attribution | the visitor's campaign, keyword and click | the one lead source pinned to the number | | Where calls go | one [call routing](/guides/settings/call-routing#tracking-numbers) shared by all the pool's numbers | its own call routing | | Treatment, location | taken from the pool | set on the number itself | | Keypad menu | optional | optional | | Good for | Google Ads, Meta, organic search, any web campaign | leaflets, press, radio, vehicle livery, directory listings, your Google Business Profile | ### Set one up Get the number. Click **Buy number** on any pool on this page to order one, or use a number you already hold. Go to **Settings → Phone numbers**, click **Change role** on that number and choose **Static tracking number**. See [Change a number's role](/guides/settings/voice-numbers#change-a-numbers-role). Pick the **lead source** every call to it is attributed to. Make one per advert — “Autumn leaflet”, “Metro half-page” — so the reports separate them. Add them under **Settings → Lead sources** first if they don't exist yet. Pick the **treatment** a new enquiry becomes and the **location** the call belongs to. Until you set where its calls go, they follow that location: its staff ring with Smileline Voice, its phone without. Set where its calls go: on **Settings → Call routing** the number has its own card under **Tracking numbers**. See [Tracking numbers](/guides/settings/call-routing#tracking-numbers). Print the number on the advert. Static numbers behave like pool numbers everywhere else: calls are answered, recorded, follow their routing and — with the transcription switch on — are transcribed, and they reach Today, the timeline and the review queue in the same way. They are not in a pool, so they don't use up your ten-pool allowance and the website script never shows them. Every caller who isn't already a patient becomes a new enquiry from that source, unless they pick a keypad option that isn't a [New-patient line](#keypad-menu-with-new-patient-line). While a static number is live it holds on to what it points at: you can't archive that lead source, treatment or location. Change the number's settings first, or release it. Read a static number's figures as **new patients this advert brought**, not everyone who rang it. A patient's **Lead source** is set once, when Smileline first creates their record, so a first-time caller is acquired under the advert's source and counts there in acquisition reports. Someone who already enquired months ago keeps the source they arrived with — their call still lands on their timeline, and the touch still records the advert, but the report doesn't move them. ## What shows up in the CRM * **Today** — a new-lead task for every lead-eligible call, missed calls included, from the moment it rings. While the call lasts, the caller's card sits first in **New · Call now**; nobody's queue opens it or dials it on its own, and the person who answers gets it opened in their work panel. A caller who already has an open lead keeps it — the call is filed there and that card is the one that opens. Once the call ends, a caller Smileline could not tie to a web session shows as an **Incoming call** at the top of **New · Call now**; a caller it could tie to one keeps that web source and sorts by time with the other new leads. * **The patient timeline** — the call with its duration, outcome, recording and transcript. * **Attribution** — the visitor's UTMs and click IDs on the lead touch, so [conversion feedback](/guides/lead-capture/attribution) reports the call to Google or Meta like any other lead. A new caller's **Lead source** is worked out from that campaign data — see [How the lead source is chosen](/guides/lead-capture/attribution#how-the-lead-source-is-chosen); a caller with no web session (someone who typed the number from a leaflet) gets the practice's **Phone call** source. A call to a [static tracking number](#track-printed-and-offline-ads) skips all of that and is attributed to the source pinned on the number. * **The review queue** — the rare call that could not become a lead by itself, such as a withheld number; listen to the recording and follow up by hand. * **The Calls report** — answer rate, ring time, calls by hour, the UTM source / campaign / keyword behind each call and the missed calls nobody rang back. See [Calls](/guides/reports/calls). * **A caller-ID label in the call log** — where the carrier reports the call's STIR/SHAKEN attestation, the Desk call log shows **Caller ID verified**, **Caller ID attested**, **Caller ID via gateway** or **Caller ID unverified** on the row. It is a hint for the person answering, nothing more: an unverified caller with a real number is still logged, recorded, captured as a lead and followed up like everyone else. Only a withheld or unusable number keeps a call out of the pipeline, and that call is parked in the review queue where you can see it. ## Send tracked calls to GA4 Google Analytics only sees what happens in the browser, so a visitor who reads your number and picks up the phone is a conversion GA4 never records. Connecting your GA4 property sends each attributed tracked call to it as a `phone_call` event, stitched to the same visitor and session the tracking script saw — so the call lands in the same reports, funnels and audiences as your web form submissions. In GA4 open **Admin → Data streams**, pick your web stream, and copy its **Measurement ID** (`G-…`). Under **Measurement Protocol API secrets**, create a secret and copy the value. On **Settings → Call tracking**, under **Google Analytics 4**, paste both and click **Connect**. The secret is stored encrypted and never shown again; to rotate it, paste the new one and **Save**. What is sent: the visitor's GA client and session ids (the same ones the tracking script reads from your GA cookies), the time of the call, whether it was answered, the talk and ring durations, and a stable event id per call so a retry can never count twice. Nothing about the caller — no phone number, no name — leaves Smileline. Personalised advertising is switched off on every event. Only calls with a web session are sent: a caller with no session, or a visitor whose consent setting or browser kept the GA cookie from being stored, has nothing to stitch to and produces no event. Events are delivered within about five minutes and retried for up to three days, which is as far back as GA4 accepts them; a call that could not be delivered in that window is skipped and counted on the settings card, and saving the GA4 settings re-sends anything that is still deliverable. ## Pricing Call tracking bills three things, all usage-based and shown on the billing page: a monthly charge per held number, a per-minute rate for answered tracked calls (both call legs and the recording included), and a per-minute rate for transcription. Both pool members and static numbers cost the same per number. A tracked call the [AI receptionist](/guides/settings/ai-receptionist) answers is billed as a tracked call, and its AI minutes are billed on top as usual. Releasing one from **Settings → Phone numbers** stops its monthly charge immediately; released numbers cannot be recovered. ## When nobody answers a tracked call What happens next is set by the number's [call routing](/guides/settings/call-routing#tracking-numbers). Unless that routing says otherwise, while Smileline Voice is active a call nobody picks up reaches voicemail, like a call to the practice's own number: the message lands in the voicemail inbox, and the enquiry is still captured with its campaign attribution. Without Voice, or while it is switched off, there is no voicemail: the caller hears “Sorry, we couldn't connect your call. Please try again in a few minutes.” and the call ends. Either way the call is logged as missed, and the missed-call follow-ups (text-back, call-back) apply to tracked numbers too. --- # Custom integrations Source: https://docs.smileline.io/guides/lead-capture/custom-integrations Give your own form, backend or third-party tool a Smileline capture endpoint, with optional signed server-to-server delivery. By the end of this page you'll have a **Custom endpoint** form — an intake URL your own code posts to — and you'll know how to rotate its credentials, switch its delivery mode, or retire it. Most websites don't need this. Install the [tracking script](/guides/lead-capture/website-tracking) and Smileline detects and captures your existing forms without any wiring. Reach for a custom integration when a backend, middleware tool or third-party product needs to deliver leads itself. ## What a custom integration is A custom integration is a [website form](/guides/lead-capture/website-forms) of type **Custom endpoint**. It gets its own URL containing an unguessable routing token: ```text https://api-eu.smileline.io/capture/YOUR_TOKEN ``` That is an EU example. US practices receive `api-us.smileline.io`. Always copy the complete URL from Smileline; its hostname is part of the routing boundary. When a submission arrives, Smileline matches or creates the patient, opens a journey for the form's default treatment, and records an attribution touch (see [Attribution](/guides/lead-capture/attribution)). Choose one delivery mode per form: * **Public browser form** — a website can post directly without an API key or login. Use this with [Post leads from your own code](/guides/lead-capture/direct-posting). * **Signed JSON webhook** — a backend signs the exact JSON body with a separate secret. Use this for server-to-server integrations where the sender can protect a credential. Only owners and managers can view or manage **Settings → Website**. ## Create one A custom endpoint is set up in three steps, shown as a **Basics · Send a test submission · Confirm the mapping** strip at the top of the page until the mapping is confirmed. The endpoint goes live after the first step, but nothing becomes a patient until you confirm the mapping in the third: submissions that arrive in between park safely and replay once you confirm. **Step 1, Basics.** Go to **Settings → Website**, click **New form** and choose **Custom integration**. (**Settings → Integrations → Inbound webhooks → New inbound webhook** opens the same page with that choice made.) Give it a **Name** that identifies the sender, e.g. "Implants quiz — website". Leave **Default treatment** as **None** for general enquiries, or choose a fallback treatment. A matching submitted treatment takes precedence; with neither a match nor a default, a new contact arrives as an enquiry in **Today** (an **Incoming calls** endpoint opens it on **General enquiry** instead). Optionally choose a **Lead source if the submission has no attribution** and a **Location**. Under **What arrives here**, keep **Form submissions** unless a phone system will post its calls to this endpoint — then choose **Incoming calls** (see [Incoming calls from your phone system](#incoming-calls-from-your-phone-system)). Then choose **Public browser form** or **Signed JSON webhook** under **Delivery authentication**. Click **Continue**. If you chose signed delivery, copy the signing secret from **Save the signing secret** before closing it; Smileline never shows it again. **Step 2, Send a test submission.** The form's page shows the **Endpoint** URL, its status reads **Waiting for the first submission…**, and the card lists what to do. **Copy for AI** puts a ready-made brief on your clipboard for whoever builds your website — paste it into ChatGPT, Claude, Cursor or an email to your developer; it contains the endpoint, the delivery mode, the accepted formats, the field names Smileline recognises and a reminder to forward marketing parameters untouched. A public endpoint also shows a **Test request**: copy the `curl` line into a terminal to send a sample submission yourself. Signed endpoints show the header recipe instead (see [Send signed JSON](#send-signed-json)). The page checks every few seconds; **Check now** asks straight away. If you can't send one yet, **Skip and use conventional names** activates the endpoint with the default field names (`first_name`, `last_name`, `email`, `phone`, `telephone`, `date_of_birth`, `gender`, `address`, `address_line_2`, `city`, `county`, `postcode`, `country`, `preferred_contact_method`, `preferred_contact_time`, `treatment`, `location`, `message`, `additional_information`, `marketing_consent`). **Step 3, Confirm the mapping.** As soon as the submission arrives, Smileline proposes a field mapping from its fields and lists the payload beside the boxes. A box that names a field turns green with a tick, and the field it names carries a green chip in the **First submission** panel, so what is still unmapped stands out. Click a field to drop its path into the focused box, adjust anything the proposal got wrong, check the defaults, and click **Looks right — activate**. The parked submission replays into the CRM and every later submission is captured live. Marketing parameters need no box: the **Attribution · captured automatically** group under the mapping lists what Smileline reads on its own (campaign tags, ad click ids, landing page and referrer), and the submission panel groups any it received under **Captured automatically**, marked **Automatic** — they cannot be clicked into a box. See [Attribution](/guides/lead-capture/attribution). The form's page badges it **Public form** or **Signed JSON** so you can check its mode at a glance. Its **Deliveries** tab records everything it receives — see [Delivery history](/guides/lead-capture/website-forms#delivery-history). ## Incoming calls from your phone system A custom integration set to **Incoming calls** turns each post into a call the reception team sees straight away. Point your phone system, PBX or call-tracking tool at the endpoint and have it post **one event per incoming call**, as soon as the phone rings or as soon as the call ends: ```json { "phone": "+447700900123", "first_name": "Sample", "last_name": "Caller" } ``` The caller's number (`phone`) is the only required field; send the caller's name if the phone system knows it. Without one, the lead is created as **Unknown caller** — the same name a tracked or missed call gets — and staff fill in the real name from the card. A name that is just your practice's country (UK call trackers send "United Kingdom" when the network has no caller name) also counts as no name. If your phone system sends the caller's number under two fields and both are mapped, to **Mobile** and **Other phone**, the number is saved once, as the mobile. Do not post outbound calls. The field names are mapped from the first event exactly as for a form, so a system that sends `caller` or `from` instead of `phone` works once you confirm the mapping. What happens on each event: * Smileline matches the number to an existing patient or creates a new lead. A caller who already has an open journey stays on it, whatever its treatment, as for a tracked call: a lead who filled in your implants form and then phones stays on that implants journey, with the call added to it. A caller with no open journey gets a new one on the form's **Default treatment**, or on your **General enquiry** treatment when there is none; staff change the treatment once they know it. * The lead appears on [Today](/guides/today/overview) as an **Incoming call** card, with a phone icon, **at the top of New · Call now** — above the newest form leads. A repeat caller who already has a card moves back to the top as one fresh card, never a second one. * A new caller's **Lead source** is your practice's phone-call source ("Phone call" by default), unless the event carries campaign parameters — which is why the fallback lead-source picker is not offered for incoming calls. If your phone system knows how the caller found you (a tracking number tied to a campaign), forward the `utm_*`, click-id, `landing_url` and `referrer` values exactly as they arrive and they are read as for any other lead. CallTrackingMetrics sends no `utm_*` values; its tracking source's campaign tags (the `paid` block: source, medium, campaign and keyword) are read in their place, so a call to your Google Ads call-extension number lands on **Google Ads**, a Meta ad number on **Facebook / Instagram Ads** and a newspaper number on **Print advertising**. * To see which of your tracking numbers was called, add the fields your phone system sends for it under **Additional fields** on the **Field mapping** tab — for CallTrackingMetrics, `tracking_number` (e.g. "Number called") and `tracking_label` (e.g. "Tracking line"). They show under **Additional information** on each new enquiry. * Whether the call was answered or missed is not part of the event. Staff record what happened on the card, exactly as for any other lead — see [Record an outcome](/guides/today/outcomes-and-undo). **Copy for AI** on the endpoint's page hands your developer or phone-system vendor a brief written for calls, and the **Test request** posts a sample call. You can switch an existing endpoint between **Form submissions** and **Incoming calls** on its **Advanced** tab. ## Send signed JSON A signed endpoint accepts `application/json` at the same `/capture/{token}` URL. It rejects query parameters and requires these headers: | Header | Value | | ------------------------- | -------------------------------------------------------------------------------------- | | `X-SmileLine-Delivery-Id` | A unique delivery ID, up to 200 characters. Reuse it only to retry the identical body. | | `X-SmileLine-Timestamp` | Unix time in seconds, within five minutes of Smileline's current time. | | `X-SmileLine-Signature` | `v1=` followed by the lowercase or uppercase hexadecimal HMAC-SHA256 digest. | Build the signed bytes as the timestamp, a full stop, the delivery ID, another full stop, and the **exact raw request body**: ```text timestamp.deliveryId.rawBody ``` This command signs and submits one JSON body. Keep the secret in your backend's secret store; the example environment variable is only a placeholder. ```bash SMILELINE_CAPTURE_URL="https://api-eu.smileline.io/capture/YOUR_TOKEN" body='{"first_name":"Amelia","email":"amelia@example.co.uk"}' timestamp="$(date +%s)" delivery_id="lead-$(uuidgen)" signature="$(printf '%s' "${timestamp}.${delivery_id}.${body}" | openssl dgst -sha256 -hmac "$SMILELINE_CAPTURE_SECRET" -hex | sed 's/^.* //')" curl -X POST "$SMILELINE_CAPTURE_URL" \ -H "Content-Type: application/json" \ -H "X-SmileLine-Delivery-Id: ${delivery_id}" \ -H "X-SmileLine-Timestamp: ${timestamp}" \ -H "X-SmileLine-Signature: v1=${signature}" \ --data-raw "$body" ``` A successful delivery answers `201` with `{"ok":true}`. The body must be a JSON object and is limited to 256 KiB. If the body contains `_sl.event_id`, it must equal `X-SmileLine-Delivery-Id`. Sign the exact bytes you send. Reformatting JSON, changing whitespace, or adding a newline after calculating the HMAC makes the signature invalid. ## The Advanced tab A custom integration's **Advanced** tab holds its credentials and endpoint lifecycle: * **Endpoint URL** — the complete regional URL, with a copy button. * **What arrives here** — switch the endpoint between **Form submissions** and **Incoming calls** (see [Incoming calls from your phone system](#incoming-calls-from-your-phone-system)). Events already received keep the lead they created. * **Enable signed delivery** switches a public endpoint to signed JSON. Copy the one-time secret immediately; unsigned browser posts stop working as soon as the mode changes. **Disable signing** revokes both signing secrets and returns to public mode. Changing the mode keeps the endpoint URL, field mapping and delivery history. * **Rotate signing secret** — save the new one-time secret and update the sender. The previous secret remains valid for 24 hours (the page shows when it expires), and Smileline accepts either secret so you can deploy without an intake gap. **Revoke previous secret** ends the overlap early — use it once every sender is on the new secret, or when the old one may be compromised. * **Regenerate token** — mints a fresh routing token if the URL leaks. Public form URLs are normally visible in website HTML, so treat them as semi-public; a signed endpoint still uses its separate secret for authentication. After regenerating, the previous endpoint URL stops working immediately. Update every sender that posts to this form first, or submissions will be lost. ## Pause, archive and restore The same lifecycle as every website form — pausing or archiving makes the endpoint answer `404`, and restoring keeps a previously paused form paused. See [Pause, archive and restore](/guides/lead-capture/website-forms#pause-archive-and-restore). ## Good to know * Unknown, paused and archived tokens all answer the same `404`, so outsiders can't probe which tokens exist. Those requests are never recorded, so they don't reach the delivery history either. * Each endpoint is rate limited independently, so a burst on one integration can't drown out the others. * A delivery ID is unique within its form, not across the whole practice. Retrying the same ID with identical content returns the stored result and records nothing new. Reusing the same ID with different content is rejected, and that rejection *is* listed. * Custom endpoints are exempt from [domain pinning](/guides/lead-capture/website-tracking#domain-pinning) — they authenticate by token (and signature), not by origin. * A form the tracking script detects on your website whose fields already arrive through this endpoint is listed as **Covered by** it rather than **Needs mapping** — see [Website forms](/guides/lead-capture/website-forms#confirm-a-detected-form). * If a configured default location, treatment or lead source was archived before a submission arrived, Smileline still preserves the lead and opens an [intake-review item](/guides/lead-capture/intake-review) for staff. It never applies the archived definition or silently loses the form. * The endpoint itself is documented in the API reference under the **Capture** group at [/reference](/reference). --- # Post leads from your own code Source: https://docs.smileline.io/guides/lead-capture/direct-posting Point a website form or script at a capture endpoint URL so submissions become leads automatically. By the end of this page your form will post straight into Smileline — no backend code on your side. If the [tracking script](/guides/lead-capture/website-tracking) is installed, your existing forms are detected and captured automatically — you only need the techniques on this page for a form Smileline cannot see, such as one rendered inside a third-party product. ## Before you start You need a **Custom endpoint** form in **Public browser form** mode and its endpoint URL. Create one under **Settings → Website** and copy the complete regional URL from the form's page — for example, `https://api-eu.smileline.io/capture/YOUR_TOKEN`. US practices receive an `api-us.smileline.io` URL. See [Custom integrations](/guides/lead-capture/custom-integrations). A public-form endpoint accepts `application/json`, `application/x-www-form-urlencoded` and `multipart/form-data`. URL query parameters are merged underneath the body, so pixel-style integrations can ride the query string alone. Files posted on a multipart form are kept: they are stored securely and recorded on the lead's capture record, so an X-ray or referral document sent with the enquiry arrives with it. This browser guide doesn't apply to forms labelled **Signed JSON**. Those accept JSON only, reject query parameters, and require a backend to calculate HMAC headers. See [Send signed JSON](/guides/lead-capture/custom-integrations#send-signed-json). ## Point your form at the endpoint A classic form post. The browser navigates to the endpoint's raw JSON response, so prefer the fetch variant to keep visitors on your page: ```html
```
Submit in the background and show your own thank-you message. The endpoint allows cross-origin requests, so this works from any website: ```js const form = document.querySelector("#enquiry-form"); form.addEventListener("submit", async (event) => { event.preventDefault(); const response = await fetch( "https://api-eu.smileline.io/capture/YOUR_TOKEN", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ first_name: form.first_name.value, last_name: form.last_name.value, email: form.email.value, phone: form.phone.value, treatment: "invisalign", message: form.message.value, }), }, ); if (response.ok) showThankYou(); }); ```
Test from the command line before wiring up the website: ```bash curl -X POST "https://api-eu.smileline.io/capture/YOUR_TOKEN" \ -H "Content-Type: application/json" \ -d '{"first_name":"Amelia","email":"amelia@example.co.uk","phone":"+447700900123"}' ``` A successful capture answers `201` with `{"ok":true}` — and the lead appears on the Today page in real time. ## Which fields are understood Field names are set per form in its **Field mapping** — the left column below shows the defaults a new custom integration starts with. Rename them in the mapping to match whatever your form already sends. | Default field name | Fills | | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | `first_name` | Patient first name | | `last_name` | Patient last name | | `email` | Patient email | | `phone` | Patient mobile number | | `treatment` | Matched against a treatment's slug (see **Settings → Treatments**); unknown values fall back to the form's **Default treatment** | | `location` | Matched against a location id, then a case-insensitive location name; unknown values fall back to the form's **Location** — one form can serve every site | | `message` | Saved as a note on the patient timeline | Rules worth knowing: * **Nested payloads are mappable.** A box also accepts a dot path such as `data.contact.email` or `answers.0.value`, so a webhook that nests its fields needs no middleman to flatten them. Build the mapping from a real submission — see [Field mapping](/guides/lead-capture/website-forms#field-mapping). * **An email or phone is required.** A submission with neither (after mapping) is rejected with `400` — and the rejected body is kept under the form's **Deliveries** so you can see exactly what arrived. * **Bounded extra fields are retained.** Fields that aren't mapped are kept verbatim on the lead's capture record and listed as **submitted answers** on the lead; the ones you name under [Additional fields](/guides/lead-capture/website-forms#additional-fields) land on the enquiry as **label: value**. JSON and form posts are limited to 256 KiB; a multipart submission can be up to 10 MiB and carry up to 10 files, no single file larger than 10 MiB. The merged body and query snapshot allows up to 1,000 keys, 512-byte key names, 32 KiB string values, 200 items per array and ten levels of nesting. * **Bad values degrade, they don't fail.** A phone is read in the usual shapes — `+44 (0)7700 900123`, `+44 07700 900123`, `44 7700 900123`, a `tel:` prefix, an extension or note after the number (`ext 4`, `x4`, `(mobile)`, a trailing comma). A phone that still cannot be read, or a mistyped email, never blocks the lead and is never dropped: the lead is created with the value stored on the patient exactly as typed (and on the capture record), and an unreadable phone opens a **Contact could not be read** item in [Intake review](/guides/lead-capture/intake-review) with a **Fix phone** action. * **Duplicates attach, they don't multiply.** If the email or phone matches an existing patient, the enquiry is attached to them instead of creating a duplicate. * **A whole name in the first-name field is split.** When a form has one **Name** box mapped to the first name and sends no last name, the name is split at the first space: `Scott Mckenna` is saved as first name **Scott**, last name **Mckenna**. A last name the form sends itself is always kept as sent. * **One number is saved once.** A number mapped to **Other phone** that is the same as the mobile is not saved again. ## Attribution is automatic Do not map marketing parameters — they're extracted automatically into the lead's attribution record: `utm_*` parameters, ad-platform click ids (`gclid`, `fbclid`, `msclkid`, `ttclid` and many more), `landing_url`, `referrer` and `user_agent`. A server that posts on the visitor's behalf should forward their IP address too, as `client_ip` (also read: `visitor_ip`, `user_ip`, `remote_ip`, `ip_address`, `ip`): it replaces the posting server's own address as the lead's match key for ad-platform conversion uploads, and a value that is not an IP address is ignored. Just make sure your form forwards the page's query parameters (or posts them alongside the fields). A field of one of those names is read **wherever it sits in the body** — `{"attribution": {"utm_source": "google"}}` and `{"data": {"tracking": {"gclid": "…"}}}` both attribute like a flat post, so a webhook that nests its tracking block needs no middleman. If the same name appears twice, the shallowest wins. See [Attribution](/guides/lead-capture/attribution). Rich integrations (e.g. Zapier or a custom tracking script) can also post a structured `_sl` envelope with visitor context and an `event_id` idempotency key. Re-posting the same `event_id` with the same content never creates a duplicate — the original result is returned again. Reusing an `event_id` with **different** content is rejected with `409`, so a copy-paste mistake can't silently overwrite an earlier enquiry. If a submission was interrupted mid-processing, its `event_id` becomes usable for a retry after about 15 minutes. Mint the `event_id` once, when the visitor submits, and send the same one on every retry — the tracking script does exactly this from the visitor's browser — so a resend after a `503` or a dropped connection is a no-op rather than a second enquiry. The full envelope shape is documented in the API reference under the **Capture** group at [/reference](/reference). ## Submissions survive outages Once a submission passes the endpoint's basic checks, it cannot be lost to a problem on Smileline's side. If an internal component is briefly unavailable when your form posts, the submission is still accepted with a `201` and stored safely, then processed automatically within a few minutes of service recovering — a multipart post is replayed exactly as sent, files included. A `201` always means the lead is safe; your website never needs to retry. The one exception is file storage itself being unavailable: a multipart post then answers `503` with `Retry-After`, its form fields are kept in the [review queue](/guides/lead-capture/review-queue#which-items-offer-try-again) as `capture-file`, and **Try again** there recreates the lead without the files. Your sender still has the files, so resending the same post (same `event_id`) is the other way to complete it. ## Responses | Status | Meaning | | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `201` | Captured — body is `{"ok":true}` | | `400` | Invalid body, or no valid email/phone after mapping | | `404` | Unknown, paused or archived token | | `409` | The `_sl` `event_id` was reused with different content, or the same submission is still being processed | | `413` | Request body exceeds the intake limit — 256 KiB, or 10 MiB for multipart uploads | | `429` | Rate limited — retry after the number of seconds in the `Retry-After` header | | `503` | Smileline could not store the submission at all (a double outage), or could not store a multipart post's files — those fields are kept for review. Retry after the number of seconds in the `Retry-After` header, with the same `_sl` `event_id` | A `404` from a URL that used to work usually means the form was paused, archived, or its token was regenerated. Check **Settings → Website**. ## Post leads from a connected integration A capture endpoint URL is the whole credential, which is right for a browser and wrong for a server that has already proved who it is. An integration holding an [OAuth connection](/reference/authentication#oauth-connections) — the [Zapier app](/guides/settings/zapier), or your own — should post to `POST /leads` instead. It is the same pipeline: same patient matching, same attribution, same automation enrolment, same **Deliveries** record. ```bash curl -X POST "$SMILELINE_API_URL/leads" \ -H "Authorization: Bearer sl_oat_EXAMPLE_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "firstName": "Amelia", "lastName": "Hart", "email": "amelia@example.co.uk", "phoneMobile": "+447700900123", "postalCode": "W6 0NB", "preferredContactTime": "after 6pm", "treatmentSlug": "invisalign", "message": "Looking for a consultation", "eventId": "crm-4711", "landingUrl": "https://example.co.uk/invisalign", "attribution": { "utm_source": "google", "gclid": "EXAMPLE" } }' ``` Differences from the browser endpoint: * **The token names the practice**, so send no `X-Organization-ID` and no capture token. * **`treatmentSlug` is required** and is a slug, not an id — the value from **Settings → Treatments**. There is no hook default to fall back on here, and a lead without a treatment would create a patient but no enquiry. * **`location`** accepts a location id or a case-insensitive location name. * **Field names are fixed**, in the camelCase spelling above. No field mapping applies. Beyond the ones shown you may also send `phoneOther`, `dateOfBirth`, `gender`, `addressLine1`, `addressLine2`, `city`, `province` (county or state), `postalCode`, `country`, `preferredContactMethod`, `preferredContactTime` and `note` — the same set the [Field mapping](/guides/lead-capture/website-forms#what-you-can-map) tab offers, interpreted the same way. A date, gender or contact method that cannot be read is left empty rather than rejected (a phone or email is kept as typed), and a submission matching an existing patient fills that record's blanks without overwriting it. * **Attribution rides in one flat `attribution` map** — `utm_*`, `gclid`, `fbclid` and friends, at most 40 keys — while `landingUrl`, `captureUrl` and `referrer` are top-level fields. Attribution keys may not reuse a lead field name; a map containing `marketingConsent`, `email` or any other mapped field is refused, because those carry a declared meaning that a free-form marketing parameter must not be able to set. * **An email address or a mobile number is required**, as on every capture path. * **Bodies are capped at 128 KiB.** Nothing this contract allows comes close. * **Creating a lead needs `write` scope** plus `patient:create` and `journey:create` on the acting user's role. Leads posted this way arrive through a capture form named **Zapier** that Smileline provisions on first use, so they are inspectable under **Settings → Website** like any other source. Don't archive it — and if you switch it off there, this endpoint stops accepting leads too, with `409` and `code: "LEAD_INTAKE_DISABLED"`. Off means off for integrations as well as for website forms. Every request body is kept, whatever the outcome. A lead that succeeds, one refused for an unknown treatment, one that arrived while the database was unreachable — all of them retain the exact bytes you sent. Nothing you post is ever discarded because we could not process it. That includes a lead refused because the practice cannot take leads at that moment: its subscription has ended, it is closing, its setup is still being prepared, or a [Core Practice Transfer](/guides/settings/import-export#move-a-smileline-practice-without-a-database-snapshot) is replacing its data. Your integration still gets that refusal (`402`, `403`, `503` or `423` below), but the lead is stored first. If the practice can take leads again by the time Smileline's background replay reaches it (every five minutes), the enquiry is created then. Otherwise it waits in the [review queue](/guides/lead-capture/review-queue), where **Try again** creates it once the practice is active again. Re-sending it yourself is safe either way: the same `eventId`, or the same body, resolves to one enquiry. A stored lead is only ever created for a sender that could create it live at that moment. If the connection or API key was not allowed to create patients and enquiries when it sent the lead (the `403` below), the lead is kept for review but never created from there. If the key is revoked, the app disconnected, or the user loses that permission before the lead is created, it waits in the review queue: **Try again** creates it once the same sender has that permission again; otherwise mark it as handled or delete it there. ### Idempotency `eventId` is your idempotency key: * Re-sending the same `eventId` with the same body returns the original result rather than opening a second enquiry. * Reusing an `eventId` with a **different** body is refused with `409` and `code: "IDEMPOTENCY_KEY_REUSED"`. * Omit `eventId` and Smileline keys the request on a digest of the body itself, so a blind retry after a lost response still de-duplicates. The key it used comes back in the response as `eventId`. ### Responses | Status | Meaning | | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `201` | Created. The body carries `patientId`, `journeyId` (never null), `taskId`, `patientWasCreated`, `organizationId` and `eventId`. | | `202` | Stored durably but not processed yet; Smileline replays it automatically. Treat it as a success and do not re-send. A treatment archived in the moment between validation and processing lands here rather than being refused. | | `400` | Invalid body, or an unknown or archived `treatmentSlug`. | | `401` | The access token is expired or no longer valid. Refresh it and retry. | | `402` | `COMMERCIAL_ACCESS_REQUIRED`: the practice has no current subscription. The lead is kept for review. | | `403` | The connection lacks `write` scope, or the acting user's role cannot create patients or enquiries. Unlike `401`, retrying will not help. Also `ORGANIZATION_CLOSING` or `ORGANIZATION_PURGING` while the practice is closing, in which case the lead is kept for review. | | `409` | `IDEMPOTENCY_KEY_REUSED`, `LEAD_INTAKE_DISABLED`, or the same lead is still being processed. | | `413` | The body exceeded 128 KiB. | | `423` | `PRACTICE_QUARANTINED`: a Core Practice Transfer is replacing the practice's data. The lead is kept for review. | | `503` | `ORGANIZATION_PROVISIONING` or `COMMERCIAL_ACCESS_UNAVAILABLE`: the practice is still being set up, or its access could not be checked just now. Retry later; the lead is also kept for review. | --- # Intake review Source: https://docs.smileline.io/guides/lead-capture/intake-review Correct and acknowledge capture warnings without losing a lead or silently changing CRM data. Intake review keeps a lead when a capture hook refers to a location, treatment, lead source, or other optional reference that Smileline can no longer apply safely — or when a phone number the visitor typed could not be read. You can correct the underlying record, then acknowledge the warning with an audited note. Open issues appear in two places: * **Today** shows the five newest issues to roles that can update patients. The panel refreshes every minute and hides when nothing needs review. * **Settings → Review queue** shows the ten newest issues and totals by reason to owners and managers, on the **Leads to check** tab. (Submissions that never became a lead at all live on the neighbouring [Couldn't be processed](/guides/lead-capture/review-queue) tab.) ## Understand the reason | Reason | What happened | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Archived location** | The submission referred to a location that had already been archived. | | **Archived treatment** | The requested or default treatment had already been archived. | | **Archived lead source** | The hook's configured lead source had already been archived. | | **Invalid optional reference** | Another optional capture reference could not be applied safely. | | **Contact could not be read** | The lead was created and the phone number is kept on the patient exactly as typed, but no rule could read it as a dialable number, so calls and messages cannot reach it yet. The row shows the value **as typed**. Click **Fix phone**, correct the number and save: the patient's mobile is updated and the warning closes in one step. A number that still cannot be read stays on the record as typed, the dialog says so, and nothing is acknowledged. The form link opens the form's **Deliveries** tab, which holds the whole submission. | Smileline still preserves the lead and its raw capture record. It does not revive or apply an archived definition. ## Resolve an issue Open the issue's reason link to inspect the relevant setting. The row also links to its form (on the **Deliveries** tab) and patient when those records are available. Correct the patient, capture hook, or setting as needed. For example, choose an active default treatment on the hook. For **Contact could not be read**, **Fix phone** on the row does the correction and the acknowledgement together. Return to **Intake review** and click **Acknowledge**. Optionally add a resolution note, then confirm the acknowledgement. Acknowledgement never changes the patient, journey, capture hook, or vocabulary item. Make the correction first; acknowledgement only records that a staff member reviewed the warning. Acknowledging an issue twice is safe: the first acknowledgement remains the resolution. Resolution notes are limited to 1,000 characters and the actor and time are retained for audit. The queue API is documented under **Intake review issues** in the [/reference](/reference). --- # Native lead ads Source: https://docs.smileline.io/guides/lead-capture/native-lead-ads Connect Meta, Google Ads and TikTok lead forms to Smileline — every form on the Pages and accounts you switch on is captured and set up automatically. Smileline can receive submissions from provider-hosted forms on **Meta and Instagram**, **Google Ads**, and **TikTok**. Native lead capture is included in Smileline Core. Every submission becomes a lead: it creates the same patient and treatment journey used by other capture sources; it does not create or change advertising campaigns. Open **Ads** to see provider health and recent lead activity. Use **Meta Ads**, **Google Ads**, or **TikTok Ads** to connect and switch on the Pages and accounts whose leads you want — once a platform is connected its page opens on a [dashboard](/guides/marketing/ads#platform-dashboards), and the connection, Pages, accounts and forms sit behind **Settings** at the top right. Use **Lead capture** to see every lead your forms sent and fix the few that need attention. ## Who can use it Owners and managers can connect providers, switch Pages and accounts on or off, change form settings, import recent leads, retry a lead and disconnect an integration. Front desk and analysts can view connection health, form settings and every lead with its answers; telesales have no lead-ads access, although they read a lead's answers in **Today** and on the patient record. Choosing the patient for a lead, and dismissing a lead, also require permission to update patients. ## Connect a provider A platform that is not connected yet opens straight on setup. Once it is connected, the page opens on the platform dashboard and everything below is under **Settings** at the top right of the page. Granting access on the platform returns you to **Settings**, and a reconnect prompt from a notification takes you there directly. **Settings** keeps the connection at the top — it shows who connected the platform and when, when it last synced, when the last live lead arrived and how many forms are live — and splits the rest into tabs: * **Facebook Pages** (Meta) or **Lead forms** (Google Ads and TikTok): the Pages and accounts you switch on, with their lead forms. * **Ad accounts** (Meta only): the ad accounts used for campaign reporting and conversion tracking. * **Conversion tracking**: see [conversion feedback](/guides/marketing/conversion-feedback). * **Import recent leads**: see [Import recent leads](#import-recent-leads). * **Webhook key** (Google Ads only): the optional webhook for the fastest delivery. **Import recent leads** and **Webhook key** appear once the connection is active. Select **Sync now** under **Settings** to refresh accounts and forms; the page updates by itself when the sync finishes. With the **SEO & Ads add-on**, the same action also imports campaigns and reporting for your enabled ad accounts; see [Platform dashboards](/guides/marketing/ads#platform-dashboards). On Google Ads and TikTok, newly discovered accounts stay off until you switch them on. On Meta, only the Pages and ad accounts you add appear (see [Meta and Instagram](#meta-and-instagram)). Each switch takes effect straight away; there is no separate save. Switching one off asks you to confirm first. Each Page or account also has a **Default location** (shown only when the practice has more than one location) and a **Default owner** for the leads it brings in. Both save as soon as you pick them. A form or account owner always wins; leads without one take turns under [Settings → Assignment](/guides/settings/assignment). ### Meta and Instagram 1. Open **Ads → Meta Ads** and select **Connect Meta**. 2. Sign in with the personal Facebook account that manages the practice's Page. In Facebook's dialog, tick the practice's Page itself rather than "all current and future Pages", tick its ad account, and approve every requested permission. Pages an agency manages for the practice connect through this login without moving them into the agency's portfolio. If you manage several practices from the same Facebook login, keep their Pages ticked too: unticking one takes it away from the practice that uses it. 3. Back in Smileline, **Add this practice's Facebook Pages and ad accounts** opens. Tick only this practice's Pages and ad accounts, then select **Add and switch on**. Each one starts capturing straight away, and every form on a Page is live, including forms created later. Instagram Instant Forms are delivered through their associated Facebook Page, so they appear under the same Page. 4. Optionally open a form's **Settings** to change how it is set up — see [Form settings](#form-settings). 5. Select **Send test lead** on a form, send a lead from Meta's Lead Ads Testing Tool, and confirm that the form shows **Test received**. Meta remembers everything your Facebook login has ever granted Smileline. If you manage several practices, the list therefore also shows the other practices' Pages and ad accounts, whatever you ticked in Meta this time. Nothing you leave unticked is saved in the practice, and anything another practice has already switched on is marked **Connected to another practice** and cannot be added. To add more later, for example a new Page, select **Add Pages and ad accounts** on the connection. To stop using one, switch it off on its tab. Only the person who connected Facebook can open the list, because it shows their own Facebook Pages. Everyone else sees who connected, and can select **Reconnect** to connect with their own Facebook login instead. **Ad accounts** have their own tab. They carry no lead forms: they are used for campaign reporting and [conversion tracking](/guides/marketing/conversion-feedback). Meta may require the practice to grant Smileline access in Lead Access Manager as well as during authorization. The connection, under **Settings**, shows an action warning if Smileline can see a Page but cannot retrieve its leads. If the connection reports **Meta authorization is missing permissions**, select **Reconnect** and approve every requested permission. The error names the missing permissions. If Meta does not offer them, contact Smileline support so the app's permissions and access can be checked. If a sync finds that Facebook no longer gives Smileline access to a Page that was capturing, Smileline switches that Page's capture off and shows **Lead capture paused** on the connection, naming the Page. Select **Reconnect**, which is available even while the connection says **Connected**, and tick that Page for every requested permission. Once Facebook gives access again, the Page switches back on by itself at the next sync. Smileline keeps checking for its leads from the moment capture stopped; to bring in the leads from the gap straight away, use [Import recent leads](#import-recent-leads). A Page you switched off yourself stays off. A Page another practice has since connected is not switched back on: switching it on again reports that it is connected to another practice. If Smileline's hourly lead check reaches the Page before a sync does, the connection asks you to **Reconnect** instead; leads on the practice's other Pages wait and are processed once you reconnect. Smileline reads each of the practice's Pages directly, so a Page you reach through an agency's business access works even when Facebook leaves it out of your own list of Pages. Older connections made through a business system user keep working until their access expires; then select **Reconnect**, which uses your Facebook login. The list shows every Page and ad account the grant can see, however many there are. Each sync refreshes only the Pages and ad accounts you added. It reads a bounded number of listing pages and resumes from where it stopped, so a grant with hundreds of Pages is complete after a few syncs. A Page or ad account is only marked as no longer discovered once a complete listing has failed to include it. Instant Forms fill in over successive syncs in the same way as Google and TikTok forms: each sync reads a bounded number of form pages across the practice's Pages and resumes from where it stopped, so a Page with many forms is complete after a few syncs (its row says so while forms are still arriving) and a form is only marked as no longer discovered once a complete walk of its Page has failed to list it. New connections use Meta’s 60-day user access tokens (a short-lived token from Meta's login is traded for the 60-day one before anything is stored). Smileline attempts to renew user tokens before they lapse. An existing system-user token with an expiry needs fresh consent instead; its expiry warning asks you to reconnect. Meta's 90-day data-access window is different: the automatic renewal cannot extend it, so its warning — 14 days and again 3 days before access ends — asks you to re-authorise in Meta, which reconnecting does. Connecting also grants Meta's `pages_read_engagement` and `pages_manage_ads` permissions, which Meta requires for lead retrieval, and ad-account access (`ads_read`, `ads_management`) in the same consent, so leads carry their ad, ad set and campaign names. A connection made before ad-account access was part of connecting has Page permissions only: its leads arrive with their form answers but no attribution, and no ad accounts can be added until you select **Reconnect to grant ad permissions** on the **Conversion tracking** tab, then add the ad account with **Add Pages and ad accounts**. ### Google Ads 1. Open **Ads → Google Ads** and select **Connect Google Ads**. 2. Enter the practice’s **Customer Google Ads ID** (10 digits, with or without hyphens). If you access it through an agency manager account, also enter the **Manager account ID (optional)**. 3. Select **Continue with Google** and sign in with an account that can access that customer. Smileline checks access before connecting. 4. On the **Lead forms** tab, switch on the chosen account under **Ad accounts**. Every lead form on it is live straight away, including forms created later. 5. For the fastest delivery, generate a key on the **Webhook key** tab under **Settings** and copy the webhook URL and key into each Google lead form, then use Google's **Send test data** action. Google allows one webhook integration per form. While the key is on screen, **Copy for AI** puts a ready-made brief on your clipboard for ChatGPT, Claude, Cursor or whoever runs the Google Ads account: the URL, the key, the form names and the steps in Google Ads. Google connection requests two permissions: Google Ads access (`adwords`) for accounts, lead forms, reporting and supported campaign and conversion-action management; and Data Manager access (`datamanager`) for [conversion feedback](/guides/marketing/conversion-feedback). The connection does not request Chrome Web Store publishing or add permissions from other Google integrations. Campaign management still requires the SEO & Ads add-on, and conversion feedback must be enabled separately. Smileline also reconciles connected Google Ads accounts through Google's API. The API path recovers missed deliveries and forms that do not use the optional webhook. A form configured with another CRM webhook can therefore remain connected to that service. A lead from a form Smileline has not synced yet is still captured: the form is added and set up automatically, and the next sync fills in its questions. Recovery and imports respect the requested time window, including when the Google Ads account uses a different time zone or the clocks change. Only the chosen customer is connected to this practice. The manager’s other customers are not imported or displayed. Older connections that did not record a customer choice ask you to reconnect; their account inventory stays hidden until you complete setup. Conversion feedback uses the chosen customer, and only when that customer tracks its own conversions: a manager that tracks them for all its clients is never used (see [Conversion feedback](/guides/marketing/conversion-feedback)). A practice with conversion history cannot be switched to a different customer: connect that customer in its own practice. Lead forms fill in over successive syncs. Each sync reads a bounded number of form pages for the chosen customer and resumes where the last one stopped. Its row indicates when forms are still arriving. A form is only marked as no longer discovered after a complete walk of that customer’s forms. ### TikTok 1. Open **Ads → TikTok Ads** and select **Connect TikTok**. 2. Authorize the advertiser account and choose the account used by the practice. 3. On the **Lead forms** tab, switch on the advertiser under **Ad accounts**. Every Instant Form on it is live straight away, including forms created later. 4. Select **Send test lead** on a form, create a TikTok test lead, and confirm that the form shows **Test received**. Each advertiser also shows a **Direct messages** form for leads that arrive through TikTok direct-message ads. It is captured like any other form. Direct-message leads arrive live only: TikTok offers no export for them, so **Import recent leads** does not cover that form. TikTok currently offers direct-message lead ads to advertisers registered in APAC and LATAM; elsewhere the feature needs a TikTok allowlist, and the form stays visible but empty until it applies. TikTok lead storage is regional. Smileline uses the European lead region for UK, EEA and Swiss advertiser accounts, and whenever a catch-up import comes back empty it checks the other regions as well, so ads targeted at another region are still reconciled. An advertiser with several hundred Instant Forms fills in over successive syncs: each sync reads a bounded number of form pages and picks up where the last one stopped, so the full inventory appears after a few daily syncs (or a few presses of **Sync now**), and an advertiser whose forms are still arriving says so on its row. The first complete inventory walk marks any previously stored form it did not list as no longer discovered; after that a form is only marked once two consecutive complete walks have failed to list it. If you have moved an advertiser's leads into a Business Center form library, Smileline records the library from TikTok's form listing and from the first lead it delivers, and exports that form's leads through the library rather than the advertiser account. ## Form settings Every form on a Page or account you switch on is set up automatically and shows **Automatic**: * the name, email, mobile phone and message questions are picked from the form's own question types; * for an unusual form where that finds no email or phone, or leaves a free-text question unused, Smileline's AI reads the form's questions — never anyone's answers — on the next sync and fills the gap. The form shows **AI mapping pending** until then; * every answer the person gave is kept, so staff see the whole form in **Today** and on the patient record; * the Page's or account's default location and owner apply; * the lead source comes from the platform — **Facebook / Instagram Ads**, **Google Ads** or **TikTok Ads** — the way a [click on that platform's ad](/guides/lead-capture/attribution#how-the-lead-source-is-chosen) would; * leads open on **General enquiry** unless you route them to a treatment, except on a form Smileline built for a campaign template (see [below](#forms-built-from-a-campaign-template)). A form that shows **No email or phone** can still be live: its leads wait in **Lead capture** until you pick the question, and are then added on their own. **AI mapping pending** can also mean that contact details are already mapped and Smileline is checking a remaining question for the enquiry message. It does not, by itself, hold up leads. Mapping runs in batches during sync; **Sync now** starts the next eligible batch. If an AI attempt fails, that form becomes eligible again after 24 hours and is retried on a later sync. You do not need to reconnect the platform. Select **Settings** on a form to change it. You can switch the form **Live** or off; pick different contact questions; override the location, owner and lead source; set the treatment route — a fixed treatment, or **Route from an answer**, where you link each answer to a treatment and every answer you leave on **General enquiry** opens as one — and record [marketing consent](#marketing-consent). Only what you change is saved, and a changed form shows **Customised**; **Reset to automatic** undoes your changes when you save. Smileline never switches back on a form you switched off, and when a form's questions change on the platform only the settings that name a changed question are reset. Use **General enquiry** when the form does not establish a treatment. The person is still a lead: the submission appears in **Today** under **New · Call now** as **New Meta Ads lead · General enquiry** (or Google Ads, TikTok Ads), with the same first-call task, automations and conversion feedback as any other lead. Ask what they're interested in, then change the treatment in the lead's header. Smileline adds the **General enquiry** treatment to **Settings → Treatments** the first time it's needed. Smileline keeps the submitted answers with the capture record. Provider payloads and credentials are not exposed as general patient fields. ### Forms built from a campaign template An instant form Smileline creates for a [campaign template](/guides/marketing/campaign-templates) (UK and US practices with the SEO & Ads add-on) is set up from the campaign that built it, from its first lead: * its leads open on the treatment the campaign advertises instead of **General enquiry**; when your catalogue has no such treatment, they open on **General enquiry** like any other form's; * in the US, its consent question is linked for you as SMS and WhatsApp consent evidence (see [Marketing consent](#marketing-consent)). Anything you change in the form's **Settings** is kept, and **Reset to automatic** goes back to the campaign's setup. ## Marketing consent Submitting a native lead form does not by itself grant promotional consent. Apart from the consent question on a US template form (below), consent is never set up automatically: Smileline records an opt-in only when you deliberately link a form checkbox or disclaimer response and specify the covered channels—email, SMS or WhatsApp: open the form's **Settings** and expand **Explicit marketing-consent evidence**. The provider, form, field, submitted value, notice text and submission time are retained as evidence. Automatic contact mapping uses free-text answers. A choice such as **Email** or **Phone** is not an email address or phone number. On a form that identifies both a patient and a referrer, suggestions use the patient's details and leave missing patient contact fields for you to map. Mappings you saved manually stay unchanged. An absent, blank or unmapped checkbox leaves the patient's existing preference unchanged. It never opts a patient in automatically. **Template forms (US).** The instant form of a US [campaign template](/guides/marketing/campaign-templates#instant-forms) asks for consent to automated calls and texts, and Smileline links that question for you. **Yes** records an explicit SMS and WhatsApp opt-in, with the question as the evidence, and the consent to automated calls that the AI caller needs. **No** opts the person out of SMS and WhatsApp marketing and withdraws an earlier consent to automated calls, but never stops your team calling them back. The newest answer wins, and email isn't covered. See [the consent question on template lead forms](/guides/marketing/consent#the-consent-question-on-template-lead-forms-us). ## Lead capture **Lead capture** in the Ads workspace lists every lead your forms sent, newest first. It opens on **Needs attention** — the leads waiting on a person — and **All leads** shows everything. With more than one platform connected, the platform buttons narrow the list. Each row shows the Facebook, Instagram, Google or TikTok mark, the person's name (a link to them in **Today** once they are added), the form and when it was submitted, an outcome, and a plain reason when something is wrong. **Answers** opens every question with its answer, then the form, campaign, ad set, ad and platform by name. | Outcome | What it means | What to do | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Added to Today** | The lead is in the CRM. | Nothing — work it in **Today**. | | **Processing** | It is being added, or waiting for the platform to answer. | Nothing. | | **On hold** | The form or the Page or account it came from is switched off, the form has no email or phone question picked, a location, lead source, owner or treatment chosen for the form was archived, or the free plan's patient limit is reached. | Use the row's link — **Turn the form on**, **Turn the account on** or **Open form settings**. The lead continues on its own once the form or account is switched on or its settings are fixed; after un-archiving a setting, select **Retry**. A lead held by the free plan's limit is added once you subscribe. | | **Needs a decision** | The email and phone belong to different patients. | **Choose the patient** — attach it to one of them or create a new enquiry. | | **Couldn't import** | The platform needs reconnecting, the lead has no email or phone, its treatment answer isn't linked to a treatment, it couldn't be queued during an outage, or adding it kept failing. | **Reconnect** (the lead is added automatically afterwards), fix the form's settings, or select **Retry**. | | **Test lead** | A lead sent from the platform's testing tool. | Nothing. | | **Ignored** | Dismissed by a team member, erased at the person's request through Meta, or the subscription had ended when it arrived. | **Dismiss** it if it still needs a decision. | **Imported** marks a lead brought in by **Import recent leads**. **Retry** and the settings links are for owners and managers; **Choose the patient** and **Dismiss** need permission to update patients. **Dismiss** asks first: the lead leaves **Needs attention** and is never added to the CRM. A lead is only ever discarded that way, by a person. Provider test leads validate authorization, delivery and form settings, but they never create a patient, journey, task or automation enrollment. Neither Meta nor TikTok flags a test lead, so Smileline recognises the placeholder text their testing tools fill in (`test lead: dummy data for …`, including Meta's angle-bracketed ``); a test lead you complete with real-looking details is treated as a real enquiry. A submission for an ad account or Page the practice had not connected yet waits in the [review queue](/guides/lead-capture/review-queue#which-items-offer-try-again) as `lead-ads-unknown-asset`: connect the account, then **Try again** there and the lead lands in the practice that owns the account. ## Import recent leads New connections capture live submissions by default. Owners and managers can optionally import the last 7 days, 30 days or the provider maximum from the **Import recent leads** tab under **Settings** on the platform page, from **All live forms** or from one form: * Meta and TikTok: up to 90 days; * Google Ads: up to 60 days. The card follows the import while it runs and ends with what it found — for example **Checked 78 forms · 12 found · 12 added · 0 need attention · 0 already here**, or **Checked 78 forms · no leads found in this period**. It picks up again after you leave the page and come back. If an import fails, **Resume** continues it from where it stopped. With no live form to import from, the buttons stay off until you switch on a Page or account. Imported leads appear in **Today** exactly like live ones, placed by when they were submitted, so a lead from last month sits below today's. Historical imports do not start automations, send conversion events, notify connected systems through webhooks or ring a notification for each lead. If an imported lead is **On hold** or **Couldn't import**, fix it from its row in **Lead capture**. Re-running the import skips leads already stored. Imports and routine reconciliation are idempotent. Receiving the same provider lead through a webhook and a recovery scan does not create it twice. A lead that has not been added or dismissed is kept, with its raw details, until a person resolves it — it never expires on its own. Raw provider and normalized lead payloads are erased 30 days after a lead is added to the CRM, 30 days after a person resolves or dismisses it, and 30 days after a test lead arrives; the non-sensitive receipt and status history remain. When someone asks Meta to delete their data, Smileline erases their lead straight away and never restores it. ## What native lead capture does not do Native lead capture only brings submissions in — it never creates campaigns, spends budget, or captures Instagram/Facebook direct messages. The rest of the Ads workspace covers the other direction and the money: * [Conversion feedback](/guides/marketing/conversion-feedback) reports Lead, Booked and Going ahead back to the platforms (Smileline Core). * [Ad campaigns](/guides/marketing/ads-campaigns) create and manage campaigns (SEO & Ads add-on). Practices in the UK and the US build them from [campaign templates](/guides/marketing/campaign-templates), with pictures from [Ad images](/guides/marketing/creative-studio). * The Ads [Overview](/guides/marketing/ads#the-overview) compares platform-reported spend with CRM truth per campaign under **Campaigns → All campaigns** (SEO & Ads add-on); the **Ads weekly digest** report is its email counterpart. --- # Review queue Source: https://docs.smileline.io/guides/lead-capture/review-queue Try again, mark as handled, or delete inbound items that could not be processed — nothing sent to Smileline is ever silently lost. Smileline stores every inbound payload — a website form post, a Meta lead, a chat message, a practice-management event — before it tries to process it. When something cannot be processed (a malformed body, an unrecognised event type, an internal failure), what arrived is kept and appears in the review queue instead of disappearing. The queue lives at **Settings → Review queue**, visible to owners and managers. It has two tabs: * **Leads to check** — leads that *did* arrive but reference something that needs fixing. See [Intake review](/guides/lead-capture/intake-review). * **Couldn't be processed** — submissions and events that never became a CRM record at all. This page covers that tab. When anything is waiting, **Today** shows an amber strip — *3 items need review* — and owners and managers get an **Incoming data needs review** notification — in the bell and, by default, by email, at most one email per item per day however often it is retried. Both open the **Couldn't be processed** tab directly, and each tab's label shows how many items are open. See [Notifications](/guides/settings/notifications#email). ## Read an item Each item tells you what to do: * **The title** says what arrived, in plain words — for example **Website form submission**, **Inbox message** or **Phone system update**. * **The status** says who needs to act: * **Needs action** — it waits for you. * **Retrying automatically** — Smileline is still retrying it in the background. You don't need to do anything unless it stays stuck. * **Waiting for subscription** — it arrived while the practice was past its [free plan's](/guides/settings/billing#free-plan-for-partner-created-practices) patient limit. It is stored intact and becomes a lead automatically within a few minutes of the practice subscribing, so there is nothing to retry. * **What to do** is the next step for this item. * **Reason** is the technical reason it could not be processed, for Smileline support. A reason that reads *kept for review* was never retried, because it needs a person's decision on sight. One that reads *moved to manual review* used up its automatic retries. Either way what arrived is intact. The main button beside an item is the recommended action. **View details** and **Delete** sit in the item's **More** menu (**⋯**). ## Act on an item Click **View details** to see what arrived, why it failed, and its source. What arrived is exactly what was received, so you can tell a real enquiry from junk. Click **Try again** to run it through processing again — for example after fixing a form's field mapping or reconnecting a provider. Trying again is safe to repeat: something already processed is recognised and skipped. If Smileline is retrying that item at the same moment, you see *Couldn't try again — nothing was changed*: press it again in a few minutes. Click **Mark as handled** when the item is dealt with some other way (say, the patient called and was entered manually). What arrived is kept; the item moves to **Handled** with your note. Choose **Delete** from the **More** menu only for junk. Deleting permanently removes what arrived and asks why — the decision, who made it, and the note are kept forever. Inbound data is deleted in exactly two places: **Delete** here, and **Archive** on a website form that still holds submissions waiting for its mapping. Nothing in this queue expires on a timer, and no automatic process removes it. ## What lands here Data kept from a provider or your website is titled by where it came from: **Website form submission**, **Chat widget message**, **Online booking**, **Friend referral**, **Ad lead**, **Lead from a connected app**, **Inbox message**, **Email**, **AI calls**, **Call that couldn't be answered**, **Phone system**, **Practice-management sync**, **Insurance or accounting reply**, **Clinical storage** or **Google review notification**. It covers a form post that wasn't valid JSON, a signed provider event Smileline couldn't parse, or a message caught by an outage. Anything else is titled **Incoming data**. | Title | What it means | | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Billing event from Stripe** | A signed event from your connected Stripe account (online deposits and card readers), kept exactly as Stripe sent it because Smileline couldn't use it: one it couldn't read, a kind it doesn't act on yet, or one that still failed after every attempt. **View details** shows the event; **Try again** runs it through the same processing as Stripe's own delivery, so a payment or refund is never recorded twice (one Smileline couldn't read has no **Try again**). An event for a Stripe account no practice is connected to is held for Smileline support instead. The same title marks a booking deposit paid online that couldn't go on the patient's account, with the reason: usually that the practice had no location (add one in **Settings → Locations**), or that the account refused it, for example because the **Online** payment method is archived. Once the reason is fixed, the payment (and any refund since) is added within a few minutes and the item clears itself. It has no **Try again**, and the payment should not be recorded again by hand. A refund Stripe reports before the payment it refunds shows here as **Retrying automatically** until the payment arrives, then goes on the patient's account with it. It needs you only if Stripe can't be read (for example its access was removed — fix that, then **Try again**), lists more refunds than one read returns, or the payment never became the deposit's: then check them in Stripe and record what the account is missing. | | **Practice-management record** | A record from your practice-management system that failed to sync, or one held for your decision: a change that contradicts the record Smileline already has at the same revision (or carries no revision to order it by), or a financial record whose amounts, dates, currency or references don't add up, or that names no patient at all. **Try again** sends it back through syncing right away, rather than leaving it for the next hourly sync; if the cause is still there, it comes back here. A brief database hiccup (a lock wait, a deadlock, a timeout) is retried automatically instead of landing here — unless the same record hits one ten syncs in a row, when it lands here with that reason so it can't stall out of sight. A change for a patient who was [erased in Smileline](/guides/patients/patient-detail#erasing-a-patient) is held here too, with the reason `patient_erased`, and never brings them back: they are erased in Smileline, so erase them in your practice software too, then **Mark as handled**. | | **Phone system update** | A phone-system job that exhausted its retries — including a call or AI-call event Smileline received but could not deliver to the call after several attempts. **View details** shows the event as Smileline understood it; **Try again** gives it one fresh set of attempts; **Delete** keeps the record but stops further retries. | | **New form found on your website** | The [tracking script](/guides/lead-capture/website-tracking) found a form on your website and somebody has submitted it while it still waits for its field mapping. The item appears only once the first submission arrives — a form nobody has used is not listed — and shows how many submissions are waiting; they are held behind this one item rather than listed separately. **View details** shows the page, selector, fields, when the form was first and last seen, and the count; while the form stays the same, the page and the last-seen time update at most once an hour. There is no **Try again**, **Mark as handled** or **Delete**: click **Map fields** to open the form in **Settings → Website**, where confirming the mapping turns every waiting submission into a lead and archiving the form deletes them. See [Website forms](/guides/lead-capture/website-forms#confirm-a-detected-form). | | **Family account suggestion** | Your practice management system named who pays for a patient (their guarantor), but Smileline did not link them. The reason leads the item: linking from the practice system wasn't switched on yet when it arrived; the payer is paid for by someone else, or the two pay for each other; the patient has a payment plan on their own account; a card reader payment for the patient is still going through; their link to that payer was ended before; or someone at the practice linked a different payer. Nothing is linked or moved. While the reason can clear — linking switched on, the plan cancelled or completed, the card payment finished, who pays corrected in the practice system — **Try again** links them; if the reason still applies, nothing changes and the item stays. A link that was ended, or that the practice made, is never changed by a sync, so those offer no **Try again**. See [Family accounts](/guides/patients/ledger#family-accounts). | | **Automation step** | A [follow-up](/guides/automations/sequences#when-a-step-keeps-failing) step or [booking message](/guides/automations/reminders#when-a-reminder-keeps-failing) that still failed after several attempts, so Smileline paused it instead of stopping it — or one whose automatic retries ran out while it was still being worked on. Nothing retries it on its own. **Try again** runs it now, or at its usual time if that is later, and a message is never sent twice; the patient's timeline shows who pressed it. If the step is still being worked on, **Try again** says so: press it again in a few minutes. A booking message that is switched off needs switching back on first. If the patient has since replied or opted out, or the appointment no longer qualifies, nothing is sent and **Try again** says it can't be tried again: mark it as handled. **Mark as handled** leaves paused follow-ups paused; stop them from the lead's enrollment chip if they should not continue. | ## Which items offer Try again **Try again** appears only where Smileline can honestly run what arrived through processing again. The tables below are keyed by the source shown in **View details**. These sources gained it recently: | Source | What it is | What Try again does | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `capture-file` | A website form post whose file uploads could not be stored. The form fields were kept; the files were not. | Recreates the lead without the files. | | `outbound-email` | An outgoing email retained after delivery could not complete. Provider throttling normally recovers automatically. | Rechecks the delivery and retries it if it is still eligible. Completed deliveries are skipped. | | `email-raw` | An inbound email that could not be delivered into the inbox — an outage, or a mailbox connection that was paused at the time. | Delivers the email into the inbox. | | `referral-suspect` | A friend's referral submission that filled the hidden anti-bot field. Browser autofill does this on genuine referrals, so it is parked rather than dropped. | Accepts it as genuine: the referral is submitted. | | `pms-webhook-unrecognized` | A practice-management webhook carrying an event type Smileline did not recognise. | Runs it again — useful once support for that event type has arrived. | | `lead-ads-unknown-asset` | A lead-ad submission for an ad account or Page the practice had not connected yet. | Connect the account under **Ads** first, then **Try again**: the lead lands in the practice that owns the account. | | `ai-voice-capture` | A caller's details the AI receptionist took but could not save during a fault. | Saves the patient and the lead. | | `ai-voice-stop-contact` | A caller asked the AI receptionist not to be contacted again (or said it was the wrong number), and Smileline could not save the request at that moment. It shows as **Retrying automatically** while it is retried every 5 minutes, and needs action only once those retries run out — or straight away when the call had no lead to attach it to. Until it is saved, the number can still be rung. | Saves the request, dated when the caller asked: the phone opt-out, an urgent task and a timeline entry, once per call. A call with no lead has nothing to attach it to: set the phone opt-out on their record (or add the number to the do-not-call list), then mark it as handled. | | `zapier-lead` | A lead a connected integration (Zapier, your own app or an API key) sent while the practice could not take leads — no current subscription, closing, still being set up, or in the middle of a Core Practice Transfer. The integration was refused as usual, but the lead was kept. | Creates the lead once the practice can take leads again, as long as the key or app that sent it can still create patients and enquiries; until then the item stays here. A lead from a sender that was never allowed to create leads has no **Try again**: view the details, then mark it as handled or delete it. A resend from the integration resolves to the same enquiry. | | `whatsapp-batch` | A signed WhatsApp delivery for one of your numbers that Smileline could not fully place: it carried a message with no sender, or failed mid-processing. Every message in the batch is kept. (A delivery naming a number no connection here owns — disconnected, or belonging to the other region — is held for Smileline support instead, and does not appear in your queue.) | Runs the batch through the inbox again. Messages already delivered are filed as duplicates and announce nothing. | | `stripe-connect` | A signed event from your connected Stripe account, kept as it arrived: a kind Smileline doesn't act on yet, or one that still failed after every attempt. | Runs it through the same processing as Stripe's own delivery. A payment or refund already recorded is never recorded twice. | | `meta-batch` | The same for a Messenger, Instagram or comments delivery on one of your Pages: an unsend that arrived before its message, a message or button tap with no sender (or, when your Page sent it, no recipient), a reply your Page posted that Smileline can't attribute to anyone, or a failure mid-processing. A delivery for a Page not connected here is held for Smileline support. | Runs the batch through the inbox again. | A lead that **Try again** — or the background replay — creates reaches your team exactly like a live submission: it appears on **Today** and the bell rings once. Something that had already landed earlier (a browser retry, a provider redelivery) is filed as a duplicate and announces nothing. A **New form found on your website** item offers none of the three: it stands for the submissions waiting behind it, and they are settled together from **Settings → Website**. Some other items are deliberately **not** offered **Try again** — only **View details**, **Mark as handled** and **Delete** — because running them again would fail the same way, or the retry lives elsewhere. The item's **What to do** line says which: `public-form-invalid` (the body failed validation; enter the lead by hand), `telegram-unsupported` (an update kind Smileline doesn't handle yet), `email-loop-suspect` (mail from the connection's own address), `pms-poll-unmappable` (a practice-management record Smileline could not map), `lead-ads-overflow` (an evidence copy — its **Try again** is in **Ads → Lead capture**), and an integration lead Smileline deliberately refused (the sender was told to fix and resend, so trying again here would duplicate their corrected submission). A `lead-ads-overflow` evidence copy distinguishes a **provider refused the lead lookup** failure from a lead that was received but could not be normalised. A lookup refusal includes the provider's HTTP status and error codes when available. Check access to the lead in the provider, then use **Retry** in **Ads → Lead capture**. Marking the evidence copy as handled does not import the lead. If a `meta-batch` item contains a Page reply to a comment that is not yet in your inbox, **Try again** looks up the original comment and places both messages in the same conversation. After a connection or processing problem is fixed, try the waiting item again: deploying a fix does not itself clear items already held for manual review. If Meta still cannot provide the comment or its author, the item stays available for review. ## Phone-system items What the queue can honestly offer for a phone-system item depends on its source — some are tried again from here, some recover on their own, and some can only be viewed. Each item's **What to do** line says which: | Source | What it is | What to do | | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dialer-connections-voicestack` | A VoiceStack completed-call webhook whose receipt could not be stored. | **Try again** replays it. A body Smileline could not read is not offered **Try again** — VoiceStack never resends it — so view the details, then mark it as handled or delete it. | | `dialer-connections-justcall`, `dialer-connections-aircall` | A JustCall or Aircall delivery Smileline kept but could not process: its signature no longer verified (the API key was reset in the provider — reconnect first), it arrived before Aircall's verification token was stored, its timestamp was outside the replay window, the call was re-notified more times than Smileline re-reads on its own, its import ran out of time, or its receipt could not be stored. | **Try again** replays it through the same path a live delivery takes (after reconnecting, for a signature failure). A body Smileline could not read, or an event it does not handle, is not offered **Try again** — JustCall stops after five attempts and Aircall disables the webhook after repeated failures — so view the details, then mark it as handled or delete it. | | `dialer-telnyx-cdr` | A [desk-phone](/guides/desk-phones) call record that failed to import. | Nothing — the daily desk-phone usage check reads these records again. **Mark as handled** once it has. The same source also carries a desk-phone move back to Smileline that used up its attempts (`raw_line_teardown_parked`): click **Move back to Smileline** on the number again to retry it. | | `dialer-telnyx-porting` | A port-in or port-out event Smileline could not apply. | Nothing — the carrier's port order is checked again on its own. **Mark as handled** once the port shows the right state. | | `dialer-telnyx` | A signed call or recording event Smileline could not parse. | View the details, then mark it as handled or delete it. There is no **Try again**: the provider never resends it. | | `voice-failover-rescue` | A call that arrived while Smileline could not take it, titled **Call that couldn't be answered** — one item per call, written within the hour, with a reason that reads caller → dialled number → backup so you can ring the caller back. Voice lines forward to their [backup number](/guides/settings/call-routing#backup-number); tracking numbers forward to their location's phone. A Voice line with no backup configured, or a tracking number whose location has no phone, leaves a *backup not configured* item instead: nobody could be forwarded, but the caller's number is kept. | Ring the caller back if needed, then **Mark as handled**. | | `voice-call-cleanup` (a **Phone system update**) | A call that ended, but Smileline couldn't confirm every line on it was hung up. One item per call. | **Try again** hangs up any line still connected and closes the call. **Mark as handled** once it succeeds. | | `dialer-operation` (a **Phone system update**) | A verification submission, document upload, number release, emergency registration, port step or desk-phone move that was parked before the provider confirmed it. | Emergency registrations that exhausted processing or delivery attempts offer **Try again** here; see below. For other operations, submit the same thing again from where you started it — **Settings → Phone numbers** for verification, documents and releases (see [If an operation is parked for review](/guides/settings/voice-numbers#if-an-operation-is-parked-for-review)), **Settings → Call routing** for a desk-phone move. | | `voice-capacity-sync` (a **Phone system update**) | A change to the practice's billed add-ons (extra lines, numbers, SMS numbers, extra locations) that could not be applied to its Smileline subscription. The reason shows the quantities and why. | **Try again** once the reason is cleared: it applies the same quantities again. Contact Smileline support if the reason names a missing price. | | `dialer-dlq` (a **Phone system update** for a recording) | A call recording that could not be saved after its automatic retries. | **Try again** starts one more save attempt. Other `dialer-dlq` items can only be viewed, then marked as handled or deleted. | | `voice-recording` (a **Phone system update**) | The phone provider's copy of a call or voicemail recording that Smileline could not confirm deleted after five attempts. The reason ends with why the last attempt failed: the provider refused the deletion, the phone system was not set up, a legal hold covers the call, or the attempt never reported back. Smileline counts the copy as deleted only when the provider confirms it or reports it already gone. | Clear the reason first (set up the phone system, or wait for the hold to be released), then **Try again** starts five more attempts. | | `recording-unreported` (a **Phone system update**) | A voicemail the caller left whose recording the provider never reported back, after an hour of automatic checks. Smileline keeps asking the provider hourly for up to 30 days; the practice already has a **Missed call** notification for it. | **Try again** restarts the fast five-minute checks. **Mark as handled** once the voicemail turns up or the caller has been reached another way. | | `call-activity` (a **Call timeline entry**) | A call whose entry on the patient's timeline could not be saved. Smileline retries it automatically four times within about an hour of the call before it lands here; the call itself stays in the call log throughout. | **Try again** saves the entry again. If it still fails, contact Smileline support with the reason shown. | For an emergency registration that stopped after repeated processing or delivery failures, **Try again** on the newest `dialer-operation` item resumes the saved registration. Smileline checks whether the carrier has already activated that address. The item remains in **Handled** as recovery history; the number's registration state shows when emergency calling is ready. Older registrations cannot replace newer ones. A carrier rejection requires correcting its stated cause before registering again. See [Emergency calling](/guides/settings/emergency-calling). ## Clinical storage items | Source | What it is | What to do | | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | | `clinical-retention` | A [clinical document deletion](/guides/settings/clinical-storage#deletions) the daily scan proposed and the database refused — the reason says why (a legal hold or a copy that changed under the scan). Nothing was deleted. | Nothing — tomorrow's scan re-evaluates the document on its own. View the details if the reason is unexpected, then **Mark as handled**. | ## Erased patients' kept records When an [erased patient's](/guides/patients/patient-detail#what-erasing-keeps) claims and invoices are kept, providers can still send work about them: an insurer's remittance, a claim's delivery to the clearinghouse, a line of an NHS pay schedule, or a Sistema TS report. Whatever would be a task for anyone else's claim — a remittance line Smileline couldn't post, a claim that couldn't reach the clearinghouse or needs reconciling, a schedule line it couldn't match, an invoice it can't report — lands here instead, titled **Erased patient's kept record**. The item names no one: no patient, claim reference, code or amount. A payment that does match is still recorded on the kept claim, as for any patient. There is one item per thing the provider sent: per remittance line, per delivery attempt, per schedule line, and per invoice. When the same work comes round again — Sistema TS is checked every day, for example — it adds nothing: an open item stays the one item, and one you've marked as handled stays handled. Another invoice or line always gets an item of its own. Work about an earlier record that was merged into the erased patient is handled the same way, and leads to the same kept record. Only the practice owner can settle it, whatever a manager's permissions: Click **Kept record** to open the erased patient's kept record — the same view as [Download kept record](/guides/patients/patient-detail#download-a-kept-record), recorded the same way. Click **View details** to see what the provider sent — the remittance line, the delivery attempt or the schedule line, with its references and amounts — or the invoice Sistema TS can't take. Anyone else sees only what the list shows. Deal with it outside Smileline if it needs it — with the insurer, the clearinghouse, the NHS Business Services Authority or Sistema TS — then click **Mark as handled**. Who settled it, and when, is recorded. It has no **Try again**, because nothing in it can run again, and no **Delete**: what the provider sent stays with the kept record. Managers see the item, and the **Incoming data needs review** notification, but can't settle it. ## Patient forms Answers a patient sent from a [form link](/guides/patients/form-links) that couldn't be filed on their own are titled **Patient form**. They hold a patient's health answers and signature, so only the practice's own team signed in to Smileline with the clinical workspace can open them: a practice API key or a connected app can't, and Smileline support sees only that the item exists. **Try again** needs a role that can fill in forms for patients. | The reason says | What to do | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Sent after the link was cancelled, expired or locked | **Try again** files the answers on the patient's record, waiting for a clinician's review. | | The link was already used, with other answers | **Try again** files these answers as a correction of the latest answers filed through that link. | | Sent from a device that was behind (newer answers had been saved on another device) | Compare them with the patient's latest answers. **Try again** files these, waiting for a clinician's review; the other device can still send its own. | | The person who signed may not sign for the patient now, or isn't the signer the link names | Check **Details › Family**, then **Try again** — or enter the answers with **Fill in** and mark this as handled. **Try again** can't file answers signed by someone other than the link's signer: enter them with **Fill in**, or send the right signer a new link. | | The answers couldn't be read, or don't fit the form | View them, enter them with **Fill in** at the desk or send the patient a new link, then mark this as handled. | | The patient's record was merged into another | Open that record and use **Fill in** with these answers, or send a new link, then mark this as handled. | **Delete** is refused while the item names a signature that hasn't been stored on the record yet: **Try again** stores it first. If one person deletes an item while another presses **Try again** on it, whichever lands first decides: a deleted item is never filed. When the patient is erased, their items go with them. ### Answers not sent by the patient The page saves a patient's answers while they type (see [Saving and carrying on](/guides/patients/form-links#saving-and-carrying-on)). Those saved answers stay private while the link works, except in three cases, each titled **Patient form draft** and marked **not sent by the patient**: | The reason says | What to do | | ----------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Typed after the link was used, cancelled, expired or locked | View them, and enter anything that matters with **Fill in** or send the patient a new link, then mark this as handled. They can't be filed: a draft is never signed. | | The page could not read them | Where **Try again** is offered, it reads them again and, if they can be read now, puts them back in the patient's draft so they can carry on. Otherwise view them, enter what matters with **Fill in**, then mark this as handled. | | Answers they were typing couldn't be saved as their draft | **Try again** saves them so the patient can carry on. If the link has closed since, there is nothing left to save them to and the item clears. | Answers still waiting to be saved show here while Smileline retries them, but you can't view them until they have failed for good, and you can't mark them as handled meanwhile: that would drop the patient's answers unseen. Wait for them to be saved or to come back for review, or **Delete** them to discard them on purpose. Each device keeps at most one such item open: newer typing from the same device replaces it, and the older item is marked as handled with that reason. **Delete** removes the saved answers too. ## Handled history Switch to **Handled** to see items your team has already marked as handled or deleted, including who settled each one and the note they left. --- # Website forms Source: https://docs.smileline.io/guides/lead-capture/website-forms Build forms in Smileline, confirm the forms detected on your website, and manage every enquiry endpoint from one list. **Settings → Website** is one list of every route an enquiry takes from your website into Smileline. By the end of this page you'll know how to build a form, confirm a detected one, and manage mapping, deliveries and lifecycle for all of them. ## Three kinds of form | Type | How it starts | What it is | | ---------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Built in Smileline** | You build it with the form builder | Gets a hosted page and an embed snippet; every field maps automatically. | | **Detected on site** | The [tracking script](/guides/lead-capture/website-tracking) finds it | A form that already exists on your website. Confirm its field mapping once and Smileline captures every submission — no website changes. | | **Custom endpoint** | You create it for your own code | A raw capture endpoint your form, backend or third-party tool posts to. Set up in three steps: basics, one test submission, confirm the mapping. See [Custom integrations](/guides/lead-capture/custom-integrations). | The list shows each form's type, status and when its last lead arrived. Statuses: * **Needs mapping** — a detected form awaiting your confirmation, or a custom endpoint listening for its first submission. Submissions park safely in the meantime; nothing is lost. * **Covered by …** — a detected form whose fields already arrive through one of your custom endpoints. There is nothing to map; open it and confirm the mapping only if you want the script to capture it as well. Should a visitor submit it in a way the endpoint does not receive, that submission still parks and appears in the review queue. * **Active** — capturing submissions and opening journeys. * **Paused** — intake stopped without deleting anything. * **Archived** — retired; shown under the **Archived** view with a restore icon. ## Build a form in Smileline Click **New form** and choose **Form builder** — "Build the form here. You get a hosted page and an embed, and every field maps automatically." Add fields — **Text**, **Email**, **Phone**, **Long text** or **Checkbox**, up to 30. Each has a label, a field key (derived from the label until you edit it), and a **Required** toggle. Field keys double as the submitted payload keys, and the capture mapping is re-derived automatically when you edit them. Leave **Default treatment** set to **None** for a general enquiry form, or choose a fallback treatment. If the submission matches a treatment, Smileline opens its journey; otherwise it uses the default. With neither, a new contact appears as an enquiry in **Today** for your team to triage. You can also choose a location and a **Lead source if the submission has no attribution**. A submission that arrives with campaign parameters picks its own source — matching your list by name or adding a new one — as described in [How the lead source is chosen](/guides/lead-capture/attribution#how-the-lead-source-is-chosen); the one you pick here is used only when it carries none. Set the submit button text and the success message, then create the form. ### Put it on your website Open the form's **Hosted page** tab: * **Share the hosted page** — a standalone page on Smileline's domain showing your practice name, brand colour and the form: `https://widget-eu.smileline.io/form/?key=YOUR_FORM_KEY` (US practices receive a `widget-us` address). Link to it from anywhere — ads, emails, QR codes. * **Embed it** — copy the `