Practice management

Outreach campaigns: condition-triggered, multi-channel, continuous

How outreach campaigns trigger off chart conditions, send across SMS / email / phone, and quietly maintain themselves between visits.

Updated
Updated
Reading time
6 min read
Tags
outreachcampaignsrecallsmsemail

A cohort broadcast is a one-time or recurring blast to a slice of your panel you defined today. An outreach campaign is the opposite end of that spectrum: a long-running rule that watches the chart and reaches out the moment a patient becomes eligible. Both ship in EnWella; this article is the campaign side.

When a campaign beats a broadcast

Use a broadcast for one-off or scheduled batches you fully define ahead of time (e.g. "All flu shot patients last year, this Friday"). Use a campaign when the audience is open-ended and changes daily (e.g. "Anyone overdue for an A1c, every week, until they're seen"). Campaigns reach the right patient automatically as they become eligible; broadcasts reach the patients you grouped at the moment you sent.

Trigger conditions

A campaign is audience filter + cadence. The filter is a JSON-serialized list of {field, operator, value} clauses combined with AND (e.g. lastvisit > 6 months AND hasdiagnosis = "diabetes" AND noa1cin_window = true). The cadence sets how often each eligible patient is messaged (e.g. every 14 days, with a max of 3 nudges). When a patient drops out of the filter — booked the visit, completed the screener — the campaign stops messaging them automatically.

Channels — SMS, email, scheduled callback

Each campaign picks one or more channels. SMS is delivered immediately; Email lands in inbox within seconds; Phone queues an outbound call from AI Frontdesk during the patient's waking hours. Channels stack: a campaign can SMS first, email two days later if no response, then phone-call on day five. The patient's notification preferences and opt-outs are respected per channel — a patient who replied STOP to your SMS never gets one again, even if the campaign is configured to send.

Message templates

Each channel has its own message body using the same tokens ({{patient.firstname}}, {{provider.lastname}}, {{booking_link}}). For longer-form emails the body is markdown. AI-drafted message bodies queue for your approval before they go out — nothing the AI writes is sent on its own.

Status, pause, resume

Status flow: Draft (configured, not sending) → Running (matching patients on its cadence) → Paused (matching but not sending) → Completed (manually ended). Pausing keeps the audience filter live so you can see the daily eligible count drift; resuming picks up where the cadence left off without re-spamming patients who were already messaged.

Reach and response analytics

Each campaign card shows 30-day reach (distinct patients messaged), total message volume, response rate (% who took the desired action — booked, replied, completed the screener), and a sparkline of weekly reach so you can see the campaign settling into a steady-state. Drill in for the per-patient list and the per-channel breakdown.

Opt-outs and TCPA

STOP / unsubscribe is honored across the whole establishment, not per campaign — once a patient opts out of clinical SMS, every campaign stops. Marketing-flavored campaigns (loyalty, reactivation of long-lapsed patients) are gated by an additional consent the patient has given on the portal; if they have not consented, the campaign skips them silently rather than asking the AI to write its way around it.