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

# Audiences

> Every filter you can use to define exactly who gets a reactivation send.

The audience filters in the campaign builder let you target precisely. Here's every filter and how they combine.

## Filters

### Status

Pick one or more pipeline statuses. Common picks:

* `Customer` — past customers
* `Lead` + `last_interaction > 30 days` — cold leads
* `Cancelled` + `last_interaction > 90 days` — old cancellations who might come back
* `Quoted` + `last_interaction > 14 days` — quotes that went cold

### Last interaction

The most useful single filter. Says "only contacts whose most recent activity is older than X."

* 30 days — cold leads
* 90 days — quarterly check-in cadence
* 6 months / 12 months — annual maintenance reminders

This is calculated across ALL channels — calls, texts, chats, form submissions, manual notes. Anything that touched the contact's record counts as "interaction."

### Tags

* **Has tag**: only contacts with one or more of the listed tags. ANDs across tags by default — change to OR if you want any-of-N.
* **Doesn't have tag**: exclude contacts with these tags (e.g., exclude anyone tagged `do-not-contact`).

### Source

Filter by how the contact originally entered your CRM:

* Widget chat
* Voice call
* Form submission
* SMS inbound
* Manual entry
* CSV import
* Reactivation reply (from a previous campaign)

Useful when you only want to re-engage contacts from a specific channel.

### Has phone / email

Required when picking SMS or email channels respectively. The builder enforces this automatically — you can't send SMS to contacts without phones.

If you set channel to "SMS preferred, email fallback", contacts WITHOUT phones get the email; contacts with phones get SMS.

### Geography (advanced)

If your contacts have addresses, filter by:

* **City** matches list
* **Postal code** in range
* **Province / state** matches

Useful for regional promotions or service-area-specific offers.

## How filters combine

All filters AND together. So:

> Status: Customer + Last interaction > 6 months + Has tag: residential + Has phone

means: customers, who haven't been in touch in over 6 months, tagged `residential`, with a phone we can text. The audience is the intersection.

## Built-in suppressions

Regardless of your filters, we always exclude:

* **Opted-out contacts** (anyone who ever replied STOP)
* **Contacts in another active campaign** (cross-campaign dedupe; prevents double-sends in the same week)
* **Contacts created in the last 7 days** (don't reactivate someone who literally just signed up)
* **Contacts with `do-not-contact` tag** (the universal exclusion tag — apply this to anyone you've manually flagged)

## Audience size

Shown live as you tweak filters. The number is your eligible recipient count after suppressions.

If the count comes out way smaller than expected, check:

* Did you require BOTH phone AND email when only "or" was needed?
* Is your "last interaction" threshold too aggressive?
* Are your tags case-sensitive matching?

## Saving audiences

You can save a filter set as a **named audience** (e.g., "Cold quotes 90+ days") and reuse it across campaigns. From the campaign builder's audience step, click **Save as named audience** after configuring filters.

Saved audiences are listed under **Reactivation → Audiences**.

## Next

<Card title="Handling replies" icon="reply" href="/reactivation/handling-replies">
  What happens when a recipient responds.
</Card>
