Google Ads, Meta, LinkedIn and the other platforms learn from conversions: which ad, which audience, which bid brings orders or enquiries? Traditionally they find out through a pixel, a script of the platform on your website. That has gaps, loads third-party code and shows the platform more than it needs. Matomo already records your conversions. A Conversions API reports them directly from the server to the platform. For Matomo, Feinwerk Conversions API does this, a plugin from our sister brand Feinwerk.
Pixel or Conversions API
| Pixel in the browser | Conversions API from Matomo | |
|---|---|---|
| Where it runs | the platform’s script on every page | your Matomo server reports the conversion |
| Ad blockers and browser protection | often prevent the report | do not affect sending from the server |
| Third-party code on the website | yes, one script per platform | no |
| What the platform sees | what its script records in the browser | only the conversion and the fields you send |
| Consent | required | also required, per platform |
So the difference is not whether you need consent, but who collects the data and what the platform gets: with the pixel, the platform collects itself; with the Conversions API, you decide in Matomo what goes out.
How it works with Matomo
- Click on an ad. The platform adds a click ID to the address of your page, for example
gclidfor Google orfbclidfor Meta. - Matomo measures the visit like any other, with channel and campaign.
- The visitor converts: they reach a goal or order in the shop.
- The plugin checks consent for the platform in question and the attribution rules.
- Matomo reports the conversion through the platform’s API, with the click ID and, if you like, with hashed customer data for better matching.
- The platform matches it to the click and learns from it for its bids.
These click IDs are recognised by Feinwerk Conversions API:
| Platform | Click ID | API |
|---|---|---|
| Google Ads | gclid, gbraid, wbraid |
Data Manager API |
| Meta (Facebook, Instagram) | fbclid |
Conversions API |
li_fat_id |
Conversions API | |
| X | twclid |
web conversions of the X Ads API |
| Microsoft Advertising | msclkid |
UET Conversions API |
| ChatGPT Ads | oppref |
OpenAI’s Conversions API |
| TikTok | ttclid |
Events API |
On top of that, webhooks to an address of your choice, for example for affiliate networks or a CRM.
Consent per platform
Sending data to ad platforms requires consent, even if Matomo itself measures without cookies. That applies today and, according to the Council text on the Digital Omnibus, in the future as well: the planned exception covers audience measurement, not passing data on to ad platforms.
Feinwerk Conversions API therefore only sends what the visitor has consented to for each platform. The signal comes from your consent banner, via Matomo Tag Manager, Google Consent Mode or the JavaScript API. If a visitor only answers after the conversion, it waits up to 24 hours for their decision. In the default mode “Strict”, nothing goes out without a signal. The mode “External” exists for websites that ensure consent elsewhere themselves.
Data stays lean too: customer data such as the email address is only taken over with consent and hashed in Matomo; plain text is never stored. The plugin deletes IP address, user agent and hashes after sending, at the latest after seven days, and click IDs after 90 days. Whether your setup is permissible is for your legal advisers to assess.
Attribution: who gets the conversion?
A pixel reports every conversion that happens on the page. That quickly leads to several platforms and partners claiming the same order, and with affiliates it may be paid twice. Feinwerk Conversions API therefore decides per destination, based on the visits in Matomo:
- Every conversion, as with a pixel. This is the default.
- Only after a contact via this source in the chosen time window.
- Only for the last contact, direct visits excluded.
- Only for the first contact.
The plugin recognises a source by its click IDs and, optionally, by campaign sources or referring domains. The send log shows why a conversion was not sent. How cleanly Matomo attributes channels and campaigns therefore matters too: the basics are in Campaign tracking. How Matomo classifies Google Ads clicks without campaign parameters correctly is described in the use case Google Ads with Matomo from our sister brand Feinwerk.
Which conversions to send
The platforms learn from what you send them. Macro conversions matter most: orders with revenue and genuine enquiries. Micro conversions, such as a started form or a watched product video, can make sense if there are too few macro conversions for the platform to learn at all. Whether that fits depends on the campaign goal, on the number and value of the conversions and on the platform that receives them.
Do not send the same conversion through a pixel as well, or the platform may count it twice. When you switch, take the conversion out of the pixel or the platform’s tag.
Setting it up step by step
- Check the goals in Matomo. Does every goal fire exactly once and only at the right moment? Is the ecommerce revenue right? How goals are built from events is covered in Event tracking.
- Install the plugin. The current version of Feinwerk Conversions API runs on Matomo 5 and needs PHP 8.1 plus a cron job that runs every minute. Without it, Matomo only sends once an hour.
- Add destinations with the credentials of each platform and the goals to be sent.
- Connect consent. Your consent banner reports consent per platform to Matomo.
- Set the attribution per platform, especially if several platforms or partners compete for the same orders.
- Test. Some platforms offer a test mode, and webhooks have a test request. Check in the send log what went where and when, and in the platform whether the conversions arrive.
- Switch off pixel conversions once reporting through Matomo works reliably.
What this looks like in the plugin, with screenshots, is shown in the use case Conversions from Matomo to Google Ads, Meta and LinkedIn at Feinwerk.
A good fit if
- Matomo already measures your conversions cleanlyGoals and ecommerce are set up and checked.
- You want to get rid of pixelsLess third-party code, faster pages, clear data flows.
- You advertise on several platformsAttribution per platform prevents orders paid twice.
- Blockers swallow conversionsSending from the server is not affected by them.
Clarify first if
- The goals in Matomo are not rightThe platforms learn from wrong conversions just as eagerly.
- Consent is not sorted outWithout a consent signal, the plugin sends nothing in the default mode.
- Remarketing is to run through the pixelThat still needs the platform script.
Sources
As of 12 November 2026
