Platform Guides
Campaign Automation & Workflow Builder
Create sophisticated outbound campaigns with visual workflow automation, conditional branching, and intelligent retry strategies.
What is a Campaign?
A campaign is an automated outreach system that calls contacts from a list using your AI agents. With Flametalk's Workflow Builder, you can create complex automation flows that respond intelligently to call outcomes.
Automated Dialing
System calls contacts automatically based on your schedule
Visual Workflows
Drag-and-drop workflow builder for complex automation
Conditional Logic
Branch workflows based on call outcomes
Goal Tracking
Track conversion rates and goal achievement
The Workflow Builder
The Workflow Builder is a visual drag-and-drop interface that lets you design exactly how your campaign should behave. Instead of simple linear campaigns, you can create intelligent flows that adapt based on what happens during each call.
Workflow Components
Trigger Node
The starting point - when a contact enters the campaign
Action Nodes
Make calls, send webhooks, wait, update contact
Condition Nodes
Branch based on call outcome, goal status, contact data
Terminal Nodes
End the workflow - success, failed, or removed
Understanding Call Outcomes
Every call in your campaign results in one of these outcomes. Your workflow can branch differently based on each:
| Outcome | Description | Typical Action |
|---|---|---|
| Goal Reached | Contact answered and the agent achieved the campaign goal | Mark success, send webhook to CRM |
| Answered - No Goal | Contact answered but goal wasn't achieved (interested, callback, etc.) | Schedule follow-up call |
| No Answer | Call rang but wasn't answered (rang out or voicemail) | Retry after delay |
| Busy | Line was busy | Retry sooner (30 min) |
| Failed | Technical failure (invalid number, carrier issue) | Mark as failed, alert team |
| DNC Requested | Contact asked to be removed from calling | Add to DNC list, stop campaign |
Building Your First Workflow
Let's build a complete workflow step by step. We'll create a lead qualification campaign that calls contacts, handles various outcomes, and retries appropriately.
Create Campaign & Open Workflow Builder
- a
Navigate to Campaigns in the sidebar
- b
Click + New Campaign
- c
Name your campaign and select the outbound channel
- d
Click Open Workflow Builder
Add the Trigger Node
Every workflow starts with a Trigger Node. This is automatically added when you create a new workflow. The trigger fires when:
- • A contact is imported into the campaign
- • A contact is added via API
- • A contact is enrolled from another workflow
Add a "Make Call" Action
- a
Click the + button below the trigger
- b
Select Make Call from the action menu
- c
Configure the call action:
Agent
Select which AI agent will handle the call
Goal
Define what success looks like (e.g., "Schedule appointment")
Max Duration
Maximum call length (recommended: 5-10 min)
Context Variables
Pass contact data to the agent (name, company, etc.)
Add a Condition Node for Call Outcome
After the call action, add a condition to branch based on what happened:
- a
Click + below the Make Call action
- b
Select Condition
- c
Choose Call Outcome as the condition type
This creates multiple branches - one for each possible outcome:
Configure Each Branch
Now connect each outcome to the appropriate next step:
- 1. Click the "Goal Reached" branch output
- 2. Add a Send Webhook action to notify your CRM
- 3. Add a Success Terminal to end the workflow
Example Webhook Payload:
{ "event": "goal_reached", "contact_id": "{{contact.id}}", "phone": "{{contact.phone}}", "outcome": "{{call.outcome}}", "call_duration": "{{call.duration}}", "transcript_url": "{{call.transcript_url}}"}- 1. Click the "No Answer" branch output
- 2. Add a Check Attempts condition
- 3. If attempts < 3: Add Wait (2 hours) then loop back to Make Call
- 4. If attempts ≥ 3: Add Failed Terminal
- 1. Click the "Answered" branch output
- 2. Add Check Call Tags condition
- 3. If "callback_requested": Add Wait (24 hours) then Make Call again
- 4. If "not_interested": Add Removed Terminal
- 5. Otherwise: Add Wait (1 week) then retry
- 1. Click the "DNC" branch output
- 2. Add Update Contact action to mark as DNC
- 3. Add Removed Terminal
Advanced Workflow Patterns
Multi-Touch Campaign Pattern
Combine voice calls with other channels for higher engagement:
Time-Based Routing
Route contacts to different flows based on the time of day or day of week:
Condition: Current Time├── 9 AM - 12 PM → Call immediately (morning batch)├── 12 PM - 2 PM → Wait 2 hours (lunch break)├── 2 PM - 6 PM → Call immediately (afternoon batch)└── 6 PM - 9 PM → Route to evening agentLead Priority Scoring
Use contact properties to prioritize high-value leads:
Condition: Contact Score├── Score > 80 → Call immediately (hot lead)│ └── Max retries: 5├── Score 50-80 → Call within 4 hours (warm lead)│ └── Max retries: 3└── Score < 50 → Call within 24 hours (cold lead) └── Max retries: 2Workflow Actions Reference
| Action | Description | Key Settings |
|---|---|---|
| Make Call | Initiate an outbound call to the contact | Agent, Goal, Max duration, Context |
| Wait | Pause workflow for specified duration | Duration (minutes/hours/days) |
| Send Webhook | POST data to an external URL | URL, Payload template, Headers |
| Update Contact | Modify contact properties or tags | Fields to update, Tags to add/remove |
| Send WhatsApp | Send WhatsApp template message | Channel, Template, Variables |
| Enroll in Campaign | Add contact to a different campaign | Target campaign, Transfer data |
Workflow Conditions Reference
| Condition | Branches On | Use Case |
|---|---|---|
| Call Outcome | Goal reached, Answered, No answer, Busy, Failed, DNC | Primary routing after calls |
| Attempt Count | Number comparisons (<, =, >) | Limit retry attempts |
| Contact Property | Any contact field value | Segment-based routing |
| Call Tags | Tags extracted from call | Route by conversation outcome |
| Time of Day | Time ranges | Business hours routing |
| Day of Week | Specific days | Weekend handling |
Prerequisites
- A deployed agent (see Creating Your First Agent)
- A configured voice channel (see Voice Channel Setup)
- A list of contacts to call
- Defined goals for your agent (see Goals & Evaluation)
Scheduling & Rate Limits
Business Hours
| Day | Recommended |
|---|---|
| Mon - Fri | 9 AM - 8 PM |
| Saturday | 10 AM - 4 PM |
| Sunday | Usually disabled |
Rate Limits
Concurrent Calls
Max calls at the same time
Recommended: 5-10
Calls Per Minute
Rate of new call initiation
Recommended: 10-20
Carrier Considerations
Setting rates too high may trigger carrier spam detection. Start conservatively and increase gradually while monitoring answer rates.
Monitoring Your Campaign
Track campaign progress in real-time from the campaign dashboard.
1,234
Total Contacts
456
Completed
89
Goals Reached
5
In Progress
API Integration
Control campaigns programmatically using the Campaigns API.
Start a Campaign via API
curl -X POST https://dev.flametalk.ai/v1/campaigns/camp_xxx/start \ -H "Authorization: Bearer sk_xxx_xxx"Enroll Contact via API
curl -X POST https://dev.flametalk.ai/v1/campaigns/camp_xxx/contacts \ -H "Authorization: Bearer sk_xxx_xxx" \ -H "Content-Type: application/json" \ -d '{ "phone": "+15551234567", "name": "John Smith", "company": "Acme Corp", "priority": "high" }'Best Practices
Start Small, Then Scale
Test with 50-100 contacts first. Review transcripts, refine your agent, then scale up to larger batches.
Use Goals & Competencies
Define clear goals for each campaign and track agent competencies. This helps identify where your agent needs improvement.
Limit Retry Attempts
3 attempts is usually optimal. More attempts have diminishing returns and can hurt carrier reputation.
Respect Contact Preferences
Honor DNC requests immediately. Flametalk automatically marks contacts who request removal.