Verify Before You Build
Two details are specific to your org and version of the RingCentral managed package. Confirm both before building — the rest of this guide assumes them.
Action element and search for the RingCentral send-SMS action (label varies by package version). Confirm its required inputs — typically a To number, Message body, and your messaging-enabled From number.System Overview
Don't try to run a 5-day, branching, reply-aware campaign in one Flow. The reliable pattern is three cooperating Flows plus a small set of custom fields on the Lead that act as the campaign's memory — letting any Flow pick up exactly where the last one left off.
Enrolled. Sends Day 1, starts the clock.The campaign's memory lives in these Lead statuses:
Custom Fields to Create First
Add these to the Lead object before building any Flow. They give every Flow shared state and make the funnel reportable.
| API Name | Type | Purpose |
|---|---|---|
Campaign_Status__c | Picklist | Enrolled · In Progress · Booked · Not Interested · Snoozed · Completed – No Response |
Campaign_Day__c | Number (0–5) | Which touch the lead is on |
Next_Touch__c | Date | Date the next message is due (the daily Flow controls the send hour) |
Snooze_Until__c | Date | When a snoozed lead re-enters the cadence |
Last_Reply_Intent__c | Text | Stores the classifier's output for visibility and reporting |
Last_Inbound__c | Date/Time | Timestamp of the most recent reply |
Flow 1 — Enrollment
Using a status flip as the entry point lets you control exactly when a lead is pulled into the campaign — set Enrolled manually, by list, or from an upstream intake Flow.
-
AssignmentInitialize CampaignSet
Campaign_Status__c = In Progress,Campaign_Day__c = 1, andNext_Touch__c = TODAY() + 1. -
ActionRingCentral — Send SMSTo =
{!$Record.MobilePhone}; Message = your Day 1 copy (reference{!$Record.FirstName}in a text template). -
Update RecordsSave the LeadWrite the three field values from Step 1 back to
{!$Record.Id}.
Flow 2 — Daily Cadence
The scheduled run-time sets your send hour, so it stays within quiet hours automatically. The Flow runs once per matching Lead, with that Lead as {!$Record}.
-
DecisionWhat's due today?Branch on four outcomes: Resume Snooze (
SnoozedANDSnooze_Until ≤ TODAY()) · Send Next Touch (In ProgressANDNext_Touch ≤ TODAY()ANDCampaign_Day < 5) · Final Exhausted (In ProgressANDCampaign_Day ≥ 5ANDNext_Touch ≤ TODAY()) · Default (do nothing). -
Resume SnoozeRe-engageAssignment:
Status = In Progress,Next_Touch = TODAY() + 1→ Send SMS (re-engagement copy) → Update Records. -
Send Next TouchAdvance the sequenceAssignment:
Campaign_Day = Campaign_Day + 1,Next_Touch = TODAY() + 1→ sub-Decision "Which Day Message" branching on the new day value (2, 3, 4, 5), each routing to its own Send SMS action → Update Records. -
Final ExhaustedClose out & hand offAssignment:
Status = Completed – No Response→ Create Records: a Task to the sales queue ("5-day campaign complete, no booking — manual review") → Update Records.
Flow 3 — Reply Classifier & Router
This is where your Einstein Prompt Template lives. It runs on every reply, independent of the daily schedule — so a "yes" at 11 PM on Day 2 is actioned immediately, not at the next checkpoint.
-
Get RecordsLoad the LeadPull the related Lead so you have current campaign fields and the mobile number.
-
DecisionOpt-Out Check (before the AI)If the body contains STOP / UNSUBSCRIBE / CANCEL → set
HasOptedOutOfSms = True,Status = Not Interested, and end. Never let the classifier decide opt-outs — this is a compliance guardrail. -
LoopAssemble the ConversationGet all SMS records for this Lead sorted by date, then concatenate them into a single text variable (
varConversation) — the prompt expects the full thread in{!$Input:Conversation}. (If RingCentral already stores the whole thread in one field, skip this and pass that field directly.) -
ActionPrompt Template — ClassifyCall your classifier with
Conversation = {!varConversation}and the Lead. Store the returned phrase invarIntent. -
AssignmentRecord the intentSet
Last_Reply_Intent__c = {!varIntent}andLast_Inbound__c = NOW(). -
Formula + DecisionRoute the intentMap the phrase to a category with a Formula resource, then branch on the category (see §06) rather than maintaining 24 separate branches.
-
Update RecordsApply the outcomeWrite the Lead changes. Flow 2 respects the new status on its next run.
Intent Routing Map
This translates the 24 approved classifier phrases into Flow outcomes. Group them into these six categories in your Decision element.
| Classifier Output | Outcome | Status | Timing |
|---|---|---|---|
| Open for Appointment | Notify / assign sales rep, create Task to call & book, halt cadence | BOOKED | Immediate |
| No interest (all DQs, hard nos, wrong number) | Suppress, halt cadence | NOT INTERESTED | Immediate |
| Not a good time · Now's not ideal · Timing isn't great · Not today · Busy / swamped · Tied up · Thanks but not right now | Stay in cadence, push next touch | IN PROGRESS | +1 day |
| Check back in a few days | Pause cadence | SNOOZED | +3 days |
| Try me again in a bit · Follow up later | Pause cadence | SNOOZED | +5 days |
| Reach out next week · Connect down the road · I'll revisit soon | Pause cadence | SNOOZED | +7 days |
| Hit me up next month · Maybe in the future | Long pause | SNOOZED | +30 days |
| I'll think about it · Still thinking · On the fence · Decide later · Get back to you · Reach out if I decide · Need to think it through · Talk to spouse · Ask my doctor | Soft nurture nudge, pause | SNOOZED | +4 days |
| No response from lead | Continue cadence as normal | IN PROGRESS | Next scheduled day |
When a snoozed lead's date arrives, Flow 2 drops them back to In Progress and resumes from the warm re-engagement message — not back at Day 1.
SMS Cadence Copy
Drafted to stay on-brand and compliant. The first message identifies the sender and includes the opt-out, which carriers require.
Compliance & Go-Live Checklist
- ✓A2P 10DLC brand & campaign registered and approved with RingCentral.
- ✓The two §00 details confirmed: Send SMS action label and inbound-SMS object/field.
- ✓All six custom fields created on the Lead object.
- ✓Quiet hours enforced — no sends before 8 AM or after 9 PM in the lead's local time.
- ✓Opt-out path writes to a field your Send SMS step actually checks, so an opted-out lead can never re-enter Flows 1 or 2.
- ✓STOP / opt-out branch sits ahead of the AI classifier in Flow 3.
- ✓Booked outcome notifies a real sales rep / queue with a call-and-book Task.
- ✓End-to-end tested with a live test lead through all branches before enabling at scale.