๐Ÿ”€Call Flow Builder

What is the Call Flow Builder?

The Call Flow Builder is a visual, drag-and-drop editor for designing how incoming calls are routed, greeted, and qualified โ€” without writing a single line of code. Instead of a single "forward to this number, else voicemail" rule, you can build a tree of decisions: greet the caller, ask them to press a key, check business hours, route to a team, tag the call, send a follow-up SMS, and more.

The flow builder canvas with a published IVR flow
circle-info

Use cases at a glance: Press-1-to-connect spam filters, time-of-day routing (open vs. closed), multi-agent ring groups, VIP repeat-caller lanes, consent-driven SMS follow-ups, and mid-call CRM lookups with dynamic branching.

circle-exclamation

Before You Start

circle-info

New campaigns start without routing. When you create a new campaign, you'll land on the campaign page with a routing picker. Pick "Use a call flow" and attach the flow you just published โ€” that's how a freshly-created campaign gets connected to a flow.

1

Confirm your Twilio setup is working

Calls can only be routed through flows if your tracking numbers are already receiving calls. If you haven't imported numbers yet, do that first โ€” see the Phone Numbers guide.

2

Decide which campaign will use the flow

Flows are reusable โ€” one flow can power many campaigns. Pick the campaign you want to upgrade from a simple forward rule to a full IVR, or create a new campaign for it.

3

(Optional) Set up ElevenLabs for AI voices

If you want natural-sounding AI voices instead of Twilio's built-in voices, add your ElevenLabs API key to your workspace. See Voice and audio (ElevenLabs voices)arrow-up-right in the Setup Workspace guide.

4

(US only, required for SMS) Register for A2P 10DLC

If your flow uses SMS or Opt-In / Consent nodes and your sending number is a US 10-digit long code, you must register the number for A2P 10DLC before any text messages will deliver. US carriers silently block messages from unregistered 10DLC numbers โ€” Twilio reports the send as accepted but the message never reaches the recipient.

circle-exclamation

Creating Your First Flow

1

Open the Call Flows page

Go to Call Flows in the sidebar and click Create Flow. Give it a name (e.g., "Main Inbound IVR") and an optional description.

Create Flow dialog with name and description
2

Pick a starting point: Blank or template

The Create Flow dialog has a tabbed picker on the left:

  • Templates โ€” Built-in starting points: Simple Forwarding, IVR Menu, Business Hours, Sales Team, Spam Filter + Forward, Multi-Location, Simultaneous Ring, Voicemail Only, VIP Tag Routing, and Webhook Smart Routing. Each pre-fills a working flow with all fallback edges already wired, so you only need to swap in your own phone numbers and prompts before publishing.

  • My Templates โ€” Custom templates you've saved from your own flows. See Saving a flow as a custom template below.

  • Blank Flow โ€” Start from an empty canvas with just a Start node.

Picking a template pre-fills the name field; you can override it before clicking Create Flow.

3

Land on the canvas

You'll see your starting graph โ€” either a blank canvas with a single Start node, or the template's pre-built nodes ready to customize. Every flow has exactly one Start โ€” it's your caller's entry point.

4

Add your first node

Click the + button on the Start node to open the node picker. Pick a node type (e.g., "Greeting") โ€” Ring Tonic automatically places and connects it to Start.

Node picker showing all available node types grouped by category
circle-check
5

Configure the node

Click any node to open its configuration panel on the right. Each node has different settings โ€” for example, a Greeting node lets you pick an audio provider, type the message, and choose a voice.

Node configuration panel on the right side of the canvas
6

Keep adding nodes

Repeat for each step your flow needs: a Menu for keypress options, Dial to forward, Voicemail as a fallback, and a Hangup at the end. Each node's output ports (the small handles under it) auto-connect to the next node you add.

7

Publish the flow

Click Publish in the top-right. Ring Tonic validates the flow โ€” no orphan nodes, every path leads to a terminal, all required configs are set โ€” and snapshots it as version 1. Only published versions answer real calls.

Publish dialog with version note and strict validation results

Saving a flow as a custom template

Once you've built a flow you'd like to reuse โ€” e.g., a polished intake pattern your agency uses across many client campaigns โ€” save it as a custom template so it appears under My Templates in the Create Flow dialog for future flows.

1

Open the flow's card menu

On the Call Flows index, click the โ‹ฏ menu on the flow's card and pick Save as template.

2

Name and describe the template

Give the template a clear name (e.g., "Lead-gen intake with VIP lane") and a short description explaining what it's for. The current flow's nodes and edges become the template's starting graph.

3

Reuse it in any future flow

The next time you click Create Flow, your saved template appears under the My Templates tab. Pick it to start a new flow pre-populated with the saved graph.

circle-info

Custom templates are workspace-scoped. A template saved in one workspace isn't visible to other workspaces. Built-in templates are visible everywhere.


Understanding the Canvas

The canvas has a few core areas:

Area
What it does

Toolbar (top)

Save indicator, zoom controls, Simulate, Publish, Version History, Analytics

Canvas (center)

Your flow graph โ€” nodes, edges, and output port connections

Node picker (left panel)

All available node types, grouped by category

Config panel (right side)

Appears when you select a node; all its settings live here

Minimap (bottom-right)

Bird's-eye view of the whole flow for quick navigation

circle-info

Auto-save: Every change you make is saved to the draft automatically. You only need to click Publish when you're ready to put the changes live. Real calls continue to use the previously published version until you publish again.


Node Types

Every flow is built from nodes. Here's what each one does:

Call flow basics

These are available on all plans and form the core of any flow.

Node
What it does

Start โ–ถ

Entry point. Required. Holds flow-level settings like timezone.

Greeting ๐Ÿ”Š

Plays an audio message โ€” typed text (TTS) or an uploaded MP3.

Menu โŒจ

"Press 1 for Sales, press 2 for Support." Branches on the digit pressed.

Dial ๐Ÿ“ž

Forwards the call to a single phone number, with optional whisper.

Voicemail ๐Ÿ“ง

Plays a greeting then records the caller's message (with transcription).

Hangup โœ‹

Ends the call, with an optional farewell message.

Spam Filter ๐Ÿ›ก

Pre-configured "Press 1 to connect" Menu โ€” blocks silent robocallers.

Team and time routing

Available on all plans.

Node
What it does

Business Hours ๐Ÿ•

Routes based on time: open hours โ†’ one path, closed โ†’ another, with optional holiday override.

Simultaneous Ring ๐Ÿ“ฑ๐Ÿ“ฑ

Rings several phone numbers at once; first to answer wins. Supports "whisper confirm" to prevent voicemail stealing.

Round Robin ๐Ÿ”„

Rotates through a list of destinations. Least-recent or weighted distribution.

circle-exclamation

Data and logic

Available on all plans.

Node
What it does

Condition โ“

Branches on caller attributes โ€” first-time vs. repeat, area code, known contact, custom metadata. First rule that matches wins.

Tag / Label ๐Ÿท

Attaches workspace tags and/or key-value metadata to the call. Tags show up in Call History, webhooks, and reports.

SMS ๐Ÿ’ฌ

Sends a text message, with template variables like {{caller_number}} and {{campaign_name}} resolved. Non-blocking โ€” the call continues immediately.

Opt-In / Consent โœ…

Asks the caller to press 1 to accept (or 2 to decline) a consent prompt. Stores the decision on the call for compliance.

Flow composition

Available on all plans.

Node
What it does

Go-To Sub-Flow โ†—

Jumps into a different published flow. Useful for sharing common intake logic across campaigns.

Sub-flows in depth

A Go-To Sub-Flow node hands the call off to another published flow. There are two ways it can behave:

Return on completion setting

What happens when the sub-flow finishes

Off (default)

The sub-flow's terminal node ends the call. The Go-To is effectively a hand-off โ€” the parent flow is done.

On

When the sub-flow reaches a terminal node, the engine pops back into the parent and continues from the Go-To node's Return output port. This is how you build reusable building blocks.

circle-info

Use sub-flows to share logic. Build an "After-Hours Voicemail" sub-flow once, then have every campaign's main flow Go-To it from the closed branch of Business Hours. Update the sub-flow once and every campaign that uses it picks up the change on next publish.

circle-exclamation

Analytics for sub-flows: Each flow's analytics counts only the nodes the call traversed in that flow. A parent flow with a Go-To shows the parent's path up to (and including) the Go-To node; the sub-flow's analytics shows the slice the call took inside the sub-flow. The Go-To's row in the parent's Node Metrics has a โ†’ Sub-flow name link that takes you straight to the sub-flow's analytics for the same window.

circle-check

Agency-only nodes

These nodes depend on Agency-only infrastructure and aren't available on the Indie plan.

Node
Why it's Agency-only

Agent Queue ๐ŸŽง

Routes the caller to a browser dialer agent currently online. Requires the Dialer feature, which is included in the Agency plan. Use this when your team uses the Ring Tonic dialer instead of forwarding to PSTN numbers.

Webhook ๐Ÿ”—

Calls an external URL mid-flow. Two modes: async (fire-and-forget) for logging/notifications, sync for external routing decisions where your API returns which branch to take. Requires the API & Webhooks feature.

circle-info

Template variables: Text fields on Greeting, Menu, Dial whisper, SMS, Webhook, and Voicemail support {{placeholders}} that resolve at call time. Common ones: {{caller_number}}, {{caller_name}}, {{campaign_name}}, {{tracking_number}}, {{is_repeat_caller}}. Use the insert button in each text field to pick one without typing.

circle-info

Want {{caller_name}} to be populated? Caller names come from the carrier's CNAM database, which is an opt-in lookup ($0.01 per call). Turn it on per tracking number under Phone Numbers โ†’ Toggle CNAM Lookup. Without it, {{caller_name}} resolves empty. Caller location fields ({{caller_city}}, {{caller_state}}) are free but only populate when the carrier provides them โ€” cell-phone callers often arrive without geo data.

Editing the webhook payload

The Webhook node and the SMS node use a smart JSON editor for the request body and message text:

  • Live syntax check. A red marker in the gutter highlights any line where the JSON isn't valid โ€” for example, a missing comma or an unclosed brace โ€” so you can fix it before saving instead of finding out after a test call.

  • Template variables in amber. Placeholders like {{caller_number}} and {{campaign_name}} are coloured in italic amber so you can see at a glance which values resolve at call time.

  • Format button. Click Format to pretty-print your JSON with consistent indentation. Template variables are preserved exactly as you wrote them.

Webhook payload editor with template variables highlighted and the Format button visible

Verifying the request came from Ring Tonic (HMAC signing)

When your Webhook node hits an endpoint you control, you may want the receiver to confirm the request actually came from Ring Tonic โ€” not a spoofed call. Toggle Sign with HMAC on the Webhook node, paste a secret of your choice, and Ring Tonic adds two headers to every outgoing request:

Header
What it contains

X-Ringtonic-Signature

sha256=<hex> โ€” an HMAC of the request body, signed with your secret

X-Ringtonic-Timestamp

Unix timestamp at the moment the request was sent (used as part of the signed value to prevent replay attacks)

To verify on the receiving side, recompute HMAC-SHA256(secret, "{timestamp}.{body}") and compare it to the value in X-Ringtonic-Signature. Reject the request if they don't match or the timestamp is older than your tolerance window (5 minutes is a reasonable default).

circle-info

Per-node secrets. Each Webhook node has its own secret, so you can use different secrets for different endpoints (CRM vs. Slack vs. internal API). Share the same value with the receiver and keep it out of public source control.

circle-exclamation

Attaching a Flow to a Campaign

A flow doesn't do anything until a campaign is pointed at it. Attachment lives on the campaign's detail page โ€” not the edit form โ€” so you can swap flows without re-saving the whole campaign.

1

Open the campaign

Go to Campaigns and click the campaign you want to upgrade.

2

Pick "Attach a call flow" on the routing picker

If the campaign has no routing yet, you'll see the routing picker with three mode cards: Forward to a number, Attach a call flow, and Build a new flow. Click the middle card.

If the campaign is already on simple routing, click Switch routing mode on the routing summary card and confirm โ€” the picker opens automatically. See Configure Routing in the Campaigns guide for the full workflow.

Routing picker on the campaign page โ€” three mode cards
3

Pick a flow from the picker

A picker dialog opens listing every call flow in your workspace. Published flows are selectable; unpublished flows are shown greyed-out with a tooltip explaining they must be published first.

Attach Call Flow dialog showing workspace's published flows
4

Confirm

Select the flow you want, then click Attach. The campaign page switches to the Call Flow card showing the flow name, version number, and publication date. Real calls to this campaign's tracking numbers immediately start going through the flow.

Call Flow card in its attached state with Edit, Change, and Switch routing mode actions
5

Call the tracking number to test

Call any tracking number attached to the campaign. Your flow answers the call โ€” you should hear your greeting, menu prompts, or whatever the first non-logic node generates.

Build a new flow from the campaign page

If you don't have a flow built yet, you don't need to leave the campaign page. Pick Build a new flow on the routing picker โ€” the Create Flow dialog opens directly.

1

Pick a template (optional)

Choose Blank Flow or one of the built-in templates (Simple forward, IVR menu, Business hours, etc.). Custom templates from your workspace appear under My Templates.

2

Name your flow and click "Create Flow"

Ring Tonic creates the flow and redirects you straight to the editor canvas โ€” pre-marked to auto-attach to this campaign on publish.

3

See the auto-attach banner

A blue banner at the top of the editor confirms: "Publishing this flow will attach it to {campaign name}" โ€” so you know exactly which campaign the flow will land on.

Editor with the auto-attach banner pinned to the top of the canvas
4

Build, publish, done

Configure your nodes and click Publish. As soon as the version goes live, Ring Tonic links it to the campaign and sends you back to the campaign page. No need to navigate back and re-attach.

circle-info

Cancelling out: If you close the Create Flow dialog or back out of the editor without publishing, the campaign stays on the routing picker โ€” nothing is changed.

Changing or removing the flow

Once a flow is attached, the Call Flow card shows these actions:

Action
What it does

Edit Flow

Jumps to the flow canvas so you can update the graph and re-publish

Change

Re-opens the picker so you can swap in a different flow without detaching first

Switch routing mode

Detaches the flow and opens the Forward to a number dialog so you can configure simple routing in one step. The detached flow itself isn't deleted โ€” it can still be attached to other campaigns.

After detaching (without picking a new mode), the campaign returns to the routing picker so you can pick a different mode or attach a different flow.

circle-check
circle-info

Many-to-one: A single flow can serve multiple campaigns. Agencies often build one well-tested "Main Intake" flow and point every campaign at it, then override with custom flows only where needed.

circle-exclamation

Publishing and Versioning

Every published flow is an immutable snapshot. Editing the flow always creates a draft โ€” real calls keep using the previously published version until you re-publish.

The publish lifecycle

Publishing

  1. Click Publish in the top-right of the canvas

  2. Add an optional publish note (e.g., "Added VIP lane for repeat callers")

  3. Ring Tonic runs strict validation:

    • Every node reachable from Start

    • No orphan outputs

    • Every Dial has a valid phone number

    • Every Menu has a no-input path

    • Every sync Webhook has a timeout/error port

  4. If validation passes, the new version becomes active and real calls immediately start using it

Publish validation showing strict rule checks
circle-exclamation
circle-info

Auto-attach on first publish: If you opened this editor from a campaign's "Build a new flow" card, you'll see a blue banner at the top of the canvas. The first time you publish, Ring Tonic links the new version to that campaign automatically and returns you to the campaign page โ€” no manual attach step needed.

Version history and rollback

Click Version History on the canvas toolbar to see every version ever published.

Field
What it shows

Version number

v1, v2, v3โ€ฆ

Status

Active, publishing, failed, rolled back, superseded

Published by

The user who published it

Published at

Absolute date + relative time ("2 days ago")

Publish note

The note you wrote when publishing

Hover any row to reveal the Rollback button. Rolling back copies that version's graph back into your draft so you can review, tweak, and re-publish. The currently active version has no Rollback button (you can't roll back to yourself).

Version history sheet showing timeline of published versions
circle-info

Version retention by plan: Indie keeps the last 5 versions; Agency keeps the last 50. Older versions are compacted but the active version is always preserved.


Testing Before You Publish

Simulation mode

Click Simulate on the canvas toolbar to open the simulation panel at the bottom of the page and walk through your flow step-by-step without placing a real call. The simulator:

  • Highlights the active node on the canvas โ€” the current step gets a pulsing amber ring; nodes the simulation has already visited get a dimmed amber ring, so the path you've taken is visible at a glance.

  • Shows the actual TwiML that would be returned to Twilio at each interactive step (Greeting, Dial, Menu, Opt-In, Voicemail, Spam Filter, etc.) โ€” handy for verifying voice IDs, dial timeouts, and template-variable substitution.

  • Branches at decision points โ€” click the lane you want to take at Menu, Condition, Opt-In / Consent, Business Hours, and sync Webhook nodes. Single-output nodes show one Next โ†’ {NextNodeType} button (e.g., "Next โ†’ Greeting", "Next โ†’ Opt In") so you always know what's coming.

  • Auto-advances logic-only nodes โ€” Tag, Condition, Go-To Sub-Flow, and the Start node have no caller-facing output, so the simulator skips them silently and shows the next interactive node.

  • Tracks accumulated call state โ€” applied tags, metadata key/value pairs, and consent decisions are surfaced under "Accumulated state" at the next interactive step, then again in the final summary.

  • Ends with "Flow Complete" showing the full path taken (every node visited, including the silent ones), the complete tag list, and the final metadata payload.

Simulation panel walking through a test call, showing the current step's TwiML and accumulated state
circle-check
circle-info

Reading the path: the final "Path taken" line lists every node the engine visited, including the auto-advanced ones (e.g., start โ†’ condition โ†’ tag โ†’ dial โ†’ hangup is 5 nodes even though you only clicked through 2 interactive screens). If a step count looks higher than the screens you saw, that's why.

Real test call

After simulation passes, publish the flow and call your tracking number. You'll hear the caller-side experience directly. The simulator covers logic; a real call is the only way to validate audio quality, whisper timing, and recording.


Flow Analytics

Once your flow is published and receiving calls, open Flow Analytics from the toolbar to see how callers move through it.

Flow Analytics panel with calls, paths, node metrics, and drop-off funnel

What you'll see

Section
What it tells you

Calls

Total calls that entered the flow in the selected range

Avg Duration

Average total call duration

Completion %

Percentage of calls that reached a terminal node (Hangup, Voicemail, or answered Dial)

Top Paths

The most-common routes callers took through the flow

Node Metrics

Per-node: calls entered, average time spent there, drop-off rate

Drop-off Funnel

Stage-by-stage funnel showing where callers leave โ€” or reach a terminal

circle-info

Reading drop-off correctly: A node's drop-off percentage means "% of calls that entered this node and did NOT continue to any outgoing port." Terminal nodes (Hangup, Voicemail) are successful completions, not drops. The funnel shows a +N completed here chip at stages where terminal splits exist.

Using analytics to improve flows

  • High drop-off at a Menu: Your prompt is unclear or the options don't match caller intent. Rewrite the prompt.

  • Long average time at a Greeting: The message may be too long. Trim it, or split into a shorter intro.

  • Low Dial answer rate: Your whisper is too long or your team isn't online. Simplify the whisper or review agent availability.

  • Spam Filter catching 30% of calls: That's robocaller traffic being filtered out correctly. Usually a good sign.


Recipes โ€” Real-World Flow Patterns

These are the patterns we see most often in production. Each one starts from a built-in template, then layers on the nodes you need.

chevron-rightRecipe 1 โ€” Robocall-resistant business inboundhashtag

Goal: filter out auto-dialers, route to your team during business hours, take a voicemail otherwise.

Start from the Spam Filter + Forward template, then insert a Business Hours node between the Spam Filter and the Dial.

circle-check
chevron-rightRecipe 2 โ€” VIP lane for repeat callershashtag

Goal: known repeat callers skip the menu and ring a senior rep directly; new callers get the standard IVR.

Start from the VIP Tag Routing template. The Condition node already branches on is_repeat_caller. Tweak the dial numbers and the IVR menu options for your team.

circle-info

Want to branch on more than just repeat-vs-new? Open the Condition node's Rules panel and add another rule (e.g., caller_number starts_with +1206 for a Seattle local lane). The first rule that matches wins; everything else falls through to the default port.

chevron-rightRecipe 3 โ€” CRM-driven smart routinghashtag

Goal: look up the caller in your CRM during the call, then route based on their tier (VIP / Standard / Lost lead).

Start from the Webhook Smart Routing template. Replace the placeholder URL https://example.com/api/lookup with your CRM endpoint. Tune the response rules to match your API contract โ€” e.g., if your API returns {"tier": "vip", "owner": "..."}, leave the rule as json.tier equals vip โ†’ vip.

circle-exclamation
circle-info

Verify the request came from Ring Tonic. Toggle Sign with HMAC on the Webhook node and verify X-Ringtonic-Signature on your endpoint. See Verifying the request came from Ring Tonic above.

chevron-rightRecipe 4 โ€” Reusable after-hours sub-flowhashtag

Goal: one after-hours flow shared by every campaign, instead of duplicating the same Voicemail + SMS confirmation in 20 different campaign flows.

  1. Build the sub-flow first: a small flow with Start โ†’ Voicemail โ†’ SMS โ†’ Hangup that takes a message and texts the caller a confirmation. Publish it as "After-Hours Sub-Flow".

  2. In each campaign's main flow, on the Business Hours closed branch, drop a Go-To Sub-Flow node and point it at the after-hours flow. Leave Return on completion off โ€” the sub-flow ends the call.

Update the sub-flow once and every campaign picks up the change on the next publish โ€” no need to edit 20 separate flows.

circle-check
chevron-rightRecipe 5 โ€” Team rotation with sequential fallbackhashtag

Goal: ring three reps at once for the first 25 seconds; if no one picks up, fall through to the next-most-recent agent (round-robin) for another retry; only then voicemail.

Start from the Sales Team (Round Robin) template. Insert a Simultaneous Ring node before it.

circle-info

Sim Ring vs. Round Robin: Sim Ring rings everyone at once for the first attempt โ€” fastest pickup, best for in-office teams that are usually free. Round Robin rings one at a time with retries โ€” better for distributed teams where calls should be balanced fairly across agents over time. Combining them gives you the best of both.


Power Tips

circle-check
circle-check
circle-check
circle-check
circle-exclamation
circle-exclamation

Upgrading from Simple Routing to a Call Flow

Simple routing (Forward to a number with optional voicemail, recording, whisper, and spam filter) is a fully supported routing mode โ€” it isn't deprecated, and you don't have to upgrade. Move to a call flow when you outgrow what simple routing can express: IVR menus, business-hours branching, multiple destinations, tags, conditions, or SMS follow-ups.

1

Open the campaign and switch routing mode

On the campaign page, click Switch routing mode on the simple routing card, confirm, then pick Build a new flow from the routing picker.

2

Pick a starting template

The Simple Forwarding template is the closest match to your existing setup โ€” it gives you a Start โ†’ Dial โ†’ Voicemail flow you can tweak. Or start blank if you want to build from scratch.

3

Carry over your settings

Fill in the Dial node with your forward number, whisper, and recording. Add a Voicemail node if your simple routing had voicemail. Add a Spam Filter node before the Dial if you had spam filter on. Click Publish โ€” Ring Tonic auto-attaches the flow to your campaign, so you don't have to navigate back.

circle-info

Your simple routing settings stay saved. They go inactive while the flow handles calls, and reactivate automatically if you ever detach the flow.

circle-check

Troubleshooting

chevron-rightCaller hears dead air or disconnects mid-flowhashtag

Possible causes:

  • A Dial node's forwarding number is wrong or unreachable โ€” verify the E.164 number and that the destination actually answers

  • A Webhook node is pointed at an unreachable URL โ€” check the URL with curl and add a timeout_error edge as a fallback

  • The flow has a Go-To pointing at an unpublished sub-flow โ€” publish the sub-flow first

Fix: Use Simulation mode to walk through each branch. Any node that can't produce output will be obvious. Also check the call's Timeline tab in Call History for the exact node where the call stopped.

chevron-rightPublished flow shows "failed" statushashtag

Problem: The publish job couldn't finish โ€” usually an ElevenLabs API error when generating voice audio.

Fix: Click the failed version in Version History to see the exact error message (e.g., "ElevenLabs API returned 401 โ€” check your API key"). Verify your ElevenLabs API key in Workspace Settingsarrow-up-right, then retry the publish from the version history row.

chevron-rightMy flow-set tags aren't showing in Call Historyhashtag

Check: Open the call's detail sheet โ†’ Timeline tab. You should see the Tag node's tags listed alongside AI-applied tags. If they're missing, re-publish the flow and place a new test call โ€” tags are captured at call time, not retroactively.

chevron-rightSMS node reports "delivered" but recipient didn't get the texthashtag

Most common cause: A2P 10DLC registration. US carriers silently block SMS from unregistered 10DLC numbers, even though Twilio reports the send as accepted. Ring Tonic surfaces the true delivery status in the call's Timeline tab โ€” look for "SMS Failed" with error code 30034.

Fix: Register your Twilio number for A2P 10DLC via the Twilio Console. Alternatively, use a toll-free number, which has a simpler verification path. See the Twilio A2P guidearrow-up-right for details.

chevron-rightCan't find a node I needhashtag

Check your plan: every node is available on every plan except Agent Queue and Webhook, which require Agency because they depend on Agency-only infrastructure (the browser dialer for Agent Queue, API + webhook access for Webhook). The node picker shows these two gated nodes with a lock icon โ€” clicking one opens an upgrade prompt.

If a node you expected (Business Hours, Sim Ring, Round Robin, Tag, Condition, SMS, Opt-In, Go-To Sub-Flow) is missing from the picker, scroll the picker โ€” it groups nodes by category. They're available on all plans.

chevron-rightRollback button is missing on my active versionhashtag

Expected behavior: You can't roll back to the version that's already active. If you want to revert recent edits, either roll back to the previous version, or clear your draft and re-publish the active version to reset the draft state.


Best Practices

circle-check
circle-check
circle-check
circle-check
circle-check

๐Ÿš€Campaignschevron-right๐Ÿ“ฑBrowser Dialerchevron-right๐Ÿ Setup Workspacechevron-right๐Ÿ“ŠAnalyticschevron-right

Last updated