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)
Status
Description

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:

Counter
Description

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:

Timestamp
Description

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

Last updated