Core concepts
Keys, decisions, impressions, clicks, CPCs, budgets. A 4-minute read that pays off every later guide.
On this page
Every docs page that follows assumes you know this handful of terms. Four minutes, no jargon.
Organization
Your top-level workspace. Everything — websites, offers, balance, team members, API keys — belongs to one organization. A single AffilFinder user can have multiple organizations via invitations.
Website
A single domain you've registered in the dashboard. Each website has its own:
- Integration keys (public key + website key).
- Geo rules (your allowlist of allowed countries / regions).
- Display mode (geo-blocking overlay, inline section, or decline — picked per site).
- Analytics scope (impressions, clicks, earnings).
Sites can be personal (only you see them) or team (shared with your organization).
Integration keys
The values you paste into the script tag — each website has its own set:
| Key | Prefix | Role |
|---|---|---|
| Public key | pk_… | Per-website. Safe for client-side HTML. |
| Website key | web_… | Per-website. Safe for client-side HTML. |
| Integration secret | its_… | Per-website, server-only. Used only by the decline flow to arm a session. Never ship this to the browser. |
Keys are scoped: if a public key leaks (e.g. indexed in a public repo), the damage is confined because the API validates the Origin against your registered domain. You can rotate a key from the website detail page in the dashboard at any time.
Decision
One call to GET /v1/decision for every page view. Returns { allowed, requestId, country, region }. Everything downstream (offers, impressions, clicks) carries the requestId so attribution is watertight.
- Allowed → the visitor is on the allowed side of your geo rule. The widget stays silent and your page renders normally.
- Not allowed → the widget fetches offers and renders the monetization surface.
/v1/decisionOffer
A creative + landing page + payout model + budget + targeting bundle that advertisers configure in the dashboard. Each offer has:
- A vertical (iGaming, finance, sports, crypto, e-commerce, streaming).
- A payment model: CPC (per click) or CPA (per conversion), plus RevShare for specific setups.
- Per-country rates, with platform minimums for quality.
- Budgets (daily / weekly / monthly / total). When any cap exhausts, the offer auto-pauses.
- Creative (brand, headline, image, CTA).
- An affiliate URL with optional dynamic placeholders:
{clickId},{websiteKey},{country},{region}.
Some CPC offers are promoted as Premium placements — they appear earlier in the offer grid. Advertisers request premium status from the Advertiser section of the dashboard.
Impression
Counted when an offer card is rendered. Impressions are free to publishers — no earnings — but they inform ranking and marketplace balance.
/v1/events/impressionClick
Counted when a visitor taps an offer. The widget posts a click event, then the browser follows GET /v1/r?t=<token> so AffilFinder can attribute before the advertiser's landing.
- Billable clicks earn the publisher a share of the CPC.
- Filtered clicks (duplicates in a window, known bots, self-clicks, wrong origin) don't charge or earn. They're visible in analytics for transparency.
/v1/events/clickDisplay mode
How the widget shows offers when a decision is not allowed:
- Geo-blocking overlay (
widget.js) — full-screen card layout. Typical for regulated verticals. - Section (
widget-section.js) — inline container you place in your layout (sidebar, below article, etc.). Used when you want to keep your own experience and just add a "relevant offers" strip. - Decline (
widget-decline.js) — same overlay UI as geo-blocking, but opens only after your server triggers it. Used for post-KYC / post-signup decline flows.
Balance, earnings, payouts
- Advertiser balance — funds available to spend. Top up via Stripe or NowPayments. Payouts are debited per billable event.
- Publisher earnings — credits earned per billable event. Immediately available on the Billing page (subject to compliance / dispute holds).
- Payouts — manual withdrawals via PayPal, Skrill, or crypto. Minimum $50.
Session (decline flow only)
A short-lived record opened by widget-decline.js when the page loads. It pairs a browser's polling connection with your server's readiness to show offers:
- Browser
POSTs to/v1/widget-decline/sessionand receives asessionId. - Your server
POSTs/v1/widget-decline/triggerwith{ sessionId }and your integration secret when you're ready. - Browser's next poll sees
readyand shows offers.
If you never trigger, the session expires quietly.
Vertical
A high-level category (iGaming, finance, sports, crypto, e-commerce, streaming). Matched between advertiser offers and publisher websites so a casino offer lands on a casino blog, not a recipe site. You set your website's vertical during onboarding; you can change it anytime.
CPC / CPA
Cost per click / cost per action — the two main payment models. Advertisers choose one per offer and set per-country rates. Publishers earn a configured share on each billable event.
Where to go next
Need more help?
Can't find what you're looking for? Our team responds within one business day.