> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryopencomputer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Run campaigns

> Prepare contact batches, schedules, traffic splits, and retry rules.

Campaigns organize outbound calls to a contact batch. Configure the agent, telephony route, contacts, schedule, limits, and retry policy before starting. Starting, resuming, or redialing a campaign can place real calls.

## Prepare a campaign

**1. Choose the agent**

Select one agent version or a traffic split between published or archived versions. Test every version you plan to include.

**2. Add the contact source**

Upload or connect the intended contact batch and check that its fields map to the values the workflow expects. Use synthetic or approved test contacts during setup.

**3. Set the call window**

Choose an IANA time zone and the weekly days and time ranges when the campaign may call. Check the window against the local time of the people you are contacting.

**4. Set rate and concurrency**

Choose a calls-per-second rate and maximum concurrent calls within the organization's limits. Confirm that the selected route has enough active caller IDs for the intended traffic.

**5. Review retry behavior**

Choose campaign auto-retry rules separately from the [Retries review queue](https://docs.tryopencomputer.com/guides/retries.md). Check the eligible outcomes, attempt limit, and delay before starting.

**6. Start and monitor**

Start only after reviewing the contact source and configuration. Use campaign progress, runs, traffic statistics, and reports to track outcomes.

## Upload a contact CSV

Open **Campaigns → Create Campaign**, select the agent/version configuration and telephony route, and upload the contact source through **CSV File → Upload CSV File**. The CSV must include a `phone_number` column. Other columns become row context for the workflow; align their names with the placeholders in your prompts and integrations.

```csv theme={null}
phone_number,customer_name,case_reference
+15555550123,Sam Example,CASE-EXAMPLE-001
```

This is an illustrative row, not a destination to dial. Replace it with approved test data and a number you control. Preserve the leading `+` in international numbers when exporting from a spreadsheet. Resolve source-validation errors before starting the campaign, and inspect one queued row's context to check the mapping. Start, resume, and redial actions can place calls.

## Traffic splits and version pinning

A traffic split can contain one to five unique agent/version variants. Assign whole-number percentages that total 100. The split is approximate across the campaign population because each contact is assigned to a variant using a stable selection, not because the campaign promises an exact count in every small batch.

Each variant can follow the **Latest published** version or stay pinned to a numbered version. `Latest published` follows later publications; a numbered selection remains fixed. Editing the split applies to the next batch, including retries, so a contact that has not yet been called can be assigned according to the edited split. Review the split before changing it mid-campaign.

## Schedule and capacity

The schedule uses the selected time zone and weekly slots. Choose each start time before its end time. An enabled schedule has between one and fifty slots across the days of the week selected in the dashboard.

The organization concurrency limit is a hard ceiling. The campaign call-rate limit is a separate setting measured in calls per second. Having fewer caller IDs than the selected concurrency produces a warning; it does not raise the organization's concurrency limit or guarantee that every call will start at once.

When the campaign reaches a calling-hours boundary, pending work may wait for an allowed time. A pause request does not itself establish that every already-active call has ended. Check campaign state and the active runs before making a follow-up change.

## Campaign auto-retries

Campaign auto-retries are configured on the campaign. You can set the maximum retry count (up to 10), retry delay (30 seconds to one hour), and whether to retry Busy, No Answer, or Voicemail outcomes. The maximum is a campaign setting and is independent of the separate Retry Review policy.

If a campaign is paused, its pending retry work waits until the campaign resumes. Campaign retries follow the campaign schedule and call limits. The [Retries page](https://docs.tryopencomputer.com/guides/retries.md) is a separate review workflow that checks a failed call again before starting or queueing a rerun.

## Configure campaign retries in the dashboard

In the campaign's advanced settings, enable **Enable Retries**, set **Max Retries** and **Retry Delay (seconds)**, then choose **Retry On** outcomes: Busy, No Answer, and/or Voicemail. Save the campaign and review the saved settings before starting or resuming it. New-campaign settings can inherit defaults or earlier campaign choices, so check the actual values instead of assuming a universal default.

Use an approved test contact to check a selected retryable outcome, the configured delay, the retry count, and a call outside the allowed schedule. Inspect campaign runs and queue progress; a successful initial dispatch does not verify the automatic retry loop.

## Pause on a high failure rate

Enable **Circuit Breaker** in the campaign's advanced settings to auto-pause when the observed failure rate crosses its threshold. Set **Failure Threshold (%)** (1–100), **Window (seconds)** (30–600), and **Min Calls in Window** (1–100), then save.

Review a paused campaign's runs and route failures before resuming. This control pauses dispatch; it does not establish that existing calls ended or fix the underlying provider failure. Verify the policy using an isolated test batch rather than intentionally disrupting customer calls.

## Monitor and adjust

Use the campaign page to inspect progress, call runs, reports, and traffic-split results. If the rate of failed calls changes, inspect the outcome and provider route before increasing concurrency or redialing. A call attempt can incur carrier and model usage even when it does not reach a person.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.