E EMBAN / Docs

Pricing & Plans

Emban has four standard plans plus a custom enterprise path. Each plan caps two usage meters (events ingested per month, widget/dashboard queries per month) and a handful of per-account limits (published dashboards, editor seats, API keys). Entitlements are enforced at the API layer, not by the UI — if a plan doesn't include a feature, the endpoint returns 402 Payment Required with a machine-readable violation code.

Alpha pricing. The numbers on this page are what is wired into the entitlement engine right now. Public pricing may change at general availability, and early alpha customers keep the plan they signed up on.

Plans at a glance

Plan Price Events/mo Queries/mo Published dashboards Editor seats API keys
Free $0/mo 250,000 2,500 1 1 2
Starter $149/mo 1,000,000 10,000 3 3 5
Growth $399/mo 10,000,000 100,000 Unlimited 10 15
Scale Custom 100,000,000 1,000,000 Unlimited Unlimited Unlimited

Features by plan

FeatureFreeStarterGrowthScale
Core event ingestion and dashboards
Query Builder (adhoc SQL)
Alerts + scheduled reports
Remove “Powered by Emban” branding on embeds
Custom dashboard theme (colors, typography)
Audit log access (admin-side + API)
Embed permissions (locked filters, hidden widgets)
Not yet billed as separate line items. Alerts, reports, webhook deliveries, CSV/PNG/PDF exports, and Query Builder usage are not priced independently today. The enforced query meter currently applies to the public GET /v1/query API path; broader dashboard, report, alert, and adhoc-SQL metering is part of the billing hardening work before GA.

How usage meters work

Two counters are tracked per org and reset at the start of each UTC calendar month:

events_used Events ingested this month Sums across every /v1/events POST since the 1st of the month (UTC). Each accepted event counts as one; dropped/invalid events are not counted.
queries_used Queries executed this month Includes every dashboard widget load (published and draft), Query Builder runs, alert evaluations, and scheduled report runs. Each ClickHouse query against emban.events is one tick.

Both counters live in the usage_daily table and can be read via GET /v1/billing:

{
  "plan": "growth",
  "status": "active",
  "events_limit": 10000000,
  "events_used": 3142857,
  "queries_limit": 100000,
  "queries_used": 41200,
  "trial_ends_at": null,
  "available_plans": [...]
}

What happens when you hit a limit

Limit hitEndpoint behaviorViolation code
events_used ≥ events_limitPOST /v1/events returns 402events_limit_reached
queries_used ≥ queries_limitWidget/dashboard/query endpoints return 402queries_limit_reached
published_dashboards ≥ max_publishedPOST /v1/dashboards/{id}/publish returns 402published_dashboards_limit
editors ≥ max_editorsPOST /v1/members/invite or PATCH /v1/members/{id} returns 402editor_seats_limit
api_keys ≥ max_api_keysPOST /v1/api-keys returns 402api_keys_limit
Plan doesn't include audit logGET /v1/audit returns 402audit_unavailable

Every 402 response body carries a machine-readable violation:

{
  "code": "published_dashboards_limit",
  "message": "Starter plan allows 3 published dashboards",
  "plan": "starter",
  "upgrade_to": "growth",
  "limit": 3,
  "used": 3
}

upgrade_to is the next paid tier that removes the violation — useful for rendering an inline upgrade prompt in your app. The admin UI surfaces these violations as pricing-gated tooltips on the relevant buttons.

Overages, grace, and billing status

Emban does not auto-bill overages today. When you hit a limit, the corresponding endpoint returns 402 until usage resets at the start of the next month, or until you upgrade. There is no auto-upgrade and no surprise invoice — the bill equals your plan price, nothing more.

Billing status is an independent dimension:

StatusEffect
active / paidAll endpoints work subject to plan limits.
trialingAll endpoints work subject to plan limits until trial_ends_at.
past_dueWrite endpoints blocked; reads continue for up to 14 days.
canceledAccount downgraded to Free limits; data remains but feature flags reset.

Enterprise

Enterprise is not a fixed SKU. We work backwards from requirements — event volume, audit retention, compliance commitments, self-host, SLAs, dedicated infrastructure — and issue a signed license that overrides the standard plan limits. A license can raise any field on PlanSpec: events_limit, queries_limit, max_published_dashboards, max_editors, max_api_keys, and feature flags like audit_log_access and embed_permissions.

Pricing starts conversation-driven and depends on the license profile. Email hello@emban.sidelabs.dev to scope an engagement.

Picking a plan

Free Prototyping and pilots One dashboard, Emban branding, ~250k events/mo. Enough to wire up a proof of concept, show numbers to a stakeholder, and validate the event schema. Not meant for customer-facing embeds.
Starter Small B2B SaaS Remove branding, theme the embed, three customer-facing dashboards. Fits early-stage teams with one or two recurring dashboards per customer and steady low-volume ingestion (a few hundred events/minute).
Growth Primary production tier Unlimited dashboards, audit log, embed permissions (locked filters, hidden widgets). The smallest plan that lets a multi-tenant SaaS ship a production embedded-analytics story with compliance-ready auditing.
Scale High-volume, multi-team 100M events/mo and unlimited seats. For products where every customer action generates an event (LLM usage, document pipelines, high-RPS APIs) and several internal teams edit dashboards concurrently.
Related: Permissions documents which plans unlock locked filters and hidden widgets on customer-facing embeds, Alerts and Scheduled Reports explain how those features count against the queries meter, and API Reference lists every endpoint that can return a 402.