Skip to content
Rechnungskit
Meta Ads + Rechnungskit

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.

Two fields to set up · consent bar included · log for every event
The gap

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.

Meta Ads alone
  • 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
With Rechnungskit
  • 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
How it works with Meta Ads

Four steps from purchase to event in the Events Manager.

  1. 01
    Create a token
    In the Meta Events Manager, pick your pixel under Data sources, then Settings. In the Conversions API section you create an access token.
  2. 02
    Connect
    Enter 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.
  3. 03
    Test
    Copy 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.
  4. 04
    Sell
    From 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 arrives

What Meta receives from Rechnungskit.

Purchase For every paid order: amount, currency, click ID (fbclid) with click time, UTM parameters live
Subscribe For every subscription start: the plan amount of the first full period, even if the subscription starts with a trial live
Advanced matching Opt-in: email and name as SHA-256 hashes, and then all purchases are reported, even without a click ID live
Browser pixel Optional: the same pixel in the checkout, loaded only after a yes, with the same event ID as the server event live
Test event Paste the test event code, send, check in the Events Manager live

How the Meta Ads integration works

Setup takes a few minutes and needs no code:

  1. Open the Meta Events Manager, pick your pixel under Data sources and open Settings. In the Conversions API section you create an access token.
  2. 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.
  3. 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.

Rechnungskit checkout · example
I accept the Terms and have read the cancellation policy and privacy policy.
Order with obligation to pay · €49.00
By clicking you place a binding order and are redirected to secure payment.
With your consent, Example Shop measures which ads work. This sends data to advertising partners. You can order either way. Details · Privacy policy
RejectAccept
Accept
The click ID from your ad is stored on the order with the click time, together with the record of consent.
After paymentPurchase to Meta
Reject or no click
No click ID and no UTM parameters on the order. The purchase works as usual.
After paymentnothing sent to Meta
Under "Details" each provider is listed with its purpose; for Meta: measure ad results and build audiences for ads. The buyer can change their choice at any time through "Tracking settings" in the checkout footer.
Wording as in the real checkout in English; shop name and amount are made up. The bar only appears if you have tracking active. Accept and Reject have the same size and design.

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.

FAQ

Meta Ads and Rechnungskit: frequently asked questions

Two values: the pixel ID and an access token for the Conversions API. You find both in the Events Manager under Data sources, in your pixel's Settings. You do not need to put any pixel code on a page.
More integrations
The same validated pipeline for your whole stack.

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
de en