Skip to content

Brand quickstart

By the end of this you’ll have:

  1. A brand workspace at app.openpartner.dev/t/<your-slug>
  2. A program with commission rules
  3. One invited partner with a working share link
  4. The OpenPartner SDK on your site, and Stripe connected (or revenue reported from your server), so conversions get attributed

Total time: 5–10 minutes.

1. Sign up

Go to app.openpartner.dev and click Sign up as a brand. You’ll need:

  • Your email
  • A name for your brand (visible to partners + creators)
  • A slug — the URL path your workspace lives at, e.g. acme → app.openpartner.dev/t/acme. Lowercase, no spaces.

We email you a magic link to confirm. Click it and you’ll land in your new workspace.

Add a logo (optional, ~30 seconds). Admin → Settings → Brand info → Upload logo. PNG/JPEG/WebP up to 2 MB; square renders best. The logo replaces the default icon in the partner-portal sidebar and shows up next to your brand name across the workspace UI.

2. Create a program

A program is the commission rule applied to clicks → conversions for a given destination. Most brands have one or two programs; some have many (one per product line, country, etc.).

In the sidebar: Admin → Programs → New program. Fill in:

  • Name — internal label
  • Destination URL — where partner share-links land (e.g. your homepage, a specific landing page)
  • Allowed deep-link domains (optional) — comma-separated hosts. Partners can override the destination on their share-link as long as the override matches one of these. Leave blank to lock the destination to what you set above.
  • Rule — Percent or Fixed. For SaaS, 20% recurring is typical. For ecommerce, 15% one-time is common.
  • Attribution window — how many days after a click a customer’s first conversion still counts. Their renewals then stay with that partner. 60 days is the default and what most brands use.
  • Attribution model — last-click is the default. Hover the ? icon for the others (first-click, linear, position).
  • Starts / Ends — leave blank to start immediately and run forever, or schedule a window for promo periods.

Click Create program. It’s now live.

3. Invite a partner

In the sidebar: Admin → Partners → Invite partner. Drop in their name + email. They’ll get a magic-link email to claim their account.

By default, the invite grants access to all current programs. If you want to scope a partner to a specific program (e.g. a VIP partner who gets a unique higher-cut deal), uncheck the box and pick the programs explicitly.

Once they sign in, they’ll see their share link under Links and can start sharing it.

4. Install the SDK and connect revenue

Install via npm in your marketing site / app:

Terminal window
npm install @openpartner/sdk

Initialize once per page load — capture is automatic (it reads ?cref= from the URL, picks up the first-party cookie, and stashes the token in localStorage):

import { OpenPartner } from '@openpartner/sdk';
export const op = OpenPartner.init({
apiUrl: 'https://app.openpartner.dev/api/t/<your-workspace>',
});

No bundler? Paste the script tag from Admin → Integrations into your site’s <head> instead. It does the same, and also hands the referral to Stripe Payment Links, Pricing Tables and Buy Buttons on the page.

When a user signs up or logs in, identify them so the click → user link sticks:

await op.identify(user.id);

Bill with Stripe? Connect it. Admin → Integrations → Connect Stripe installs the OpenPartner Stripe App (beta) on your Stripe account. Your Checkout and Payment Link purchases, invoices, renewals and refunds are then recorded from Stripe, with nothing to report from your server. Integrations then asks how your customers pay and shows the one step left, from nothing at all (a partner link straight to a Payment Link) to the script tag plus one line.

Revenue that isn’t a Stripe payment? Report it from your server (mint an API key under Admin → Integrations):

import { OpenPartnerServer } from '@openpartner/sdk/server';
const opServer = new OpenPartnerServer({ apiUrl, apiKey });
await opServer.trackEvent({
userId: user.id,
type: 'invoice_paid',
value: 49.0, // major units — dollars, not cents
currency: 'USD',
externalEventId: order.id, // your id for this payment: makes retries safe
});

externalEventId stops a retried call from paying a commission twice. With Stripe connected, don’t report Stripe payments this way too, or they count twice.

That’s the full integration. Step-by-step walkthrough with a test checklist: integrate your site. Reference: SDK install and tracking events.

5. Watch attribution land

When the partner’s first click → signup → revenue path completes:

  • Click is recorded against the partner’s link
  • Conversion event is attributed to the partner
  • Commission is computed using your program rule and shows up in Admin → Partners → [partner] → Commissions as accrued, and in Admin → Review queue for you to approve

You approve → it becomes approved → the next payout run adds it to the partner’s payout, which you send by your own method (PayPal, bank transfer) and mark paid.

What’s next