SpiderCPSSpiderCPS
How it works

Twelve steps,
click to settlement.

Brand sign-up to monthly payout, with the technical guts in between. Last-click attribution, 30-day cookie window (industry standard with Impact / CJ / Rakuten), idempotent server postback, real-time dashboards, monthly USD settlement.

Phase 1 — Brand onboarding

Sign up, get approved, build your first program.

01

Apply for a brand account

Sign up at spidercps.com/signup/brand with company name, contact email, niche, and a one-line pitch of what you sell. We do not do automated approvals — every brand passes a human review (~1 business day) so the publisher pool stays high signal.
02

Receive API key + activation email

On approval our notification worker emails you from [email protected] with your unique brand api_key (format pc_live_<32-hex>). This key is the only thing that authenticates conversion postbacks — keep it server-side, never embed in client JS. You can also access it any time at /dashboard/brand/profile/.
03

Create your first program

In /dashboard/brand/programs/new/ specify the offer:
  • dest_url — the URL we redirect users to (e.g. https://yourshop.com/landing; we append the click id automatically)
  • commission_type flat_cpa (fixed $) or percentage (% of order)
  • commission_value — the amount or percent
  • cookie_window_days — 30 default, can extend up to 90 (Impact: 30, CJ: 30-90, Rakuten: 7-30)
  • network_fee_pct — locked at 20%, never changes
Admin reviews + activates within one business day. Once status = active, publishers can apply.
Phase 2 — Publisher matching

AI surfaces qualified publishers; brand approves.

04

Publishers apply or are matched

Two paths into your program:
  • Self-application — publishers browse open offers at /dashboard/publisher/offers/ and apply
  • AI-driven match — our matching engine ranks publishers in our network on six signals (audience overlap, channel velocity, prior conversion, brand-safety, language match, niche fit) and surfaces a shortlist for human review at /admin/matches/
Brand approves each publisher one-click; system inserts a pc_program_publishers row with a unique tracking_slug — the publisher gets their personal link https://spidercps.com/go/<slug> to share.
Phase 3 — On every click

Click tracking, attribution cookie, redirect.

05

Publisher shares the tracking link

The publisher drops their unique link in their channel — WeChat group post, Xiaohongshu profile, newsletter, podcast show notes, YouTube description, anywhere. The link points to our worker: https://spidercps.com/go/<slug>.
06

User clicks → Cloudflare worker redirects

Our edge worker takes the request and:
  • Resolves the slug → joins program + publisher + dest_url
  • Validates program is active + publisher application is approved
  • Generates a click_id (UUID v4) — used as cookie, URL param, and database PK
  • Async-inserts a pc_click_events row (User-Agent, referrer, UTM params, hashed IP)
  • 302 redirects to the brand's dest_url with ?pcps_click=<click_id> appended (and utm_medium=affiliate&utm_source=spidercps)
The whole round-trip is sub-50ms p99 — user feels nothing. Insert is non-blocking via ctx.waitUntil, so even if the database is slow the redirect ships.
07

Brand landing page captures the click_id

On your landing page, read ?pcps_click from the URL and persist it through checkout. One line of JS:
// Persist the click attribution into a 30-day first-party cookie
const cid = new URLSearchParams(location.search).get("pcps_click");
if (cid) {
  document.cookie = `pcps_click=${cid}; path=/; max-age=2592000; samesite=lax`;
}
At checkout, read the cookie back (or pass pcps_click through hidden form fields, session storage, your cart object — whatever survives until the order completes).
Phase 4 — On every conversion

Server postback, attribution, commission split.

08

User completes the purchase

Whatever your conversion event is — order placed, lead form submitted, signup completed — record it in your own system as you normally would. Capture the pcps_click cookie value alongside the order so it survives to step 09.
09

Brand server posts to /api/conv

From your backend (server-side only — never browser), POST a JSON payload to the conversion endpoint:
curl -X POST https://spidercps.com/api/conv \
  -H "Authorization: Bearer pc_live_<your-32-hex-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "program_id":      "uuid-of-program-from-dashboard",
    "brand_order_ref": "ORDER-2026-0001",
    "order_value":     99.00,
    "order_currency":  "USD",
    "pcps_click":      "uuid-from-cookie"
  }'
Node.js example:
await fetch("https://spidercps.com/api/conv", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.SPIDERCPS_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    program_id:      PROGRAM_ID,
    brand_order_ref: order.id,
    order_value:     order.subtotal_usd,
    order_currency:  "USD",
    pcps_click:      order.metadata.pcps_click,
  }),
});
10

SpiderCPS attributes + calculates commission

On postback our worker:
  • Validates the API key, matches the program to your brand
  • Looks up the latest pc_click_events row for this click_id + program within the cookie window (default 30 days)
  • Found → credits the click's publisher_id; not found → conversion still inserted as “unattributed”
  • Commission calc: flat_cpa → fixed value; percentage → order_value × rate
  • Network fee = commission × 20%, publisher payout = commission − fee
  • Idempotency check on (program_id, brand_order_ref)— duplicate postback returns status: "duplicate"
Returns a JSON response confirming the conversion id, status, attributed publisher, commission breakdown.
Phase 5 — Real-time + settlement

Dashboards update instantly; payouts ship monthly.

11

Conversion appears in real-time dashboards

Supabase Realtime streams the new conversion event to:
  • Brand dashboard /dashboard/brand/conversions/ — all your programs' conversions
  • Publisher dashboard /dashboard/publisher/earnings/ — just their credited conversions
  • Admin review queue /admin/conversions/ — approve pending, reverse fraud
Postgres row-level security enforces tenant isolation — a brand can never see another brand's data.
12

Monthly settlement

On the 1st of each month, approved conversions from the prior month roll into:
  • Publisher payouts — aggregated per publisher, paid by their chosen method (USD wire / ACH / Wise / PayPal / USDT / WeChat Pay / Zelle) on the 15th
  • Brand invoices — PDF invoice for gross commission + 20% network fee, Net 30 payment terms, USD wire or ACH to FULLHOUSE ASSET Management LLC
Payouts are gated on brand invoice status — if the brand hasn't paid, we hold the publisher payout until collected. Publisher is notified, we follow up with the brand. No publisher ever takes the credit risk.
Attribution rules

The rules of the game.

Last-click wins within cookie window
If a user clicks publisher A's link day 1, then publisher B's day 3, then converts day 5 → publisher B gets credit (30-day default; brand-configurable up to 90 per program).
Unattributed conversions still recorded
If the postback arrives without a matching cookie (user cleared cookies / ad-blocker stripped the URL param / conversion outside cookie window), the conversion is inserted with publisher_id=null. Network fee still applies; no publisher payout.
Idempotent deduplication
A brand can never double-charge via the same (program_id, brand_order_ref) pair. The second postback returns status: 'duplicate' without inserting. Safe to retry on network errors.
Reversals for refunds + fraud
Brand or admin can reverse a conversion within 30 days of insert (refunds, chargebacks, suspected fraud). Reversed conversions don't pay out — if a payout already shipped, the next cycle nets out.
Abuse guards on /api/conv
Rate limit 60 conversions / 60s per program; order_value ceiling $100k; commission ceiling $5k. Hits trigger 429 / 400 with retry-after. Designed to protect the network from leaked-API-key abuse.

Ready to see it run on your numbers?

15-min discovery call → 1-page MSA → program live in 3-7 days. We model unit economics on your existing CPS spend before any paperwork.