Skip to content

WooCommerce integration

WooCommerce order attribution, from the first ad click to the paid order

The script goes on your WordPress site, the paid order reaches LeadJourney through a WooCommerce webhook, and the revenue goes back to Meta, Google and Microsoft Ads.

  • Live in 21 minutes
  • 95%+ accuracy, first-party
  • Core webhook, no plugin

How the data moves

  • Touchpoints and spend flowing in
  • Conversions and revenue going back
Traffic channelsWhere every journey starts
  • Meta
  • Google Ads
  • Microsoft Ads
  • WordPress
  • 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 customer
  • Paid orders sent back to the ad platforms
Orders and refunds, by webhook or API
WooCommerceWhere the orders are paid
  • Orders
  • Customers
  • Refunds

The loop closes in the ad account. Every paid WooCommerce order goes back to the platform that created the customer, so bidding optimises on revenue instead of add to carts.

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

WooCommerce records where the order came from. It reads one last click, in the browser.

Order Attribution has been core since WooCommerce 8.5 and it is right about what it records: one origin per order, the last click, read by a script in the shopper's browser. The clicks before it, the spend beside it and the way back to the ad platform are where the picture stops.

WooCommerce Order Attribution on its own

One origin per order, and only when the browser cooperates

  • One origin per order, documented as last click, so the ad that introduced the customer weeks earlier earns nothing.
  • The source is read by sourcebuster.js in the shopper's browser, so a consent manager that holds it until somebody clicks accept leaves the order with no source at all.
  • Unknown is a common outcome rather than an edge case: a cached checkout page, an express checkout and a payment provider redirect each produce it, and the core issue tracker has the threads to prove it.
  • There is no ad spend in WooCommerce, so cost per order and ROAS are assembled in a spreadsheet next to the report.
  • Attribution starts on the shop. A click that landed on a campaign page or a blog on another domain is not joined to the order.
  • A repeat order carries the origin of that order. The channel that acquired the customer in the first place is not in the report.
  • Each Google and Meta plugin reports the same order to its own platform, so the platforms' conversion counts add up to more than the orders you shipped.
  • Nothing goes back: the paid order never reaches the ad platform as a conversion with its value, so bidding keeps learning from add to carts.

WooCommerce with LeadJourney

One journey per customer, from the first click to the paid order

  • Every visit is recorded server-side and first-party at 95%+ accuracy, so a blocked script or a declined banner does not cost you the source.
  • The anonymous first click is kept and stitched to the customer at checkout, so first click, last click, linear and position based models all become available.
  • Clicks that land on a landing page or a blog outside the shop are followed into the shop and onto the order.
  • Spend is pulled from Meta, Google, Microsoft and LinkedIn Ads, so ROAS and cost per order are calculated per campaign on paid order value.
  • One model across every channel, so each order is counted once and the platforms stop claiming more purchases than you had.
  • Repeat orders are credited to the channel and campaign that acquired the customer, so lifetime value is reported per channel.
  • Organic social, referral and AI search (ChatGPT, Perplexity, Gemini) are separate channels rather than a referrer line.
  • The paid order goes back to Meta, Google, Microsoft and LinkedIn as an offline conversion with its value, matched on the click ID.

How it works

WooCommerce orders in, attributed revenue back out

Both directions run on their own once the script is on the site and the webhook is saved. The first is what makes WooCommerce order attribution work across every channel instead of one last click. The second puts the paid order where the budget is decided.

  1. 1

    WooCommerce order attribution from the first click to the paid order

    The journey is recording before the shopper reaches a product page.

    MetaGoogle AdsMicrosoft AdsWordPress

    Ad clicks, click IDs, campaign parameters and every session on your WordPress site are recorded server-side across paid, organic and AI search.

    WooCommerce

    WooCommerce posts the order to LeadJourney the moment it is paid, through a core webhook, the REST API or a Zap.

    The order is matched to the journey that produced the customer, from the first anonymous click to the paid order.

    Revenue, ROAS, cost per order and repeat order value, per channel, campaign, ad and landing page.

  2. 2

    The order goes back to the ad platform that earned it

    So bidding optimises on paid orders instead of add to carts.

    WooCommerce

    An order is paid, a first time customer is created, a returning customer orders again.

    LeadJourney turns it into a purchase event with the order value and currency, matched to the click ID that started the journey.

    MetaGoogle AdsMicrosoft AdsLinkedIn Ads

    The event reaches the platforms server to server, as an offline conversion rather than a browser pixel.

    Bidding learns which clicks become paying customers, so budget moves to the campaigns that sell.

The return path

Paid WooCommerce orders, back in the ad account that earned them

An add to cart is not a result. Once WooCommerce marks the order paid, LeadJourney sends that outcome and its value to the platform that produced the click, so bidding learns from orders rather than from carts.

  • MetaConversions API

    Order paid and first order, with order value and currency

  • Google AdsOffline conversion import

    Orders matched on gclid, with the order value for value based bidding

  • Microsoft AdsOffline conversions

    Orders matched on msclkid, with the order value

  • LinkedIn AdsConversions API

    Orders matched on li_fat_id, with the order value

You choose what counts as a conversion

Map any order event to any platform event. Order paid, first order, repeat order, or all three.

Value based bidding gets the real order value

The order total travels with the event, so tROAS strategies optimise on what was paid instead of a flat conversion value.

Sent server to server

No pixel to fire on the thank you page, so a cached page, an ad blocker or a declined banner cannot remove it.

Reporting

The questions the Order Attribution report cannot answer

Every one of these is a report in LeadJourney rather than an export. WooCommerce stays the source of truth for orders, and LeadJourney supplies the journey that produced them.

  • Which campaign produced the orders we shipped last month, counting the first click and not only the last?

  • What does a new customer cost us in ad spend, per channel?

  • Which of the orders reading Unknown in WooCommerce actually came from paid social?

  • Which channel brings the customers who order again, and which brings the ones who buy once on a discount?

  • How many orders started in ChatGPT, Perplexity or Gemini last quarter?

  • Which landing pages turn ad clicks into paid orders instead of abandoned checkouts?

LeadJourney and WooCommerce Order Attribution

Where Order Attribution ends and LeadJourney starts

Order Attribution is free, core and accurate about the one thing it measures: the last click the browser could still see when the order was placed.

Order Attribution compared with LeadJourney, capability by capability
Where the source comes fromOrder Attributionsourcebuster.js reads the referrer and the campaign parameters in the shopper's browser and writes one origin onto the order.With LeadJourneyThe visit is recorded server-side on your own domain, so the source survives a blocked script, a cached page and a declined banner.
Orders reading UnknownOrder AttributionA documented outcome: a consent manager holding the library, a cached checkout, an express checkout or a payment redirect leaves the origin empty.With LeadJourneyThe journey is already stored before checkout, so the order is matched to it when it arrives rather than read out of the browser at the last moment.
Attribution modelsOrder AttributionLast click, one origin per order.With LeadJourneyFirst click, last click, linear and position based over the whole journey, switchable in the report.
The click before the shopOrder AttributionNot seen. Attribution starts with a session on the shop, so a click that landed on a campaign page elsewhere is not joined to the order.With LeadJourneyCaptured on any page carrying the script, followed into the shop and stitched to the customer at checkout.
Ad spend, ROAS and cost per orderOrder AttributionNo spend in WooCommerce, so ROAS is a spreadsheet next to the report.With LeadJourneySpend pulled from Meta, Google, Microsoft and LinkedIn Ads, so ROAS is live per campaign on paid order value.
Repeat orders and lifetime valueOrder AttributionEach order carries its own origin, so a repeat order is credited to whatever brought it back.With LeadJourneyRepeat orders are credited to the channel and campaign that acquired the customer, so lifetime value is reported per channel.
Purchase events back to the ad platformsOrder AttributionNot part of the feature. Each ad plugin fires its own pixel, and each platform counts the order for itself.With LeadJourneyOne server-side purchase event per paid order to every connected platform, with the order value, matched on the click ID.
Organic social, influencers and AI searchOrder AttributionA bio link without campaign parameters lands as referral or direct, and an AI assistant's citation is a referrer line rather than a channel.With LeadJourneyOrganic social, referral and AI search are their own channels next to paid, with ChatGPT, Perplexity and Gemini named.
Refunds and cancellationsOrder AttributionNetted in the WooCommerce sales reports, accurately.With LeadJourneyRead alongside the order, so the revenue a campaign is credited with is the revenue you kept.
Consent and GDPROrder AttributionYour own plugins and your own hosting, which is the strength of WooCommerce and also means every pixel is yours to configure.With LeadJourneyFirst-party by design and processed in the EU, with a data processing agreement.

Keep Order Attribution. Give it the journey in front of it.

WooCommerce stays the system of record for orders and the place your team reads sales. LeadJourney records the journey in front of the shop, fills in the orders that read Unknown, and hands the paid order to the platforms where the budget is spent.

MCP server

Chat with your WooCommerce revenue data

The same journeys, spend and paid orders are also served over MCP. Ask in Claude or ChatGPT, and the answer comes from your own numbers.

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

Connected to WooCommerce in about 21 minutes

No plugin to install, no theme surgery and no developer.

  1. 1About 5 minutes

    Add a single line of code to your WordPress site

    Paste the LeadJourney script into your theme's header, or into any snippet plugin you already run. It records sessions, campaign parameters and click IDs on every page of the site, shop and blog alike.

  2. 2About 10 minutes

    Send paid orders to LeadJourney

    In wp-admin go to WooCommerce, Settings, Advanced, Webhooks and add one pointing at your LeadJourney endpoint. No middleware, no plugin. If you would rather not touch wp-admin, the REST API and a Zapier, Make or n8n step do the same thing.

  3. 3Same day

    Map order events to platform events

    Choose which order events count as a conversion and which carry revenue. From then on every paid order flows back to the platform that earned it with the order value attached, and a first order can be told apart from a repeat one.

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 store owners ask before connecting WooCommerce

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

Is there a LeadJourney plugin for WooCommerce?

No, and the page says so rather than implying one. Shopify is our one native shop integration today. WooCommerce connects the way the platform already offers: the tracking script goes on your WordPress site, and the paid order reaches LeadJourney through a core WooCommerce webhook, the REST API or a Zapier, Make or n8n step. Nothing has to be written in PHP, and the whole setup is two screens.

Why do some of my WooCommerce orders say Unknown?

Because Order Attribution reads the source in the shopper's browser with sourcebuster.js, at the moment of the order. A consent manager that holds the script until somebody clicks accept, a checkout page served from cache, an express checkout button and some payment redirects each leave the origin empty, and WooCommerce writes Unknown. Recording the visit server-side on your own domain when it happens, rather than reading it out of the browser at the end, is what makes the difference: the journey already exists when the order arrives.

How does LeadJourney match a WooCommerce order to an ad click?

The journey is recorded server-side from the first anonymous visit, on the shop and on any other page carrying the script. When the order is posted to LeadJourney, it is matched to that journey, and every later order from the same customer joins it. Nothing has to be stored in order meta for this to work.

Does LeadJourney write anything into WooCommerce?

No. The direction is one way: orders and refunds come out, nothing goes in. Your database, your checkout and your order meta are unchanged, and Transparent Logs show every record that moved and when.

Does it work with a cached shop and a consent banner?

Yes, and that is most of the point. The script is first-party and the order arrives from your server rather than from a pixel on the thank you page, so full page caching, an ad blocker or a banner nobody clicked does not cost you the order or its source.

Are repeat orders attributed too?

Yes. A returning customer's orders are credited to the channel and campaign that acquired them, so lifetime value is reported per channel rather than as a first order snapshot. First and repeat orders can also go back to the ad platforms as separate events, which is how a new customer campaign is optimised on new customers.

How are refunds and cancelled orders handled?

They are read alongside the order they belong to, so the revenue a campaign is credited with reflects what you kept. A campaign whose orders come back in week two looks different from one that produces customers who stay.

Which WooCommerce events can I send back to Meta and Google?

Any event you map: order paid, first order, repeat order, or all of them. Each carries the order value and currency, and it reaches Meta through the Conversions API, Google Ads as an offline conversion import matched on gclid, Microsoft Ads matched on msclkid and LinkedIn through the Conversions API.

Do I need a developer?

No. The script is one paste into your theme header or a snippet plugin, the webhook is a form in wp-admin, and mapping events is a settings page. Most shops are reporting inside 21 minutes, and our team will do the setup with you on a call if you prefer.

Is this GDPR compliant?

LeadJourney processes and stores data in the EU, signs a data processing agreement, and tracks first-party and server-side, so consent decisions are respected rather than worked around. Card data never reaches LeadJourney: what arrives is the order total, its status and the customer record, not payment details.

95%+ accuracy, from first click to paid order

See which campaigns produce WooCommerce orders with LeadJourney

Put the script on your site, save one webhook, and watch every order line up against the campaign that brought the customer.

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