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

MetricHow YOM counts it
Conversion countsExact, deduplicated on event id
FunnelsStatistical estimate
AttributionStatistical estimate
Unique visitorsStatistical 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

EndpointAuth
POST /v2/collectpublishable key in body
POST /v2/eventsBearer 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.

Illustration · sub-tenant ids are examples. A bound key or token is forced to its own sub-tenant; asking for another returns 403.

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.