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\n(Person-level filters)"]
A["Account\n(Company-level filters)"]
AU["Audience\n(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 data (Elixir) | "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 data (Elixir) | "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) rather than the person-level Elixir data that Persona and Audience types use. The response includes an account_count field showing the number of distinct companies matched.
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+"] }
}
]
}
}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 (Elixir) | Firmographic (company-level) | Person-level (Elixir) |
account_count in response | Not populated | Populated | Not populated |
| Can reference other segments | No | No | Yes (PERSONA, ACCOUNT fields) |
| Filter fields | Person + job + demographics | Company only | 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 about 9 hours ago