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

# Proactive Campaigns

> Show targeted, scheduled proactive messages to visitors and track engagement

Campaigns let your chatbot start the conversation instead of waiting for a visitor to click the widget. A campaign shows a message bubble next to the launcher when a visitor matches your targeting rules -- based on their behavior, the page they're on, or who they are.

<Info>Proactive Campaigns require the **Pro** plan or higher.</Info>

***

## How campaigns work

A campaign has a message, a set of behavioral triggers, an optional audience, a re-display frequency, and an optional schedule window. When a visitor's browser matches an active campaign's triggers, the widget shows the message as a dismissible bubble next to the launcher. Opening the bubble starts a conversation seeded with that message; the bubble auto-dismisses after 10 seconds if ignored.

Only one proactive bubble can show per page load, even if several campaigns are eligible. When multiple campaigns match, **priority** decides which one registers its triggers first (lower numbers win ties).

***

## Creating a campaign

1. Go to **Dashboard > Campaigns**
2. Click **New campaign**
3. Enter a **name** (internal only) and the **message** visitors will see
4. Set at least one trigger under **Targeting**
5. Choose an **audience** (optional)
6. Choose a **frequency** for how often it can re-show
7. Optionally set a **schedule window** and **priority**
8. Click **Create campaign**

New campaigns are created as **drafts** and don't show to visitors until activated.

### Triggers

At least one trigger is required -- a campaign with none can never fire, and the dashboard blocks saving it:

* **Time on page** -- fires after the visitor has been on the page for N seconds
* **Scroll depth** -- fires once the visitor scrolls past a percentage of the page
* **Exit intent** -- fires when the visitor's cursor moves toward closing the tab (desktop only)

Two additional filters narrow *who* can trigger the campaign, on top of the triggers above:

* **Returning visitors only** -- only fires for visitors who have been to the site before (tracked via a local storage marker)
* **Identified visitors only** -- only fires once the visitor has been verified via [user verification](/user-verification); if they aren't yet identified when a trigger would otherwise fire, the campaign waits and fires as soon as `identify()` runs

### Page targeting

* **Only on pages containing** -- one URL fragment per line; the campaign only fires on matching pages
* **Except on pages containing** -- one URL fragment per line; the campaign never fires on matching pages

***

## Audience

By default a campaign broadcasts to every visitor who matches its triggers. You can instead restrict it to a specific audience:

* **Everyone** -- no contact-level targeting (the default)
* **Saved segment** -- target an existing [contact segment](/segments). Only rule-based segments can be selected; legacy search-based segments match nobody in a campaign and are excluded from the picker
* **Custom rules** -- build a one-off rule set with the same rule builder used for segments, without saving it as a reusable segment

Audience targeting is resolved against the contact tied to the visitor's identity or conversation. Contact-level fields (identity verified, status, spam score, custom attributes, etc.) only apply once a visitor is matched to a contact; anonymous visitors can still match rules based on country code. If you enable identity-based targeting, verify [user verification](/user-verification) is set up first -- otherwise logged-in visitors won't be matched to their contact until they start a conversation.

<Warning>
  Broadcast campaigns (audience = Everyone) ride the widget's 5-minute config cache. Audience-targeted campaigns are evaluated per-visitor on every page load and are never cached, so targeting always reflects live contact data.
</Warning>

***

## Frequency

Frequency controls how often the *same browser* can see a campaign across separate visits (separate from the triggers, which control *when* it fires within a single page load):

| Mode                    | Behavior                                                                                           |
| ----------------------- | -------------------------------------------------------------------------------------------------- |
| **Every visit session** | Re-shows once per browser session (default)                                                        |
| **Once ever**           | Shows at most once per browser, ever                                                               |
| **Every N days**        | Waits a cooldown period between displays; optionally caps the lifetime total with **Max displays** |

***

## Schedule & priority

* **Starts / Ends** (optional) -- a date-time window during which the campaign is eligible. Outside the window it behaves as inactive, without needing a status change
* **Priority** -- lower numbers are evaluated first and win ties when multiple campaigns match the same visitor at once

***

## Statuses

| Status       | Meaning                                                                                                |
| ------------ | ------------------------------------------------------------------------------------------------------ |
| **Draft**    | Created but not shown to visitors                                                                      |
| **Active**   | Live -- shown to matching visitors within its schedule window                                          |
| **Paused**   | Temporarily disabled; toggle back to Active to resume                                                  |
| **Archived** | Retired; stats are preserved but it can no longer be activated. Archived campaigns can only be deleted |

Toggle **Active/Paused** directly from the campaign card. Use the card's menu to **Edit**, **Archive**, or (once archived) **Delete** a campaign.

***

## Tracking

Each campaign card shows four live counters:

* **Impressions** -- times the bubble was shown
* **Clicks** -- times a visitor opened the bubble
* **CTR** -- clicks divided by impressions
* **Conversations** -- conversations started from this campaign's bubble

***

## Plan limits

| Feature             | Free          | Pro            | Business         |
| ------------------- | ------------- | -------------- | ---------------- |
| Proactive Campaigns | Not available | Up to 5 active | Unlimited active |

Free-plan workspaces can't create campaigns. On Pro, you can create as many draft campaigns as you like, but only 5 can be **Active** at once -- activating a 6th is blocked until you pause or archive another. See [Billing & Plans](/billing-and-plans) for full plan details.

***

## Tips

* **Start with one trigger, not several.** A campaign needs only one of time-on-page, scroll depth, or exit intent to fire -- combining page-targeting filters with a single clear trigger reads better than stacking triggers.
* **Use priority to layer campaigns.** Put your most specific, highest-value campaign (e.g., a pricing-page nudge) at a lower priority number than a general site-wide one.
* **Prefer "Once ever" or a cooldown for anything time-sensitive**, like a limited offer -- "Every session" can otherwise re-show the same message on every visit.
* **Build the audience as a saved segment** if you'll reuse it across campaigns; use custom rules for a one-off targeting need.
* **Watch CTR, not just impressions.** A high-impression, low-CTR campaign usually means the trigger fires too early or the message isn't relevant to that page.
