Independent product studio · Swedenhello@karelialabs.com

Statamic addon Live

Karelia Conversions: server-side conversion tracking for Statamic, sent to Meta, Google Analytics 4 and TikTok

A contact form is often the most valuable thing an ad leads to, and the browser pixel is the weakest way to report it. Ad blockers, Safari's tracking prevention and lost cookies stop the pixel, so Meta, Google and TikTok see fewer leads and sales than you get.

Version
1.0.1
Statamic
6.20 or later, Core and Pro
PHP
8.3 or later
Storage
Flat files or the Eloquent driver
Sends to
Meta Conversions API, GA4 Measurement Protocol, TikTok Events API
Events
Lead, Contact, Sign-up, Purchase and custom events
Price
$79 per site, one-time purchase
Get it on
Statamic Marketplace
Conversions page in the Statamic Control Panel: Meta, Google Analytics 4 and TikTok sending, a test button for each, conversions over the last 30 days, where they came from and counts per event
Every platform's status, the last 30 days and where conversions came from

Karelia Conversions sends them from your Statamic server instead: the forms you choose, sign-ups and paid Cargo orders go to the Meta Conversions API, Google Analytics 4 (Measurement Protocol) and the TikTok Events API. Contact details are hashed before they leave the server, nothing is sent before consent, and every conversion shows up in a log under Tools.

What Karelia Conversions does

Three platforms

The Meta Conversions API (Facebook and Instagram), Google Analytics 4 through the Measurement Protocol, and the TikTok Events API. Switch each on or off. Every conversion gets one event ID that is the same on all platforms.

Forms without code

Pick the forms that count in the Control Panel and send each as a Lead, Contact, Sign-up or your own event, with an optional value and currency. Email, phone and name fields are found automatically.

Sign-ups and Cargo orders

Registrations through user:register_form send a sign-up. Paid Cargo orders send a purchase with value, currency, order number and products.

Keeps the ad click

fbclid, gclid, ttclid, msclkid and utm_* tags from the landing page are kept after consent (90 days by default) and sent with the conversion, so the platforms can match it to the ad click. Works on statically cached pages.

Consent first

Nothing is sent, and no click IDs or visitor details are kept, until the visitor accepts marketing cookies. Ready-made rules for Cookiebot, CookieYes and Complianz, KareliaConversions.consent(true) for any other banner, and a refusal never counts as consent.

Hashed on your server

Email, phone and names are hashed with SHA-256 before they are sent, normalised the way each platform matches them. Nothing personal is logged.

A log in the Control Panel

Every conversion with where it came from, its value, the campaign and each platform's answer, totals for the last 30 days and a dashboard widget.

Test buttons

Send a test event to Meta (Test Events), TikTok (test code) and GA4's validation endpoint, or run php please conversions:test.

No slowdown for visitors

Conversions are sent after the response, or on your queue. Each platform is called separately, and one that is down never stops the form or the others.

From your own code

Conversion::make('lead')->fromRequest(request()) sends a conversion from a booking or anything else you build, with the page, click IDs and consent filled in.

How it works

  1. Install. Run composer require karelialabs/statamic-conversions in your site's folder and attach the licence to the site in your statamic.com account.
  2. Connect the platforms. Put the Meta access token, the GA4 API secret and the TikTok access token in .env, then switch on platforms and add forms under Tools → Addons → Karelia Conversions.
  3. Add the script and your banner. Put {{ conversions:script }} in your layout's <head> and choose your cookie banner under Consent, or call KareliaConversions.consent(true) from it.
  4. Test. Press Send test event for each platform under Tools → Conversions, then send a form and watch it appear in the log.

Screenshots

Recent conversions: purchases, leads and sign-ups with their source, value, ad campaign and the platforms each was sent to, one marked No consent
Each conversion with its value, campaign and each platform's answer
Conversions page after Send test event for Meta, with the message Test event sent to Meta and 1 received on the Meta card
A test button for each platform
Karelia Conversions settings, Platforms tab: switches for Meta, GA4 and TikTok with the pixel ID, test event code and Measurement ID, and a note that access tokens go in .env
Switch each platform on or off; access tokens stay in .env
Events tab: the Contact form sent as a Lead worth 25 EUR, and switches for sign-ups and Cargo orders
Pick the forms that count and what a lead is worth

Which event each platform receives

In StatamicMetaGA4TikTok
Form, sent as LeadLeadgenerate_leadLead
Form, sent as ContactContactgenerate_leadContact
RegistrationCompleteRegistrationsign_upCompleteRegistration
Paid Cargo orderPurchasepurchasePurchase
Custom event "Book a demo"BookADemobook_a_demoBookADemo

From the Karelia Conversions 1.0 documentation. To count them in Google Ads, mark the GA4 events as key events and import them into Google Ads.

What is sent, and what is kept

  • Sent: the event, its time and ID, the page address, the visitor's IP address and browser, the click IDs and the platforms' own cookies (_fbp, _fbc, _ga, _ttp), value, currency and products.
  • Sent hashed with SHA-256: email, phone and user ID to all three; first and last name to Meta and Google Analytics 4; city, postcode and country to Meta. TikTok receives no name or address.
  • Sent in plain text: city, postcode and country to Google Analytics 4, because its Measurement Protocol only accepts them that way. Leave those fields out of your forms if you do not want that.
  • Not sent: anything for visitors who have not given consent, in the default "Only after consent" mode.
  • Kept on your server: a log line per conversion with the event, source, value, UTM source and campaign, click ID type and each platform's answer. No names, emails, phone numbers or IP addresses. Lines older than 30 days are deleted (configurable).

From the Karelia Conversions 1.0.1 documentation.

Pricing

$79One site

One-time purchase, no annual renewal. Local and staging copies of your site need no licence.

Good to know

  • It does not add the Meta Pixel, the GA4 tag or the TikTok pixel to your pages. If a browser pixel also sends the same Lead, Meta counts both; keep form leads on the server only.
  • GA4 ties a conversion to the visitor's session through the _ga cookie. Without the GA4 tag on your site, server-side events still arrive, but as separate users.
  • Google Ads gets the conversions through GA4: link GA4 and Google Ads, mark the events as key events and import them. Imports can take up to 24 hours.
  • The GA4 Measurement Protocol never reports errors on the live endpoint; use the test button (validation endpoint) to check your setup.
  • Cargo orders need Cargo. Forms and sign-ups work without it.
  • It reports conversions; the platforms decide how many they match and how they use them.

Privacy

Karelia Conversions runs on your own Statamic server and sends conversions only to the Meta, Google and TikTok accounts you connect. It has no telemetry and no licence server, and never contacts Karelia Labs.

In the default consent mode nothing is sent and no click IDs are kept until the visitor accepts marketing cookies. Click IDs and UTM tags are kept in a first-party cookie, 90 days by default.

Email, phone and names are hashed with SHA-256 before they are sent. Google Analytics 4 receives city, postcode and country in plain text, because its API requires that.

The log on your server holds no names, emails, phone numbers or IP addresses, and lines older than 30 days are deleted. Access tokens stay in .env and are never shown in the Control Panel.

You remain the data controller for what you send to Meta, Google and TikTok. Mention it in your privacy policy.

FAQ

How do I send Statamic form submissions to the Meta Conversions API?

Install Karelia Conversions, put the Meta access token in .env, and add the form under Tools → Addons → Karelia Conversions → Events. Each submission is then sent from your server as a Lead (or Contact, Sign-up or your own event), with email, phone and name hashed.

Does it replace the Meta Pixel or the GA4 tag?

No. It adds no pixel or tag to your pages. Keep the GA4 tag if you want server-side events tied to the visitor's session, and send form leads from the server only, so Meta does not count them twice.

Can I count the conversions in Google Ads?

Yes, through GA4. Link GA4 and Google Ads, mark generate_lead, sign_up and purchase as key events in GA4, and import them in Google Ads. Imports can take up to 24 hours.

Which cookie banners does it work with?

There are ready-made rules for Cookiebot, CookieYes and Complianz. For another banner, enter its cookie name and the accepted value, or call KareliaConversions.consent(true) from the banner's own callback. Sites that need no consent can choose Always.

Does it work with Cargo?

Yes. Paid Cargo orders send a purchase with value, currency, order number and products, also when the payment is confirmed by a webhook. Forms and sign-ups work without Cargo.

Does it slow down my forms?

No. Conversions are sent after the response, or on your queue if you use one.

Do I need a licence for local and staging sites?

No. A licence covers one production site; development and staging copies are free.

Is it affiliated with Statamic, Meta, Google or TikTok?

No. It is an independent addon by Karelia Labs, sold on the Statamic Marketplace.

Related tools

More from Karelia Labs

Updated