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

# Ongoing campaigns

> A URL pattern, a timer, and an optional business-hours gate — running for as long as you leave it on.

An ongoing campaign is a proactive message on your website chat widget: no fixed audience, no send button, just a condition that keeps getting checked against every visitor, indefinitely.

## The inbox decides the type

Same rule as the other side of this section: pick a **Website** inbox and the campaign is ongoing, automatically — there's no separate toggle. Pick an SMS, Twilio SMS, or WhatsApp inbox instead and you get a [one-off campaign](/campaigns/one-off).

## What triggers it

Three conditions, and all of them are about the visitor's *browser session*, not their contact record:

<Steps>
  <Step title="URL pattern" icon="link">
    The page (or pattern of pages) the visitor has to be on — a pricing page, a specific product, a whole
    section of the site.
  </Step>

  <Step title="Time on page" icon="clock">
    How many seconds they have to stay on a matching page before the message appears.
  </Step>

  <Step title="Business hours, optionally" icon="calendar-clock">
    A per-campaign switch that restricts it to firing only while the inbox is inside its configured
    working hours.
  </Step>
</Steps>

Each matching campaign starts its own countdown independently, but two caps stop that from becoming
several messages at once: the widget itself only holds **one active campaign slot** in the visitor's
browser, so if a second campaign's countdown finishes after the first, it overwrites the first rather than
stacking — and the server refuses to open a second campaign conversation if one already exists for that
visitor. There's also a one-hour snooze once a campaign has fired. Net effect: a visitor gets **one**
proactive message, and if more than one campaign matches the same page, whichever one's countdown finishes
last is the one that wins — design that deliberately rather than by accident.

## Who it looks like it's from

Pick a specific teammate as the sender, or leave it as **Bot**. Either way, the message appears as if that sender started the conversation.

## On, off, and how long it runs

An ongoing campaign has a simple enabled switch. Turning it off stops new proactive messages **within the
hour, not immediately**: the endpoint only serves enabled campaigns to new requests, but the widget caches
the campaign list in the visitor's browser for one hour, so a session that already loaded the list before
you disabled it can keep firing for up to an hour afterward. It has no effect on a chat a visitor already
opened. There's no audience to exhaust and no completion state — it stays `active` and keeps firing for
every visitor who matches, for as long as you leave it on.

## Once the visitor replies

A reply turns the proactive message into an ordinary conversation in that inbox — assignment, SLAs, and everything else in [Inbox and team](/inbox) apply exactly as they would to any other chat. Nothing about how it started changes how it is handled.

## Next

<CardGroup cols={2}>
  <Card title="One-off campaigns" icon="calendar-clock" href="/campaigns/one-off">
    The other type — a defined audience, sent once, on SMS or WhatsApp.
  </Card>

  <Card title="Resolution pricing" icon="tags" href="/pricing/resolution-pricing">
    How a resolution is classified and priced.
  </Card>

  <Card title="Web chat" icon="message-circle" href="/channels/web-chat">
    The channel an ongoing campaign always runs on.
  </Card>

  <Card title="Teams and business hours" icon="users-round" href="/inbox/teams">
    Configuring the working hours an ongoing campaign can gate on.
  </Card>
</CardGroup>


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