Leads & CRM

CRM automations

Visual follow-up flows: triggers, email, conditions, webhooks, and testing.

Build follow-up automations visually in site admin → CRM → Automations. Each flow is a graph of nodes connected on a canvas — similar to workflow tools like n8n, scoped to your site’s leads.

Automations require CRM and sequences enabled. Auto-enrollment respects marketing consent on contact forms. Demo sites do not run live automations.

Automations list

Automations index

Create, duplicate, activate, or delete flows. Each row shows the trigger type and enrollment count.

Visual builder

Automation editor with trigger and nodes

  • Drag node types from the palette onto the canvas
  • Connect nodes with edges; Condition nodes have Yes and No outputs
  • Save the flow name, slug, trigger, and active status from the editor header

Factory-pushed defaults appear with source=factory until you override them locally.

Triggers

Trigger When it runs
New lead A lead is created (e.g. contact form)
Form submitted Specific form or source filter
Status changed Lead status updates
Score threshold Lead score crosses a value
Invoice sent A customer invoice is emailed (transactional; no marketing consent required)
Invoice paid A customer invoice is paid via Stripe Checkout (transactional)
PMS appointment completed A factory-attributed completed appointment outcome is returned for the lead
POS guest matched A factory-attributed POS guest match is returned for the lead
POS order placed / paid / completed / cancelled A factory-attributed order status change is returned for the lead
Manual Staff enroll from lead detail only
Inbound webhook External system POSTs to your site (see below)

Inbound webhook trigger

Webhook trigger URL and example request

Each webhook-triggered automation gets a unique URL on your public site domain (POST /crm/hooks/automations/{token}). Use it to create or match leads and enroll them in the flow. Your site must be reachable from the internet — local-only URLs will not work.

Node types

Node What it does
Send email Email with subject/body; supports merge variables
Wait Delay for N days/hours before the next step
Condition Branch on lead fields, custom data, or email engagement
Create task Staff to-do on the lead (shows in CRM → Tasks)
Update status Change lead pipeline status
Notify team Email + in-app alert to staff
Webhook Outbound HTTPS POST with lead payload (SSRF-protected)
SMS Text message via Twilio (only when credentials are configured)
Create invoice Create (and optionally send) a customer invoice with a pay link — requires Stripe Connect
Open Dental patient match Send the lead's email, phone, or both to the factory broker for a practice-authorized read lookup, then continue to the next node
POS guest match Send the lead's email, phone, or both to the factory broker for a restaurant-authorized Toast/Omnivore guest lookup, then continue to the next node

Open Dental node

The node performs a read-only patient-match request through NurtureSite; the client site never receives or stores Open Dental credentials. Choose email, phone, or email then phone as the matching input. The current node records operational success/failure in server logs and always advances to its next edge—it is not a Yes/No branch and does not write a patient record.

The Open Dental lookup is treated as an internal operation in HIPAA mode and remains available. A broker configuration or network failure is logged and does not stop later nodes. Use the separate PMS appointment completed trigger when a flow must react to a completed attributed outcome.

POS guest match node

The node performs a guest-match request through NurtureSite for Toast or Omnivore; the client site never receives or stores POS credentials. Choose email, phone, or email then phone. The node always advances to its next edge. Use POS order triggers for lifecycle follow-up after factory attribution.

Email node

Email node with variable chips

Use the rich-text editor and variable chips for merge tags such as {{name}}, {{first_name}}, {{email}}, {{company}}, {{message}}, and {{score}}. Open/click tracking is added automatically for condition branches later in the flow.

Sender mode (per node): use the site default, a specific staff user (display name on the email), or a custom from address. The from address must use your verified outbound mail domain.

Condition node

Condition node with Yes/No branches

Build rules on lead fields, custom fields (additional_data), presence checks, and email engagement (opened, clicked, replied). Multiple rules can use all or any matching. Outgoing edges are labeled Yes and No on the canvas.

Reply detection uses tokenized Reply-To addresses on your Mailgun receiving domain when outbound email is configured with platform or Mailgun transport. Replies appear on the lead detail page in site admin.

Template variables

Available in email subject/body, SMS, and notify messages:

{{name}}, {{first_name}}, {{email}}, {{phone}}, {{company}}, {{source}}, {{status}}, {{score}}, {{message}}, {{page_url}}, {{invoice_number}}, {{invoice_total}}, {{invoice_pay_url}}

The editor lists every variable with examples.

Testing

Test automation panel with dry-run results

  • Dry run — Walk the graph with a real lead’s data; no emails, SMS, or webhooks sent
  • Live test — Execute side effects for preview/debug
  • Enroll — Run the saved automation for a chosen lead (save the flow first)
  • Per-node test — Select a node and run dry or live from its panel

For an Open Dental node, dry-run validates graph traversal without contacting the factory broker. A live per-node test can call the configured broker and should be used only with an authorized test lead and a sandbox/test connection.

Pick a sample lead from the Test panel before running.

Enrolling and stopping

On CRM → Leads → {lead}, use the Automations card to enroll in an active flow or Stop an active enrollment.

Manual enrollment can bypass marketing-consent checks; automatic triggers cannot.

Inbound vs outbound webhooks

Inbound (trigger) Outbound (node)
Direction External → your site Your site → external URL
Purpose Start a flow / create lead Integrate Zapier-style tools, Slack, etc.
Security Secret token in URL HTTPS only; private IPs blocked unless allowlisted
HIPAA mode May be restricted Webhook requires recorded PHI communication consent; Open Dental remains an internal operation

Troubleshooting automations

If emails do not send, open CRM → Settings and check Automation health:

  1. QUEUE_CONNECTION must be redis (not sync) on the live site
  2. Redis must be reachable
  3. The queue worker must listen on default and crm queues
  4. The scheduler must run every 5 minutes
  5. Outbound email must be configured and Mailgun DNS verified when using Mailgun

See CRM outbound email for the full checklist.

Caveats

  • SMS requires Twilio credentials in site settings; otherwise the node no-ops
  • Demo sites do not process live automations
  • HIPAA mode allows internal status/task/condition/wait/Open Dental nodes; email, SMS, invoice, and webhook nodes require recorded PHI communication consent and otherwise continue without the side effect; team notifications still run with PHI stripped
  • Marketing consent required for auto-enroll on new leads
  • Visitors can opt out via unsubscribe links in sequence emails

Related articles