Executions
Executions are running instances of programs. When you launch a program, you create an execution that processes the audience, places calls, and tracks progress.
Understanding executions
Think of the relationship this way:
Program = Recipe (the instructions)
Execution = Cooking session (actually doing it)
You can run the same program multiple times, creating multiple executions. Each execution is independent—it has its own progress, status, and timing.
Execution lifecycle
Executions move through these states:
scheduled ──▶ running ──▶ completed
│
├──▶ paused ──▶ running (resumed)
│
└──▶ cancelled
running ──▶ stopped (when stopAt is reached)scheduled
Waiting for startAt time
running
Actively processing contacts
paused
Manually paused, can resume
completed
All contacts processed
stopped
Reached stopAt, remaining contacts skipped
cancelled
Manually cancelled
Launching an execution
Create an execution by launching a program:
Response:
Monitoring progress
Check execution status and progress:
Response:
Progress counters
Understanding what each counter means:
totalContacts
Audience size at launch (snapshot)
contactsCompleted
Successfully reached (answered, completed flow)
contactsFailed
Exhausted all retries
contactsPending
Waiting to be called (includes retry queue)
contactsInProgress
Currently being called or queued
These counters always sum to totalContacts:
Pausing and resuming
Pause a running execution:
When paused:
No new calls are initiated
Calls already in progress continue to completion
Retry schedules are preserved
Resume a paused execution:
Cancelling executions
Stop an execution permanently:
When cancelled:
No new calls are initiated
Calls in progress continue to completion
Remaining pending contacts are marked as skipped
Cannot be resumed
Listing executions
View all executions for a program:
View all active executions across your organization:
This returns only active executions (running, scheduled, paused).
Execution timing
Key timestamps:
scheduledStartAt
When the execution should begin
scheduledStopAt
When the execution should stop (optional)
actualStartAt
When calls actually started
actualEndAt
When the last call completed
If an execution reaches scheduledStopAt before completing all contacts, it enters stopped status and remaining contacts are not called.
Audience snapshots
When you launch an execution, Gomobile takes a snapshot of the audience. This means:
Contacts added to the audience after launch are NOT included
Contacts removed from the audience after launch ARE still called
This ensures predictable behavior during execution
To include new contacts, launch a new execution.
Multiple concurrent executions
You can't run multiple executions of the same program simultaneously. If you try to launch while one is already running:
Wait for the current execution to complete, or cancel it first.
Best practices
Monitor progress - Check counters periodically during large campaigns
Set stop times - Prevent executions from running indefinitely
Use pause wisely - Good for unexpected issues, not routine stops
Review failures - Understand why contacts failed before retrying
Clean up - Don't leave paused executions hanging
Related concepts
Programs - The configuration that executions run
Retry Strategies - How failures are retried
Call Flows - What happens during calls
Last updated

