Capitis
Sign inStart building →
New · Direct brand rail GASeries B · led by Founders Fund

The operating system for affiliate commerce, attribution, and commission.

Capitis unifies fourteen affiliate networks, deterministically resolves shopper identity across cards, banks, and wallets, and pays publishers directly from brands — so you stop reconciling postbacks and start operating commerce.

Start building free sandboxTalk to sales
$4.18B
Tracked GMV / yr
612M
End-user identifiers
14 + 1
Networks + Direct rail
99.992%
Postback ingestion SLA
38ms
Click→redirect P95
app.capitis.co/dashboard · live
All systems normal
Commission earned · 30 d
$842,116.42
+ $128.4k vs prev · +18.0%
7d
30d
90d
YTD
$0k$50k$100k$150k$200kM01M05M10M14M20M24M30
Clicks
4.82M
+12.4%
Conversions
318k
+6.8%
EPC
$0.214
+0.018
Match rate
82.4%
+1.2pt
Postback received2.1s ago · awin
POST /v1/postback/awin
{
  "click_token": "clk_8h3K2pQv9Lm4n0R",
  "order_id":    "AW-9244-118",
  "merchant":    "everlane",
  "sale_amount": "184.50",
  "currency":    "USD",
  "commission":  "16.61",
  "fraud_score": 0.04,
  "device":      "ios/safari",
  "country":     "US"
}
ValidatedMatched · pub_42Routed · CARD-LINKED
Identity graph · last 24h
+128,402
identifiers added
email 38%phone 24%card 18%bank 12%wallet 8%
Powering commission ops at →
NorthOneLattice/CardRibbon BankMosaic RewardsFOLIOBeam WalletSlate & Co.
The platform

Four primitives. One ledger. Drillable to the raw payload.

Most teams stitch six tools to do this. Capitis ships them as one object graph: every click connects to every conversion connects to every payout, with raw postbacks one tab away.

Layer 01

Inventory aggregation

Unified merchants, offers, deeplinks, and commission terms across 14 networks — normalized, deduped, sync-monitored.

Awin
238k
CJ
512k
Impact
402k
Rakuten
188k
Skimlinks
664k
Sovrn
94k
ShareASale
312k
Pepperjam
78k
Avantlink
41k
Partnerize
146k
FlexOffers
82k
Direct
12k
Layer 02

Identity graph

Hashed end-user identifiers across email, phone, card token, bank link, wallet — with verification, revocation, and match analytics.

INPUTS · 5RESOLVECANONICALEMAILsha256:9f4c…3a1b0.99PHONEe164:ph_2bAc…0.97CARDtok_4242…ALK90.94BANKplaid:acc_8j…0.88WALLETapl_pay:e0…0.82END_USEReu_42aK9p5/5 verified · 612dconf 0.93 · stabledeterministic · hashed in transit · revocable per identifier
Layer 03

Attribution ledger

Click tokens, click events, conversions, raw postbacks, routing decisions, fraud scores — currency-aware, FX-adjusted, audit-ready.

08:14:02clk_8h3K…everlane$184.50$16.61
08:14:18clk_2nFQ…allbirds$ 92.00$ 8.28
08:14:33clk_pZ4L…wayfair$412.99$28.91
08:14:47clk_Hd9X…glossier$ 48.00$ 4.32
08:15:01clk_kT2M…patagonia$220.00$22.00
08:15:14clk_qV6B…parachute$ — $ —
Layer 04

Direct brand rail

Brands ingest checkout transactions, match to publisher attribution, define commission rules, and pay publishers without networks.

PUBLISHERMosaicBRANDEverlaneCAPITISDIRECT RAILmatch · attributecommission · payoutclick_tokencheckout webhook
Operator-grade by default

Every number is drillable. Every event is debuggable. Every payload is auditable.

  • Object detail pages
    Publisher · brand · merchant · offer · end-user · identifier · token · click · conversion · webhook · payout — every entity has a profile.
  • Raw payload viewer
    Inspect the original network postback alongside the parsed conversion. Reprocess, replay, dispute, export JSON.
  • FX-aware commission ledger
    Original currency, reporting currency, FX rate, gross sale, commission, Capitis fee, net payout — all on every row.
  • Permission-controlled query
    No-code report builder for finance, SQL-like editor for engineering, scheduled email/S3/Sheets/BI delivery.
conversions / cnv_92aF7L1k
ApprovedDirect rail
Sale
$184.50
Commission
$16.61
Capitis fee
$0.83
Net payout
$15.78
USD · FX 1.000· merchant everlane· network direct· device ios/safari
Attribution chain
email_hasheu_42clk_8h3Kcnv_92aFpayout_p18
{
  "raw_postback": {
    "tx_id":     "stripe_pi_3OqXz9...",
    "amount":    18450,
    "currency":  "USD",
    "metadata":  { "click_token": "clk_8h3K2pQv9Lm4n0R" }
  },
Built for nine roles

Owners see money. Developers see logs. Finance sees the ledger. Compliance sees the audit trail.

Most loved
Role

Publisher Owner

Command center, end-users, identifiers, links, conversions, reports, payouts, webhooks, API, billing.

Tour the workspace
Role

Developer

API explorer, request logs, webhook replay, signature validator, deeplink tester, SDKs.

Tour the workspace
Role

Brand / Merchant

Cross-publisher customer resolution, attribution, transactions, commission rules, direct payouts.

Tour the workspace
Role

Platform Admin

Network health, dedup queue, postback audit, risk, identity-graph governance.

Tour the workspace
Role

Finance

Commission waterfall, FX exposure, payout aging, accounting-ready statements, dispute ledger.

Tour the workspace
Role

Compliance / Risk

Fraud trends, consent expiry calendar, revocation log, webhook security, API abuse cases.

Tour the workspace
For developers

Three calls and you’re live.

Create an end-user, attach a hashed identifier, issue a tracked link. Conversions flow back through validated postbacks with deterministic attribution to the original click token.

Node SDKPython SDKGo SDK · betaOpenAPI 3.1PostmanWebhook signing
// 1. Create an end-user inside the publisher namespace
const user = await capitis.endUsers.create({
  external_id: "u_4f2a91c",
  metadata: { plan: "pro", tier: "gold" }
});

// 2. Attach a hashed identifier (PII never leaves your stack)
await capitis.identifiers.attach(user.id, {
  type: "email_hash",
  value: sha256("ada@example.com"),
  source: "signup"
});

// 3. Issue a tracked link to a merchant offer
const link = await capitis.links.create({
  end_user: user.id,
  merchant: "everlane",
  campaign: "spring-cashback-2026",
  metadata: { placement: "feed_card" }
});

console.log(link.url);
// → https://go.capitis.co/clk_8h3K2pQv9Lm4n0R

Stop reconciling postbacks. Start operating commerce.

Sandbox is free forever. Production approval typically lands in 48 hours.

Create sandbox keyRead the docs