Skip to content

What is Junction?

More control than a tag manager. Less overhead than a CDP.

Junction is a TypeScript event collection layer for scaling technical teams. Config-as-code, consent-first, isomorphic, destination-agnostic.

Config as code

Tracking configuration lives in TypeScript, reviewed in PRs, deployed through CI/CD. No opaque UIs or workspace mysteries.

Typed events

Zod schema contracts enforce event shapes at runtime, catching data quality issues at the source — not weeks later when a funnel breaks.

Consent-first

A first-class consent state machine queues events until consent resolves, with per-destination gating and DNT/GPC respected by default.

Runs anywhere

The same collector runs in browsers, Node.js, Deno, Cloudflare Workers, and Bun. One implementation, every runtime.

Technical growth-stage startups and scaling companies that are:

  • Engineering-led or product-led
  • Beyond “just install GA4” but not ready for full CDP complexity
  • Running multiple analytics and marketing destinations
  • Interested in code-first, AI-friendly development workflows

All events use a typed entity:action model:

import { createClient } from "@junctionjs/client";
const jct = createClient({
destinations: [ga4, amplitude, meta],
consent: { default: "pending" },
});
// Entity:action — not flat strings
jct.track("product", "viewed", {
product_id: "SKU-123",
name: "Junction T-Shirt",
price: 29.99,
currency: "USD",
});

Destinations transform and deliver events independently. Consent gates control which destinations receive data. Schema contracts validate every event before it leaves the client.