Understanding Segmentation Types
Summary: Every audience you create has a segmentation type: Persona, Account, or Audience. This determines what data gets queried and which filter fields are available. This guide explains when to use each type and how they work together.
The Three Segmentation Types
All three types use the same POST /api/v1/audiences endpoint. The segmentation_type field controls what happens behind the scenes.
flowchart TD
P["Persona<br/>(Person-level filters)"]
A["Account<br/>(Company-level filters)"]
AU["Audience<br/>(Combines both + references)"]
P --> AU
A --> AU
AU --> D["Download / Export"]
style P fill:#8b5cf6,color:#fff
style A fill:#3b82f6,color:#fff
style AU fill:#22c55e,color:#fff
| Type | Purpose | Data Source | Example |
|---|---|---|---|
| Persona | Define a target person profile | Person-level identity data | "VP+ in Sales or Marketing" |
| Account | Define a target company profile | Firmographic data | "Enterprise SaaS companies in California" |
| Audience | Combine intent topics with optional Persona/Account references | Person-level identity data | "Cybersecurity intent + IT Decision Makers persona + Fortune 500 accounts" |
Persona
A Persona defines who you're targeting based on personal and professional attributes.
Available Filter Fields
| Category | Fields |
|---|---|
| Identity | first_name, last_name, gender, age_range |
| Job | job_title, job_title_normalized, department, seniority_level |
| Demographics | income_range_lc, net_worth, has_children, is_homeowner, is_married |
| Contact | linkedin_url, personal_email, current_business_email, mobile_phones |
| Location | personal_city, personal_state, personal_state_code, personal_zip, personal_country |
Example: IT Decision Makers
{
"organization_id": "YOUR_ORG_ID",
"project_id": "YOUR_PROJECT_ID",
"audience_name": "IT Decision Makers",
"type": "intents",
"segmentation_type": "Persona",
"filter": {
"condition": "and",
"rules": [
{
"fieldName": "INTENT",
"conditionRules": { "operator": "in", "value": ["4eyes_115481"] }
},
{
"fieldName": "department",
"conditionRules": { "operator": "in", "value": ["information technology", "engineering"] }
},
{
"fieldName": "seniority_level",
"conditionRules": { "operator": "in", "value": ["director", "vp", "cxo"] }
}
]
}
}Account
An Account defines which companies you're targeting based on firmographic attributes.
Available Filter Fields
| Category | Fields |
|---|---|
| Company | company_name, company_domain, company_industry, company_sic |
| Size | company_employee_count, company_employee_count_range, company_total_revenue, company_revenue_range |
| Location | company_address, company_city, company_state, company_zip_code, company_country |
| Contact | company_phones, company_linkedin_url |
Key Difference
Account audiences query a firmographic data source (company-level records) by default, rather than the person-level identity data that Persona and Audience types use. An Account audience whose filter includes an INTENT rule instead queries person-level intent data. Because the firmographic source emits one row per company, the response's account_count field gives the number of distinct companies matched for a firmographic-backed build.
account_count is omitted from the response until a build against the firmographic source has completed. It is also omitted for an Account audience whose source is intent data, since that source produces person-level rows rather than company rows, and while a rebuild is in progress (the count fields are cleared along with size).
Example: Enterprise SaaS Companies
{
"organization_id": "YOUR_ORG_ID",
"project_id": "YOUR_PROJECT_ID",
"audience_name": "Enterprise SaaS Companies",
"type": "intents",
"segmentation_type": "Account",
"filter": {
"condition": "and",
"rules": [
{
"fieldName": "INTENT",
"conditionRules": { "operator": "in", "value": ["4eyes_119418"] }
},
{
"fieldName": "company_industry",
"conditionRules": { "operator": "contains", "value": "software" }
},
{
"fieldName": "company_employee_count_range",
"conditionRules": { "operator": "in", "value": ["1001 to 5000", "5001 to 10000", "10000+"] }
}
]
}
}Because this request sets type to "intents" and includes an INTENT rule, the build reads person-level intent data rather than the firmographic source, so it will not get a company count: account_count stays omitted no matter how many times it rebuilds.
Example: Company Count Only
For a company count, build an Account audience with type set to "contact" and a filter that contains only company_* fields (no INTENT rule). This routes the build against the firmographic source instead of the intent data.
{
"organization_id": "YOUR_ORG_ID",
"project_id": "YOUR_PROJECT_ID",
"audience_name": "Enterprise SaaS Companies (Firmographic)",
"type": "contact",
"segmentation_type": "Account",
"filter": {
"condition": "and",
"rules": [
{
"fieldName": "company_industry",
"conditionRules": { "operator": "contains", "value": "software" }
},
{
"fieldName": "company_employee_count_range",
"conditionRules": { "operator": "in", "value": ["1001 to 5000", "5001 to 10000", "10000+"] }
}
]
}
}Audience
An Audience is the most flexible type. It supports all person-level fields and can also reference existing Persona and Account audiences as filters.
Available Filter Fields
All fields from both Persona and Account, plus:
| Field | Description | Operators |
|---|---|---|
PERSONA | Reference a saved Persona audience by ID | in, notin |
ACCOUNT | Reference a saved Account audience by ID | in, notin |
When you reference a Persona or Account, the platform injects that audience's WHERE clause into your query. This means you can build reusable building blocks.
Example: Layered Targeting
First, create the building blocks:
Step 1: Create a Persona (audience ID 4738)
{
"audience_name": "IT Decision Makers",
"segmentation_type": "Persona",
"type": "intents",
"filter": { ... }
}Step 2: Create an Account (audience ID 4801)
{
"audience_name": "Fortune 500 Tech Companies",
"segmentation_type": "Account",
"type": "intents",
"filter": { ... }
}Step 3: Combine them in an Audience
{
"organization_id": "YOUR_ORG_ID",
"project_id": "YOUR_PROJECT_ID",
"audience_name": "Cybersecurity Intent - IT Leaders at F500 Tech",
"type": "intents",
"segmentation_type": "Audience",
"filter": {
"condition": "and",
"rules": [
{
"fieldName": "INTENT",
"conditionRules": { "operator": "in", "value": ["cybersecurity_topic_id"] }
},
{
"fieldName": "PERSONA",
"conditionRules": { "operator": "in", "value": ["4738"] }
},
{
"fieldName": "ACCOUNT",
"conditionRules": { "operator": "in", "value": ["4801"] }
}
]
}
}This returns contacts who:
- Show intent for cybersecurity topics, AND
- Match the "IT Decision Makers" persona (department + seniority), AND
- Work at companies in the "Fortune 500 Tech" account list
Choosing the Right Type
| Goal | Use |
|---|---|
| Define a reusable person profile | Persona |
| Define a reusable company profile | Account |
| Run a one-off intent query with inline filters | Audience |
| Combine existing Personas + Accounts with new intent topics | Audience |
| Get company-level counts (not person-level) | Account |
Common Patterns
Build once, reuse everywhere: Create a Persona for "VP+ in Marketing" and reference it across multiple Audience queries with different intent topics. When your targeting criteria change, update the Persona once and all referencing Audiences pick up the change on their next refresh.
Layered exclusion: Use notin with PERSONA or ACCOUNT to suppress contacts:
{
"fieldName": "PERSONA",
"conditionRules": { "operator": "notin", "value": ["4750"] }
}This excludes anyone matching Persona 4750 (e.g., "Existing Customers") from the results.
API Differences by Type
All three types use the same endpoints. The only behavioral differences:
| Behavior | Persona | Account | Audience |
|---|---|---|---|
| Data source | Person-level identity data | Firmographic (company-level) by default; person-level intent data when the filter includes an INTENT rule | Person-level identity data |
account_count in response | Not populated | Populated after a firmographic build; stays omitted for an intent-backed build | Not populated |
| Can reference other segments | No | No | Yes (PERSONA, ACCOUNT fields) |
| Filter fields | Person + job + demographics | Company only by default; accepts an INTENT rule alongside company fields | All fields + segment references |
All other behavior (creation, polling, sampling, downloading) is identical across types. See the Intent Audiences API for the full endpoint reference.
Next Steps
- Building Audience Filters: Complete field and operator reference
- Intent Audiences API: Full API reference
- Create an Intent Audience: End-to-end walkthrough
Updated 10 days ago
