Click analytics
Every outbound click is recorded server-side with its own token — which is exactly what affiliate networks send back in conversion postbacks, so you can attribute revenue to the click, the offer and the page.
| Method | Endpoint | Description |
|---|---|---|
| GET | /stats/overview?site=…&days=30 | Totals: clicks, unique visitors, top offers |
| GET | /stats/offers?site=…&days=30 | Per-offer click counts — your EPC ranking input |
| GET | /stats/daily?site=…&days=30 | Daily time series for charts |
| GET | /stats/clicks?site=… | Raw click log (paginated) — export it, join with network postbacks |
curl -s "$API/stats/offers?site=$SITE_ID&days=30" -H "Authorization: Bearer $KEY"
# → [{"offer_id":"…","name":"Acme VPN","clicks":412,"uniques":355}, …]
/stats/clicks.
Contacts
One model for every person who ever gave you their email on a site — newsletter leads, verified subscribers, and community members. A contact moves forward through three states and never back:
- lead — footer/lead form signup, email only. Gets a welcome email with a double opt-in link.
- subscriber — completed the welcome link: confirmed date of birth (18+ enforced; under-age submissions are deleted immediately) and ticked marketing consent, timestamped with their IP as proof.
- member — a subscriber who also created a password; can post reviews and comments.
Plan-gated: lead_generation. Panel: Contacts page — stat chips, search, per-status filters, consent column, row actions, CSV export.
| Method | Endpoint | Description |
|---|---|---|
| GET | /contacts?status=&q=&site= | Unified list — filter by lead|subscriber|member, search email/display name, scope to a site |
| GET | /contacts/stats | Counts per status + total with live marketing consent (the chips above the table) |
| POST | /contacts/:cid/action | {"action":"unsubscribe"} clears marketing consent (same as their one-click link) · {"action":"rotate_lead_token"} issues a fresh welcome link |
| DELETE | /contacts/:cid | GDPR erasure — deletes the contact row entirely |
| GET | /legacy-leads | Old flat leads table, read-only (affiliate postbacks still read it during migration) |
| GET | /leads?site=… | Legacy per-site lead list (pre-contacts data) |
| DELETE | /leads/:lid | Delete a legacy lead row |
Weekly digest
With newsletter.enabled (see site settings) the platform emails every consenting subscriber their site's top-5 offers every Monday 08:00 UTC. Every digest carries a one-click unsubscribe header (Gmail/Outlook list-unsubscribe) plus an unsubscribe link in the body, and each send is logged idempotently — a retried worker run never double-sends.