Skip to content

From lead to contract: how to connect Google Ads, Meta, LinkedIn and your CRM to measure revenue

Alessandro Papa15 min read

A salesman and a marketing manager at a table with a row of cards joined by a yellow thread that ends on a contract signed with a pen

IN SHORT

Measuring the revenue generated by your campaigns takes four pieces: the form saves UTMs and click IDs (gclid, gbraid, wbraid, fbc, li_fat_id) in hidden fields, the CRM keeps them on the contact and the opportunity, every change of pipeline stage becomes an event, and that event goes back to Google Ads (enhanced conversions for leads via Data Manager), Meta (Conversions API) and LinkedIn (Conversions API) with a value. Then marketing and sales read the same dashboard.

Topic of our service Analytics & Data · industry B2B & Manufacturing

The Google Ads report says 140 leads this quarter, LinkedIn’s says 60, Meta claims another 90. In the same quarter, the sales director signed six contracts and can’t say which campaign they came from. I see this a lot: the platforms count completed forms, the CRM counts deals, and no data passes between the two.

To measure the revenue generated by your campaigns you need to close the loop in four steps, plus an agreement between marketing and sales. The form saves UTMs and click identifiers in hidden fields. The CRM keeps them on the contact and the opportunity. Every change of pipeline stage becomes an event. That event goes back to Google Ads, Meta and LinkedIn with a monetary value, so the algorithms learn to look for people who become customers. The agreement, in writing, defines what “qualified lead” means.

Why can’t the platforms see the contracts?

The platforms only see what happens on the website, while in B2B revenue is decided months later, on the phone and through quotes. If nobody reports those outcomes, Google, Meta and LinkedIn optimise for the only signal they have: the submitted form.

So campaigns that bring in lots of cheap leads look like the best ones even when they bring in students, suppliers and off-target companies, while those that bring in a few genuine buyers look expensive and get cut. We also cover this in our article on metrics for B2B lead management: cost per lead and conversion rate tell you little if you don’t get as far as customer value.

Connecting advertising and CRM does two things: it lets you measure which campaigns generated opportunities and contracts (which you can do in the CRM alone), and it lets you optimise, sending those outcomes back to the platforms so that automated bidding targets contacts who resemble your customers. The second requires offline conversion import.

How to set up UTMs and naming conventions that hold up over time

UTMs only work if everyone writes them the same way: lower case, no spaces, a closed list of values for source and medium, and a campaign name that contains whatever you’ll later want to filter by in the CRM.

The convention we usually use looks like this:

  • utm_source: the platform (google, meta, linkedin, newsletter);
  • utm_medium: the type of traffic (cpc, paid-social, email);
  • utm_campaign: year_market_objective_topic, for example 2026_de_lead_rettifiche;
  • utm_content: the creative or ad variant;
  • utm_term: the keyword or audience, where needed.

The campaign name in the URL must match the one in the platform, so dashboards and CRM join up without hand-made mapping tables. And you need a shared sheet of allowed values, because a capitalised LinkedIn and a hyphenated linked-in are all it takes to split a report into three rows.

UTMs are for the CRM; for attribution inside the platforms, click IDs are what count. On Google Ads the gclid comes with auto-tagging switched on; on LinkedIn the li_fat_id only appears if you’ve enabled enhanced conversion tracking on the Insight Tag, which adds the click ID to landing page URLs (LinkedIn Conversions API FAQ).

Which hidden fields should a B2B form save?

A B2B form should save in hidden fields all the click identifiers and the UTMs from the first and last visit, and pass them to the CRM along with the contact’s details. Without them, no offline conversion can be traced back to the click that generated it.

The minimum list:

  • gclid, gbraid, wbraid: the Google Ads identifiers. The gclid is the classic one; gbraid and wbraid appear in journeys that go through iOS apps, as explained in the Google Ads API documentation;
  • fbclid and the value of the _fbc cookie: Meta requires the fbc parameter in the format fb.1.timestamp.fbclid, and the guide to the fbp and fbc parameters specifies that the click ID must be used exactly as it is, without changing upper and lower case;
  • li_fat_id: LinkedIn’s first-party click ID;
  • UTMs (source, medium, campaign, content, term);
  • entry landing page, first-visit referrer and date of first contact: the referrer lets you recognise organic traffic and AI assistants such as chatgpt.com or perplexity.ai, which often arrive without UTMs.

The tricky part is persistence: people who click an ad rarely fill in the form on the first page, so the parameters need to be read on arrival and kept (in a first-party cookie or browser storage) until the person submits the form. This storage counts as tracking for advertising purposes, so it must depend on the consent collected by the cookie banner: we explain how consent, Consent Mode and the data sent to Google fit together in our article on enhanced conversions and Consent Mode.

In our case, the website’s forms feed into a CRM where every enquiry becomes an opportunity assigned to a salesperson, with source and campaign already filled in: for campaigns, the salesperson sees them on the record. Organic traffic, word of mouth and AI answers, on the other hand, arrive without UTMs, and for those you need an optional “How did you hear about us?” field in the form.

Contact deduplication: how to stop one customer counting as three leads

Deduplication has to be decided before the integration: a unique key (usually the email address, normalised to lower case), a rule for what to do when an existing contact comes in, and a rule for which attribution to keep.

Take a procurement manager at an engineering company: in March they download a catalogue from LinkedIn, in May they request a quote from a Google ad, in June the salesperson adds them by hand after a trade fair. Without rules, there are three leads in the CRM and every platform thinks it brought them in.

The rules we recommend:

  1. one contact per email address: fields are updated, no duplicate is created;
  2. first and last touch in separate fields: the first UTM is never overwritten, the last one is;
  3. click IDs updated to the latest valid value, the one the platforms will use for matching;
  4. the opportunity inherits the contact’s source when it’s created, and it stays fixed from then on;
  5. a monthly duplicate check on companies too, because in B2B it’s the company that buys.

Lifecycle stages and pipeline stages: two different things

The lifecycle stage describes where the person is in their relationship with you (contact, MQL, SQL, customer); the pipeline stage describes where a specific deal is (qualification, quote, negotiation, won, lost). You need both, and they need to be linked by clear rules.

The lifecycle moves with scoring and lead nurturing; the pipeline moves with phone calls and quotes. The point where they meet is the moment the salesperson accepts an MQL, which becomes an SQL with an open opportunity.

To decide when a contact becomes an MQL you need a scoring model; we cover this in detail in our guide to B2B lead scoring. What matters here is that every stage has a written criterion and an owner. “Interesting lead” isn’t a criterion. “Manufacturing company with more than 20 employees, technical or procurement role, request for a quote or demo” is.

A salesman and a marketing manager in a meeting room moving paper cards together on a wall divided into columns

Which events should you send to Google Ads, Meta and LinkedIn at each stage?

For each CRM stage it makes sense to create a dedicated conversion action on every platform, send them all for measurement and choose just one, usually the SQL or the open opportunity, as the bidding goal. The won contract arrives too late and too rarely for an algorithm to learn from it.

CRM stage Criterion (example) Google Ads Meta LinkedIn Value (example)
Lead Form submitted, contact created Conversion from the site tag, secondary Lead (pixel + Conversions API) LEAD Low or none
MQL Score above threshold Offline conversion, secondary Event named after the stage MARKETING_QUALIFIED_LEAD Expected average value
SQL / open opportunity Accepted by sales, call held Offline conversion, primary Event named after the stage, used for optimisation SALES_QUALIFIED_LEAD Higher expected average value
Quote sent Quote issued Offline conversion, secondary Event named after the stage OTHER, for measurement only Weighted quote amount
Contract won Opportunity closed won Offline conversion with the real amount Purchase PURCHASE Contract amount

Google Ads. Offline conversion import based on the gclid still exists, but Google recommends moving to enhanced conversions for leads, which match data using hashed email and phone numbers and still ask you to include the gclid when available. Since April 2026 Google Ads accepts user data from the tag, Data Manager and the API together, and since June 2026 enhanced conversions for web and for leads are a single setting (Google announcement). From 15 June 2026 the Google Ads API no longer accepts offline conversion uploads from those who weren’t already using them, and Google points to the Data Manager API as the route for everyone (notice in the Google Ads API documentation): custom integrations built on the old Google Ads API calls need migrating, and even with ready-made connectors it’s worth checking that conversions keep arriving.

Meta. For leads from Lead Ads forms there’s the Conversions API for CRM integration: you save Meta’s Lead ID in the CRM and send back the subsequent stages. Meta requires at least 200 leads a month, uploads at least daily and a target stage reached within 28 days of the lead. For leads coming from the website form you use the Conversions API with standard events, passing fbc and hashed email.

LinkedIn. LinkedIn’s Conversions API accepts online and offline events. From API version 202608 the MARKETING_QUALIFIED_LEAD and SALES_QUALIFIED_LEAD conversion types are available. QUALIFIED_LEAD is the generic type and according to LinkedIn already includes MQLs and SQLs: if you use the two specific types, for the quote sent it’s better to use an OTHER action for measurement only. LinkedIn recommends sending hashed email and li_fat_id together for the best match, sending events in real time or within a day at most, and accepts events dated up to 90 days back. For lead-related conversion types it allows attribution windows of up to 365 days.

How to put a value on each pipeline stage

The value of a stage is the average value of a contract multiplied by the probability that a contact at that stage will reach signature. You calculate it from historical CRM data and update it every quarter.

Here’s an example with made-up numbers. A company selling industrial plant has an average contract of 40,000 euros. From the last twelve months’ data it sees that 30% of quotes sent are closed, 10% of SQLs reach signature and 3% of MQLs do the same. The values to send to the platforms become 12,000 euros for the quote, 4,000 for the SQL and 1,200 for the MQL. If margin varies a lot between product lines, it’s better to use margin rather than revenue.

You don’t need precision to the cent: what matters is the proportions between stages, and that the values are the same on all three platforms, otherwise you’re comparing channels measured by different rules.

With values in the platforms you can use value-based bidding strategies and read a meaningful ROAS even in B2B. We explain how to read it without being misled by overlapping attribution in our article on how to measure ROAS and campaign impact.

The flow, step by step

The complete flow has eight steps, from click to dashboard. If one is missing, that’s where the data gets lost.

  1. Ad click: the URL carries the platform’s click ID and the UTMs.
  2. Arrival on the site: a script reads the parameters and, with consent, stores them in a first-party cookie.
  3. Form submission: the values go into the hidden fields; the tag records the lead and, with enhanced conversions, sends the hashed email.
  4. CRM: the contact is created or updated according to the deduplication rules and an opportunity is opened and assigned to a salesperson.
  5. Qualification: the contact becomes an MQL through scoring; the salesperson accepts it as an SQL within the agreed time or rejects it with a reason.
  6. Change of stage: each step generates an event with date, value and identifiers.
  7. Sending to the platforms: an integration (native to the CRM, an automation tool or a custom service) sends the event to Google Ads, Meta and LinkedIn at least once a day.
  8. Shared reading: marketing and sales look at the same dashboard showing leads, opportunities and revenue by campaign.
The click data has to arrive intact all the way to the signature: every hand-over is a point where it can be lost.

What changes for lead generation, CRM and performance

When the platforms receive pipeline stages, campaigns stop chasing the lowest cost per lead and start looking for contacts similar to the ones sales accepts. In the projects we work on, the effect shows first in the quality of enquiries, then in revenue, on the timescale of the sales cycle.

With a shared dashboard, sales can see where opportunities come from and marketing can see which enquiries are rejected and why. For the campaign side we use RunAlytics, our dashboard that brings together data from Google Ads, Meta, LinkedIn and TikTok in a single view; pipeline and revenue data stay in the CRM, and the two views are cross-referenced using consistent campaign names. That’s how a revenue-focused B2B funnel turns into numbers the sales director recognises.

The SLA between marketing and sales

A marketing-sales SLA is a written agreement on what marketing delivers, how quickly sales picks it up and what happens to rejected leads. Without one, CRM stages get updated haphazardly and the events sent to the platforms lose their meaning. We put in writing:

  • the definition of an MQL: profile criteria (sector, size, role, country) and behaviour criteria (explicit request or score above threshold);
  • the definition of an SQL: the salesperson has spoken to the contact and confirms need, timing and decision-maker;
  • pick-up time: for example one working day for quote requests and three for score-based MQLs, measured in the CRM;
  • rejection reasons from a closed list (off-target, competitor, student, duplicate, no response), so marketing can adjust campaigns and audiences;
  • a monthly review with the dashboard figures in front of everyone.

Mistakes to avoid

These are the ones we find most often in the accounts we analyse:

  • optimising only for the won contract, which with three or four signatures a month doesn’t give enough signal;
  • counting the same lead twice. This happens when the site tag and offline import record the same action as two primary conversions, or when deduplication between the Insight Tag and the Conversions API is missing on LinkedIn;
  • hidden fields empty for months, because a form update broke data collection and nobody checks how many recent contacts have UTMs and click IDs;
  • stages updated in bulk at the end of the quarter, with wrong dates and events falling outside the useful windows;
  • different values across platforms, or values that haven’t changed in years;
  • forgetting consent. Click IDs and hashed data must be collected and sent in line with the choices made on the cookie banner.

Practical checklist

Before saying “revenue tracking works”, check these points (how to then reconcile the numbers across platforms, Analytics, CRM and ERP is explained in our article on how to verify data from click to sale):

  1. a written UTM convention applied to all active campaigns;
  2. auto-tagging on Google Ads and enhanced tracking on LinkedIn’s Insight Tag;
  3. gclid, gbraid, wbraid, fbclid/_fbc, li_fat_id and UTMs stored in line with consent and mapped to CRM fields;
  4. deduplication and first/last-touch rules active;
  5. stages defined with criteria and owners;
  6. one conversion action per stage on every platform, with only one primary;
  7. stage values calculated from history and identical everywhere;
  8. daily sending of events, checked after Google’s move to the Data Manager API;
  9. a shared dashboard and a signed SLA;
  10. a monthly check on empty fields, duplicates and conversions received.

Want to connect campaigns, CRM and revenue?

We design the CRM workflow and revenue tracking starting from what you already have: advertising platforms, forms, CRM, sales process. We work on analytics and data, marketing automation and custom integrations where needed.

If you want to know where to start, book a call with Federico or write to us using the contact form. We’ll look together at how your leads arrive today and tell you whether the full connection is worth doing now or whether there are more urgent steps to take first.

Frequently asked questions

Do you need a specific CRM to import offline conversions?

No, a CRM with custom fields and an API integration is enough. The most widely used ones have native connectors for Google Ads, Meta and LinkedIn; in other cases you use an automation tool or a small custom service.

What are gbraid and wbraid?

They are Google Ads click identifiers that appear instead of the gclid in some journeys between iOS apps and the web. They should be saved in hidden fields just like the gclid, because they’re also needed for offline conversion import.

Enhanced conversions for leads or gclid-based import?

Google now recommends enhanced conversions for leads, which match conversions using hashed email and phone numbers, and asks you to include the gclid as well when available. In practice it’s best to save and send both.

Which stage should be the goal for automated bidding?

Usually the SQL or the open opportunity: it’s close enough to revenue and frequent enough to give the algorithm signals. The won contract is measured, but rarely has enough volume to drive bidding.

How often should CRM events be sent to the platforms?

At least once a day. Meta explicitly requires it for the CRM integration and LinkedIn recommends sending in real time or within a day; with infrequent uploads, events risk falling outside the attribution windows.

A brass marble run with seven different tracks on a dark table: the yellow marble follows one of themFREE GUIDE · 25-PAGE PDFMarketing automation for SMEs and B2B: the 7 workflows you should already have runningSeven workflows to design with triggers, timings, content and KPIs, turning every contact into a measurable journey from the first form through to sales and reactivation.Read it or download the PDF

Keep reading

RELATED ARTICLES

All about Strategy & Data

Ready to runWITH US?

Thirty minutes on a video call, or over a coffee if you’re ever in Turin. You tell us where you want to get to, we tell you what we’d do first and why. Then it’s your call.

© 2026 Digital Runner srl · Corso Valdocco 2, Torino · VAT no. 13026050016
Privacy PolicyCookie Policy

Ask for information

Tell us what you need

Someone from the team will reply within one working day.

Or call us: +39 011 19118420