Field Mapping 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 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 Webhook or a Standard Webhook. The Brief carries identity, firmographic and attribution fields, What's interesting (the single most useful thing to know about the lead right now), the written sales-context fields and every Nurture email sent, 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, the current Nurture draft and the full 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 . Scores are rounded to two decimal places, except focused_score , which is a whole number, or null  until the lead has been scored. A value that is absent arrives as null , never as an empty string, so your field mappings never break.

Payload type

The first two fields of every Brief and Stream delivery tell your receiver what it has.

Field Type Brief Stream Description
event string ✓ ✓ Which payload this is: intelligence_brief  or intelligence_stream  (the List arrives as basic_list )
schema_version number ✓ ✓ The payload format version, currently 1 . It goes up if a change could break an existing receiver

Trigger (trigger )

Every Brief and Stream delivery says which trigger sent it, so one receiver can tell leads from different integrations apart. Alongside name  and kind , the object carries the one field that matches kind . The List doesn't carry a trigger  object.

Field Type Brief Stream Description
trigger.name string ✓ ✓ The integration's name, as entered when it was set up
trigger.kind string ✓ ✓ What the trigger is: lead_stage , saved_filter  (a funnel you've saved) or event
trigger.lead_stage string ✓ ✓ The lead stage, by its label as shown in your dashboard. Present when kind  is lead_stage
trigger.saved_filter string ✓ ✓ The name of the saved funnel. Present when kind  is saved_filter
trigger.event string ✓ ✓ The event the integration fires on. Present when kind  is event , which applies only to integrations set up on a single event before 9.6

Out of credits (out_of_credits , notice )

When your account is out of Bread & Butter credits, the Brief and Stream keep arriving with the same fields, so your mappings don't break. The lead's name and email are filled in, every researched field is null , and these two top-level fields tell your receiver why.

Field Type Brief Stream Description
out_of_credits boolean ✓ ✓ true  when the payload was sent while your account was out of Bread & Butter credits
notice string ✓ ✓ One line to show in place of the research: "Your Bread & Butter account is out of credits. Add Bread & Butter credits to resume the full Intelligence Brief."

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
msclkid string ✓ ✓ Microsoft Ads 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.

What's interesting (whats_interesting )

The single most useful thing to know about this lead right now: a short headline and one or two sentences with the facts behind it, in plain words. It starts with how the person relates to what you sell, and draws on what Bread & Butter already holds on them: their journey on your website, how they found you, their profile and company research, and colleagues from the same company who have visited. It's the first thing a rep reads in the Brief, wherever the Brief goes.

It's rewritten after every visit, and again when the lead's profile or company research completes. The new version replaces the old one. The three fields sit at the top level of the payload, so you can map the combined line to one CRM field, or the headline and text to two.

Field Type Brief Stream Description
whats_interesting text ✓ ✓ The headline and text together, as "Headline. Text"
whats_interesting_headline string ✓ ✓ The headline on its own
whats_interesting_text text ✓ ✓ The one or two sentences on their own

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. Two companion fields sit beside them: latest_session_summary_html , the session summary as HTML, and compelling_sales_trigger_url , the source link for the sales trigger.

Field Type Brief Stream Description
latest_session_summary text ✓ ✓ A single sentence on what they did during their most recent visit, in plain text
latest_session_summary_html html ✓ ✓ The same session summary as HTML
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. Prose only; the link is in compelling_sales_trigger_url
compelling_sales_trigger_url url ✓ ✓ The source link for the sales trigger. null  when the trigger is drawn from the company's business highlights rather than a linked source

Nurture (nurture_sent , nurture_draft , nurture_drafts )

Nurture generates a draft email each time a lead returns. The Brief carries every email actually sent. The current draft, and the full history of every draft ever generated, are in the Stream only.

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. Up to 20 of the pages this lead has viewed across all sessions, as structured data, ordered by number of visits with the most visited first. Use total_engagement_score  or average_engagement_score  to rank by attention instead. 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 2 MB, older sessions are dropped, sessions_truncated  is set to true  and session_count  still reports the real total, so you can tell how many are missing. In practice this only affects leads with an unusually long history; most leads' 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.

whats_interesting , whats_interesting_headline  and whats_interesting_text  are null  until the first What's interesting has been written for the lead, which happens shortly after their profile research completes. A lead captured moments before the Brief is sent may arrive without one; the next Brief carries it.

When out_of_credits  is true , every researched field is null  and only the lead's name and email are filled in.

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  (Stream only) is absent until Nurture 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.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.