Product
Everything here ships today. Everything else says “Coming soon”.
YOM is a first-party measurement layer on Cloudflare's edge: collection, exact conversions, consent enforcement, reports, signed data-out and multi-tenancy in one account.
01 Exact conversions
The numbers that pay the bills are counted exactly.
Five conversion events take an exact, deduplicated path: purchase, refund, generate_lead, form_submit and sign_up. Each event carries a stable id, so a retried or double-fired send is counted once, and the total can be checked line by line against your order system.
- Dedup key
- The event id you send (an order id works well); the SDK generates one if you don’t.
- Sampling
- None on conversion counts.
- Server events
- Send the conversion from your backend so ad blockers never see it.
- Reconciliation report
- Send your orders (API or CSV) and YOM matches each order id to the purchase event’s transaction id, using exact, unsampled events. Missing and extra orders are listed.
Exact vs estimated, stated plainly
| Metric | How YOM counts it |
|---|---|
| Conversion counts | Exact, deduplicated on event id |
| Funnels | Statistical estimate |
| Attribution | Statistical estimate |
| Unique visitors | Statistical estimate (consented visitors only carry an id) |
02 Consent & privacy
Cookieless until a visitor says yes, and enforced on the server.
Without analytics consent, the browser SDK keeps no persistent id and writes nothing to storage, and the server forces the visitor id empty regardless of what the client sent. Withdrawing consent wipes the stored ids.
- Consent states
- granted · denied · unknown. Only granted allows a first-party visitor id.
- DNT / GPC
- Treated as denied: cookieless by default. Per project you can choose drop or ignore instead.
- Required mode
- Optionally drop every event whose consent is denied.
- URLs
- Path only. Query strings and fragments never leave the browser; referrers are reduced to a host.
- Click ids
- Reports record presence only (e.g. “gclid present”). The one exception: with marketing consent and Meta CAPI configured, the Meta click id is passed to Meta for matching.
- PII scrubbing
- Email-, phone-, name-, address- and card-like params are removed from browser events.
- Forwarding
- Browser forwarding to your own GA4 or Meta Pixel, and server-side Meta CAPI / GA4 Measurement Protocol, run only with explicit marketing consent and no GPC signal.
- Internal traffic
- Flagged internal events are excluded from reports and never sent to destinations.
- Opt-out evidence report
- Per event: the consent state, GPC, DNT, whether it was kept cookieless, PII scrubbed or forwarding suppressed.
Ingest · live view
conversions in view 3
Illustration of an event stream. Events from visitors who granted consent keep a visitor id. Events carrying a Global Privacy Control signal, a denied consent, or no consent decision are collected cookieless: the visitor id is removed, but conversions are still counted. Query strings are stripped and email-like fields are scrubbed.
Illustration · simulated events, not customer data
03 First-party collection
Collection that copes with ad blockers, Safari and closing tabs.
Browser batches go to YOM’s edge ingest as text/plain, which is CORS-safelisted, so there’s no preflight and sendBeacon works on page hide. Server events use a secret key or an HMAC signature. Bots are filtered at the edge.
- Taxonomy
- GA4-aligned event names out of the box: page_view, view_item, add_to_cart, begin_checkout, purchase, refund, generate_lead, sign_up and more.
- Custom events
- Any snake_case name up to 64 characters; strict mode drops names you haven’t declared.
- Enrichment
- Channel from UTM + referrer, device / browser / OS, country and region from the edge.
- Bot filtering
- User-agent rules and missing-UA checks at the edge; webdriver detection in the SDK.
- SDK
- Browser, React and Node, from one npm package, around 12 KB gzipped with every plugin.
- Commerce connectors
- WordPress and WooCommerce plugin, waiting for review on wordpress.org, so for now we set it up with you. Shopify is coming soon.
Ingest endpoints
| Endpoint | Auth |
|---|---|
| POST /v2/collect | publishable key in body |
| POST /v2/events | Bearer yom_sk_… or HMAC |
≤ 50 events or 64 KB per request. Retries use backoff on network errors, 429 and 5xx.
04 Reports
The reports a growth team uses, with the estimates labelled.
Overview, timeseries, breakdowns by any dimension, ecommerce (view → cart → checkout → purchase, revenue, AOV, items), goals, funnels, attribution (first, last or any touch by channel), retention cohorts, Core Web Vitals, errors and a 30-minute realtime view.
- Export
- CSV or NDJSON; older data comes from the raw archive.
- Raw archive
- Your events, kept as files you can export.
- Retention
- Free: 180 days. Pay-as-you-go: 395 days by default, adjustable up to five years.
- Generic query
- One counters endpoint (count, sum, unique sessions/visitors, percentiles) grouped by up to two dimensions or by time.
05 Destinations
Your data leaves only when you say so.
Webhook destinations receive events in realtime or in batches. Every request is signed with an HMAC signature and carries a stable event id, so your receiver can verify it and drop duplicates. Failed deliveries are retried and logged.
- Filters
- All events, a family (event.*) or named events.
- Never sent
- Internal traffic.
- Meta CAPI / GA4 MP
- Server-side forwarding to your Meta pixel and GA4 property. Sent only with explicit marketing consent and no GPC; everything else is logged as suppressed. Pay-as-you-go.
- Warehouse exports
- Hourly files to S3, Google Cloud Storage or R2 (NDJSON or Parquet), or BigQuery. Snowflake reads the S3 export through an external stage. Pay-as-you-go, up to 5 per project.
- Looker Studio
- A community connector that reads your reports with a read-scoped key. Early access: you deploy it from our repository.
- Moving from GA4
- A gtag shim in the SDK so existing gtag() calls keep working, and an import of daily totals from your GA4 BigQuery export for the days before YOM.
- Google Ads Enhanced Conversions
- Not built yet Coming soon
How delivery works
- Signature
YOM-Signature: t=…, v1=HMAC-SHA256 - Retries
Backoff from 30 seconds to 6 hours, about 24 hours in total - Visibility
Delivery log, health, test events and one-click redelivery - White-label
Your own header prefix and user agent
06 Multi-tenant & embedding
Built for organisations that serve other organisations.
Sub-tenants partition data inside one project. They can be open (created on first event, zero setup) or registered. Keys and embed tokens can be bound to one sub-tenant, and a bound principal is forced to it.
- Live Scoped keys and embed tokens per sub-tenant
- Live Usage by sub-tenant, for re-billing
- Live White-label webhook headers
- Live White-label client portals with read-only client logins (own domain on pay-as-you-go)
- Live <yom-report> embed and scheduled email reports
- Live Partner API: create projects and mint keys
One YOM org connects to five client sub-tenants, each through a scoped key or embed token.
07 AI-ready
An MCP server and an API an agent can use.
YOM’s MCP server gives Claude and other AI agents 13 read-only tools over your reports, authorised by a read-scoped secret key or a short-lived embed token. The same reports are served by an API: overview, timeseries, breakdowns, a generic counters query and CSV/NDJSON export. An agent can ask “why did leads drop?” without anyone exporting a spreadsheet.
- MCP server for Claude and other AI agents: read-only, scoped by keyLive
- AI-assistant traffic channel: ChatGPT, Perplexity, Claude and 9 others stop landing in DirectLive
- AI-crawler report (last 88 days): sees crawlers that reach YOM through server-side tracking or the pixelLive
- Report API with read-scoped keysLive
Also included: Google sign-in and multi-factor authentication for your team. See security for what exists today and what doesn’t yet.
What it costs →Start measuring
Measure what you can prove.
The first 100,000 events every month are free. No credit card, no sales call.