Overview

AdsPing is a server-side conversion tracking platform. Drop one script on your site and forward events to Meta, TikTok, Google Ads, and GA4 — bypassing ad blockers and iOS 14.5+ tracking limits.

What is AdsPing?

AdsPing is a server-side conversion tracking platform built for merchants who care about attribution accuracy. You install a single script (pb.js) on your site, configure which destinations to forward to, and AdsPing handles the rest — collecting events, deduplicating browser/server fires, and dispatching to each platform's server-side API with full match quality.

Each event is forwarded through your own backend channel, so ad blockers, iOS 14.5+ tracking restrictions, and third-party cookie deprecation can't silently break your reporting.

New here? Jump to the Quickstart — you'll have a live pixel forwarding events to Meta in under five minutes.

Why server-side?

Browser pixels (Meta's fbq, TikTok's ttq, Google's gtag) load JavaScript from the platform's domain. Ad blockers and privacy-focused browsers block those domains by default — Meta's own data shows 30-50% of pixel events get dropped on average. Server- side forwarding bypasses this entirely: events leave your browser through your domain, hit your backend, and get forwarded server-to- server using the platform's API.

  • Adblocker-immune. pb.js posts to your own domain; ad blockers can't blanket-block it the way they do facebook.com/tr.
  • iOS 14.5+ resilient. Server-side conversions don't depend on the App Tracking Transparency prompt or Safari ITP cookie restrictions.
  • Better match quality. Server-side enrichment adds IP, user agent, and hashed user identifiers (email, phone, FBC, FBP, gclid) the browser pixel often misses.
  • Deduplication. When you keep the browser pixel alongside server-side, AdsPing fires the same event_id from both channels so platforms count it once but with combined match signals.

How it works

Three objects cover the whole model:

ObjectWhat it representsExample
PixelOne per domain. Has its own subscription, event quota, and install snippet.acme.com
PipelineA forwarding rule on a pixel: events → one destination with config.Meta CAPI for Lead events
EventA single tracked action (PageView, Lead, Purchase…). Each event_id is unique.Lead event_id=abc-123

A pixel can have many pipelines — e.g. Meta and TikTok forwarding all events, plus a Google Ads pipeline forwarding only Lead. From a visitor's click to the platform's Events Manager, every hop:

text
Visitor clicks button
  ↓
pb.js intercepts (form submit / fbq / ttq / auto-tracking)
  ↓
pb.js POSTs JSON event → adsping-backend (your endpoint, your domain)
  ↓
Backend validates → stores → enqueues 1 job per pipeline
  ↓
Worker reads pipeline.config → calls platform API
  ↓
Platform logs event in Events Manager / Conversions Diagnostics
The backend is queue-driven. Even if Meta is briefly down, your events wait in the queue and retry with exponential backoff for ~2 hours. You'll see the pipeline turn yellow ("degraded") but no events are lost.

Browser/server deduplication

Both Meta and TikTok recommend running the browser pixel and the server API together. AdsPing makes this work without you writing any code: pb.js mints a fresh event_id for every event and sends it on both legs — the browser pixel call (fbq, ttq) and the server-side request. The platform sees two events with the same id, counts them once, and combines the match signals. For Meta and TikTok, pb.js even loads the platform's official browser script for you (only if window.fbq / window.ttq isn't already defined) — one AdsPing script tag gives you complete coverage.

Match quality

Match quality is each platform's estimate of how well the event attaches to a user record. AdsPing maximizes it by:

  • Form auto-capture. When pb.js sees a form submit, it harvests email/phone/name/address fields from inputs, hashes them client-side (SHA-256), and forwards as Advanced Matching parameters.
  • Click ID capture. pb.js reads fbclid, gclid, gbraid, wbraid, ttclid from the URL and stores them in a first-party cookie. Every event gets the right click ID auto-attached.
  • Network intercept. If the merchant's own code calls fbq('init', …, { em, ph }), pb.js mirrors those values into our payload too.
  • Server enrichment. The backend adds client IP, user agent, and event source URL — fields the browser pixel doesn't always populate.

Supported destinations

Next steps

Was this page helpful?