Tape for Craft CMS

Free for Craft CMS 5

Every conversion, counted once

Tape puts Google Ads, GA4, Meta, TikTok and nine more platforms on your Craft site, with the Commerce funnel behind them, Consent Mode v2 in front of them and server-side tracking underneath. The browser tag and the Conversions API send the same event with the same ID, so platforms deduplicate them — and orders the browser never reported are sent again from the server.

Tape

A store needs no template changes

With Commerce installed, add-to-cart, remove-from-cart, purchase and refund are wired to Commerce's own events — across the redirects a cart form and a payment gateway both involve. The tags inject themselves. Everything else is one line.

twig
{# A lead, worth £50 to Google Ads, Meta and the rest #}
{% do craft.tape.track('generate_lead', { value: 50, currency: 'GBP' }) %}

{# Your own event, to every platform that takes one #}
{% do craft.tape.track('brochure_download', { format: 'pdf' }) %}

{# The funnel steps Commerce has no event for #}
{% do craft.tape.viewItem(product.defaultVariant) %}
{% do craft.tape.beginCheckout() %}

// And from JavaScript, after the page has rendered
tape.track('add_to_cart', { id: variantId, qty: 2 });

Features

Thirteen platforms, one event shape, and the parts of conversion tracking that usually go wrong.

Every platform from one event

Google Ads, GA4, Google Tag Manager, Meta, Microsoft Ads, TikTok, Pinterest, LinkedIn, Snapchat, Reddit, X, Clarity and Hotjar, plus a custom snippet and a signed webhook.

  • Each funnel step mapped into each platform's own vocabulary
  • Payloads built in PHP — a visitor cannot dictate what is sent
  • Custom event names go to the platforms that take one

Browser and server, counted once

The browser tag and the Conversions API call are the same event with the same ID, derived from the order, so platforms deduplicate them instead of double-counting.

  • Meta, TikTok, Pinterest, Snapchat and Reddit Conversions APIs, and the GA4 Measurement Protocol
  • Sent through the queue — never during a checkout request
  • A ledger with a unique key per conversion, so a refreshed confirmation page counts once

The Commerce funnel, wired

From view_item_list to refund, with prices looked up in Commerce rather than taken from the browser.

  • Events survive cart-form and payment-gateway redirects
  • Refunds sent server-side, full or partial, once each
  • Product IDs that match your Merchant Center feed

Consent Mode v2, properly

All seven signals, region defaults, and bridges to ten cookie banners or an expression of your own. Unknown consent is not denied consent: events wait in the page and fire if the visitor accepts.

  • Server-side sends honour consent through a first-party mirror cookie
  • Per-destination consent categories
  • Do Not Track and Global Privacy Control, when you want them

Recovery and the accuracy report

Orders whose conversion never reached a platform — an ad blocker, a closed tab, a gateway nobody came back from — are sent again from the server, with the same event ID. Pro.

  • Never overrides a visitor who withheld consent
  • Orders placed against conversions tracked, per day and per destination
  • php craft tape/destinations/test sends a real event and prints the answer

Safe behind a full-page cache

Nothing Tape writes into a page varies by visitor, and it never opens a session to find out who someone is unless a setting depends on it.

  • Consent read from a cookie by the runtime, not baked into the page
  • Custom snippets inert in a <template> until consent allows them
  • The ledger holds nothing about the customer

Tape in the control panel

Real screens from a Craft 5 install — the destinations list, a Meta destination with its server side switched on, and triggers set up without a deploy.

Tape's Destinations screen in the Craft control panel, listing Google Ads, GA4, Meta, TikTok and a custom snippet with each one's consent category, whether it sends from the browser or from browser and server, and a Test button.
Editing a Meta destination in Tape: pixel ID, Conversions API access token read from an environment variable, advanced matching, the Advertising consent category, and the server-side switch that sends the same event with the same event ID.
Tape's Triggers screen listing three triggers: phone number clicks firing contact worth 25 GBP, a quote form submission firing generate_lead worth 120 GBP on the contact and services pages, and scroll depth at 50 and 90 percent on blog posts.

Screenshots from a live install, not mockups.

Frequently Asked Questions

The questions worth answering before you install it.

Start free, upgrade when you need the server

Lite is free and covers the six platforms most sites start with, the whole Commerce funnel and Consent Mode v2. Pro is $99 with a $59/year renewal, and adds server-side tracking, recovery, triggers and seven more platforms.