# Segments: the 10 criteria to filter contacts

> In Segments → New Segment, open the Filter Editor and combine criteria like Creation Date, Field, Tags, KPI and First / Last Location with All (AND) or Any (OR). Dates accept relative values and Birthdate mode; the radius selects cities. BIP recalculates the segment before every send.

Fonte: https://wiki.bip.marketing/en-us/segments · Atualizado: 2026-10-08

<UseCaseMeta effort="nocode" channel="email,whatsapp" plan="free" />

Talk only to the people who matter: today's birthdays, customers who've gone quiet, everyone in the cities near your new store. A segment groups these people by rules and keeps itself up to date: anyone who starts meeting the rules gets in, and anyone who stops meeting them drops out.

<Checklist items="A BIP account (the free plan works)|Contacts in BIP, imported from a spreadsheet or arriving through the API|The custom fields and KPIs created in Settings, if you'll filter by them" />

## What you'll get

- Dynamic audiences: you define the rule once and BIP recalculates who's in before every campaign send.
- Dates that move on their own: "created in the last 7 days" or "not updated in 30 days", without editing the rule every day.
- Anniversaries of any date, comparing only the day and month: birth, first purchase, contract signing.
- Cities within a radius in km or miles, picked on the map with city search.
- An instant count and the segment's contact list, with CSV download.

## How it works

<Steps items="Create the segment and open the Filter Editor|Combine criteria with All (AND) or Any (OR)|Save: BIP recalculates who's in before every send" />

Rules live in the **Filter Editor** and have three levels:

- **Criterion**: one condition, like **Tags** → **Includes any** → `customer`.
- **Filter**: a block of criteria. With two or more criteria in the same block, you choose whether the contact must meet **All (AND)** or **Any (OR)** of them.
- **Group**: the set of filters. With two or more filters, you again choose between **All (AND)** and **Any (OR)**.

That way you build rules like "(customer **and** from Curitiba) **or** (more than 3 orders)" without writing a line of code.

The segment is dynamic. Every time a campaign goes out, including each run of a recurring campaign, BIP recalculates it with the data at that moment. Anyone imported yesterday who meets the rules is already in today's send.

## Step by step

### 1. Create the segment

1. In the menu, click **Segments**. The list shows segments by group, with the date of the last update.
2. Click **New Segment**. BIP creates an **[untitled]** segment, with the **Draft** badge, and opens its screen.

<Shot src="/img/segmentos/1-en-us.png" alt="Segment list with the New Segment button" url="dash.bip.marketing/…/segments" />

### 2. Give it a name and a group

1. Click **Settings**. The **Segment Settings** panel opens.
2. Fill in the **Name** and, next to it, pick an emoji to identify the segment in the list.
3. If you like, write a **Description**: it shows up when you pick the segment in a campaign.
4. Under **Group**, choose where the segment sits in the list. Groups are created in **Settings** → **Groups** → **Segments Groups**.
5. Click **Save**.

<Shot src="/img/segmentos/2-en-us.png" alt="Segment Settings panel with name, emoji, description and group" url="dash.bip.marketing/…/segments/…" />

### 3. Add the criteria

1. Click the **0 filter(s) selected** button. The **Filter Editor** opens.
2. Click **Add Criteria** and choose one of the 10 criteria.
3. Fill in the criterion: usually **Operator** and **Value**. Some first ask for the **Type**, the **Field** or the **Indicator** (see the Reference below).
4. To add another condition to the same block, click **Add Criteria** again. With two or more criteria, the top of the block shows **Match** … **of the following criterias:**. Choose **All (AND)** to require every condition or **Any (OR)** to accept any of them.
5. To remove a criterion, click its trash icon and confirm.

<Shot src="/img/segmentos/3-en-us.png" alt="Filter Editor with two criteria combined by All (AND)" url="dash.bip.marketing/…/segments/…" />

### 4. Combine filters or import existing rules

1. Click **Add Filter** to create another block of criteria.
2. With two or more filters, the top of the editor shows the choice between **All (AND)** and **Any (OR)** across blocks. Use **Any (OR)** to bring different audiences into the same segment.
3. To start from another segment's rules, click **Import from Segment** and choose the segment. Its rules replace the ones in the editor; the original segment doesn't change.
4. Click **Close**.

<Shot src="/img/segmentos/4-en-us.png" alt="Filter Editor with two filters combined by Any (OR) and the Import from Segment button" url="dash.bip.marketing/…/segments/…" />

### 5. Check the count and save

1. When you close the editor, BIP calculates the segment right away (**Building leads segment...**) and shows the result in the heading: **_N_ matches of _T_**, meaning how many contacts meet the rules out of all the contacts in the account.
2. Check the list below. Search by **Name**, **Email** or **Phone** and sort by name, creation date or last update. Click a contact to see the full profile.
3. Click **Save**. The button turns green with **Saved** and the **Draft** badge disappears.

Only saved segments are available to pick in campaigns. While there are unsaved changes, the subtitle shows **Unsaved Changes**.

<Shot src="/img/segmentos/5-en-us.png" alt="Segment with the match count and the contact list" url="dash.bip.marketing/…/segments/…" />

### 6. Use the segment

1. To send, create a campaign in **Campaigns** and pick the segment under **Segments**. See [Campaigns: one-time, recurring and API-triggered](/en-us/campaigns).
2. To take the list to a spreadsheet, click **Download CSV**.
3. To create a variation, go back to the segment list and click **Duplicate** (copy icon). The copy opens as a **Draft**, named _segment name (Clone)_. Adjust the rules and click **Save**.

<Shot src="/img/segmentos/6-en-us.png" alt="Download CSV, Settings and Save buttons at the top of the segment" url="dash.bip.marketing/…/segments/…" />

## Reference

### The 10 criteria

| Criterion | What it compares | How you fill it in |
| --- | --- | --- |
| **Creation Date** | The day the contact joined BIP | Date **Operator** and **Value** (absolute or relative date) |
| **Name** | The contact's name | Text **Operator** and **Value** |
| **Email** | The contact's emails (one match is enough) | Text **Operator** and **Value** |
| **Field** | A custom field | **Field**, then **Operator** and **Value** according to the field type |
| **First / Last Location** | The city, region and country recorded for the contact | **Type**, then **Operator** and **Value** (text or radius on the map) |
| **KPI** | The numeric value of an indicator | **Indicator**, **Operator** and **Value** |
| **Phone** | The contact's phone numbers, in international format (`+5541998765432`) | Text **Operator** and **Value** |
| **First / Last Source** | Where the contact came from the first or the last time | **Type**, **Operator** and **Value** |
| **Tags** | The contact's tags | List **Operator** and **Value** (existing or new tags) |
| **Last Updated** | The day of the last update to the contact's profile | Date **Operator** and **Value** (absolute or relative date) |

### Text operators

They apply to **Name**, **Email**, **Phone**, the text options of **First / Last Location** and **First / Last Source**, and fields of type String, Phone and Location.

| Operator | The contact gets in when the value… |
| --- | --- |
| **Equals** / **Not equals** | is (or isn't) exactly what you typed |
| **Contains** / **Not contains** | has (or doesn't have) the text you typed |
| **Starts with** / **Not starts with** | starts (or doesn't start) with the text |
| **Ends with** / **Not ends with** | ends (or doesn't end) with the text |
| **In** / **Not in** | is (or isn't) in a list. In **Name**, **Email**, **Phone** and fields, type each item and press Enter |
| **Is empty** | wasn't filled in |

<Callout type="tip">
In **Email** and **Phone**, BIP checks each of the contact's emails or phone numbers, and the contact gets in if any of them meets the rule. That's why these rules always require the contact to have at least one email (or phone). To single out people without a phone number, tag those contacts, during import or through the API, and filter by **Tags**.
</Callout>

### List operators

They apply to **Tags** and to fields of type Array. In **Value**, search for existing tags or type a new one and press Enter.

| Operator | The contact gets in when they… |
| --- | --- |
| **Includes any** | have at least one of the values |
| **Includes all** | have all of the values |
| **Does not include any** | have none of the values |
| **Does not include all** | don't have all of them at once (they may have some) |
| **Is empty** / **Is not empty** | have no value (or have some value) |

### Number and KPI operators

| Operator | Number field | KPI |
| --- | --- | --- |
| **Equals** / **Not equals** | Yes | — |
| **Greater than** / **Greater than or equals** | Yes | Yes |
| **Less than** / **Less than or equals** | Yes | Yes |
| **Between** (**From** and **To**, both included) | Yes | Yes |

In the **KPI** criterion, choose the **Indicator** (the KPIs created in **Settings**), the **Operator** and the **Value**. Anyone who has never received a value for that KPI counts as 0. For an exact value, use **Between** with the same number in **From** and **To**.

### Operators for Boolean fields

| Operator | What it checks |
| --- | --- |
| **Is true** / **Is false** | Whether the field is set to true (or false). Use these day to day |
| **Is truthy** / **Is falsy** | Technical variations of true and false |
| **Is nil** / **Is null** / **Is undefined** / **Not nil** / **Not null** / **Not undefined** | Technical checks for a missing value |

### Date operators

They apply to **Creation Date**, **Last Updated** and fields of type Date.

| Operator | The contact gets in when the date is… |
| --- | --- |
| **After** / **After or equals** | later than (or equal to) the value |
| **Before** / **Before or equals** | earlier than (or equal to) the value |
| **Between** | within the range from **From** to **To**, both included |
| **Equals** | on the same day as the value |

### Absolute or relative date

Click the **Value** of any date criterion to open the picker. Under **Date Mode**, choose:

| Option | What it does |
| --- | --- |
| **Absolute** → **Select Date** | A fixed date on the calendar |
| **Relative** → **Relative Time** | A number and a unit (**Days**, **Months** or **Years**) counted from today. A negative number is the past (`-30` = 30 days ago), a positive one is the future, `0` is today |
| **Start of Day** | Sets the time to 00:00 |
| **End of Day** | Sets the time to 23:59. One of the two is always on; with **Equals**, the whole day already counts and they don't appear |
| **GMT Offset (e.g., +00:00, -03:00)** | The timezone used to calculate "today". It defaults to the account timezone; for Brasília, `-03:00` |
| **Preview** | Shows the date calculated right now, so you can check it |

In **Between**, each end has its own picker: you can mix an absolute date with a relative one.

### Birthdate mode

In **Field** criteria of type Date, **Relative** mode shows the **Birthdate** toggle (_Birthdate within selected period_). When it's on, BIP compares only the day and month and ignores the year. It works for any date that comes around every year: birth, first purchase, contract start. **Creation Date** and **Last Updated** always take the year into account.

### Location and radius

In the **First / Last Location** criterion, choose the **Type**:

| Type | Compares |
| --- | --- |
| **First Location** / **Last Location** | City, region and country together. Use **Contains** → `Curitiba` |
| **First Location (Country)** / **Last Location (Country)** | Only the country |
| **First Location (Region)** / **Last Location (Region)** | Only the region (state) |
| **First Location (City)** / **Last Location (City)** | Only the city |
| **First Location (Geo)** / **Last Location (Geo)** | Distance on the map, with **In radius** or **Not in radius** |

In the **(Geo)** options, click **Select Region**:

1. In **Search**, type at least 3 letters of the city name and pick it from the list. The map moves there.
2. In **Radius**, enter the distance (from 0.5, in steps of 0.5).
3. In **Unit**, choose `km` or `mi`.
4. To adjust the center, drag the marker or click another point on the map. Then click **Close**.

Location in BIP is always by city. The radius selects the cities whose center falls inside the circle, never neighborhoods or addresses.

**First Location** is recorded when the contact signs up through the browser. **Last Location** is updated when the contact, already identified, visits your site with the BIP script. For contacts who arrive by spreadsheet or through the API, store the city in a custom field of type **Location** and use the **Field** criterion: it offers the same options, with the field name followed by **(Country)**, **(Region)**, **(City)** and **(Geo)**.

<Callout type="tip">
To target a neighborhood, store the neighborhood in a String field (for example, _Neighborhood_) or in a tag, and filter by **Field** or **Tags**.
</Callout>

### Source

In the **First / Last Source** criterion, choose the **Type**: **First Source (Type)**, **First Source (Form ID)**, **First Source (URL)**, or the same options for **Last Source**. In the **(Type)** options, the **Value** is a list:

| Value | Where the contact came from |
| --- | --- |
| **API** | The BIP API and integrations that use the API |
| **Internal** | Manual entry in the dashboard or a spreadsheet import |
| **Page** | A page or form |
| **Endpoint**, **Facebook**, **Flow**, **Instagram**, **TikTok**, **WhatsApp**, **Other** | The other sources BIP records |

**(URL)** compares the address of the source page, when there is one.

### Criteria groups

| Where | Option | Result |
| --- | --- | --- |
| Inside a filter | **All (AND)** | The contact must meet every criterion in the block |
| Inside a filter | **Any (OR)** | Meeting one criterion in the block is enough |
| Between filters | **All (AND)** | The contact must pass every block |
| Between filters | **Any (OR)** | Passing one block is enough |

### Actions on the segment screen

| Action | What it does |
| --- | --- |
| **New Segment** (in the list) | Creates an **[untitled]** segment as a **Draft** and opens its screen |
| **_N_ filter(s) selected** | Opens the **Filter Editor**. The number is how many criteria there are |
| **Import from Segment** | Copies another segment's rules into the editor |
| **Settings** | **Name**, emoji, **Description** and **Group** |
| **Save** | Saves the segment and removes the **Draft** badge |
| **Download CSV** | Downloads a CSV (UTF-8) with one row per contact in the segment: the main data (such as name, emails, phone numbers, tags, dates, location, source and KPIs) and one column per custom field |
| **Duplicate** (in the list) | Creates a copy as a **Draft**, named _(Clone)_ |
| Trash icon (in the list) | Deletes the segment. A segment used by a campaign can only be deleted after it's removed from that campaign |

<PlanOnly plan="full">
On BIP Full, the same editor appears in the Flows filter with one extra criterion, **Event**: **Entity Type** **Email**, **URL** or **WhatsApp**; **Event Type** **View (Open)**, **Click** or **Custom** (email and URL) and **Delivered**, **Read** or **Replied** (WhatsApp). The Source option **(Form ID)** identifies people who came in through a BIP form.
</PlanOnly>

## Ready to copy

### Today's birthdays

First, create the _Date of birth_ field (type Date) in **Settings** → **General** → **Fields**.

| Criterion | Operator | Value |
| --- | --- | --- |
| Field → Date of birth | Equals | Relative: `0` Days, **Birthdate** on |

Use it with a **Recurring** campaign, **Daily**, at 09:00, with **Allow Lead Re-entry** on and a **Cooldown Period (Days)** of `300`. That way each person gets the message once a year.

### Inactive for 30 days

| Criterion | Operator | Value |
| --- | --- | --- |
| Last Updated | Before | Relative: `-30` Days, **Start of Day** |
| Tags | Includes any | `customer` |

Combine the two criteria with **All (AND)**. Customers whose profile hasn't been updated in the last 30 days get in.

### New in the last week

| Criterion | Operator | Value |
| --- | --- | --- |
| Creation Date | After or equals | Relative: `-7` Days, **Start of Day** |

### Cities within 30 km

First, make sure the _City_ field (type Location) is filled in on your contacts, through import or the API.

| Criterion | Operator | Value |
| --- | --- | --- |
| Field → City (Geo) | In radius | Search `Curitiba`, Radius `30`, Unit `km` |

For people who visit your site with the BIP script, also use **First / Last Location** → **Last Location (Geo)**, with the same values, in a second filter combined with **Any (OR)**.

### Customers with area code 41

| Criterion | Operator | Value |
| --- | --- | --- |
| Phone | Starts with | `+5541` |

### VIP: tag or many orders

First, create the _Orders_ KPI in **Settings**.

| Filter | Criterion | Operator | Value |
| --- | --- | --- | --- |
| 1 | Tags | Includes any | `vip` |
| 2 | KPI → Orders | Greater than or equals | `5` |

Combine the two filters with **Any (OR)**: anyone with the tag or with 5 orders or more gets in.

### Names and descriptions

<Copy label="Segment names and descriptions">
🎂 Today's birthdays — Contacts whose birthday is today (Date of birth field)
💤 Inactive for 30 days — Customers with no profile update in the last 30 days
🆕 New in the last week — Contacts created in the last 7 days
📍 30 km around Curitiba — Contacts in cities up to 30 km from Curitiba
⭐ VIP — vip tag or 5 or more orders
</Copy>

## How to measure

- Close the **Filter Editor** after each change: the heading shows **_N_ matches of _T_**. That's the audience size if the campaign goes out now.
- Search the list for contacts you know should be in (or out). Open the profile to check the date, tag or city that decided the result.
- Click **Download CSV** to review the list in a spreadsheet or share it with your team.
- After the send, compare the count with **Processed** in the campaign stats. The difference comes from people in more than one of the campaign's segments (they get it only once) and from those the **Lead Re-entry Window** held back.

## Frequently asked questions

### Does the segment update itself?

Yes. BIP recalculates the segment before every campaign send, including each run of a recurring campaign. On the segment screen, the count is recalculated whenever you close the **Filter Editor**.

### Does someone in two segments get the campaign twice?

No. In a campaign with several segments, each contact gets the message once per send, even if they show up in more than one.

### Can I filter by neighborhood?

Not by location: it's always by city. Store the neighborhood in a String field or a tag (during import or through the API) and filter by **Field** or **Tags**.

### Why don't my imported contacts match the location filter?

**First / Last Location** comes from the browser: from the contact's own sign-up and from visits to your site with the BIP script. For people who come from a spreadsheet or the API, store the city in a field of type **Location** and filter by **Field**, with the same city and radius options.

## See also

- [Campaigns: one-time, recurring and API-triggered](/en-us/campaigns)
- [Import contacts from a spreadsheet](/en-us/import-contacts)
- [Getting started with BIP](/en-us/getting-started)
- [Site script: page views and clicks tied to the contact](/en-us/site-script)
- [BIP API: keys, contacts, events and triggers](/en-us/api)
