SmileLineDocs
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

TypeHow it startsWhat it is
Built in SmileLineYou build it with the form builderGets a hosted page and an embed snippet; every field maps automatically.
Detected on siteThe tracking script finds itA form that already exists on your website. Confirm its field mapping once and SmileLine captures every submission — no website changes.
Custom endpointYou create it for your own codeA raw capture endpoint your form, backend or third-party tool posts to. See Custom integrations.

The list shows each form's type, status and when its last lead arrived. Statuses:

  • Needs mapping — detected, awaiting your confirmation. Its submissions park safely in the meantime; nothing is lost.
  • Active — capturing submissions and opening journeys.
  • Paused — intake stopped without deleting anything.
  • Archived — retired; shown under the Archived view with a restore icon.

A practice can hold up to 200 forms.

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.

Pick the Default treatment (required — it's the treatment a journey opens for), and optionally 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; 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 <iframe> snippet from the same tab to place the form inside an existing page. Embedded, it renders transparent so it sits naturally in your design.
  • The Hosted page live switch takes the page offline without touching the form itself.

Hosted forms carry bot protection: an invisible honeypot field, and a Turnstile challenge where configured. A submission that fails these checks is never silently dropped — it is recorded or parked for review.

Confirm a detected form

When the tracking script finds a form, it appears in the list as Detected on site with the status Needs mapping, and a Detected form item opens in the review queue. Detection reports only field names, labels and input types — never anything a visitor typed. Login, search and password forms are skipped.

A pending form is already being captured: its submissions park safely until you confirm, and confirming replays them into the CRM.

Open the form. The Confirm the field mapping card shows a proposed mapping — badged AI proposal or Suggested from names. Click New proposal to recompute it, ideally after a test submission has arrived so the proposal can check itself against real data.

Submit the form on your own website once, as a test. The submission appears on the card so you can see each mapped value resolve.

Review the mapping — first name, last name, email, phone, treatment, location, message and marketing consent — and pick the Default treatment (required; it opens the journey).

Click Looks right — activate. The form goes live and its parked submissions are replayed into the CRM.

Confirmation replays the newest 200 parked submissions automatically; anything older stays in the review queue for manual replay, so a long-pending form never floods you unreviewed.

If a detected form's website page also posts to a SmileLine custom endpoint (or a third-party tool that forwards to one), the same enquiry can arrive twice — once from your integration and once from the script. Patients are deduplicated by email and phone, so no duplicate patient is created, but you should pick one capture route per form and retire the other.

Field mapping

Every active form has a Field mapping tab that controls which incoming field fills which patient field. Each box takes an exact field name (email) or a dot path into a nested payload:

data.contact.email
answers.0.value

Paths address nested objects by key and lists by position, counting from zero. A field whose name literally contains a full stop still wins over the path, so existing mappings keep working.

Pick a representative delivery on the Deliveries tab, then switch to Field mapping: the payload's fields are listed beside the boxes, and clicking a field drops its path in. The preview resolves phone numbers, treatments and locations exactly as intake will, and warns when a path points at a group rather than a value or a value will fall back to the form's default. Saving applies to the next submission — deliveries already received are not reprocessed.

Attribution (utm_*, gclid, fbclid, landing_url, referrer) is captured automatically and is not mappable.

Delivery history

Open a form and choose Deliveries to see what it has actually received. Every entry can be selected to inspect the exact payload that arrived.

EntryWhat it means
AcceptedThe submission became a lead. Selecting it shows the complete field set SmileLine received.
RejectedA live form turned the submission away — malformed JSON, a bad signature, a filled honeypot field (a bot), or no usable email or phone. The reason and the offending body are both kept. In the rare case that the review queue's daily ceiling for suspected-bot or unpinned-domain submissions is exhausted, further ones are recorded here too (as turnstile failed or unpinned domain) instead of being lost.

Repeated failures of the same shape are grouped into one entry with a count and a last seen time, so a backend stuck in a retry loop reads as "Invalid JSON × 10,432, last seen 2 minutes ago" rather than thousands of identical rows.

Rejected bodies are kept for 13 months and then redacted; the entry, its reason and its counts remain. Accepted deliveries keep their payload for as long as the lead exists.

Submissions turned away before SmileLine identified the form — an unknown or regenerated endpoint, a paused or archived form, an oversized body, or a rate limit — are not recorded here. Neither are re-sent deliveries that reuse an earlier delivery ID: those are answered from the original result without creating a second lead or a second entry.

Pause, archive and restore

  • Pause stops intake without deleting anything. A paused form's endpoint and hosted page answer 404 until you resume.
  • Archive retires the form for good while keeping its history and attribution. Its endpoint stops working immediately.
  • Restore (from the Archived view) only un-archives — a form that was paused before archiving comes back paused.

If a form's default treatment, location or fallback lead source was archived before a submission arrived, SmileLine still preserves the lead and opens an intake-review item rather than losing the enquiry.

On this page