## Campaign Dashboard

After creating a campaign, you’ll land on the campaign management view. From here you can manage contacts, review performance, and adjust configuration.

The Campaign Manager shows all your campaigns with key information:

- **Name** — Campaign title
- **Type** — One Time (simple) or Follow-up (ongoing)
- **Contacts** — Number of contacts in the campaign
- **Channels** — Which communication channels are enabled (phone, email, text)
- **Start Date** and **End Date** — Campaign schedule
- **Created** — When the campaign was created

Use the **search bar**, **channel filter**, and **date filter** to find specific campaigns. Switch between the **Current** and **Archived** tabs to view active or archived campaigns.

## Campaign Statuses

Every campaign has a status that indicates where it is in its lifecycle:

| Status | Description |
| --- | --- |
| **Draft** | Campaign has been created but has not been started yet. You can still edit all settings and configuration. |
| **Active** | Campaign is live and ready for outreach. Depending on the execution mode, outreach may require additional action (see below). |
| **Paused** | Campaign has been temporarily stopped. No outreach will be sent until it is resumed. |
| **Archived** | Campaign has been archived and is no longer active. Visible in the Archived tab. |

### Campaign Lifecycle

Once you activate a campaign by pressing **Go Live**, you cannot return it to Draft status. Make sure all your configuration settings are finalized before going live.

- **Go Live**: From Draft, press **Go Live** to activate your campaign. This is a one-way action — you cannot return to Draft after going live.
- **Pause**: Click the **Pause** button to temporarily stop all outreach. You can resume at any time.
- **Resume**: Unpause a paused campaign to continue sending outreach where it left off.
- **Archive**: Move a completed or no-longer-needed campaign to the Archived tab.

An **Active** campaign does not necessarily mean outreach is happening right now. What happens next depends on the execution mode:

- **Scheduled**: Outreach is sent automatically at the scheduled date and time.
- **Run manually**: You need to click **Start all outreaches** to trigger outreach. The campaign stays active between runs.
- **Run automatically when contacts are added**: Outreach is sent as contacts are added. If there are no contacts in the queue, the campaign is active but idle.
- **Manual Review enabled**: Outreach is planned by the AI but won’t be sent until you approve each individual outreach.

## Managing Contacts

The **Contacts** tab lets you add and manage contacts in your campaign.

### Adding Contacts

Click **\+ Add Contacts** to choose how to add contacts to your campaign. Contacts are deduplicated based on phone first and email secondarily. The Add Contacts panel has two sections:

- **Add contacts now** — Upload CSV, Add manually
- **Automated sources** — Inbound contacts toggle, Email import, API integration

#### Import Actions

When creating an import configuration — whether via CSV upload or Email import — you choose how incoming contacts are handled with one of five import actions:

| Action | Description |
| --- | --- |
| **Add New** | Only add contacts not already in the campaign; skip existing ones. |
| **Add & Update** | Add new contacts and update existing ones. |
| **Update** | Update existing contacts only; ignore contacts not already in the campaign. |
| **Reconcile** | Sync the full list each import: adds new contacts, updates existing ones, and removes contacts not present in the file. |
| **Remove** | Remove contacts found in the file from the campaign. |

#### Upload CSV

Import contacts from a CSV file with custom field mapping.**CSV Requirements:**

- First row should contain column headers
- Required fields: Name, Phone or Email
- Maximum 10,000 contacts per upload

Drag and drop your CSV file or click **browse** to upload from your computer. Then choose an [import action](https://docs.replify.ai/campaigns/managing-your-campaign#import-actions) to control how the contacts are handled.

#### Import via Email

Send CSV files to a unique campaign email address for automatic import. This is useful for recurring imports or when you want to send contacts from another system without remapping columns each time.**How to use:**

1. Click **Email import** under **Automated sources** and create a new import configuration
2. Enter a **Configuration name** to identify this configuration
3. Set **Authorized senders** — only emails from these addresses will be processed
4. Choose an [import action](https://docs.replify.ai/campaigns/managing-your-campaign#import-actions) to control how contacts are handled
5. Upload a sample CSV file and map your columns to system fields (name, email, phone, and custom properties)
6. For **organization-wide** campaigns, configure **Assistant Routing** the same way as a direct CSV upload ( [Assistant routing](https://docs.replify.ai/campaigns/managing-your-campaign#assistant-routing-organization-wide))
7. Save the configuration — future CSV files sent to the campaign email address will automatically use these settings
8. Track import status in the import history.

#### Assistant routing (organization-wide)

When a campaign spans multiple assistants ( **ORG-WIDE**), **Add contacts** shows **Assistant Routing**: _Choose how contacts in this CSV should be assigned to assistants._ You’ll see this when uploading a CSV directly **and** when you load a sample CSV for **Import via Email**. [**External IDs**](https://docs.replify.ai/account-management/multiple-assistants#external-ids-crm-syncing) must already be configured in **Manage Assistants** so routing has keys and values to match.

| Mode | What you configure |
| --- | --- |
| **Single assistant** | One assistant for **every row** — all contacts attach to your selection (“Every contact in this CSV will be added to the selected assistant”). |
| **Route by ID column** | **Assistant column** — which CSV column holds the CRM values to match.<br>**Match against** — which configured **assistant external ID key** those values correspond to (for example picking `hubspotId` from your Manage Assistants definitions). Summary in product: select the CSV column and the external ID **key** to match against. |
| **Route by columns** | **Assistant external id key column** — CSV column with the external ID **name** per row.<br>**Assistant external id value column** — CSV column with the external ID **value** per row (each row pairs its own key and value against Manage Assistants). |

#### API Integration

The campaign shows an API URL in the portal for programmatic contact sync from your CRM or database.**Read the [Campaign Service API](https://docs.replify.ai/api-reference/campaigns/manage-campaign-contacts)** for authentication, request body, optional **`externalIdKey`** / **`externalIdValue`**, examples, and errors.

#### Add Contacts Manually

Enter contact details by hand. Fill in the first name, last name, email, and phone number. You can also add custom properties using **\+ Add Custom Property**.

### Contact Statuses

Each contact in a campaign has a status that indicates their current state:

| Status | Description |
| --- | --- |
| **Planning** | The AI is currently planning the next outreach for this contact. |
| **Awaiting execution** | Outreach has been planned and the contact is queued, waiting for outreach to be sent. |
| **Executing** | Outreach is actively being sent to this contact. |
| **Completed** | All outreach for this contact has been completed. This contact will not be reached out to again. |
| **Disqualified** | Contact has been disqualified from the campaign based on eligibility criteria or other factors. |
| **Disabled** | Contact has been individually paused within the campaign. |
| **Campaign paused** | The campaign itself is paused, so no outreach is being sent. |

When Manual Review is enabled, contacts will show **Awaiting approval** instead of **Awaiting execution**.

### Contact Details

Click on any contact to open the detail panel, which shows:

- Contact information (name, email, phone)
- Current status and number of attempts
- Progress through the campaign (e.g., 4/10 attempts)
- Response history
- **Next Scheduled Outreach** — Preview of the next message, including channel, date/time, subject, and body
- **Outreach History** — A log of all past outreach attempts and their outcomes

From the contact detail panel, you can also **Edit** upcoming outreach, **Simulate** the next interaction, **Pause** the contact, **Re-evaluate** their eligibility, or **Remove** them from the campaign.

## Manual Review

If you want to approve each outreach before it’s sent, toggle **Manual Review** on in the campaign view.

When Manual Review is enabled:

- Contact statuses will show **Awaiting approval** instead of **Awaiting execution**
- Click on a contact to preview the outreach the AI has generated
- Choose **Approve** to confirm the outreach, or **Edit** to make changes before sending
- Use **Execute all approved** to send all approved outreaches at once

Manual Review is useful when you want to verify the AI’s messaging before it reaches your contacts, especially during the early stages of a campaign.

## Performance & Reports

The **Performance** tab provides analytics and insights about your campaign, including:

- Outreach statistics
- Contact engagement metrics
- Response rates by channel

## Campaign Configuration

The **Configuration** tab shows a read-only summary of your campaign settings so you can quickly review your setup without navigating back to the edit screen. This is especially useful once a campaign is active, since configuration cannot be edited after going live.

## Simulating Your Campaign

You can use the **Simulate** button at any time to test how your campaign would interact with a contact. This runs a simulation without actually sending any outreach, so you can safely verify your messaging and configuration.
