Skip to content

Offline conversion tracking

Offline conversion tracking that optimises ads on deals, not form fills.

A call, a booked meeting, a lead marked qualified, a deal closed weeks later: each one goes back as it happens.

  • Google, Meta, LinkedIn, Microsoft
  • Matched on the click ID
  • Deal value on every event

Rated by teams whose deals close off the browser

  • Trustpilot4.9 out of 5 on Trustpilot
  • G25.0 out of 5 on G2
  • Capterra5.0 out of 5 on Capterra

Offline conversion tracking for teams at

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

What the pixel never sees, sent back

Your workspace
Offline conversions sentCRM stage changes leaving as conversions, last hour
Live
  • Closed won, €14,800HubSpot · Northwind LogisticsSent to Google AdsOffline import
  • Call bookedCalendly · Mira SchulzSent to Meta CAPISchedule event
  • Opportunity, €31,000Pipedrive · BuildRightSent to LinkedInConversions API
  • Closed won, €4,800Close · Harbor EventsSent to Microsoft Adsmsclkid matched
  • Lead disqualifiedHubSpot · wrong fitNot sentKept out

Every event carries the click ID, hashed email and phone and the deal value, so the platform can match it and bid on it.

The definition

What is offline conversion tracking?

In short

Offline conversion tracking sends the conversions that happen outside the browser (a phone call, a booked meeting, a lead marked qualified, a deal closed in the CRM) back to the ad platform that produced the click, matched on the click ID or on hashed contact data, so Google Ads, Meta, LinkedIn and Microsoft Ads optimise on customers instead of on form fills.

  • Keep the click ID until the deal closes

    Store the gclid, fbclid, li_fat_id and msclkid at the first click and keep it for months, because the conversion arrives long after the cookie is gone. See UTM and click ID tracking.

  • Read the outcome from the CRM

    The conversion is a stage change in HubSpot, Pipedrive, Close or Salesforce, not a page view, so the software has to listen to the CRM and know which stage means what.

  • Send it through each platform's API

    Offline conversion import and enhanced conversions for Google Ads, the Conversions API for Meta and LinkedIn, offline conversions for Microsoft Ads, with the value and the currency on the event.

  • Deduplicate and stay compliant

    Count once against a running pixel through shared event IDs, hash every identifier before it leaves, and send nothing a consent decision rules out. The glossary entry has the background.

Why the pixel stops too early

Your ad platform is optimising on the last thing it saw. For lead gen, that is a form.

A pixel can only report what happens in the browser. After that every platform is bidding blind: it knows who submitted, not who signed.

  • The pixel stops at the form submit. Whether the lead qualified, booked, ghosted or bought never reaches the platform.
  • So the algorithm finds form fillers. Meta and Google get very good at the cheapest submit, and lead quality decays until the account is retrained on buyers.
  • Calls and meetings never count at all. A phone call, a Calendly booking or a signed proposal leaves no browser event to fire.
  • Offline conversion import exists as a chore. A CSV with the gclid, the conversion name, the time and the value, exported from the CRM and uploaded by hand, until someone forgets.
  • Zapier chains break silently. One workflow per stage per platform, one renamed field, and the platform stops learning without telling anyone.
  • Sales cycles outlast the cookie. A deal that closes in week five arrives after the browser cookie expired, so even a diligent upload has no click to match.

The result is a campaign report that rewards volume. The ad set producing your customers is often the one being cut for a high CPL.

Watch it

The deal that closed in your CRM, back in the ad account

How closed revenue and lead quality reach Meta and Google, so the algorithm buys customers rather than cheap form fills.

4:35 minutesAll videos

Case studies

What changes once the attribution is right

One measured result per customer, with the person, the role and the company behind it.

  • Portrait of Karsten Guhr

    Tax and accounting

    54% better lead quality after using LeadJourney for marketing

    Karsten Guhr

    Managing Director

    Read the story
  • Portrait of Nikita Yatsun

    SEO agency

    €500k MRR reached profitably, scaling an SEO agency on performance marketing

    Nikita Yatsun

    Managing Director

    Read the story
  • Portrait of Florian Buck

    Klickkraft GmbH

    Business coaching

    €10-20k in monthly Meta spend, tied to qualified leads and revenue per ad

    Florian Buck

    Managing Director

    Read the story
  • Portrait of Marc Richard

    LinkedIn growth agency

    2x customer retention, once every LinkedIn touchpoint was tracked to revenue

    Marc Richard

    CEO

    Read the story
  • Portrait of Andreas Malkow

    Digital publishing

    Which article produced the lead and the revenue, across AI and organic search

    Andreas Malkow

    CEO & Head of PR

    Read the story
  • Portrait of Philipp Nessmann

    SEO and GEO agency

    Proven ROI on every retainer, from organic and AI search leads through to revenue

    Philipp Nessmann

    Managing Director

    Read the story
  • Getreach

    Backlinks marketplace (SaaS)

    0 to 100k in revenue from paid ads alone, inside the first month

    Getreach

    getreach.com

    Read the story

How the data moves

Clicks in from the ad platforms, outcomes back from the CRM.

The click ID is stored on your own tracking domain before a redirect or a cookie limit can lose it. The CRM reports the stage change, LeadJourney matches it to that click and sends it back through each platform's API.

Sends offline conversions to

LeadJourney

Outcomes back to their clicks

Read from the CRM as they happen

  • Qualified lead
  • Call booked
  • Opportunity
  • Closed won + value

Listens to stage changes in

and 100+ more by webhook
Qualified leads, booked calls and closed revenue, with value and currency

Integrations

Every source and every CRM, connected.

The ad platforms and channels a touchpoint can come from, and the CRMs the outcome is read back from. Open any tile for what exactly moves between LeadJourney and that tool.

Ad platforms

Spend, campaign structure and click IDs come in. Closed deals go back out as offline conversions.

All traffic channels

Organic channels

Unpaid clicks from search and social, attributed per post, per video and per keyword.

All traffic channels

AI search engines

The traffic your analytics still files under direct. No setup, the tracking script separates it.

All traffic channels

CRM and sales

Lead stage and deal value flow in. Every campaign sees the revenue it actually produced.

All CRM and sales tools

What the software does

Everything offline conversion tracking has to do, without a spreadsheet in the loop.

Every CRM stage as a conversion

Map qualified, call booked, opportunity and closed won once, and each stage change goes back as its own conversion the moment the CRM records it. See CRM integration.

Click IDs kept for months

The gclid, fbclid, li_fat_id and msclkid are captured first-party at the ad click and stored for as long as the sales cycle takes, so a deal that closes in week six still has a click to land on.

Conversions API for Meta and LinkedIn

Events go server to server with the click ID, hashed email and phone from the CRM record, the value and the currency, and a shared event ID so a running pixel does not count the same lead twice.

Calls and booked meetings count too

A phone call through call tracking or a meeting booked in Calendly is matched to the click that produced it and sent back as a conversion, so the campaign that makes the phone ring stops reporting zero.

Every stage, with its value

Not only the closed deal. The qualified lead and the booked call go back as events, the won deal with its amount, so bidding can weigh €54,000 against €2,000.

Every event sent, on the record

A log of each conversion sent: the stage, the platform, the click ID it matched and the platform's response. So a drop in conversions is a fact you can look up.

Why it works

An ad platform can only find more of the people you tell it about.

Smart Bidding and Meta's delivery optimise on the conversion actions they receive. Told about form fills, they find people who fill forms. Told about qualified leads and closed deals with the value attached, they find buyers. Sending it from the CRM stage rather than a monthly upload keeps the lesson current.

The mechanics

What goes back, to which platform, matched on what.

Your workspace
One deal, matched backHubSpot deal 4471, first click to closed won
JWJonas WeberAcme SupplyClosed won
  1. Google AdsClicked "warehouse racking supplier", gclid storedDay 1
  2. FormRequested a quote, matched to the clickDay 1
  3. HubSpotMarked qualified by salesDay 3
  4. HubSpotOpportunity opened, €54,000Day 12
  5. HubSpotClosed wonDay 31
Imported into Google Ads as an offline conversion on the gclid€54,000

Three conversion actions went back on the way: qualified on day 3, opportunity on day 12, closed won on day 31.

Google Ads and the gclid

A deal closed on day 31 lands on the keyword that was clicked on day 1.

Google matches on the gclid it appends to the landing URL. LeadJourney stores it at the click and imports the conversion with the four fields Google expects: gclid, action, time and value. Enhanced conversions cover the lead that arrived without one.

  • gclid captured first-party at the click, kept for months
  • A conversion action per stage: qualified, opportunity, closed won
  • Value and currency from the CRM deal, ready for value-based bidding
  • Hashed email and phone as the fallback when there is no gclid
Your workspace
Stage mapWhich CRM stage goes where, as what, with what value
5stages mapped
4platforms from one map
€176.7ksent back this month
CRM stageSent toAsValue
New leadAll fourLeadCount
Qualified leadAll fourQualified leadCount
Call bookedMeta, GoogleScheduleCount
OpportunityGoogle, LinkedInOpportunityPipeline value
Closed wonAll fourPurchaseDeal value

Disqualified stays unmapped on purpose: the platform learns from buyers, not from everyone who filled the form.

Meta and the Conversions API

The stage change becomes a Conversions API event Meta can match and count once.

Meta offline conversions travel through the Conversions API: the event your stage maps to, the fbclid captured at the click, hashed email and phone from the CRM, and the deal value. A shared event ID deduplicates it against a running pixel.

  • Lead, Schedule and Purchase events mapped to your CRM stages
  • fbclid, hashed email and hashed phone on every event
  • Shared event ID, so the pixel and the server never double count
  • Sent as the stage changes, inside Meta's seven day window
Your workspace
Offline conversions by platformSpend, conversions sent back and closed revenue, last 30 days
ChannelSpendSent backRevenue
Google Ads€11.2k88€72.4k
Meta Ads€9.6k62€51.0k
LinkedIn Ads€7.4k31€38.5k
Microsoft Ads€2.1k22€14.8k
Closed revenue sent back on €30.3k spend€176.7k

Sent back counts qualified leads, booked calls and closed deals. Revenue is the closed-won amount in the CRM.

What changes in the account

Spend against customers and closed revenue, per platform, after the loop is on.

Once the platforms learn from closed deals, the report changes with them: cost per customer instead of cost per form fill, and the expensive CPL turns out to be the one that closes.

  • Conversions sent back per platform, next to spend
  • Closed revenue from the CRM in the same row as the budget
  • Cost per customer per campaign, ad set and keyword
  • LinkedIn and Microsoft in the same table as Meta and Google

Live in 21 minutes

Offline conversion tracking set up in three steps

No CSV template, no Zapier chain, no engineering ticket. The click IDs are captured from the first minute and the stage map is done on a call if you want it.

  1. 1About 5 minutes

    Install

    Add one script on your own tracking subdomain. From that moment every ad click is recorded first-party with its gclid, fbclid, li_fat_id or msclkid, and kept.

  2. 2About 10 minutes

    Connect

    Connect Google Ads, Meta, LinkedIn and Microsoft Ads for the conversion APIs, and your CRM for the stages. Native for HubSpot, Pipedrive, Close and Attio, a webhook for Salesforce and the rest.

  3. 3About 5 minutes

    Map the stages

    Choose which CRM stages count, what each is called on each platform and which carry a value. From the next stage change on, the conversions flow back by themselves.

How it compares

The CSV upload, the Zapier chain, and offline conversion tracking that runs from the CRM.

What you needManual CSV uploadZapierZapier or custom scriptLeadJourney
Has a click ID to match onPartly: Only if the form stored the gclid in the CRMPartly: Only what the form passed throughYes: Captured first-party at the click, kept for months
Sent when the stage changesNo: Whenever someone runs the uploadPartly: Per zap, per stage, breaks silentlyYes: Within minutes of the CRM update, automatically
Deal value and currency on the eventPartly: A column filled in by handPartly: If the field mapping still holdsYes: From the CRM deal, per event
Deduplicated against the pixelNo: Counts twice if the pixel also firedNo: No shared event IDYes: Shared event IDs, counted once
Every platform from one stage mapNo: One template per platformPartly: One workflow per platform and stageYes: Google, Meta, LinkedIn, Microsoft from one map
Setup and upkeepPartly: Free, and a recurring chorePartly: Days to build, yours to maintainYes: 21 minutes, no developer

What changes

What advertisers do differently once the platform sees buyers.

Down:

Cost per customer

When the platform optimises on qualified leads and closed deals, the price of an actual customer falls, whatever happens to the CPL.

Up:

Lead quality

The algorithm chases people who look like your closed customers, so the share of leads sales wants to talk to rises.

Done:

Value-based bidding with real values

Google and Meta receive the deal amount, so a €54,000 deal and a €2,000 deal stop counting the same.

Done:

No more monthly upload

Nobody exports a CSV, nobody re-maps a zap. The stage change is the trigger and the log shows it went.

Done:

Long sales cycles still teach the algorithm

A deal that closes in week six still lands on its click, because the click ID outlived the cookie.

Lasting:

The winning ad set stays on

Campaigns that produce customers at a high CPL stop looking like losers, in the platform and in your own report.

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

Common questions

Offline conversion tracking, the questions buyers ask

What advertisers want to know before they stop uploading CSVs.

What counts as an offline conversion?

Anything that happens away from the browser and matters to the business: a lead marked qualified, a call booked, a phone call taken, a proposal accepted, an opportunity opened, a deal closed won. In LeadJourney each of those is a CRM stage or an event from a connected tool, and you choose which of them go back to which platform and which carry a value. A disqualified lead can be kept out of the signal on purpose.

How does Google Ads offline conversion tracking work?

Google Ads matches an imported conversion on the gclid, the click ID it appends to your landing page URL when auto-tagging is on. LeadJourney stores that gclid first-party at the click. When the mapped CRM stage changes, it imports a conversion against that gclid with the conversion action name, the conversion time, the value and the currency, server to server. Google's click-through window for imported conversions can be set up to 90 days, so the click ID has to be kept at least that long, which is why LeadJourney keeps it for months. A lead that came in without a gclid goes back through enhanced conversions for leads instead, matched on hashed email and phone from the CRM record.

How do Meta offline conversions work?

Through the Conversions API. LeadJourney sends an event with the name your stage maps to (Lead, Schedule or Purchase), the event time, the fbclid captured at the click, hashed email and phone from the CRM record, and the deal value with its currency. A shared event ID means a pixel that is still running does not count the same lead twice. Meta accepts an event up to seven days after it happened, which is one reason the sync runs on the stage change and not as a monthly batch.

Do I still have to upload a CSV?

No. The CSV template is the manual version of the same thing: a gclid, a conversion name, a time and a value per row, exported from the CRM and uploaded to Google Ads or Microsoft Ads by hand. LeadJourney reads the stage change from HubSpot, Pipedrive, Close or Attio natively, from Salesforce and 100+ others by webhook, Zapier, Make or n8n, and sends the conversion itself. The guide to tracking offline conversions walks through both ways.

What if the deal closes after the platform's attribution window?

In LeadJourney the journey has no window: the deal is credited to the click that started it whatever the cycle length, and the report matches revenue to the ad. The platforms apply their own windows to what they receive (up to 90 days after the click on Google Ads, LinkedIn and Microsoft Ads, seven days on Meta's default click attribution), so a very late deal mainly improves optimisation and audience quality there rather than the platform's own conversion count. Sending the earlier stages, qualified and opportunity, is what gives the platform a signal inside its window.

Can phone calls and booked meetings be offline conversions?

Yes. A call through LeadJourney's call tracking is matched to the click that produced it, and a meeting booked in Calendly arrives as an event on the same lead. Both can be mapped to a conversion the same way a CRM stage is, so the campaign that makes the phone ring stops reporting zero conversions in the ads manager.

Will this double count against my pixel?

No. Events sent to Meta carry a shared event ID, so a conversion the pixel also saw is counted once in Events Manager. On Google Ads the imported conversions are their own conversion actions, separate from your website conversion actions, so you decide which of them count toward bidding, and the closed deal never duplicates the form submit unless you map it to the same action.

Is offline conversion tracking GDPR compliant?

Identifiers are hashed before they leave, you control which stages and which fields are in scope, and nothing is sent that you have not mapped. Tracking is first-party and consent-aware, LeadJourney is hosted in Frankfurt, and a data processing agreement is part of every plan. The GDPR and security pages list the controls in detail.

See it on your own ad account

See what your ad platforms are optimising on right now.

Book a demo and we look at your ad account and CRM live: what the pixel reports, what the CRM knows, and which stages should be going back.

Your workspace
What the algorithm is toldSame 30 days, same ad accounts
What the pixel reported412form fills, and nothing after
What LeadJourney sent back203qualified leads, calls and deals, with value
Outcomes the platform never saw€176,700 closed won
SignalPixelLeadJourney
Form submitted412412
Qualified lead0121
Call booked054
Closed won, with value028

The pixel stops at the form. The CRM stages are what tell the platform who actually buys.