SmoothProfitDocs
ProductStart free

Getting started

  • Introduction
  • Quickstart
  • Authentication
  • Errors & rate limits

Core concepts

  • Tenancy model
  • Attribution
  • Commission resolution
  • Payout lifecycle

Guides

  • Install the tracker
  • Connect a storefront
  • Affiliate storefronts

API reference

  • Context
  • Affiliates
  • Conversions
  • Landing pages
  • Coupons
  • Payouts
  • Providers
  • Tracking

Guides

Affiliate storefronts

Every affiliate gets a co-branded page selling your catalog with their attribution baked into every link. Two ways to serve it.

Hosted

SmoothProfit serves the page from three templates — clinical, creator, and minimalist — carrying your logo and brand color. Zero work per brand.

example
https://{program-subdomain}.smoothprofit.app/store/{slug}

To serve it on your own domain, map store_domain to the program, or reverse-proxy a path from your existing site:

vercel.json
{
  "rewrites": [
    {
      "source": "/store/:path*",
      "destination": "https://peakcare.smoothprofit.app/store/:path*"
    }
  ]
}

Headless

For pixel-perfect fidelity with a bespoke site, fetch the page config and render it yourself. The response includes the resolved product list, so you don't reimplement promotion modes or tier restrictions and drift from the hosted behaviour.

ts
const res = await fetch(
  `${BASE}/api/v1/programs/${programId}/landing-pages/${slug}`,
  { headers: { Authorization: `Bearer ${process.env.SMOOTHPROFIT_API_KEY}` } },
);
const page = await res.json();

if (!page.isLive) return notFound();

// page.products already honours promotionMode and tier restrictions.
// Each product carries a checkoutUrl — append the referral code to it.
Gate on isLive, not isPublished. A page is only live when the affiliate published it and the brand approved the copy.

Who controls what

Brand ownsAffiliate owns
Catalog · pricing · process copy · FAQ · logo and colorsHeadline · bio · photo · promo badge · which products lead

That split is the point. Affiliates personalise; they don't invent claims about your product.

The review gate

A page needs brand approval before it is publicly reachable. Affiliate copy is the brand's liability — in regulated categories especially — so approval attaches to the words, not the page.

  • Editing approved copy sends the page back to draft. Otherwise an affiliate gets innocuous text approved and then swaps in claims.
  • Changing template, slug, promotion mode, or product picks does not reset review — none of them introduce new claims.
  • The API cannot approve a page. Writing content always leaves it needing review. A key that could self-approve would defeat the gate entirely.

Attribution on storefront links

Every product CTA already carries the affiliate's referral code and page id. If a product has no upstream checkout URL, the CTA falls back to the tracked short link so a button is never dead. See Attribution for how that reaches a conversion.