Schema drift
Different teams ship different SDKs with subtly different event names: add_to_cart,
AddToCart, cart-add. Reporting becomes a reconciliation exercise.
Meiro Pipes · Web SDK
Meiro Pipes is a self-hosted Customer Data Infrastructure. It ships a single browser SDK with predefined event names, JSON Schema validation and identifier-aware delivery, running on AWS, GCP, Azure, OCI or your own data centre.
Free trial · No credit card · In production at banks, retailers and travel operators

mpt.js in production /collect endpoint, on your own domain
Run Lighthouse on a page. Count the trackers in the Network tab. Compare it to mpt.js
loaded from your own domain. The case for one SDK is largely scannable from your DevTools.
Why this matters
Different teams ship different SDKs with subtly different event names: add_to_cart,
AddToCart, cart-add. Reporting becomes a reconciliation exercise.
Each SDK reads its own cookies and writes its own storage. Privacy reviews stall every launch. When something leaks, nobody can say which loader was responsible.
Once event names are wired into a SaaS taxonomy, switching vendors means re-tagging every page. The SDK ends up owning the schema.
The Pipes Web SDK
mpt.js file. One taxonomy. One place to enforce rules.
Pipes ingests via a single browser SDK and a single /collect endpoint per Source.
Every event is matched to an Event Type, validated against a JSON Schema, deduplicated and
routed before it leaves your infrastructure.
The SDK accepts a curated, GA4-aligned event set: page_view,
add_to_cart, purchase, generate_lead,
sign_up and around 50 more. Unknown names are rejected with a console error.
Each Event Type carries an AJV-validated JSON Schema. A bad purchase payload
(missing amount, wrong currency code) is rejected at /collect
with a precise error.
DOM event logic (clicks, form submits, dataLayer pushes, scroll thresholds) lives in tracking rules edited in the Pipes UI. They run in a sandboxed worker with an explicit storage allowlist. No inline JS in your page.
Identifier extraction ($.email, $.user_id) is declared on the
Event Type, so the SDK never owns identity. Limits and priority on Identifier Types keep
merges sane on shared devices.
Setup
The SDK queues commands before the script loads, so the first page_view is
never dropped on slow connections. Events flow into /collect/<source>
on your own domain, where Pipes validates, deduplicates and routes them.
/tracking-rules/<source>.<script>
window.mpt = window.mpt || function () {
(window.mpt.q = window.mpt.q || []).push(
Array.prototype.slice.call(arguments)
);
};
window.mpt("config", {
collection_endpoint: "https://your-instance.com/collect/web",
link_tracking: { enabled: true },
tracking_rules: { enabled: true }
});
window.mpt("consent", {
storage_persistence: "granted",
user_id: "granted",
session_id: "granted"
});
window.mpt("event", "page_view");
</script>
<script async src="https://your-instance.com/mpt.js"></script> Spin up a Pipes workspace and instrument your first page in under an hour.
Governance
Every event lives under a named Event Type with an optional JSON Schema. Producers and consumers share one contract, versioned in your config.
Identifier Types declare which fields are joinable, with limits and priority that prevent runaway super-profiles on shared devices.
The SDK reads only the cookies and storage keys your tracking rules explicitly request.
Everything else returns null.
Deploy to your AWS, GCP, Azure or OCI account, or fully on-prem. /collect is
your domain. No third-party SaaS in the request path.
Side by side
| Capability | Meiro Pipes | Vendor SDK stack |
|---|---|---|
| Trackers in the page | ✓ 1 (mpt.js) | ✕ 3 to 8 loaders |
| Event taxonomy | ✓ One curated, validated set | ✕ Per vendor, reconciled in BI |
| Schema validation | ✓ JSON Schema at /collect | ✕ Caught later in the warehouse |
| Identity model | ✓ Centralised Identifier Types with limits | ✕ Per-SDK cookies and rules |
| DOM event logic | ✓ Sandboxed Web Worker | ✕ Inline JS via tag manager |
| Where data lives | ✓ Your cloud or on-prem; no egress | ✕ Vendor SaaS clouds |
| Cost model | ✓ Flat rate | ✕ Per MTU plus per destination |
| Switching cost | ✓ Replace a destination, not the page | ✕ Re-tag every page |
Free trial · No card required
mpt.js.Spin up a Pipes workspace, point a single SDK at it and watch a clean event stream land in your warehouse and ad networks during your first sprint.
See also