Blog

Field notes on server-side tracking.

Tech deep-dives, no pitch deck. Adblock paths, OAuth politics, hybrid-mode dedup, platform-by-platform setups. Written for performance-marketing folks who want the architecture, not the marketing copy.

Commerce

SureCart conversion tracking, the full cart funnel

SureCart fires its cart events in JavaScript with no native PHP submit. A browser-bridge captures all of them, plus purchase and refund, with a stable per-order event_id for deduplication.

📅 2026-06-08⏱ ~7 min read
Commerce

Easy Digital Downloads conversion tracking

The EDD funnel end to end: view_item_list on archives, view_cart and begin_checkout at checkout, purchase and refund, with line items and hashed PII. The one difference from WooCommerce is no search event.

📅 2026-06-08⏱ ~6 min read
Analytics

Find exactly which field kills your lead form

Per-form drop-off analytics: starts, leads, abandons, conversion rate and the top drop-off fields. GA4-only, never leaked to ad channels, and PII-safe because it stores field names and counts, never values.

📅 2026-06-08⏱ ~6 min read
Engineering

Fire conversions on any button with one CSS class

Five CSS-class slots turn any tagged button into a server-side conversion, no JavaScript required. Per-button data attributes override value, currency and content-id. When to reach for it instead of form or commerce hooks.

📅 2026-06-08⏱ ~6 min read
Architecture

Why refunds go to GA4 only

GA4 has a native refund event that nets revenue against the purchase. No ad platform has a real refund event, so Beaconry sends refunds to GA4 exclusively and keeps ad-channel conversion counts honest.

📅 2026-06-08⏱ ~5 min read
Performance

How Beaconry survives LiteSpeed, WP Rocket and Cloudflare

Two features that keep tracking alive under aggressive caching: automatic JS-optimizer opt-out so nl-data is never delayed or combined away, and a client-side nonce-refresh so hours-open tabs and cached HTML keep posting valid events.

📅 2026-06-08⏱ ~7 min read
Architecture

Which of the ten channels gets which event

A matrix of commerce and funnel events against the ten channels. Beaconry sends each platform exactly the events it can actually use, instead of spraying everything everywhere.

📅 2026-06-08⏱ ~7 min read
Analytics

One reporting currency from many shop currencies

Normalize value and item prices into a single reporting currency before fan-out, using European Central Bank daily rates with a durable fallback. The original currency is kept on the event for auditability.

📅 2026-06-08⏱ ~6 min read
Analytics

A live conversion dashboard inside WP-Admin

The last-50-event buffer, a 0-10 per-channel health score and an anomaly mailer that flags a 50 percent drop (broken pixel) or a 4x spike (bot wave). Hear about a broken pixel from Beaconry, not from Meta two days later.

📅 2026-06-08⏱ ~6 min read
Engineering

Lifting CAPI match quality from the server

A first-party encrypted PII vault that persists match keys across events, server-side enrichment and canonicalization before hashing, and the per-channel hashed-field set. For advertisers chasing a higher Event Match Quality score.

📅 2026-06-08⏱ ~8 min read
Architecture

Microsoft Ads conversions without the developer-token wait

The Google Ads broker pattern, applied to Microsoft Advertising (Bing): msclkid attribution, the developer token living in the broker, an HMAC site-bearer in the plugin, and eight conversion-goal slots.

📅 2026-06-08⏱ ~6 min read
Architecture

Why "server-side tracking" still loses 25 % of conversions to adblockers

Most "server-side" setups still bootstrap from a third-party domain in the browser. Filter lists catch up within weeks. The fix is not faster fallback, it's same-origin from the very first byte.

📅 2026-05-02⏱ ~7 min read
Google Ads

Google Ads developer-token approval: the 6-week wait, and how to skip it

Server-side conversion uploads via the Google Ads API need a developer-token that takes 4 to 6 weeks to approve. A central broker abstracts the token without ever seeing your conversion data, here's the architecture.

📅 2026-05-02⏱ ~9 min read
Comparison

Beaconry vs Stape vs GTM Server-Side: same outcome, very different mechanics

All three claim "server-side tracking", all three end up with different adblock-resistance, different DNS setup, different monthly bills. Side-by-side teardown of the dispatch path on each.

📅 2026-05-02⏱ ~12 min read
Engineering

Hybrid mode: when to put the browser pixel back in

Server-side alone covers 100 % of consenting visitors. Hybrid mode adds first-party fbp / _ttp / li_fat_id cookies for better match-rate. Stable event_id dedup is what keeps it from double-counting. Walkthrough.

📅 2026-05-02⏱ ~6 min read
TikTok

TikTok Events API on WordPress: what's required, what isn't

TikTok asks for AAM, first-party cookies, enhanced postback by default during onboarding. None of those are required, all of them are GDPR risk. The actual minimum config in two screens.

📅 2026-05-02⏱ ~5 min read
Architecture

Click-IDs explained: gclid, fbclid, ttclid, li_fat_id side by side

One URL parameter per ad platform tells the platform which click drove the conversion. How they're captured, persisted, and sent server-side.

📅 2026-05-02⏱ ~6 min read
Meta

Meta CAPI Match Quality: why "Poor" and how to get to "Good"

Match Quality is Meta's diagnostic for how well your CAPI events are tied to actual people. Four-stage walkthrough with the actions that move the needle.

📅 2026-05-02⏱ ~7 min read
Engineering

WooCommerce conversion tracking: the 6 events that actually count

WooCommerce fires 30+ hooks. Six matter for ad-platform optimisation. What each event represents, where it fires, which platforms care.

📅 2026-05-02⏱ ~6 min read
Counter-piece

When server-side tracking doesn't help (and what to do instead)

An honest counter-piece. Four scenarios where Beaconry, Stape and GTM together are not the answer, plus the actual upstream fixes.

📅 2026-05-02⏱ ~5 min read
Service · GA4

Google Analytics 4 with Beaconry: Measurement Protocol over the WordPress REST endpoint

Setup in 90 seconds, six events out of the box, no gtag.js bytes shipped to the visitor. Same property, same data, none of the adblock loss.

📅 2026-05-02⏱ ~5 min read
Service · Meta

Meta Pixel + Conversions API with Beaconry: Pixel ID and access token in one screen

Server-side CAPI dispatch with hashed PII out of the box, optional hybrid mode for fbp/fbc cookies, dedup via stable event_id.

📅 2026-05-02⏱ ~6 min read
Service · TikTok

TikTok Events API with Beaconry: ttclid in, fourteen events out

TikTok Events API 2.0 over the WordPress REST endpoint. ttclid auto-captured, all 14 standard events, GDPR-safe defaults.

📅 2026-05-02⏱ ~5 min read
Service · LinkedIn

LinkedIn Conversions API with Beaconry: OAuth in 30 seconds, 5 conversion-rule slots

OAuth handshake, five conversion-rule slots, 60-day token renewal, B2B funnel attribution. The most B2B-relevant of the channels.

📅 2026-05-02⏱ ~5 min read
Service · Google Ads

Google Ads with Beaconry: OAuth in 2 minutes, no developer-token approval

OAuth broker abstracts the developer-token, customer connects via OAuth, conversion-actions map cleanly. Live the same day.

📅 2026-05-02⏱ ~6 min read
Service · Microsoft Ads

Microsoft Advertising with Beaconry: the sixth active channel

Same OAuth broker pattern as Google Ads, msclkid attribution, B2B-heavy Bing audience. Active now alongside the other five.

📅 2026-05-02⏱ ~5 min read
Performance

Beaconry performance vs Site Kit, GTM and Stape: 5 KB to your visitor, 30 to 150 KB on the others

Same WordPress install, four tracking stacks. Lighthouse scores, JS bytes, LCP impact, cookies set. Beaconry's 5 KB browser footprint vs Site Kit's 150 KB.

📅 2026-05-02⏱ ~7 min read