Skip to content

BigQuery integration

Export attribution data into a BigQuery dataset you own

Every click, conversion and lead LeadJourney records lands in your own BigQuery, already joined to the campaign and the CRM stage. Looker Studio, Power BI and Tableau read it from there.

  • Live in 21 minutes
  • 95%+ accuracy, first-party
  • No pipeline to maintain

How the data moves

Traffic channelsWhere every journey starts
  • Meta
  • Google Ads
  • LinkedIn Ads
  • Microsoft Ads
  • Organic search
  • Organic social
  • AI search
Spend, campaigns, every visit
Offline conversions, revenue

AI Attribution Engine

LeadJourneyServer-side tracking, every channel in one journey
  • Server-side tracking of every visit
  • Multi-touch attribution per lead
  • The finished rows streamed to your dataset
Clicks, conversions, leads
Google BigQueryYour project, your dataset
  • Clicks
  • Conversions
  • Leads

The export is the same data the reports run on, not a second version of it. What lands in your dataset is what the dashboard shows and what the ad platforms are sent, so a number nobody can reproduce in SQL is not a thing that can happen.

Trusted by 100+ lead generation businesses, agencies and freelancers

  • Trading.de logo
  • Swedish Cold logo
  • Trustfactory logo
  • MLK Digital logo
  • CPC AG logo
  • DaxoMedia logo
  • Contentbär logo
  • Hivebuy logo
  • OBVIOUS logo

The gap

The warehouse has the spend and the deals. What it never had is the click between them.

Connectors will load every ad platform, your CRM and the GA4 export into BigQuery. None of them delivers the one join the whole project exists for: which click produced which deal.

A marketing warehouse loaded by hand

Every source in one project, and still no answer

  • Each ad platform reports its own conversions on its own schema, so the same lead is counted by two platforms and the totals never agree.
  • The GA4 export is the usual source for the click side, and it is collected in the browser: ITP, ad blockers and declined banners take their share before the row exists.
  • The CRM export has the deal, its stage and its value, and no field on it says which campaign started the journey.
  • Joining the two is identity resolution: a model somebody writes in SQL, tests against edge cases and then owns forever.
  • Attribution models are queries. Changing the definition means re-running them and explaining why last month's number moved.
  • A platform changes a schema and the job breaks, usually on a Monday, usually noticed in a dashboard.
  • Nothing leaves the warehouse. Sending the closed deal back to Meta or Google is a reverse ETL tool and another pipeline.

The dataset LeadJourney fills

Rows that are already joined, streaming in as they happen

  • Every visit is captured server-side and first-party on your own domain, at 95%+ accuracy, before any consent tool or ad blocker gets a vote.
  • Clicks, conversions and leads arrive as three streams that are already joined per lead, so the first useful query is a SELECT rather than a model.
  • The CRM stage and the deal value sit on the lead, because LeadJourney read them from HubSpot, Salesforce, Pipedrive or a webhook before the row was written.
  • Spend is pulled from every connected ad account, so cost per qualified lead and ROAS are figures rather than a quarterly spreadsheet.
  • First click, last click, linear, position based and time decay are switchable in the product, without re-processing anything or rewriting a query.
  • There is no job to own. The export is a connection, so a schema change at Meta is our problem and not your Monday.
  • The same rows go back to Meta, Google, LinkedIn and Microsoft Ads as conversions, which is the thing a warehouse cannot do at all.

How it works

From the ad click to your own SELECT statement

One direction, running on its own once connected. What arrives is the finished dataset, so the work your team would have spent on the join goes into the questions instead.

  1. 1

    The journey is recorded, attributed, then written to your dataset

    Everything that reaches the reports reaches the export.

    MetaGoogle AdsLinkedIn AdsYour website

    Ad clicks, spend, sessions and click IDs are tracked server-side across paid, organic and AI search.

    The CRM stage and the deal value join the journey, and the revenue is attributed with the model you chose.

    Google BigQuery

    Clicks, conversions and leads stream into the dataset in your own Google Cloud project as they happen.

    Your project, your storage, your access rules. LeadJourney writes rows and reads nothing back.

  2. 2

    Every tool that reads BigQuery now reads your attribution data

    No connector to install, because the dataset is the connector.

    Google BigQuery

    The dataset sits in your project next to whatever else your team already loads into it.

    Looker StudioPower BITableau

    Looker Studio, Power BI and Tableau all read BigQuery natively, so they point at the dataset like any other table.

    The board leadership already opens keeps its layout and starts running on attributed revenue.

    Your own models, cohorts and forecasts join marketing to everything else in the warehouse.

The return path

The rows do not only land in BigQuery. They go back to the ad account.

A warehouse reads. It has no way to tell Meta that the lead it delivered in March closed in June, and that is the half of the loop that makes the next campaign cheaper.

  • MetaConversions API

    Qualified leads, booked meetings and won deals, with the deal value

  • Google AdsOffline conversion import

    Deals matched on gclid, with the revenue for value based bidding

  • LinkedIn AdsConversions API

    Stage changes and won deals matched on li_fat_id

  • Microsoft AdsOffline conversions

    Deals matched on msclkid, with the amount

One dataset, two destinations

The row your analyst queries and the conversion Meta receives come from the same record, so the ad account and the warehouse cannot drift apart.

You choose what counts

Map any CRM stage to any platform event. Qualified lead, meeting booked, deal won, or all three, each with its own value.

Sent server to server

No pixel to fire, nothing for an ad blocker or a declined cookie banner to remove on the way out.

Reporting

The queries your team stops writing

Every one of these is a built-in report, answered before the export is switched on. The dataset is there for the questions after these, the ones only your business has.

  • Which campaign produced the revenue the CRM closed last quarter, not the conversions the platform claimed?

  • What does a qualified lead cost per channel, once the spend and the CRM stage are on the same row?

  • Which landing pages start the journeys that end in a won deal, rather than the ones with the best form rate?

  • How much pipeline came from ChatGPT, Perplexity and Gemini, as sources of their own?

  • How does the same month look on first click and on last click, without re-running anything?

  • Which channels bring the deals that stay, once you join them to the retention data already in the warehouse?

LeadJourney and a warehouse you fill yourself

Where a loaded dataset ends and LeadJourney starts

BigQuery will store anything and query it fast. What it cannot do is decide which click produced which deal, because nothing that loads into it knows.

BigQuery, loaded by your team compared with LeadJourney, capability by capability
Attribution in the warehouseBigQuery, loaded by your teamA model your team writes: stitch sessions to leads, leads to deals, then divide credit. Possible, and it is a project with an owner.With LeadJourneyArrives already joined. Clicks, conversions and leads stream in as three related streams, one journey per lead.
Where the click data comes fromBigQuery, loaded by your teamUsually the GA4 export, which is collected in the browser, so ITP, ad blockers and declined banners take a share before the row exists.With LeadJourneyServer-side and first-party on your own domain, at 95%+ accuracy, with the click IDs stored at the moment of the click.
CRM revenue on the rowBigQuery, loaded by your teamA separate CRM export, on its own schema, with no field naming the campaign that started the journey.With LeadJourneyThe stage and the deal value are read from HubSpot, Salesforce, Pipedrive, Close, Attio or a webhook and travel with the lead.
Ad spendBigQuery, loaded by your teamOne connector per platform, each with its own currency, timezone and definition of a day.With LeadJourneyPulled from every connected ad account automatically, so cost per qualified lead and ROAS are never more than two hours behind.
Attribution modelsBigQuery, loaded by your teamSQL per model. Changing the definition means re-running it and explaining the new number.With LeadJourneyFirst click, last click, linear, position based and time decay, switchable in the product without re-processing anything.
Organic, direct, referral and AI searchBigQuery, loaded by your teamAs good as the analytics export you loaded, which usually files AI assistants under referral or direct.With LeadJourneyFirst class channels next to paid, with ChatGPT, Perplexity, Claude and Gemini as distinct sources.
Who maintains the pipelineBigQuery, loaded by your teamYour team. A platform changes a schema, a job fails, and somebody rebuilds the model behind it.With LeadJourneyNobody on your side. The export is a connection, not a job you own.
Conversions back to the ad platformsBigQuery, loaded by your teamOut of scope. A warehouse reads; sending the closed deal back is a reverse ETL tool and another pipeline.With LeadJourneyEvery stage change and won deal goes back to Meta, Google, LinkedIn and Microsoft Ads from the same rows.
The people without SQLBigQuery, loaded by your teamWait for an analyst, or for the dashboard somebody has to build and keep.With LeadJourneyReports, dashboards and Atlas answer in plain language from the same data, so the warehouse is for the hard questions.

Keep the warehouse. Fill it with rows worth querying.

BigQuery stays where your team joins marketing to everything else the business knows. LeadJourney supplies the one dataset the connectors cannot: the click, the lead and the closed deal, already on the same row, and it hands that same record back to the ad platforms on the way past.

MCP server

Not every question deserves a query

The same journeys, spend and attributed revenue are served over MCP as well. Ask in Claude, ChatGPT or Cursor, and the answer comes from your own numbers without anyone opening the console.

LeadJourney MCP connected, try any tab

Which campaigns produced our closed revenue last month?

Based on your LeadJourney data, 3 campaigns produced 148,200 EUR of closed revenue last month:

Google Ads, Brand
38 leads, 9 closed deals, 61,400 EUR. Shortest path to signature.
LinkedIn, Retargeting
21 leads, 6 closed deals, 48,900 EUR. Seven touchpoints on average.
Meta, Lookalike DACH
54 leads, 5 closed deals, 37,900 EUR. Cheapest qualified lead.

Want this as a weekly summary in Slack?

Ask anything about your lead journeys

Where did our three biggest deals this quarter come from?

Your 3 largest deals this quarter all started somewhere the last click never showed you:

42,000 EUR
First touch LinkedIn Ads, closed 63 days later after a webinar signup.
28,500 EUR
First touch Google organic, paid click on day 11, demo on day 19.
21,800 EUR
First touch a Meta video view, form filled from email six weeks on.

Want the full touchpoint list for any of them?

Ask anything about your closed deals

Which landing pages turn LinkedIn traffic into qualified leads?

3 pages take your LinkedIn traffic, and the qualified rate between them runs from 4% to 18%:

/demo/attribution
18% qualified from 214 visits. Highest intent page on the site.
/guide/server-side
9% qualified from 612 visits. Most journeys stall after the download.
/pricing
4% qualified from 488 visits. Second most traffic, lowest intent.

Want the same breakdown for Google Ads traffic?

Ask anything about your landing pages

What did each channel cost per qualified lead last week?

3 channels spent budget last week. Cost per qualified lead ran from 41 EUR to 187 EUR:

LinkedIn Ads
41 EUR per qualified lead. 2,300 EUR spent, 56 qualified.
Google Ads
88 EUR per qualified lead. 4,400 EUR spent, 50 qualified.
Meta Ads
187 EUR per qualified lead. 3,740 EUR spent, 20 qualified.

Want an alert the moment a channel passes 120 EUR?

Ask anything about your cost per lead

What do the journeys that close have in common?

3 signals show up in most of your closed deals and in almost none of the lost ones:

Pricing page, 2+ visits
In 71% of closed deals. In 12% of the ones that never closed.
Demo within 14 days
In 64% of closed deals. Median 9 days from the first click.
Second contact
In 58% of closed deals. A colleague of the lead arrives on site.

Want these three scored onto every lead in your CRM?

Ask anything about your lead journeys

Setup

From nothing to rows in your dataset, in one sitting

No pipeline to build, no ETL licence and nobody's Monday spent on a broken job.

  1. 1About 21 minutes

    Add a single line of code

    Paste the LeadJourney script into your site or your GTM container, and connect the ad accounts you buy on and the CRM your deals live in. This is the part that produces the data worth exporting.

  2. 2About 5 minutes

    Paste a service account key in the Apps tab

    Create a service account in your own Google Cloud project with write access to the dataset you want filled, and paste its key into the BigQuery app. The project, the region and the access rules stay yours.

  3. 3Same day

    Map your columns and switch it on

    Choose what goes across and where it lands. From then on clicks, conversions and leads stream in as they happen, and every tool that reads BigQuery reads them too.

Original reviews

What our customers wrote, word for word

4.9 out of 5 across 11 public reviews. Quoted as they were left, shortened only by dropping whole sentences.

  • 5 out of 5 starsGoogle

    Before LeadJourney, we had no reliable tracking concept for our five-figure ad spend. We were manually building spreadsheet and CRM reports, inaccurate and time-consuming. Within two days, everything was set up. For the first time, I know exactly what I pay per lead and which campaigns actually bring in the best-qualified prospects.

    Florian BuckCEO, Klickkraft GmbH
  • With LeadJourney we are able to track all our leads and connect them with sales and attribution data to make better decisions. In the first month of using it we scaled from 0 to 100k revenue from paid ads only.

    GetreachBacklinks Marketplace (SaaS)
  • 5 out of 5 starsG2

    LeadJourney finally fixed my Marketing Analytics. It goes way beyond basic Ad Tracking Software. The Customer Journey Report saves hours of digging, and capturing everything from Offline Conversions to AI Search Tracking makes it the Best B2B Attribution Platform available.

    Sascha LenzMarketing Manager
  • 5 out of 5 starsTrustpilot

    Connected LeadJourney for 2 clients, setup took literally 20 minutes each. The data became more accurate, the reports actually make sense. Now clients look at the dashboard and the 'why don't the numbers match?' questions are gone.

    Alexander SamarPerformance Marketing Agency
  • 5 out of 5 starsGoogle

    With LeadJourney, we have finally found a tool that provides us with the data we need to scale our performance marketing campaigns. The most important KPI is no longer lead price but cost per qualified lead.

    Steffen SiesingCEO, Bilanzmanufaktur GmbH
  • 5 out of 5 starsG2

    The ability to track both online and offline conversions in one unified dashboard has given us insights we never had before. Our ROI has improved dramatically since we started integrating LeadJourney with our CRM. We're finally able to see the full customer journey, and it's been a game changer for our strategy.

    Andre WitzelFounder, Trading.de
  • 5 out of 5 starsTrustpilot

    The ability to seamlessly integrate data from multiple channels and see real-time insights has significantly improved our campaign results. We now focus on metrics that truly matter, like ROI and qualified leads.

    Nikita YatsunCEO, RLV Media GmbH

FAQ

What data teams ask before switching the export on

If yours is not here, our team answers in the chat within a few minutes.

What exactly lands in the dataset?

Clicks, conversions and leads: the same records the reports run on, already joined per lead, with the source, the campaign, the CRM stage and the deal value on them. It is the attributed dataset rather than a raw event dump, which is the point: the join is the part a warehouse cannot make on its own.

How often does the export run?

It streams. Rows land as the clicks, conversions and stage changes happen rather than in a nightly batch, so a query at four in the afternoon is answering about this afternoon.

Whose Google Cloud project is the data in?

Yours. You create the dataset in your own project, you set the region and the access rules, and you pay Google for the storage and the queries the way you already do. LeadJourney writes rows into it with a service account key you issue and can revoke at any time.

Do you have a Looker Studio, Power BI or Tableau connector?

No, and none is needed. All three read BigQuery natively, so once the export is running they point at your dataset the way they point at any other table. That is exactly why the export lands in BigQuery: one destination, and the BI tools follow for free.

What permissions does the service account need?

Write access to the one dataset you want filled, and nothing else. LeadJourney does not read from your project, does not touch other datasets and has no reason to hold anything broader. Revoking the key stops the export and changes nothing else.

When does the first row arrive?

As soon as the connection is saved and new activity happens, which on a live site is usually minutes. Ask us on the call what happens to the history already in your workspace: that answer depends on how much of it there is.

Do I need a warehouse to use LeadJourney?

No, and most customers do not have one. The reports, the dashboards, the scheduled emails and Atlas answer the same questions without SQL. The export is for the teams that already run a warehouse and would rather join marketing to the rest of the business themselves.

Can I export several workspaces?

Yes. Each workspace connects its own dataset, which is how an agency keeps client data apart and how a group keeps each entity's data in the entity's own project. Ask us about the shape you need before the rollout.

Which plans include the BigQuery export?

The Scale and Enterprise plans, alongside API access. On every plan the same data is reachable through the Zapier app, webhooks and the MCP connection, so the export is a convenience for warehouse teams rather than the only way out.

What about Snowflake, Redshift or Databricks?

The Snowflake export is on the roadmap and is marked that way on the pricing page rather than sold as live. Redshift and Databricks are not planned today. If your stack is one of those, the API and the Zapier app are the routes that work now, and it is worth telling us: the roadmap is shaped by which ones people ask for.

Is exporting to our own warehouse GDPR compliant?

It is the arrangement most data protection officers prefer, because the data lands in infrastructure you control under your own agreement with Google. On our side, LeadJourney processes and stores data in the EU, signs an Art. 28 data processing agreement, and tracks first-party and server-side so consent decisions are respected rather than worked around.

Your data, in your stack

Put the attributed dataset in your own BigQuery

Connect your ad accounts and your CRM, switch the export on, and the rows that explain your revenue land next to everything else your team already queries.

LeadJourney dashboard showing lead sources, campaign performance and attributed revenue side by side