HeySignal
A team.blue BRAND
Home»Features»Destinations
Destinations

One event in. Every platform out. Consent spoken in each one's language.

Every ad platform invented its own way to hear about consent. Google wants Consent Mode signals. Meta has no GDPR parameter at all, so the only compliant move is withholding the event. TikTok wants limited_data_use. Get one dialect wrong and you're either leaking data or losing attribution.

HeySignal speaks all of them, automatically, from one verified consent state.

The destinations

Ten types, one shape

Your events arrive once, in one common shape. Built-in per-platform mappings do the rest.

  • GA4 via Measurement Protocol, with Consent Mode v2 signals, full ecommerce mapping and Debug View support.
  • Meta Conversions API (v24.0) with SHA-256 hashing of match parameters, automatic event IDs for pixel deduplication, and hard event withholding when marketing consent is denied. Meta offers no consent flag, so we don't send and pretend.
  • TikTok Events API with strict hashing and limited_data_use translation.
  • Google Ads conversions through the Data Manager API: no developer token hoops, honest partial-success reporting, gclid/wbraid/gbraid attribution.
  • Google Ads Customer Match audiences, gated on explicit ad-user-data consent, batched ten thousand members at a time.
  • Snapchat CAPI and Pinterest API v5 (with OAuth token refresh that takes care of itself).
  • Segment and RudderStack for CDP fan-out.
  • Signed webhooks to anything else: four auth schemes including HMAC signatures, plus server-side request-forgery protection.

Adding a platform is a destination, not a project. No new tags, no new container, no re-instrumenting.

Consent translation

The part everyone else makes you wire by hand

One consent state from your CMP becomes, automatically:

  • gcd and ad_user_data / ad_personalization for Google surfaces
  • event withholding plus Limited Data Use flags for Meta
  • limited_data_use for TikTok, data_use for Snapchat, opt_out_type for Pinterest
  • Microsoft's asc signal

In sGTM setups this is a per-tag checkbox exercise where one forgotten box means non-consented data on a US server. Here it is not configurable enough to get wrong.

One state, every dialect

GOOGLE gcd · ad_user_data · ad_personalization
META event withheld + Limited Data Use
TIKTOK limited_data_use
SNAPCHAT data_use
PINTEREST opt_out_type
MICROSOFT asc

Reliability

Flaky platforms are our problem, not yours

  • Deduplication, three layers. In-memory, then Valkey with a 24-hour window, then a Postgres audit trail. The same conversion never counts twice, even during retries.
  • Retries with backoff on server errors; client errors surface immediately with the platform's actual response.
  • Circuit breakers per destination. When Meta has a bad afternoon, your GA4 delivery doesn't feel it.
  • Dead-letter queue with replay. Failed events are kept, inspectable, and re-deliverable once the platform recovers.
  • Delivery logs that tell the truth, including partial successes, with per-destination status codes in the live debugger.

Strip by default. Hash on purpose. Send only what's allowed.

Each destination gets its own privacy settings, per field: strip, hash, or pass, for email, phone, names, IP, user agent and more. Defaults are strip. A capability registry knows what each platform legally and technically accepts, and coerces illegal combinations to the safe option. Fields a platform can't take are never sent at all.

10 types
Built-in event mappings
8
Platform consent translators
3 layers
Deduplication · 24-hour window
Breakers + DLQ
Per destination, with replay
Strip / hash / pass
Per-destination, per-field PII
FAQ

Straight answers.

Do I need Google Tag Manager for any of this?

No. Destinations are fed by the HeySignal SDK or your existing dataLayer. If you want to keep GTM, use the first-party proxy alongside.

How does Meta deduplication work if I keep my browser pixel?

The SDK intercepts your existing pixel calls and shares event IDs, so Meta's CAPI dedup matches server and browser events correctly.

What if a platform rejects an event?

You see it: real status codes in the delivery log, dead-lettered payloads you can inspect and replay. No black holes.

Can I send to my own backend?

Yes, the webhook destination signs payloads with HMAC so your endpoint can verify they're really from your pipeline.

Stop maintaining ten integrations. Configure one gateway.
HEYSIGNAL ✱ A TEAM.BLUE BRAND
Related