++ Intelligence Brief and Intelligence Stream Field Definitions
HubSpot, Salesforce, Pipedrive and Slack use a default, pre-built integration, so there is no field mapping required there. If you are connecting through the Zapier App, Zapier Webhook or a Standard Webhook, you can map the following Bread & Butter data points directly to your own fields.
In short: this article lists every field available in the Intelligence Brief and Intelligence Stream. HubSpot, Salesforce, Pipedrive and Slack use a default, pre-built integration, so no field mapping is needed there; field mapping only applies when you are connecting through the Zapier App, Zapier Webhook or a Standard Webhook. The Brief carries identity, firmographic, attribution and written sales-context fields plus the latest Nurture draft, all at the top level of the payload. The Stream carries everything in the Brief plus the full raw material behind it: engagement detail, top pages, complete session-by-session history and the full Nurture draft history. Jump to a section below, or read on for details on when each field populates.
Two columns below tell you where each field is available. The Intelligence Brief carries the summary; the Intelligence Stream carries the summary plus all the raw material behind it. The Stream is a strict superset of the Brief: every Brief field appears in the Stream under the same name. The Stream is available only through Zapier and Webhooks, because the payload is larger than standard CRM field mapping can absorb.
Field names below are given exactly as they appear in the payload. Timestamps are ISO 8601 with three fractional digits and a trailing Z, for example 2026-09-18T14:32:07.412Z . A value that is absent arrives as null , never as an empty string, so your field mappings never break.
Session
| Field | Type | Brief | Stream | Description |
|---|---|---|---|---|
session_date |
ISO 8601 | ✓ | ✓ | The exact date and time the visitor's session closed and the payload was generated |
User Profile (user )
These fields capture the lead's core identity, professional background and current intent level.
| Field | Type | Brief | Stream | Description |
|---|---|---|---|---|
created_date |
ISO 8601 | ✓ | ✓ | The date the lead record was first created in Bread & Butter |
email_address |
string | ✓ | ✓ | The primary email address associated with the lead |
first_name |
string | ✓ | ✓ | The lead's first name |
last_name |
string | ✓ | ✓ | The lead's last name |
profile_url |
url | ✓ | ✓ | A direct link to the lead's profile in Bread & Butter |
role |
string | ✓ | ✓ | Current job title or professional designation |
profile_summary |
text | ✓ | ✓ | An AI-generated summary of professional background and career trajectory |
linkedin_url |
url | ✓ | ✓ | A direct link to the lead's LinkedIn profile |
lead_stage |
string | ✓ | ✓ | The current Lead Stage, as labelled in your dashboard |
lead_stage_rank |
number |
|
✓ | The stage's position in the 10-slot funnel (1 to 10), stable even if the label is customised |
focused_score |
number | ✓ | ✓ | The 1 to 10 intent score. An integer, rounded down; null if the lead has not been scored yet |
previous_focused_score |
number | ✓ | ✓ | The score before the most recent recalculation, so you can see which way it moved. null until the score has changed at least once |
engagement_score |
number | ✓ | ✓ | The engagement score from the lead's most recent session |
top_user_engagement_score |
number |
|
✓ | The highest single-page engagement score the lead has ever recorded |
average_user_engagement_score |
number |
|
✓ | Average engagement score across every scored page view |
total_engaged_pages |
number |
|
✓ | Count of page views that received an engagement score |
profile_highlights |
array |
|
✓ | Scannable bullets on career history, education and shared connections |
Company (company )
These fields deliver deep firmographic enrichment based on the lead's employer.
| Field | Type | Brief | Stream | Description |
|---|---|---|---|---|
name |
string | ✓ | ✓ | The official name of the company |
website |
url | ✓ | ✓ | The primary website URL |
summary |
text | ✓ | ✓ | A brief, scannable summary of what the company does |
industry |
string | ✓ | ✓ | The primary market sector (e.g. Software, Manufacturing) |
number_of_employees |
number | ✓ | ✓ | Total employee headcount as a number. null when the figure was found only as a range |
number_of_employees_text |
string | ✓ | ✓ | Headcount exactly as it was found, including ranges such as "11-50" |
year_founded |
number | ✓ | ✓ | The year the company was established |
phone_number |
string | ✓ | ✓ | The primary corporate phone number |
address |
string | ✓ | ✓ | The headquarters or primary address |
linkedin_url |
url | ✓ | ✓ | The company's official LinkedIn page |
overview |
text |
|
✓ | A deeper look at the business model and market position |
history |
text |
|
✓ | Key milestones and historical context |
products_services |
text |
|
✓ | Core offerings, products or services sold |
highlights |
array |
|
✓ | Scannable bullets on funding, growth, acquisitions and partnerships |
employees_list |
array |
|
✓ | Notable employee profiles with names and roles |
social_accounts |
array |
|
✓ | Active social media profiles |
latest_news |
array |
|
✓ | Recent press releases and news mentions with dates and links |
specialties |
array |
|
✓ | Niche focuses and keywords associated with the company's expertise |
linkedin_followers |
number |
|
✓ | Total followers on the company's LinkedIn page |
locations |
array |
|
✓ | Additional offices and geographic operating regions |
First Attribution (first_attribution )
These fields capture the origin data from the lead's very first visit to your website.
| Field | Type | Brief | Stream | Description |
|---|---|---|---|---|
country / country_code |
string | ✓ | ✓ | Country name and two-letter code (e.g. US, CA) |
state_prov / state_prov_code |
string | ✓ | ✓ | State or province name and abbreviated code (e.g. NY, BC) |
city |
string | ✓ | ✓ | The city the lead was in during their first visit |
device |
string | ✓ | ✓ | Hardware type (e.g. Desktop, Mobile) |
referrer |
url | ✓ | ✓ | The website that originally referred them to your site |
utm_source |
string | ✓ | ✓ | The original source of traffic (e.g. google, newsletter) |
utm_medium |
string | ✓ | ✓ | The original marketing medium (e.g. cpc, email) |
utm_campaign |
string | ✓ | ✓ | The campaign name that drove the first visit |
utm_term |
string | ✓ | ✓ | The search term used, if from paid search |
utm_content |
string | ✓ | ✓ | The specific content piece or ad variation clicked |
gclid |
string | ✓ | ✓ | Google click identifier, for Google Ads tracking |
gclsrc |
string | ✓ | ✓ | Google click source (e.g. aw) |
dclid |
string | ✓ | ✓ | DoubleClick click identifier |
fbclid |
string | ✓ | ✓ | Facebook click identifier |
mkcid |
string | ✓ | ✓ | Mailchimp click identifier |
ip_address |
string |
|
✓ | The IP address during their first visit |
latitude / longitude |
number |
|
✓ | Approximate geographic coordinates |
continent / continent_code |
string |
|
✓ | Continent name and two-letter code (e.g. NA, EU) |
isp |
string |
|
✓ | The Internet Service Provider used |
operating_system |
string |
|
✓ | Device OS (e.g. Windows 11, macOS) |
browser |
string |
|
✓ | Web browser and version (e.g. Chrome 125) |
Click identifiers are passed through exactly as they arrived in the URL, capitalisation included, so a value you receive can be matched against your ad platform without transformation.
Last Attribution (last_attribution )
These fields capture data from the lead's most recent session, the visit that just closed. It includes the exact same location, device and UTM fields as first_attribution , letting you see what specifically brought a returning lead back to your site today.
Written Sales Context
Six AI-generated fields designed for immediate outreach, written to be scanned in about ten seconds. They sit at the top level of the payload alongside user and company ; there is no wrapper object around them.
| Field | Type | Brief | Stream | Description |
|---|---|---|---|---|
latest_session_summary |
text | ✓ | ✓ | A single sentence on what they did during their most recent visit |
user_journey_summary |
text | ✓ | ✓ | A full paragraph covering every session, including how their intent has shifted over time |
attribution_summary |
text | ✓ | ✓ | How they originally found you, and what keeps bringing them back |
real_time_icebreaker |
text | ✓ | ✓ | A hyper-local, time-sensitive reference based on the lead's geography, to help reps build rapport |
live_talking_point |
text | ✓ | ✓ | Up-to-the-minute personal context: recent promotions, career milestones, shared connections |
compelling_sales_trigger |
text | ✓ | ✓ | Company intelligence flagging newly won awards, product launches, acquisitions or press mentions |
Nurture (nurture_draft , nurture_sent , nurture_drafts )
Nurture AI generates a draft email each time a lead returns. The Brief carries the current draft and every email actually sent; the Stream adds the full history of every draft ever generated.
| Field | Type | Brief | Stream | Description |
|---|---|---|---|---|
nurture_draft.generated_date |
ISO 8601 | ✓ | ✓ | When the current draft was generated |
nurture_draft.status |
string | ✓ | ✓ | draft , sent , not_sent or dismissed |
nurture_draft.angle |
string | ✓ | ✓ | The approach the draft takes |
nurture_draft.subject |
string | ✓ | ✓ | Suggested subject line |
nurture_draft.body |
text | ✓ | ✓ | Plain-text version of the draft |
nurture_draft.body_html |
html | ✓ | ✓ | HTML version, with simple markup for links |
nurture_sent[] |
array | ✓ | ✓ | Every email actually sent to this lead: subject, body, angle, generated and sent dates |
nurture_drafts[] |
array |
|
✓ | Every draft ever generated for this lead, sent or not, with status |
Top Engaged Pages (top_engaged_pages )
Stream only. The pages that have held this lead's attention most across all sessions, as structured data, ordered by total engagement score with the highest first. It sits at the top level of the payload beside sessions . The Brief describes the same thing in prose through user_journey_summary and latest_session_summary .
| Field | Type | Description |
|---|---|---|
top_engaged_pages[].title |
string | The page title |
top_engaged_pages[].no_query_url |
url | The page URL with query parameters stripped |
top_engaged_pages[].visits |
number | How many times the lead has viewed that page |
top_engaged_pages[].total_engagement_score |
number | Sum of engagement scores across those visits |
top_engaged_pages[].average_engagement_score |
number | Average engagement score per visit |
top_engaged_pages[].top_engagement_score |
number | The highest single-visit engagement score |
Session History (sessions )
Stream only. An array containing every session the lead has ever had on your site, not just the most recent one. This is the raw material behind the summaries above, and it is what makes the Stream suited to data warehouses and BI tools rather than CRM fields.
| Field | Type | Description |
|---|---|---|
sessions[].session_date |
ISO 8601 | When that session occurred |
sessions[].entry_page |
url | The first page of that session |
sessions[].exit_page |
url | The last page of that session |
sessions[].duration |
number | Session length in seconds, from first to last recorded event |
sessions[].focused_score |
number | The score for that specific session |
sessions[].pages[].url |
url | Each page visited |
sessions[].pages[].title |
string | That page's title |
sessions[].pages[].engagement_score |
number | Engagement score for that page |
sessions[].pages[].time_on_page |
number | Seconds spent on that page. null on the exit page, since there is no following event to measure against |
sessions[].events[] |
array | Events triggered during that session, with timestamps |
sessions[].exit_destinations[] |
array | Outbound links clicked during that session, each with a url and a timestamp |
sessions[].attribution |
object | Full attribution for that individual visit, same fields as first_attribution |
session_count |
number | Total number of sessions on record for the lead |
sessions_truncated |
boolean | true if the history was cut short to keep the payload deliverable (see below) |
Sessions are ordered newest first. There is no cap on the number of sessions, but if a lead's history would push the payload past roughly 5 MB, older sessions are dropped, sessions_truncated is set to true and session_count still reports the real total. In practice this only happens to bot traffic; a real lead's entire history is a few tens of kilobytes.
Event types
sessions[].events[] is a closed list. Every entry carries a type and a timestamp, and your own events also carry the name you gave them in name .
| Type | What it means |
|---|---|
authentication |
The lead returned through a Bread & Butter gate using an account they already had |
identity_conversion |
The lead gave an email address for the first time and became a named contact |
verified_conversion |
The email address passed Real-Time Email Verification |
form_submission |
A form on your site was completed |
contact_us |
A contact form or contact CTA was completed |
opt_in |
Marketing consent was given |
opt_out |
Marketing consent was withdrawn |
cookie_consent |
A choice was recorded in the Privacy Manager |
custom_data_updated |
Your site attached or changed custom data on the lead's profile |
custom |
One of your own events. The name you gave it arrives in name |
Page views and outbound clicks are not events. Pages live in sessions[].pages[] and outbound clicks in sessions[].exit_destinations[] , so you never have to filter them back out of the event array.
Exit destinations
sessions[].exit_destinations[] records the outbound links the lead clicked during that session, which is often where the real intent shows: a booking tool, a review site, a comparison page. Each entry carries a url and a timestamp , and nothing else.
When a session contained no outbound click the field is null rather than an empty array. That is the normal value for most sessions rather than a sign of anything missing. Exit destinations are Stream only; the Brief carries no exit destination field.
When Fields Are Populated
Not every field arrives on every payload.
UTM fields and click identifiers are always present in every attribution object. They are null when a lead arrives directly or through organic search, since there is no campaign to report, so your field mappings never break.
Enrichment fields under user and company populate once enrichment has run against that lead. Newly captured leads may arrive before enrichment completes.
focused_score is null until the lead has been scored, so you can tell "scored zero" apart from "not scored yet". previous_focused_score is null until the score has moved at least once.
number_of_employees is null when the figure was found only as a range, and number_of_employees_text carries the range instead, so a warehouse can filter on the number and a CRM field can display the text.
real_time_icebreaker requires a resolvable location. Leads on VPNs or corporate proxies may not receive one.
last_attribution matches first_attribution exactly on a lead's first session, since it is the same visit.
lead_stage carries the stage's current label as shown in your dashboard, so a renamed stage changes the value that arrives. Warehouses should join on lead_stage_rank in the Stream instead.
nurture_draft is absent until Nurture AI has generated a draft for the lead.
Every field is Bread & Butter's own. Nothing in either payload passes through a third-party data vendor's raw response or field names, so what you map today stays stable if a source changes behind the scenes.