The Network
The OpenPartner Network is a federation hub. It sits between creators and brands and makes the marketplace work without forcing either side to give up their data.
What the Network is
A separate service (deployed at network.openpartner.dev) that holds:
- Creator identities — one row per creator, one email, one profile, one set of public stats
- Vendor registrations — each connected brand registers with their
instanceUrlso the Network can call back into them - Offering rows — what each vendor publishes for creators to discover
- PartnershipRequest rows — applications creators submit to vendors
- Partnership rows — approved partnerships, holding a reference to the vendor’s
internal
Partnerrow
What the Network doesn’t hold:
- Click data (lives on each vendor instance)
- Commission data (lives on each vendor instance)
- Payout data (lives on each vendor instance)
The Network is identity + matchmaking. Money + attribution stays on the vendor.
Why split it like this?
Brand data sovereignty. A brand running OpenPartner — hosted or self-host — owns their attribution and commission records end-to-end. The Network never sees specific click logs or payout amounts. If a brand wants out of the Network, their attribution data is theirs to keep.
This is also why self-host migration works: the Network is optional. A self-hosted brand can run OpenPartner with no Network connection, just direct-invited partners, and never share anything with us.
The federation flow
When a creator applies to a brand’s offering and the brand approves:
Creator Network Brand instance │ │ │ ├─ apply ──────────────►│ │ │ │ │ │ │ pending Request created │ │ │ brand admin notified │ │ │ │ │ │ admin clicks approve │ │ │◄─────────────────────────────┤ │ │ │ │ ├─ create Partner ────────────►│ │ ├─ create Link ───────────────►│ │ │ │ │ │◄────────── Partner+Link ─────┤ │ │ │ │ │ Partnership row written │ │ │ share URL computed │ │ │ │ │◄──── share URL email ─┤ │Network calls into the brand using a vendor scoped key the brand minted at signup. That
key has only the scopes federation needs (partners:write, links:write, clicks:write,
commissions:read). It can’t access anything else on the brand’s instance.
The other direction — brand calls into Network — uses a vendor token the Network issued at signup. Same principle: scoped to vendor-level operations only.
Identity dedup
Every Creator on the Network is keyed by email. When a brand pushes a new partner via auto-enroll, the Network looks up by email:
- Found — the partner is linked to the existing Creator. They show up in the brand’s UI with a “this creator is already on the Network from another vendor” hint, useful for vetting.
- Not found — a new Creator is created.
So one human = one Network Creator, even if they partner with 50 different brands. Their profile + stats aggregate across every brand. Brands searching the directory see the same creator from any angle.
What’s metered
The Network is the only piece OpenPartner charges for usage on:
- Hosted tier: bundled with your subscription (no extra)
- Self-host tier: $29/month base + 3% of GMV from Network-sourced partners
A self-hoster with no Network connection pays $0 — the Network adds no value if you don’t use it.
A self-hoster with the Network connected pays the base + 3% only on the GMV that came from Network-sourced creators. Direct-invited partners are free regardless of tier.
Click recording on creator domains
When a creator uses a custom share domain
(share.creator.com/r/brand), the click hits the Network’s share router (via Caddy with
on-demand TLS). The Network:
- Records a
NetworkClickrow on its own DB (creator-side analytics) - Federates the click to the brand instance via
POST /clicksfor brand-side attribution - Redirects the user to the brand’s destination URL with
?cref=<clickId>
Same clickId both places. Attribution works identically whether the click went via
app.openpartner.dev/r/... (brand router) or share.creator.com/r/... (Network router).
The cref cookie set on the brand’s site is what stitches it together.
Cross-brand creator stats
Because the Network sees every Partnership a creator has, we can compute aggregate stats across all of them — 90-day clicks, conversions, revenue, commissions earned. This is unique to OpenPartner; competitors that aren’t in the attribution loop only have follower counts.
These stats are nightly-aggregated (federation pull from each vendor’s
/partners/:id/dashboard endpoint, summed, cached on the Creator row). Brands searching
the directory filter on these — find creators who actually convert, not just creators who
have followers.
Where the Network lives
Hosted: network.openpartner.dev. Open-source repo:
github.com/getcoherence/openpartner-network.
A self-host vendor can technically point at any Network deployment. In practice almost everyone uses the hosted Network — running your own Network is only useful if you’re building a private vendor consortium.