NewAgreement versioning and consent exports in one workflow
Developer-first consent infrastructure

A single API to manage all your agreements and clickwraps

Clickwrap gives your app a reliable agreement layer: versioned legal documents, immutable consent records, and a dashboard your legal and engineering teams can both use without translation.
REST API and dashboard includedAgreement version history built inNo SDK required to launch

Consent activity

Live events from your agreements and onboarding flows.

API online

Today

1,284

Acceptance rate

98.7%

Failed lookups

0.03%

Accepted Terms v3.2

jamie@acme.io

2m ago

Accepted Privacy v2.1

workspace_1148

6m ago

Accepted DPA v1.7

billing-admin

14m ago
await fetch("/api/track", {
  method: "POST",
  headers: {
    "X-API-Key": process.env.CLICKWRAP_API_KEY!,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    agreement_id: "agr_terms_v3",
    user_identifier: user.email,
    metadata: { source: "signup" }
  })
})

<50ms

API latency

7 years

Consent records retained

99.9%

Monthly delivery target

15 min

Setup time

Built for real consent flows

More like a product surface, less like a form helper bolted onto your app.

Keep every acceptance event tied to the exact agreement version, user identifier, IP address, and timestamp your team needs when an audit or data request lands.

Terms v3.2

Immutable content snapshot

Live

Privacy v2.1

Immutable content snapshot

Scheduled

DPA v1.7

Immutable content snapshot

Archived

Version every agreement

Ship legal updates without losing traceability. Each consent stays tied to the exact agreement copy a user accepted.

Signup

412 events

Checkout

188 events

Workspace invite

54 events

Mobile app

23 events

Track consent everywhere

Collect records from signup forms, billing changes, admin invites, or any custom workflow through one predictable API.

Consent IDcns_01JV5X6A4R
Agreementagr_terms_v3
Accepted at2026-03-07T14:22:18Z
IP address203.0.113.42

Keep audit history readable

Every response includes the fields compliance teams actually ask for: timestamp, IP, user agent, source metadata, and agreement version.

Quick start
const response = await fetch("/api/track", {
  method: "POST",
  headers: {
    "X-API-Key": "ck_live_xxx",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    agreement_id: "agr_privacy_v2",
    user_identifier: "user@example.com",
    metadata: {
      source: "checkout",
      workspace_id: "ws_123"
    }
  })
})

const consent = await response.json()
Implementation

Integrate once, then reuse it anywhere consent matters.

Build a single agreement service for signup, billing, workspace invites, and product permissions. The API stays simple enough to call from your backend or your Next.js app directly.
1

Create an agreement and publish a version from the dashboard.

2

Send the agreement ID and your user identifier to the tracking endpoint.

3

Store the returned consent record ID alongside the user or workspace event.

Ready to launch

Start tracking consent before your next legal update ships.

Create your agreement, generate an API key, and record acceptance events from signup, checkout, workspace invites, or any flow where consent needs a durable record.