Der Partner Hub liefert ein Runtime-SDK aus. Konsumenten-Projekte binden nur ein einziges Script-Tag ein — Änderungen an der Client-Logik werden zentral vom Hub ausgeliefert, ohne Redeploy in den Konsumenten.
Lege im Superadmin eine neue App an. Du erhältst einen slug und ein HMAC-Secret (nur einmalig sichtbar — sofort speichern).
Einbauen in index.html im <head> — oder in TanStack Start im head() von src/routes/__root.tsx. Kein Code kopieren, kein SDK bundlen.
<script
src="https://partner-program-toolkit.lovable.app/sdk/v1.js"
data-app="<slug>"
async
></script>Das SDK liest ?ref=CODE, setzt Cookie partner_hub_ref (90 Tage), meldet den Klick an den Hub und stellt window.PartnerHub.getRef() bereit.
PARTNER_HUB_URL=https://partner-program-toolkit.lovable.app
PARTNER_HUB_APP=<slug>
PARTNER_HUB_HMAC_SECRET=<secret>Ref-Code aus dem Cookie partner_hub_ref lesen und an den Hub melden:
import { reportSignup } from "@/lib/partner-sdk.server";
await reportSignup({
code: cookies.get("partner_hub_ref"),
externalUserId: newUser.id,
externalEmail: newUser.email,
});import { reportCommission } from "@/lib/partner-sdk.server";
await reportCommission({
externalInvoiceId: invoice.id,
externalUserId: invoice.user_id,
amountCents: invoice.gross_cents,
});GET /sdk/v1.js — Runtime-SDK, per Script-Tag im BrowserPOST /api/public/track-click — unsigniert, vom SDKGET /api/public/resolve-ref?code=… — unsigniertPOST /api/public/track-signup — HMAC-signiert (Server)POST /api/public/track-commission — HMAC-signiert (Server)Signatur: x-partner-hub-signature = HMAC-SHA256(secret, `$${timestamp}.$${rawBody}`) (hex). Header: x-partner-hub-app, x-partner-hub-timestamp (Millis, ±5 Min).