Consent infrastructure for the modern web

The CMP your developers
want to ship.

One first-party runtime for consent, tag decisions, and evidence. Ship raw HTML, native Web Components, React primitives, or a completely custom interface.

First 1M covered users free No credit card All UI modes
acme.com / production Live
app.html +7
import { definePactElements } from '@pact/web'definePactElements()<pact-gate purpose="analytics">  <analytics-panel /></pact-gate>
acme.com
ACME
Production checkIntegration verified
0.00 CLS

Built for the stack you already run

HTML + JSReactNext.jsVueNuxtAngularSvelteAstroSolidQwik

Fast by default.
Fully yours by design.

Pact separates the compliance engine from the interface. Start with a production-ready experience, then take control without replacing the consent system underneath it.

01

Managed

Use a restrained, accessible Pact experience with brand tokens and regional behavior already wired.

Privacy choices
RejectAccept
02

Web Components

Native purpose gates and privacy controls for HTML, Astro, Svelte, Vue, Angular, Solid, Qwik, and future frameworks.

<pact-gate purpose="analytics"> Framework-neutral content is allowed</pact-gate>
03

Composable React

Provider, hooks, gates, and preference controls that feel native inside React applications and meta-frameworks.

<PactGate purpose="analytics"> Your component is allowed</PactGate>
04

Headless client

Bring your own markup, motion, CSS, and component system. Pact keeps decisions and evidence correct.

YOUR DESIGN SYSTEM
pactClient.save()

From install to verified before the meeting ends.

Every integration path shares one typed decision model. No DOM scraping, callback maze, or vendor-specific consent state to reverse engineer.

  • Raw JavaScript and native custom elements
  • Typed React hooks and purpose gates
  • First-party runtime and live verification
import { definePactElements } from '@pact/web'

definePactElements()

<pact-gate purpose="analytics">
  <analytics-panel />
</pact-gate>
<pact-preferences-button>Privacy choices</pact-preferences-button>
pact.readyzero framework dependencies

Consent should not become the slowest thing on your page.

396bytes inlineHard CI limit: 400
2.5KB BrotliAsync consent core
0.00consent CLSBrowser tested
0quiet-path requestsWhen no banner is required

One price to honor a person’s choices everywhere.

Domains are deployment details, not a billing strategy. Pact charges for the people whose choices it protects—never their pageviews, preference changes, or the number of sites your team operates.

01Pilot
$0for the pilot

First 1M covered users total

Prove Pact against real production traffic before procurement begins.

  • 90 days from first production traffic
  • No card or sales call
  • Every available integration mode
Start free
02Production
$5,000per year

100k covered users / month

A predictable production plan for a growing digital product.

  • All approved web properties
  • Custom UI, SSO, and evidence
  • Repeat pageviews are free
Start with the pilot
04Enterprise
From$30kper year

More than 1M / month

A volume agreement for complex migrations and sustained enterprise traffic.

  • Contracted volume schedule
  • Migration scope agreed in writing
  • Commercial and support terms
Run a technical pilot
01Properties are included

No domain, subdomain, framework, or interface surcharge.

02Activity is deduplicated

A first-party Pact consent identifier counts once in the period.

03Consent stays online

Usage thresholds trigger a conversation, never a disabled privacy control.

Covered user: a first-party Pact consent identifier active in the measured period. Repeat visits, pageviews, and preference changes do not add usage. Every plan begins with the same free technical pilot; paid activation currently follows a commercial review.

Replace the banner.
Upgrade the infrastructure.

Start with real traffic. Keep every interface open.

Start building