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

# Create a Campaign

> Run outbound calls to a contact list from the Ringg AI dashboard.

A campaign calls many contacts using one assistant, one or more caller numbers, and a CSV calling list.

***

## Before You Start

Make sure you have:

<Check>An outbound assistant that has been tested</Check>
<Check>At least one phone number in your workspace</Check>
<Check>A CSV file with phone numbers and any fields used by the assistant</Check>
<Check>Enough call credits for the campaign</Check>

***

## Step 1 - Open Campaigns

1. Click **Campaigns** in the left sidebar.
2. Click **+ Create Campaign**.

***

## Step 2 - Fill in Campaign Settings

On the **Campaign Settings** tab, fill in:

| Field                        | What to Choose                                    |
| ---------------------------- | ------------------------------------------------- |
| **Campaign Name**            | A clear name such as `March Admissions Follow-up` |
| **Assistant**                | The assistant that should make the calls          |
| **Numbers**                  | One or more caller numbers                        |
| **Campaign Start Date/Time** | When calling should begin                         |
| **Campaign End Date/Time**   | When calling must stop                            |
| **Timezone**                 | The timezone for the schedule                     |
| **Email Notifications**      | People who should receive updates                 |

<Tip>
  Use a campaign name that includes the audience, month, and purpose. This makes history and analytics easier to find later.
</Tip>

***

## Step 3 - Upload the Calling List

Click **Next** to open the **Calling List** tab.

Upload a CSV file with one row per contact. Include:

* A phone number column.
* One column for each custom variable used in the assistant prompt.
* Clear column names with no extra spaces.

Example:

```csv theme={null}
phone_number,callee_name,course_name
+919994008915,Sarath,JEE Advanced
+919731553396,Vikram,NEET
+917404156687,Sahil,Class 10 Foundation
```

If the assistant prompt uses `@{{callee_name}}`, the CSV must include a `callee_name` column.

***

## Step 4 - Save and Start

1. Review the campaign settings.
2. Click **Save CSV**.
3. Click **Make Call** to activate the campaign.

What happens next depends on the schedule:

| Schedule                            | Campaign State |
| ----------------------------------- | -------------- |
| Start time is in the future         | **Scheduled**  |
| Start time is now or already passed | **Ongoing**    |

***

## Monitor a Campaign

From the **Campaigns** page, use the **Actions** column to:

* View campaign call history.
* View campaign analytics.
* Terminate a running campaign if needed.

Use **History** for call-level details and **Analytics** for performance trends.

***

## Set Campaign Concurrency

Concurrency controls how many calls can happen at the same time.

1. Click **Manage Concurrency** on the Campaigns page.
2. Use **Workspace Concurrency** to split capacity between API calls and campaign calls.
3. Use **Campaigns Concurrency** to allocate capacity across running campaigns.
4. Click **Save**.

<Note>
  If you do not set campaign concurrency, Ringg AI distributes available call slots across running campaigns.
</Note>

***

## Developer Handoff

If engineers are starting campaigns by API or pulling campaign results into another system, send them:

| Item                              | Why They Need It                                                                         |
| --------------------------------- | ---------------------------------------------------------------------------------------- |
| Campaign name                     | Lets them confirm they are working with the right campaign                               |
| `agent_id`                        | Identifies the assistant that should make the calls                                      |
| Caller number or `from_number_id` | Identifies which number should dial contacts                                             |
| CSV column names                  | Must match assistant custom variables                                                    |
| `bulk_list_id` or list ID         | Identifies the uploaded calling list for start, status, history, and analytics           |
| Webhook requirement               | Tells them whether to send call results to CRM, sheets, data warehouse, or support tools |

For the standard API flow, developers should save the campaign with `POST /campaign/save`, then start it with `POST /campaign/start`.

For large campaigns with 5,000 or more rows, use the beta large-campaign flow:

1. `POST /campaign/upload-csv`
2. `GET /campaign/upload-status/{bulk_list_id}`
3. `POST /campaign/make-call-async`
4. `POST /campaign/check-balance/{bulk_list_id}`

Ask developers to store the returned `bulk_list_id` because it is needed to check upload status, start calls, filter history, and reconcile results.
