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
Rated by the teams who connected their stack
How the data moves
- Touchpoints and spend flowing in
- Conversions and revenue going back
- Organic search
- Organic social
- AI search
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
- 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
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 WooCommerce order attribution from the first click to the paid order
The journey is recording before the shopper reaches a product page.
Ad clicks, click IDs, campaign parameters and every session on your WordPress site are recorded server-side across paid, organic and AI search.
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 The order goes back to the ad platform that earned it
So bidding optimises on paid orders instead of add to carts.
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.
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.
| Capability | With LeadJourney | |
|---|---|---|
| Where the source comes from | 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 Unknown | 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 models | With LeadJourneyFirst click, last click, linear and position based over the whole journey, switchable in the report. | |
| The click before the shop | 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 order | With LeadJourneySpend pulled from Meta, Google, Microsoft and LinkedIn Ads, so ROAS is live per campaign on paid order value. | |
| Repeat orders and lifetime value | 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 platforms | 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 search | With LeadJourneyOrganic social, referral and AI search are their own channels next to paid, with ChatGPT, Perplexity and Gemini named. | |
| Refunds and cancellations | With LeadJourneyRead alongside the order, so the revenue a campaign is credited with is the revenue you kept. | |
| Consent and GDPR | 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.
- 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.
- 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.
- 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
Read the reviews where they were left
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.


