Jitsu

Open-source, Segment-compatible event pipeline that streams or batches tracking data into your warehouse, billed only on delivered events.

Best for: Developer-led teams that want Segment-spec event tracking into their own warehouse without per-user billing

Jitsu is an MIT-licensed event pipeline with 5,100+ GitHub stars that takes Segment-spec track, identify, page and group calls and streams or batches them into your warehouse, and it bills only for events delivered to a destination, so captured events cost nothing.

In this Jitsu review, I’ll take a closer look at Jitsu’s pricing, features, and self-hosting story, so you can see exactly whether it can replace Segment or RudderStack in your stack.

Editor’s note: This Jitsu review is based on my hands-on test of the @jitsu/js 1.11.0 SDK against a local ingest endpoint in October 2026, plus Jitsu Cloud’s documented setup and the 2.14 release. I weigh pricing, tracking SDKs and Segment compatibility, warehouse delivery and Functions, self-hosting, and project health.

Quick verdict: I recommend Jitsu for developer-led teams who want Segment-spec tracking into ClickHouse, BigQuery, Snowflake or Postgres for $99 a month at 2M events. Go in knowing it has about two dozen destinations, a full self-host needs Kubernetes, and identity stitching is Enterprise-only on Cloud.

Key Takeaways:

  • The Free plan covers 200k active events a month, and captured events are unlimited on every plan
  • Business costs $99/month for 2M active events, then $40 per extra 1M
  • The SDK speaks Segment: in my test, identify, track, page and group payloads used the same field names as Segment’s spec
  • The Node SDK drops events on failure: an HTTP 500 or unreachable endpoint got one attempt and no retry
  • Full self-hosting needs Kubernetes since 2.14, and the Docker Compose setup is deprecated
Jitsu homepage, October 2026
Jitsu’s homepage, which pitches it as an open-source, Segment-compatible pipeline that streams events into your warehouse. Source: Jitsu.

Pros and Cons

Pros

  • Captured events are free; only events delivered to a destination are billed
  • Business plan: $99/month for 2M active events, $40 per extra 1M
  • MIT license, 5,100+ GitHub stars, no hosting restriction on the server
  • Segment-spec SDK and batch endpoint, so Segment clients port over
  • JavaScript Functions with fetch, a key-value store and warehouse queries
  • ClickHouse warehouse provisioned on every Cloud plan, Free included

Cons

  • About two dozen destinations, against Segment’s 700+ integrations
  • Full self-host needs Kubernetes since 2.14; Docker Compose is deprecated
  • Identity stitching and Profile Builder are Enterprise-only on Cloud
  • Node SDK dropped events on an HTTP 500 with no retry in my test
  • Custom domains are paid-only, so Free tracks from a jitsu.com subdomain

How Much Does Jitsu Cost?

Jitsu pricing page, October 2026
Jitsu’s pricing page, where Free covers 200k active events a month and Business costs $99 for 2M, then $40 per extra million. Source: Jitsu.

Jitsu never bills a captured event: every plan accepts unlimited incoming events and charges only for active events, meaning events successfully delivered to at least one destination. An event sent to three destinations counts once. An event a Function drops isn’t billed, unless that Function made a fetch call before dropping it, and a Function that multiplies one event into five bills all five.

  • Free ($0): for side projects and first pipelines, with 200k active events a month, a provisioned ClickHouse warehouse, manual connector runs plus 1 daily active sync, and up to 7 days of event backups
  • Business ($99/month): for production sites past 200k delivered events, with 2M active events, $40 per extra 1M, hourly syncs, 5 monthly active syncs included ($20 each after), up to 90 days of backups and custom domains
  • Enterprise (custom): for teams that need identity stitching, Profile Builder, a dedicated ingest shard, OIDC SSO, an uptime SLA and invoice billing, with 1-minute syncs and unlimited active syncs
PlanPriceActive eventsOverageConnector syncsEvent backups
Free$0200k/monthUpgrade requiredManual + 1 daily active syncUp to 7 days
Business$99/month2M/month$40 per extra 1MUp to hourly; 5 monthly active syncs, then $20 eachUp to 90 days
EnterpriseCustomCustomCustomUp to 1-minute; unlimitedCustom retention

Jitsu’s plan comparison lists identity stitching and custom domains on every tier, Free included, but Jitsu’s feature terms limit identity stitching and Profile Builder to Enterprise on Cloud and custom domains to Business and Enterprise. I’d plan around the stricter terms and confirm with sales before relying on stitching below Enterprise.

Is Jitsu Good Value for Money?

  • Mid-volume event streams: 5M active events cost $99 + 3 x $40 = $219 a month, and 10M cost $99 + 8 x $40 = $419
  • High user counts: Segment’s Team plan is $120 for 10,000 monthly tracked users, then $12 per 1,000 to 25,000 and $11 per 1,000 to 100,000, so 50,000 users cost $575 a month on Segment regardless of event volume
  • Against RudderStack: RudderStack’s Growth plan starts at $265 a month for 1M events, while 1M delivered events fit inside Jitsu’s $99 Business plan
  • Where Jitsu loses: a product with 10,000 users firing 1,000 events each sends 10M events, which is $419 on Jitsu and $120 on Segment’s Team plan, so event-heavy apps with few users are cheaper on per-user billing
  • Self-hosting: the MIT license costs nothing, but a full deployment runs Kubernetes, Kafka or Redpanda, ClickHouse, MongoDB and Postgres, and you pay for all of it

Reviewer’s Notes: I’d start on Free, point one site at the provisioned ClickHouse, and move to Business only once delivered events pass 200k a month. Before upgrading, I’d write a Function that drops internal and test traffic, since dropped events never become billable, as long as the Function doesn’t call fetch first.

My Experience With Jitsu

Jitsu’s Node SDK dropped my events without a retry when my mock ingest server returned an HTTP 500, and that one behavior shapes how I’d deploy it. Payload field names, identify traits and privacy flags all behaved the way a Segment user would expect.

Setting Up a Site, Destination and Connection

Jitsu quick start guide, October 2026
Jitsu’s quickstart walks through Site, Destination and Connection setup. Official documentation screenshot. Source: Jitsu.

Jitsu Cloud’s setup runs in four steps:

  1. Create a workspace at use.jitsu.com, free up to 200k active events
  2. Add a Site under Sites > Add Site, which issues the write keys and a tracking endpoint at <site-id>.d.jitsu.com on Free
  3. Add a Destination, either a warehouse or a tool like Mixpanel
  4. Create a Connection between the Site and the Destination, pick batch or stream mode, attach any Functions, then embed the snippet

Jitsu Classic users get renamed objects: an API Key is now a Site, a Source is now a Service Connector, and the old Destination is split into Destination, Connection, Function and Sync. Live Events shows incoming events and destination writes.

Sending My First Events With @jitsu/js

I installed @jitsu/js 1.11.0 from npm (MIT license, 0 vulnerabilities reported at install) on Node v26.11.1. In Node, the SDK needs a fetch implementation passed in its options, which the browser build doesn’t.

With s2s: true, my identify, track, page and group calls went to /api/s/s2s/identify, /api/s/s2s/track and so on, with the write key in an x-write-key header in key:secret form. Each JSON body used Segment’s field names: type, event, properties, userId, anonymousId, timestamp, sentAt, messageId and a context object with library, traits, page, clientIds and campaign. The SDK generated the anonymousId as a UUID on its own.

After I called identify("user-42", ...), every later track and page call carried userId “user-42” and the identify traits in context.traits without me passing them again. All 4 events took about 50 ms against localhost.

The echoEvents: true option skipped the network and printed each full event to the console, so I could check payloads without a server.

A write key without a colon threw “Legacy write key detected” and crashed the Node process, because the error fires during plugin initialization rather than on the awaited call. Jitsu Classic keys won’t work with this SDK, so they have to be reissued in key:secret form.

Testing Privacy Controls and Failure Handling

  • disableUserIds: the track payload carried no userId, no anonymousId and no context.clientIds
  • dontSend: 0 requests left the process
  • ipPolicy “remove”: the SDK only added an x-ip-policy header, so IP stripping happens on Jitsu’s server, not in the client
  • Unreachable endpoint: with the default errorPolicy “log”, the call resolved immediately, logged “fetch failed”, and the event was gone, with no queue
  • HTTP 500: my server saw exactly 1 request over the next 3 seconds, so no retry
  • errorPolicy “rethrow”: the error surfaced as an uncaught exception that crashed my script instead of a rejection I could catch around await track()
  • 1,000 concurrent track() calls: 1,000 separate POSTs in 564 ms, since the Node SDK doesn’t batch on the client

Reviewer’s Notes: For server-side tracking, I wouldn’t call the Node SDK bare. I’d wrap it in my own queue with retries, or post batches straight to the HTTP API, which implements Segment’s batch endpoint, because a 30-second ingest outage otherwise means 30 seconds of lost events.

Tracking SDKs and Segment Compatibility

Jitsu 2.0 replaced Classic’s custom event format with the Segment spec, so analytics.js-style calls port with little more than a host and write key change.

📦 SDKs and Endpoints

  • HTML snippet for sites without a build step
  • @jitsu/js, an isomorphic npm package for browser and Node
  • @jitsu/jitsu-react for React and Next.js
  • HTTP API: POST /api/s/{type} for page, track, identify or group, authenticated by an X-Write-Key header, Basic auth or a query parameter meant for testing only
  • Pixel API: a GIF endpoint at /api/px/{type} since v2.8.2, for email opens and ad impressions where only an image request works
  • Mobile and server: React Native, iOS, Android and server-to-server

🔁 Migrating From Segment

Jitsu Segment proxy documentation, October 2026
The Segment proxy page, which shows how to mirror Segment events into Jitsu and run both pipelines side by side. Official documentation screenshot. Source: Jitsu.

The JS API is built on Analytics.js, and the HTTP API implements Segment’s batch endpoint, so most Segment client libraries work after a host change. Segment’s Webhooks (Actions) destination can also forward events to Jitsu’s server-to-server endpoint, which lets both pipelines run side by side on the same traffic. RudderStack offers a similar Segment-compatible API, while Snowplow uses its own schema-first tracking SDKs, so moving Segment calls to Snowplow means writing a schema for every event first. Version 2.14 added Segment-style sentAt clock-skew correction.

  • Anonymous ID: stored in a __eventn_id cookie by default, renamable through cookieNames
  • Ad cookies: the library captures _fbc, _fbp and _ga, which I saw as fbc and fbp slots in context.clientIds
  • Safari ITP: an idEndpoint option sets the ID as a server-side httpOnly cookie
  • Consent: consentCategories pass through in context.categoryPreferences, but wiring a consent platform such as OneTrust is a manual callback
  • IP policy: keep, stripLastOctet or remove

Free workspaces track from a jitsu.com subdomain, and Jitsu warns that ad blockers can drop up to about 30% of data without a custom domain, while Safari’s tracking prevention hits d.jitsu.com cookies. For any production site, I’d budget for Business to get a custom domain.

Warehouse Delivery, Destinations and Functions

Jitsu lists about two dozen destinations against Segment’s 700+ integrations, but its 10 warehouse and storage targets cover the warehouses most data teams run.

Destination typeExamplesNotes
WarehousesBigQuery, ClickHouse, Snowflake, Redshift, PostgreSQL, MySQL, MongoDB, MotherDuck/DuckDBStream or batch; dedup on by default
Block storageS3, Google Cloud StorageBatch files
Cloud toolsAmplitude, Mixpanel, PostHog, HubSpot, Salesforce, Google Ads, Resend, SendGrid, Statsig, XeroServer-side delivery; Functions apply
Device toolsGA4 tag, Hotjar, Microsoft Clarity, generic TagLoaded in the browser; no Functions
GenericWebhookAny HTTP endpoint

🏛️ Warehouse Destinations

Jitsu destinations catalog, October 2026
The destinations catalog, which lists the warehouse, cloud and device destinations Jitsu supports. Official documentation screenshot. Source: Jitsu.

Every warehouse connection runs in stream or batch mode, and Jitsu recommends batch for most warehouses. ClickHouse stream mode carries a “Do not use in production” flag.

Deduplication is on by default. On ClickHouse it uses a ReplacingMergeTree table keyed on message_id, so queries need the FINAL modifier to rule out duplicates before background merges finish. Identity stitching builds on the same mechanism, rewriting older rows in place once an anonymous visitor is identified.

Schema handling is automatic: nested JSON is flattened, camelCase becomes snake_case, and new fields add columns through ALTER TABLE. Schema Freeze routes unknown fields to an _unmapped_data JSON column instead, and a 1,500-column cap is still under development. Column types come from the first value seen, so a property that starts as an integer and later arrives as a decimal fails unless a Function sets the __sql_type_ override.

📤 Cloud and Device Destinations

The cloud list covers product analytics and CRM basics, and GA4 is available both as a server-side destination and as a browser tag, but the catalog has no Facebook Conversions API or Databricks destination. For anything missing, I’d use the Webhook destination or a Function with fetch. A GitHub issue opened October 4, 2026 flagged the Google Ads destination still calling API v22, three days before Google sunset that version, so destination updates can lag.

⚙️ Functions

Jitsu Functions documentation, October 2026
The Functions page, which documents the JavaScript functions that filter, transform or enrich events before delivery. Official documentation screenshot. Source: Jitsu.

Functions are async JavaScript default exports that receive the event and a context object:

  • Return nothing to keep the event, an object to replace it, “drop” to discard it, or an array to multiply it
  • ctx.store: a key-value store with a 31-day default TTL, isolated per workspace
  • ctx.fetch, ctx.getWarehouse, ctx.geo and ctx.ua: outbound calls, warehouse queries, geolocation and user-agent parsing

Functions don’t run on device destinations or on connector data. The jitsu-cli scaffolds a TypeScript Functions project with tests, so transformations can live in your own repo with CI. Jitsu doesn’t compute sessions by default; its session recipe is a Function that stamps session IDs with ctx.store.getOrSet and a 1-hour TTL.

🔌 Connectors

Connectors pull data from SaaS sources into the same destinations. Most are wrappers around Airbyte connectors, plus some native ones Jitsu maintains, and sync frequency follows your plan, from 1 daily active sync on Free to 1-minute syncs on Enterprise.

Self-Hosting Jitsu: MIT License, Kubernetes Required

Jitsu self-hosting documentation, October 2026
The self-hosting overview, which lists the services and dependencies a production Jitsu deployment runs on Kubernetes. Official documentation screenshot. Source: Jitsu.

Since version 2.14, a feature-complete Jitsu self-host requires Kubernetes: Functions and profile builders run on operator-managed function servers, and connector syncs run as Kubernetes CronJobs. The Docker Compose setup is deprecated, can’t run Functions, profile builders or syncs, and will be removed. Jitsu’s recommended local path is its development Helm chart on Minikube with at least 8 GB of VM memory.

A production deployment runs seven services, one of them optional, on four required dependencies:

  • Console (Next.js), Ingest (Go), Rotor (Node.js), Bulker (Go)
  • Function Servers and the Operator, a Kubernetes controller that must be deployed before Rotor or event delivery breaks
  • Syncctl (optional) for connector syncs
  • Dependencies: PostgreSQL, Kafka or Redpanda, ClickHouse, MongoDB, and optionally Redis

Self-hosting loses event backups, custom domains and the provisioned ClickHouse, but identity stitching and Profile Builder are unrestricted, as long as MongoDB is running.

Version 2.14.0, released July 9, 2026, was the first stable release in nearly a year and carried roughly 1,600 commits. It removed Google Cloud Scheduler support, turned on API rate limiting by default, and added an MCP server in the Console, an OpenAPI spec, SOC 2-oriented activity logs and dead-letter queue reprocessing. Beta builds keep shipping, with 2.15.0-beta.77 tagged on October 12, 2026.

Two contributors account for most commits, roughly 2,890 and 765, so the project leans on a very small core team. Self-hosters have open GitHub issues on a Bulker ingestion stall after a Kafka consumer restart, timestamps changing timezone after an upgrade from 2.7 to 2.11, and GitHub OAuth login breaking on 2.14.

Jitsu’s MIT license is the strongest argument for self-hosting. RudderStack’s server ships under the Elastic License 2.0, which bars offering it as a managed service to third parties, and Snowplow’s core moved to the Snowplow Limited Use License in January 2024, which limits use to non-production or non-commercial purposes without a commercial license. MIT carries neither restriction.

How Does Jitsu Compare to Competitors?

Jitsu is the only tool in this group that bills purely on delivered events under an MIT license, and each rival below still beats it somewhere.

ToolPricing unitFree tierEntry paid planLicenseBest for
JitsuDelivered (active) events200k events/month$99/month for 2M eventsMITWarehouse-first developer teams
SegmentMonthly tracked users1,000 MTUs$120/month for 10,000 MTUsProprietaryMarketing stacks needing 700+ integrations
RudderStackEvents250K events/month$265/month for 1M eventsElastic License 2.0 (server)Regulated teams needing HIPAA
SnowplowQuote-basedNot publishedNot publishedSnowplow Limited Use LicenseStrict schema governance
PostHogEvents and exported rows1M analytics events; 10,000 trigger events + 1M exported rowsUsage-basedOpen coreAnalytics and pipelines in one tool
  • Segment: wins on breadth, with 700+ integrations, HIPAA eligibility and its standing as the category default for marketing teams, but its per-user billing counts anonymous visitors and 50,000 users cost $575 a month on Team. Jitsu wins when users are many and events per user are modest.
  • RudderStack: wins for regulated teams, since its Enterprise plan adds HIPAA, 5-minute warehouse syncs and Profiles, and Jitsu offers no HIPAA. Its Free plan is slightly larger at 250K events, though warehouse syncs run every 3 hours on Free and every 30 minutes on Growth. Jitsu wins on price at 1M events ($99 against $265) and on license if you plan to host the pipeline for others.
  • Snowplow: wins when every event must validate against a schema before it lands, and when data quality matters more than setup speed. Snowplow publishes no price, so budgeting starts with a sales call. Teams that want its design under Apache 2.0 can look at the OpenSnowcat fork. Jitsu wins for anyone who needs a production self-host without a commercial license.
  • PostHog: wins if you want session replay, feature flags and experiments next to the pipeline, and its analytics free tier covers 1M events, while Jitsu has no funnels, session replay or experiments planned. Its pipelines allowance is only 10,000 trigger events plus 1M exported rows, so Jitsu wins as a pure pipe into your own warehouse.
  • mParticle and Hightouch: mParticle fits enterprises that want a full managed CDP, and Hightouch fits teams whose data already sits in the warehouse and needs to flow out to business tools. Jitsu handles the opposite direction, collecting events into the warehouse, and pairs with Hightouch rather than replacing it.

How I Reviewed Jitsu

I installed @jitsu/js 1.11.0 in Node and pointed it at a local ingest endpoint that logged every request. I ran identify, track, page and group calls, the disableUserIds, dontSend and ipPolicy privacy flags, the echoEvents debug mode, an unreachable endpoint, an HTTP 500, a legacy-format write key and a burst of 1,000 track calls. I didn’t run Jitsu Cloud or the self-hosted stack, so the setup and self-hosting sections describe the documented product.

I compared costs at 1M, 5M and 10M delivered events against Segment’s and RudderStack’s published rates, doing the math myself. For self-hosting, I mapped the services and dependencies a 2.14 deployment needs. I also weighed the 2.14 release, the Classic-to-2.0 migration path and the open GitHub issues self-hosters have filed.

I weighed five areas: pricing, tracking SDKs and Segment compatibility, warehouse delivery and Functions, self-hosting, and project health.

Prices current as of October 2026.

Should You Use Jitsu for Event Tracking?

Jitsu is the cheapest hosted Segment-spec pipeline in this comparison, and the one I’d pick for warehouse-first event tracking. Use it if you’re a developer-led team that wants Segment-spec events in ClickHouse, BigQuery, Snowflake or Postgres without Segment’s per-user bill. My test confirmed the SDK speaks Segment’s spec, and the pricing holds up: 5M delivered events cost $219 a month, and the Free plan includes a ClickHouse warehouse. Functions with a key-value store and warehouse queries give it more transformation power than its price suggests.

The Node SDK drops events on a failed request, so server-side tracking needs your own retry layer, and a full self-host means running Kubernetes, Kafka, ClickHouse, MongoDB and Postgres.

Skip Jitsu if your marketing team needs 100+ tool destinations (Segment fits better), if you need HIPAA (RudderStack Enterprise), or if strict schema enforcement matters more than cost (Snowplow). Teams without anyone to own a Kubernetes cluster should stay on Jitsu Cloud rather than self-host.

My next step would be to open a Free workspace, mirror production traffic into it through Segment’s Webhooks (Actions) destination, and compare the warehouse tables from both pipelines for a week before switching.

FAQs

Is Jitsu free?

Yes. Jitsu Cloud’s Free plan includes 200k active events a month, unlimited captured events and a provisioned ClickHouse warehouse, with no credit card required. Only events delivered to a destination count. Self-hosting is free under the MIT license, though you pay for the Kubernetes, Kafka, ClickHouse, MongoDB and Postgres infrastructure it runs on.

Is Jitsu open source?

Yes. Jitsu is MIT-licensed, with 5,100+ stars on GitHub and commits as recent as October 2026. The MIT license has no restriction on hosting it for others, unlike RudderStack’s Elastic License 2.0. A feature-complete self-host needs Kubernetes since version 2.14, because Docker Compose can’t run Functions or connector syncs.

Is Jitsu a good Segment alternative?

For warehouse-first teams, yes. Its JS SDK is built on Analytics.js, its HTTP API implements Segment’s batch endpoint, and my test showed Segment’s field names in every payload. The trade-off is about two dozen destinations against Segment’s 700+, so marketing-heavy stacks may miss integrations.

What happened to Jitsu Classic?

Jitsu Classic was shut down on March 1, 2025, after Jitsu 2.0 shipped in August 2024. Version 2.0 switched to the Segment event spec and renamed core objects, so API Keys became Sites. Classic write keys don’t work with the current SDK, which requires new keys in key:secret format.

Does Jitsu support identity resolution?

Yes, through Identity Stitching, but only on the Enterprise plan on Jitsu Cloud, even though Jitsu’s plan comparison shows it on every tier. Self-hosted Jitsu doesn’t restrict it, as long as MongoDB is running. Profile Builder, which builds customer profiles in the warehouse, follows the same gating.

Spotted a wrong price or a missing integration? Send a correction. A human reads every one.

Similar tools

Other tools in the same category, with the same card and the same honest pricing.

ActionIQ

CDP

Enterprise CDP, now Uniphore's CDP Agent, that runs audience queries inside your Databricks or Redshift warehouse; quote-only pricing.

Visit site

Amperity

CDP

Enterprise CDP built on Stitch identity resolution, with zero-copy Bridge, predictive models, an MCP server and the Pér AI agent.

Visit site

Treasure Data

CDP

Enterprise CDP with ID Unification, Complete and Composable modes on Snowflake, Databricks and BigQuery; now sold as Treasure AI.

Visit site

Tealium

CDP

Enterprise tag management and real-time CDP: iQ, EventStream server-side routing, AudienceStream profiles and Context API for AI agents.

Visit site

Snowplow

Event tracking

Behavioral event pipeline that validates every event against a JSON schema and loads it into your own warehouse, hosted by Snowplow or in your cloud.

Visit site
Custom pricing

mParticle

CDP

Customer data platform for collecting events, managing identities, and activating real-time, warehouse, and predictive audiences.

Visit site
Free tier; Growth from $265/mo

RudderStack

CDP

Customer event pipelines, warehouse-based profiles, and reverse ETL for data teams that want control over collection and activation.

Visit site
Free; paid from $120/mo

Twilio Segment

CDP

Customer data platform for collecting events, unifying customer profiles, and activating audiences across analytics and marketing tools.

Visit site