Pipes diagram
All your complete data pipelines sorted by last-hour delivery volume. Hover nodes to highlight connected paths.
Destinations are reusable send functions, one per external service. The same event can be routed to many of them at the same time.
Beyond Event Destinations like this one, Pipes also has Profile Destinations and Profile Syncs that push whole customer profiles into CDPs, channel tools, and warehouses.
A Pipe routes events from one Source to one or more Destinations, and can transform them along the way.
This Pipe already forwards conversions to Google Ads. Open it to add Meta CAPI as a second destination.
You're looking at one Source: a website connected through the Meiro Web SDK, with event types like page_view, form_submit, or scroll.
In production, Pipes runs many Sources at once. They can also be mobile SDKs, server-side endpoints, cloud apps like HubSpot or Salesforce, or warehouse tables loaded via Reverse ETL. This demo only shows this one.
Last hour at a glance
Aggregated event, routing and delivery counts for the last 60 minutes.
Events by event type
Routed events by destination
Latest events
Showing 10 of the most recent 100 events.Sources
Manage event stream, cloud app, and reverse ETL sources. Collect events from your website, apps, cloud apps, and data warehouses.
- website.com29 events in the last hour
- Meiro web (Test SDK with tracking rules)0 events in the last hour
- Product Management Platform0 events in the last hour
- MTA Event Replay (Last 7 Days)0 events in the last hour
- HubSpot1 000 events in the last hour
- Mobile App0 events in the last hour
- BQ Orders Sync0 events in the last hour
Profile Search
Look up realtime profiles, or expand the search to data warehouses.
Identity Resolution
Define the identifiers that link events to profiles and review where they are used across sources.
Connect warehouse tables to identifier types for warehouse attributes and audience segmentation.
Where identifiers connect
Track how identifier types link profiles to event types and data models across your stack.
Attributes
Build computed fields that refresh whenever a profile updates.
- Business Engagement Summary (90d)Calculated from incoming events.Dimensions: loyalty_tier, activity_score, days_since_last_seen, total_engagements, preferred_channel
- HubSpot Owner DetailsCalculated from incoming events.Dimensions: owner_id, email, first_name, last_name
- decision_engine_last_eligibleCalculated from incoming events.Dimensions: eligible
- decision_engine_last_decision_keyCalculated from incoming events.Dimensions: decision_key
- last_purchase_summaryCalculated from incoming events.Dimensions: total_amount, items_count, currency
- consent_stateCalculated from incoming events.Dimensions: marketing, analytics
All Pipes
Connect sources to event destinations. Transform and filter events as they flow through.
Profile Syncs
Connect profile syncs to profile destinations. Deliver profiles instantly as they refresh.
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 CAPI (Meiro Pixel)Sends web events to Meta Conversions API using Meiro Pixel ID.
- Google AdsSends conversion events to Google Ads via Enhanced Conversions API.
- Sklik APISends conversion events to Sklik API (Seznam.cz advertising).
- HubSpot Contacts (Events)Syncs contacts to HubSpot via Batch Upsert API.
- MTA ToolMulti-Touch Attribution tool ingestion endpoint.
DWH Connections
Manage connections to your data warehouses. Used by Reverse ETL sources and DWH Syncs.
- BQmeiro-testing-project
- MTA Event Replay (Last 7 Days) (Reverse ETL)meiro-testing-project
OAuth
Configure OAuth providers and manage authorizations. Attach an authorization to a source or destination to inject a fresh access token into its secrets at execution time.
OAuth providers
Configure client credentials for each supported OAuth provider so that sources and destinations can authorize against them.
https://www.googleapis.com/auth/adwordsOAuth authorizations
Named authorizations obtained from configured OAuth providers. Sources and destinations reference these by name.
No OAuth authorizations yet. Configure a provider above and use "Authorize" to create one.
Secrets
Securely store and manage API keys, tokens, and credentials for your integrations. Secrets are encrypted and available via the secrets parameter in your functions, e.g. secrets.KEY_NAME.
- META_PIXEL_IDUSED BY1 entity
- META_CAPI_KEYUSED BY1 entity
- HUBSPOT_ACCESS_TOKENHubspot access tokenUSED BY2 entities
- SKLIK_API_KEYUSED BY1 entity
website.com
Pipes Tag (mpt.js)
Drop this snippet into your site to send mpt events to this source. Use event for page views and custom actions, and set for shared event attributes. Consent controls persistence.
SDK snippets and command reference are hidden. Expand to view.
The five rows below are typical event types for a website. Each one defines its payload, validation rules, and which identifiers Pipes uses for identity resolution.
In production a Source can have many more, often dozens, depending on what the website or app needs. Open form_submit to see how one is set up.
website.com to Google Ads
No transform function defined yet.
Ask Piper to write one for you, or write it manually.
// Simple pass-through for Google Ads Enhanced Conversions async function transform({ events, profiles }) { return events.map(ev => ({ ...ev, event_name: ev.event_type, user_data: { email: profiles.find(p => p.id === ev.user_id)?.email }, })); }
The transform function runs server-side for every event batch. It can reshape, filter, enrich, or hash the payload before it leaves Pipes. It also has access to the resolved profile and to Secrets.
Piper used that here to hash email and phone (SHA-256), the format Meta CAPI expects.
Back to the Dashboard to see what Piper just built.
params in the destination send({ events, params, secrets }) function.{} Meta CAPI (Meiro Pixel)
Sends web events to Meta Conversions API using Meiro Pixel ID.
No OAuth authorizations yet. Create one from Authorizations to attach it here.
/** * Meta Conversions API (CAPI) send function. * pixel_id and meta_access_token must be stored in Secrets. */ async function send({ events, params, secrets }) { const pixelId = secrets.meta_pixel_id; const accessToken = secrets.meta_access_token; const url = `https://graph.facebook.com/v19.0/${pixelId}/events?access_token=${accessToken}`; const payload = { data: events.map(ev => ({ event_name: ev.event_type, event_time: Math.floor(new Date(ev.event_time).getTime() / 1000), action_source: "website", user_data: ev.user_data, custom_data: ev.event_payload, event_source_url: ev.url, event_id: ev.event_id, })), }; const response = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), }); return { ok: response.ok, status: response.status }; }
Write any send logic the downstream service needs (REST, webhook, GraphQL, vendor SDKs) in plain JavaScript. Credentials come from Secrets and never end up in the code.
Every Event Destination uses this same function signature, whether it sends to Sklik, HubSpot, or your own internal endpoints.
Next up: Health. Every event passes through Pipes' internal queues, and this view shows where any backlog is forming.
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.
Pipes processes events through four queues: identity resolution, event delivery, profile refresh, and profile delivery.
Each card shows backlog size, throughput in the last minute, and how long the oldest item has been waiting. That helps you pinpoint where a slowdown is, instead of debugging the whole pipeline at once.
Errors next. Anything that fails to deliver shows up there.
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.
System Errors
Real-time error rate (last 60 minutes).
Every failed delivery is recorded with its original payload, the error reason, the target destination, and the retry state.
Together with the queue view, this is where you trace any pipeline issue end to end, from the event that arrived to the call that failed.
event_time in form_submit payload. Event will be skipped.