northpeak.com
Connected Pipes
- northpeak.com to Meta CAPI to
Meta CAPI - northpeak.com to Google Ads to
Google Ads - northpeak.com to BigQuery events to
BigQuery
Health
Follow a single event as it flows through Pipes, from identity resolution to profile activation. Each step shows backlog size and how far behind real time the oldest item sits.
We receive an event and store it first. If it carries identifiers, it waits here so we can stitch it to the right profile before any routing happens.
Once identity is resolved, we fan out delivery tasks per pipe and destination. The event router pulls from this pending queue.
Profile updates trigger attribute refresh. This queue represents pending refreshes before realtime profile sync checks can run.
Updated profiles are pushed to profile destinations (CDP, marketing tools). This queue tracks pending deliveries.
Identity Resolution
Define the identifiers that link events to profiles and review where they are used across sources.
Where identifiers connect
Track how identifier types link profiles to event types and data models across your stack.
Identifier types
Limits and priority decide when profiles merge.
northpeak.com to Meta CAPI
Deliveries
Every event this Pipe sent, with the destination’s response.| Event | Purchase mapped from purchase |
|---|---|
| Value | €189.00 · order ord_88412 |
| ✓ sent hashed (SHA-256), never in plain text | |
| Phone | ✓ sent hashed, from her loyalty card |
| Ad click | ✓ the click ID from Monday’s Meta ad |
| Consent | ✓ ads consent given · customers without it are never sent |
| Browser pixel | blocked by her content blocker · this server-side delivery is the only one Meta got |
// Maps event names, keeps consented customers and hashes PII for Meta CAPI const EVENT_MAP = { 'page_view': 'PageView', 'add_to_cart': 'AddToCart', 'purchase': 'Purchase', }; async function sha256(str) { const buf = new TextEncoder().encode(str.trim().toLowerCase()); const digest = await crypto.subtle.digest('SHA-256', buf); return Array.from(new Uint8Array(digest)).map(b => b.toString(16).padStart(2, '0')).join(''); } async function transform({ events, profiles }) { const out = []; for (const ev of events) { const profile = profiles.find(p => p.id === ev.user_id) ?? {}; if (!profile.ads_consent) continue; // no consent, nothing is sent const user_data = {}; if (profile.email) user_data.em = await sha256(profile.email); if (profile.phone) user_data.ph = await sha256(profile.phone); if (profile.fbclid) user_data.fbc = `fb.1.${ev.ts}.${profile.fbclid}`; out.push({ ...ev, event_type: EVENT_MAP[ev.event_type] ?? ev.event_type, user_data }); } return out; }
// events [{ "event_type": "purchase", "event_id": "ord_88412", "value": 189, "currency": "EUR", "user_id": "4b7e19c2…" }] // profiles [{ "id": "4b7e19c2…", "ads_consent": true, "email": "emma.s@…", "phone": "+49 •••• 214", "fbclid": "IwAR2k…" }]
Run the test to see what Meta receives.[{ "event_type": "Purchase", "event_id": "ord_88412", "value": 189, "currency": "EUR", "user_data": { "em": "9f2c41d0…e41a", "ph": "c04b7e93…19d2", "fbc": "fb.1.1793…IwAR2k…" } }]
Profile Syncs
Connect profile syncs to profile destinations. Deliver profiles instantly as they refresh.
DWH Connections
- Northpeak analyticsnorthpeak-analytics · eu-west3
- CRM replica (Reverse ETL)northpeak-crm · daily at 02:00
All Destinations
Manage event and profile destinations. Route events to data warehouses, APIs, and marketing platforms, or sync profiles to CRMs and engagement tools.
- Meta CAPISends conversions to Meta Conversions API, hashed, server-side.
- Google AdsSends conversions to Google Ads via Enhanced Conversions API.
- BigQuery eventsStreams every validated event to northpeak-analytics.events.
- BigQuery profiles tableKeeps one row per unified profile, refreshed in real time.
- HubSpot Contacts SyncUpserts customers with email into HubSpot contacts.
- Braze UsersUpdates app users in Braze for push campaigns.
Pipes diagram
All your complete data pipelines sorted by last-hour delivery volume. Hover nodes to highlight connected paths.
Last hour at a glance
Aggregated event, routing and delivery counts for the last 60 minutes.
- META_CAPI_KEYUSED BY1 entity
- HUBSPOT_ACCESS_TOKENHubspot access tokenUSED BY2 entities
- BIGQUERY_SERVICE_ACCOUNTUSED BY1 entity