Marketing Data Integration & Attribution
We bring Marketo, your CRM, your ad platforms and your website analytics into Snowflake or another data warehouse, then build the attribution that shows which campaigns actually produce leads, revenue or donations.
Why Marketing Data Belongs in the Warehouse
Each ad platform counts conversions its own way and reports every conversion it touched as its own, so Google Ads, Meta and LinkedIn together usually report more conversions than really happened. Marketo holds the person and every email, form and web visit, and the CRM holds the opportunity or the gift. Each system holds part of the journey, and no single one holds all of it.
In the warehouse those sources can be joined on the same person and the same campaign. A cost per lead, a return on ad spend or a cost per dollar raised is then calculated once, from one set of figures, and several attribution models can be compared on the same data.
We built this for a marketing agency that manages paid media for 23 clients across five ad platforms. We brought every platform and GA4 into Snowflake through Hevo, and Shapley-value attribution replaced last-click reporting within four weeks. The case study describes the build, and our Shapley article publishes the tested code.
Data Sources
What We Connect
Each source lands in its own raw schema first, exactly as the platform sends it, so nothing is lost before the modelling starts and any figure can be traced back to the system it came from.
Marketo Engage
Leads, activities such as email opens, clicks, form fills and web visits, programs and program membership. Marketo's Bulk Extract API shares a 500 MB daily quota across leads, activities, program members and custom objects, and each job covers at most 31 days, so we plan the historical backfill in 31-day windows spread over several days. Ongoing loads run through Hevo, Fivetran or Airbyte, or through our own extract where a connector does not fit.
Ad platforms
Spend, impressions, clicks and platform-reported conversions by campaign, ad group and day from Google Ads, Meta Ads, LinkedIn Ads, Microsoft Advertising and TikTok Ads. Managed connectors from Hevo, Fivetran and Airbyte cover the major platforms, and Snowflake's own Openflow connectors cover Google Ads, Meta Ads and LinkedIn Ads.
Website analytics
GA4 events and sessions with their UTM source, medium and campaign. They connect anonymous visits to the campaign that brought them and, where the form captures the analytics client ID, to the person who later converts.
CRM and donor systems
Opportunities and revenue from Salesforce, HubSpot or Dynamics 365. For nonprofits, gifts, pledges and recurring donations from Salesforce Nonprofit Cloud or a donor database such as Raiser's Edge NXT. This is where a lead becomes revenue, or a supporter becomes a donor.
Marketo Measure
If you already use Marketo Measure, formerly Bizible, its data warehouse add-on gives you a read-only Snowflake account. We join its touchpoints with ad spend and CRM data instead of rebuilding what it already does.
Email, events and forms
Email platforms, event registrations, survey tools and the spreadsheets a team still keeps by hand, loaded on the same schedule so every touchpoint sits in one place.
Attribution
How We Build Attribution
One touchpoint table
Every ad click, email click, form fill, web visit and program success becomes a row with the same fields: person, channel, campaign, timestamp, cost and conversion. Each platform names its levels differently, so a mapping table brings campaigns, ad groups, ad sets and campaign groups into one taxonomy, and UTM values are cleaned against it.
Rule-based models side by side
First-touch, last-touch, linear, time-decay and position-based models all run on the same touchpoint table. The marketing team can then see how much of a channel's credit depends on the model chosen, before any budget moves.
Data-driven models
Shapley-value attribution credits each channel with its average marginal contribution across journeys, and Markov-chain removal effects show how many conversions would be lost without a channel. Both run inside Snowflake with Snowpark, and our Shapley implementation is published with its tests.
How a Project Runs
- 01
Define conversions and identity
We agree what counts as a conversion, such as a marketing-qualified lead, an opportunity, a donation or an event registration, and which identifiers join the sources: email address, Marketo lead ID, CRM contact ID, analytics client ID and ad click IDs.
- 02
Land the raw data
Connectors load each source into its own raw schema in Snowflake on a schedule, and history is backfilled within each API's limits, such as Marketo's daily export quota.
- 03
Model with dbt
dbt models clean and join the sources into the touchpoint, campaign and conversion tables, with tests on keys and freshness, and spend totals checked against each platform's own figures.
- 04
Run the attribution
Rule-based and data-driven models run on a schedule and write the credited conversions and revenue for every touchpoint.
- 05
Report
Dashboards in Power BI, Tableau or Looker Studio show attributed conversions, cost per conversion, return on ad spend or cost per dollar raised, by channel and campaign.
- 06
Send results back
Where it helps, reverse ETL sends segments to Marketo and offline conversions to the ad platforms, so automated bidding can optimise for donations or revenue.
For Nonprofits and NGOs
For a nonprofit the conversion is usually a donation, a recurring gift, a volunteer sign-up or an event registration, and the useful measure is the cost of raising each dollar rather than return on ad spend. We attribute gifts to campaigns from the donor CRM, keep one-off and recurring giving apart so that a monthly donor is not counted as new every month, and report cost per dollar raised by channel.
Many charities also run Google Ad Grants, which gives qualifying nonprofits up to $10,000 a month in Google search ads (Google for Nonprofits). We keep grant-funded search apart from paid search in the reporting, so the grant's contribution to donations can be measured on its own.
Donor data is sensitive. Personal fields are masked for everyone who does not need them, matching uses hashed email addresses where possible, and consent flags from the CRM decide which records can be used for marketing.
Our Work
Related Reading
Case study: Cross-Channel Attribution with Hevo and Snowflake
A marketing agency with 23 clients on five ad platforms moved from last-click spreadsheets to Shapley-value attribution in Snowflake in four weeks.
Shapley Value Attribution in Snowflake
One touchpoint model across ad platforms and a tested Snowpark implementation of Shapley values.
Hevo Data to Snowflake Setup
Pipeline creation, Snowflake role configuration, schema drift handling and monitoring.
Hevo vs Fivetran vs Airbyte
Pricing models, connector coverage, CDC support and schema handling compared.
Reverse ETL: Warehouse to SaaS
Sending warehouse data back to Salesforce, HubSpot and Google Ads.
Marketing Data Questions
We Actually Get Asked
Yes. We load leads, activities, programs and program membership through Marketo's Bulk Extract API, either with a managed connector such as Hevo, Fivetran or Airbyte or with our own extract. Bulk Extract has a 500 MB daily quota shared across those objects and a 31-day limit per job, so a long history is backfilled in windows over several days, and we plan that schedule before the first load.
We usually start with first-touch, last-touch and linear models side by side, because the differences between them already show which channels are over-credited. Data-driven models such as Shapley values are added once there are enough converting journeys for their results to be stable. Every model runs on the same data, and each dashboard states which model it shows.
That depends on how you use it. Marketo Measure handles touchpoint tracking and attribution inside the Adobe stack, and its data warehouse add-on exposes that data in Snowflake. A warehouse model adds what Marketo Measure does not hold, such as spend from every ad platform, offline events and gifts from a donor database. We can work with it or without it.
No. The same approach works on BigQuery, Databricks and Amazon Redshift, and the common managed connectors load into all three. For dashboards that must update within seconds, we also build on ClickHouse.
Personal fields such as email addresses are masked for every role that does not need them, using the warehouse's masking policies. Matching between systems uses hashed identifiers where possible, consent and unsubscribe flags from Marketo and the CRM are carried into the models, and dashboards show aggregated, attributed results.
Something else on your mind?
Ask Us DirectlyPlanning a Marketing Data Project?
Tell us which platforms you run and what counts as a conversion, and we will show you what the first version of your attribution can look like.
Talk to a Data Engineer