Meta Ads and Rechnungskit: consent‑based conversion tracking, server‑side and via pixel
Rechnungskit reports checkout purchases to Meta straight from the server: a Purchase event with amount and currency for every payment, and a Subscribe event for every subscription start. As soon as the integration is active, the checkout asks the buyer for consent in a slim bar, and events are only sent after a yes. By default neither name nor email address goes out, only the click ID from your ad, the amount, the currency and UTM parameters.
Meta optimizes on purchases. The pixel only sees some of them.
Meta optimizes campaigns on what it can see. A browser pixel in the checkout sees less and less, though: ad blockers, iOS tracking protection and abandoned thank-you pages take away a large share of purchases. So Rechnungskit reports server-side, from the payment webhook, and asks for consent in the checkout first.
- Browser pixel fails with ad blockers and iOS tracking protection
- Pixel code in the checkout means a third-party script, your own banner and your own upkeep
- The pixel never sees subscription starts or refunds
- Your own Conversions API connection means developers and server upkeep
- Purchase event from the payment webhook, not from the thank-you page
- Subscribe event for every subscription start, with the plan amount
- Consent bar in the checkout; by default no name and no email
- Test event with one click, log for every event
Four steps from purchase to event in the Events Manager.
- 01Create a tokenIn the Meta Events Manager, pick your pixel under Data sources, then Settings. In the Conversions API section you create an access token.
- 02ConnectEnter a privacy policy URL in your company details, then paste the pixel ID and the token under Connections → Integrations, Meta Ads. Rechnungskit checks the connection right away, shows the pixel name and turns on the consent bar in the checkout.
- 03TestCopy the test event code from the Events Manager, paste it on the card and send a test event. It shows up in the Events Manager within seconds.
- 04SellFrom now on Rechnungskit reports every payment with consent as Purchase and every such subscription start as Subscribe. Purchases with a click ID from your ad show up in your campaign reporting.
What Meta receives from Rechnungskit.
How the Meta Ads integration works
Setup takes a few minutes and needs no code:
- Open the Meta Events Manager, pick your pixel under Data sources and open Settings. In the Conversions API section you create an access token.
- In Rechnungskit, go to Connections → Integrations and paste the pixel ID and the token under Meta Ads. Rechnungskit checks the connection right away and shows the pixel name.
- Check the setup with a test event: copy the test event code from the Events Manager (Test events tab), paste it on the card and send the test event. It shows up there within seconds.
From then on Rechnungskit reports every paid order from the product checkout as a Purchase event with amount and currency, and every subscription start from the subscription checkout as a Subscribe event. Meta uses the events for campaign optimization, buyer audiences and lookalikes.
One note for checking: browser extensions such as the Meta Pixel Helper do not show server events. Look in the Events Manager instead.
Why from the server and not from the thank-you page
A browser pixel reports the purchase from the least reliable moment in the whole flow: the thank-you page, which the buyer can close before the script has loaded and which ad blockers and iOS tracking protection block. Rechnungskit reports from the payment webhook instead. As soon as the payment provider has confirmed the payment, the event goes out, whatever the buyer's browser does.
Consent in the checkout
Server-side tracking still needs consent. The European Data Protection Board already treats collecting a click ID from a tracking link as access to the user's device (EDPB Guidelines 2/2023, paras. 50 f.), and § 25(1) TDDDG, the German telecom and digital services data protection act, requires consent for that. So once the integration is active, Rechnungskit shows a slim bar at the bottom of the checkout: one sentence, a link to your privacy policy, Accept and Reject at the same size, plus details on the provider and purpose. The form and the pay button stay usable, so buyers can always complete the purchase.
With a yes, Rechnungskit stores the click ID (fbclid) with the click time on the order, along with the record of consent (Art. 7(1) GDPR). Without a yes, or if the buyer clicks nothing at all, neither click ID nor UTM parameters are stored on the order, and Meta learns nothing about the purchase. A cookie without any identifier remembers the decision for 180 days; this cookie is strictly necessary for the service (§ 25(2) no. 2 TDDDG). The click ID itself never ends up in a cookie or in browser storage.
You need a privacy policy URL in your company details; without it, tracking pauses. The Meta card shows a preview of the bar and how many buyers consented in the last 30 days. The full background, including suggested wording for your privacy policy, is in the knowledge article Server-side tracking for Meta.
What gets sent
By default Rechnungskit transfers neither names nor email addresses. The event carries the click ID, the amount, the currency and your UTM parameters. A click ID can still count as personal data, because it is an online identifier (Art. 4(1) GDPR), so an event is only sent when the buyer's consent is stored on the order. Purchases without a click ID, such as organic ones, are then not reported.
You can optionally turn on advanced matching. Rechnungskit then also sends the buyer's email and name as SHA-256 hashes, never in plain text, and reports purchases without a click ID too, always provided the buyer consented in the checkout. This noticeably improves buyer audiences and lookalikes. When you turn it on, you confirm that you have a legal basis for this transfer, for example your buyers' consent. Whether and how you obtain it is your decision as the advertiser; Rechnungskit implements it technically.
The Subscribe event carries the plan amount of the first full period, even if the subscription starts with a free trial. That way Meta can optimize on the value of the subscription instead of €0.
Working with a pixel of your own
You can run the Meta pixel directly in the checkout with a switch on the Meta card. It loads only after a yes, uses your pixel ID and reports Purchase with the same event ID as the server event. If you fire a browser pixel on your own thank-you page instead (via the return URL on the product), pass the value of the rk_event_id parameter as the event ID there. Rechnungskit uses exactly this ID for the server event, so Meta recognizes both as the same purchase and counts nothing twice. The rk_order parameter is the human-readable order number for your own matching.
What the integration does not do
It does not report orders from connected shops; for Shopify or WooCommerce you use your shop's own tracking. It does not replace tracking or a banner on your own website, because the consent bar only applies to the Rechnungskit checkout. And it currently does not report refunds back to Meta; you see refunds in Rechnungskit and in your payment provider.
Every reported conversion appears in the log on the integration page. If a report keeps failing, for example after a token rotation, you get an open task and repeat the action with one click. Meta only accepts events up to seven days after the purchase and rejects later retries.
Who this is for
Sellers of courses, subscriptions or digital products through the Rechnungskit checkout who want their Meta campaigns to optimize on real purchases, without adding pixel code themselves or maintaining a banner of their own for the checkout. The e-invoice for every purchase, the GoBD archive and the DATEV export keep running as usual, with tracking on top.
Meta Ads and Rechnungskit: frequently asked questions
Rechnungskit is not a tax advisory or law firm. This article explains general principles and does not replace advice from a tax advisor (Steuerberater, § 5 StBerG) or a lawyer (§ 3 RDG). Rechnungskit is built for businesses based in Germany and prepares documents, tax rates and bookings automatically. How your specific case is treated remains your decision, ideally together with your tax advisor or a lawyer.
Connect Meta, report purchases server-side.
Create an account, connect your payment provider, check everything in free test mode. Billing starts when you go live.
Try it now