What's Actually Inside the Marketo Measure Data Model (And Why Most Teams Never Look)
Most people who use Marketo Measure day-to-day never open the object schema, and honestly, there's no reason they should have to. You run your campaigns, you check your dashboards, and the attribution numbers show up where they're supposed to. But when something looks off, when a deal closes, and the touchpoints attached to it don't match what you remember happening, the answer almost always lives in a part of the system nobody looks at until they have to: the object model connecting Marketo Measure to Salesforce.
We spend a lot of time in that layer, so we wanted to walk through what's actually down there, in plain terms, without pretending it's simpler than it is.
The engine behind the numbers
Before anything appears in Salesforce, Marketo Measure pulls in data from a wide range of sources. The Bizible JavaScript tag tracks anonymous and known visitor behavior on your site. Salesforce feeds back lead, contact, and opportunity data. Ad platforms like Google AdWords, LinkedIn, Facebook, and DoubleClick provide campaign- and click-level details, and Microsoft Dynamics can also plug in as a CRM source. All of it funnels into the core Bizible processing layer, where touchpoints are actually created.
That's an important distinction to sit with. Marketo Measure isn't a reporting layer sitting on top of your CRM. It's a system that ingests raw interaction data from a dozen different sources, reconstructs a person's journey from scratch, and then writes that journey back into Salesforce as structured records. Everything downstream, including your dashboards and any data warehouse export, depends on that reconstruction being done correctly.
Reconstructs each person's journey from scratch, then creates the touchpoints.
Not a reporting layer on top of your CRM. Everything downstream depends on this step being right.
Two touchpoint objects, doing two different jobs
Marketo Measure has two touchpoint objects, and confusing them is one of the more common mistakes we see.
The Bizible Touchpoint object is the raw record. Every time someone interacts with a tracked channel, whether that's a form fill, an ad click, a landing page visit, or an offline campaign response, a touchpoint gets created holding the details of that specific interaction: the campaign, the ad group, the keyword, the landing page, the geography, the referrer, the marketing channel and channel path, the date and position of that touchpoint in the person's overall journey. It's a log entry, not a judgment call.
The Bizible Attribution Touchpoint object is where the judgment calls happen. It carries nearly all the same descriptive fields as the base touchpoint, but adds the attribution math on top: attribution percentage and revenue broken out by model (first touch, U-shaped, W-shaped, full path, lead creation touch, and any custom model you've built), plus counts by model so you can see how many touchpoints in a journey received credit under each one. This is the object your revenue attribution reporting actually reads from.
The reason this split matters for how you troubleshoot: if a touchpoint looks wrong on the raw side, the problem is almost always in tracking or field mapping, upstream of Salesforce. If the attribution percentages look wrong but the underlying touchpoint is fine, the problem is in your model configuration, not your data collection. Those are two very different fixes, and knowing which object to check first saves a lot of time.
Bizible Touchpoint
One entry per interaction — a form fill, an ad click, a landing page visit, an offline campaign response. A log entry, not a judgment call.
Bizible Attribution Touchpoint
Nearly all the same descriptive fields, plus the attribution math on top. This is the object your revenue attribution reporting actually reads from.
The Bizible Person object is the glue
Sitting between the touchpoint objects and Salesforce is the Bizible Person object, a custom object whose entire job is linking touchpoints to the right Lead or Contact record. It's a small object on paper (Contact, Lead, and a UniqueID field), but it's the connective tissue that makes attribution possible at all. Without a clean Person-to-Lead-or-Contact match, touchpoints exist in isolation and never roll up into anything usable on the CRM side.
What actually lands on your standard Salesforce objects
This is the part most people never realize is happening. Marketo Measure doesn't just live in its own custom objects. It writes fields directly onto the standard objects your sales team already works in, and it does so in a specific, deliberate way.
On Lead and Contact, you'll find marketing channel, ad campaign name, touchpoint date, touchpoint source, and landing page, each duplicated as a first-touch (FT) and last-touch (LC) pair. That duplication is intentional. Sales and marketing frequently want to know both where someone entered the funnel and what brought them back right before conversion, and trying to serve both questions with a single field would mean overwriting one answer to show the other.
On Account, there's a Predictive Engagement Score, used for account-based marketing to gauge how engaged an account is, factoring in things like page view recency and how many associated contacts are active.
On Opportunity, there's a Bizible Opportunity Amount field, which exists specifically to solve for teams using a custom amount field instead of the standard Amount field. A workflow maps the custom value over, and Marketo Measure reads from this field for revenue attribution. Skip that workflow, and your revenue-attributed reporting will quietly be wrong, with no error message telling you so.
On Campaign, four fields and a button control whether and how a Salesforce campaign gets included in offline attribution: a UniqueID for internal tracking, an Enable Buyer Touchpoints checkbox, and Touchpoint Start Date and End Date fields that define the window in which historical campaign membership counts as a touchpoint. This is commonly used to backfill attribution for digital campaigns that predate the Marketo Measure install. Get the date range wrong, and you either miss legitimate history or double-count activity that shouldn't be there.
Campaign Member carries diagnostic Touchpoint Status fields (separately for Lead, Contact, and Opportunity), which tell you whether a touchpoint was successfully created for that campaign membership or not, and if not, why. These aren't turned on by default, but they're often the fastest way to find out why a specific conversion isn't showing up in reporting.
Activity and Bizible Events extend tracking to call activity and custom event data respectively, feeding into calltracking integrations and event-based reporting.
Why this matters if you're evaluating a partner
None of this is exotic. It's all documented, and a determined admin could work through it given enough time. But the object relationships, the FT/LC field duplication logic, the workflow dependency on Opportunity Amount, the campaign touchpoint date windows, all of it sits in the kind of territory where a single misconfigured field silently skews revenue attribution for months before anyone notices, usually because a report looks "close enough" to not raise flags.
That's the gap between knowing Marketo Measure exists and knowing how to keep it honest. We spend our time in exactly this layer, which is generally the difference between an attribution system that requires constant babysitting and one that quietly does its job.
