Did this table update recently enough? The nightly load usually lands by 03:00 — it's 06:00 and the newest row is from yesterday. Pulse opens an incident and pages you.
A pipeline can say ✓ succeeded and still leave a table stale or half-loaded. Pulse monitors the asset — freshness and row volume — and pages you on the breach a green run hides. Flat per-org pricing, and Pulse never needs a read connection into your warehouse.
Run-level monitoring tells you the job exited 0. It can't tell you the load wrote 200 rows instead of a million, or that the nightly table hasn't updated since Tuesday. Pulse answers the two questions data teams actually ask.
Did this table update recently enough? The nightly load usually lands by 03:00 — it's 06:00 and the newest row is from yesterday. Pulse opens an incident and pages you.
Is the row count sane? A load that's produced ~1M rows/day for a month just wrote 200. Absolute floor/ceiling, plus a statistical anomaly detector versus the asset's own baseline.
Every incumbent connects into your warehouse and runs its own queries. Pulse is fed by a push or bridged off a job you already run — no credential to provision, nothing to get through security review.
One monitor per asset. Declare the expectation, feed it a measurement, and breaches route through the alert channels you already wired for doneyet.
freshness_max_lag_s (update by when) and/or a volume floor, ceiling, or anomaly sensitivity . Slack / PagerDuty / Opsgenie routing reuses your existing rules.
Push: one HTTP call at the end of a pipeline step, from any scheduler — Airflow, dbt, Dagster, a k8s CronJob, a bash line. Bridge: set source_workflow_slug and Pulse derives freshness from that doneyet workflow's last successful run — no producer change.
Stale or off-volume opens one deduped incident and fans out as on_stale / on_volume . Goes healthy again → it resolves itself. Test paging up front with dyt pulse monitor test .
Already run jobs through doneyet? The bridge gives those assets freshness monitoring for free . Bringing an external scheduler? One observe call wires it. Full docs on the Get started page.
Published / reported self-serve pricing for data-observability tools (gathered July 2026). The category is expensive, enterprise-gated, and every incumbent connects into the warehouse. Pulse is the flat, self-serve, no-grant option.
| Tool | Entry / self-serve price | Pricing model | Reads your warehouse? |
|---|---|---|---|
| doneyet Pulse | Free → Pro $149/mo (100 assets, anomaly) | Flat per-org — no per-table meter | No — push / bridge |
| Monte Carlo | ~$25k–$50k / yr | Usage-based (credits), sales-led | Yes |
| Metaplane | Free → ~$208+/mo → $1.5k–3k/mo | Per monitored table | Yes |
| Soda | Free → Team $750/mo | Processing units + PAYG | Yes |
| Bigeye · Anomalo | Enterprise, sales-led (no public price) | Custom | Yes |
| Elementary | from ~$7.2k / yr (~$600/mo) | Cloud tiers over dbt tests | Yes |
One number per org — not per seat, not per table. Freshness and absolute volume bounds are on every tier, including Free; statistical anomaly detection starts at Pro.
Pulse is a SKU inside doneyet — your plan includes run tracking too, at no extra charge. Hard-stop at your plan's call allowance (no surprise overage). Scale & Enterprise are billed manually during soft launch — talk to us .
Data freshness, volume anomalies, and how Pulse stays out of your warehouse.
Freshness monitoring watches when a data asset was last updated and alerts you when it goes stale — the newest row is older than the lag you allow. It catches a "successful" pipeline that still left a table un-refreshed, a failure that run-level monitoring can't see. Pulse pairs it with volume monitoring (row-count floors, ceilings, and statistical anomalies) so you also catch a load that ran but wrote the wrong amount of data.
No — and that's the point. Every incumbent data-observability tool connects into your warehouse and runs its own queries, which means provisioning a read credential and passing security review. Pulse is fed either by a push (your pipeline sends a row count and/or watermark with one HTTP call at the end of a load) or by bridging off a job you already run through doneyet. Pulse never holds warehouse credentials and never queries your data.
Pulse is a flat per-organization price with no per-table meter: Free (5 monitors), Starter $29/mo (25), Pro $149/mo (100, with anomaly detection), Scale $499/mo (unlimited). The incumbents bill per monitored table, per credit, or per processing unit and run from ~$208–$750+/mo self-serve up to $25k+/yr sales-led. Pulse Pro covers 100 assets with anomaly detection for a fraction of that — and Pulse is freshness + volume, not a full lineage/catalog platform, so it's the focused, affordable slice of "is my data late or wrong?"
doneyet watches your jobs — cron, CI, and batch workflows — via a heartbeat contract, and pages you when a run stalls, overruns, or fails. Pulse watches your data — warehouse tables and datasets — for freshness and volume. They share one alerting spine and one subscription: a Pulse plan includes run tracking too. Buy either lens; you get both.
Any of them. Pulse takes an observation over plain HTTP, so a push works from Airflow, dbt, Dagster, a Kubernetes CronJob, a GitHub Actions step, or a one-line shell call — no agent, no daemon, no polling. If the job already reports to doneyet, the bridge gives its asset freshness monitoring with no producer change at all.
Register your first monitor in a few minutes — push a row count or bridge a job you already run.