From first click to lifetime value.
Resolve customer identity, maintain a revenue ledger, analyze cohorts, and measure realized or predictive LTV by campaign, source, landing page, and product.
Click and conversion tracking for performance teams who want richer attribution, faster decisions, and complete control of their data.
A comprehensive campaign tracking platform with the tools performance marketers demand.
Real-time click capture with sub-ID parameters, referrer tracking, and automatic IP/UA logging.
Atomic, idempotent server-to-server postbacks and pixel tracking with revenue, payout, and status fields.
Five models—first-touch, last-touch, linear, time-decay, and position-based—over each visitor's own journey across campaigns.
Create, edit, and manage campaigns with offer rotation, link cloaking, and traffic rules.
Keywords, geo, device, browser, OS, referrer, ISP, landing page, and custom dimension reports.
Rule-based traffic distribution with weighted rotation, geo-targeting, and device filtering.
Unlimited weighted split tests, dynamic personalization tokens, and automatic winner routing.
Redirect potentially fraudulent traffic away from your landing pages before it burns budget.
MaxMind GeoIP integration for country, region, and city-level targeting and reporting.
Bearer-token API for campaigns, goals, events, apps, LTV, subscriptions, forecasts, sync, and system operations.
PHP and Go CLIs for reports, LTV, forecasts, optimization, route verification, sync, and AI workflows.
Secure-by-default Docker Compose stack with PHP, MySQL, Apache, and Memcached—plus a one-click stack for Coolify.
Incremental real-time click monitoring with read-replica support and a bounded, disruption-free activity stream.
Open any conversion's journey to see every touch and each model's credit, then schedule model-vs-model exports to signed webhooks.
Export, dry-run imports, compare environments, and sync configuration across named server profiles.
Run scheduled attribution exports and long-lived jobs with authenticated cron health checks and retry-safe delivery.
Name the outcomes that matter—an opt-in, a sale, the third purchase—give each its own payout, and pay every step of a funnel on one click.
Receive and verify SKAdNetwork and AdAttributionKit postbacks, and attribute Android installs to the click that earned them.
Every amount records where it came from. Reversals net, deletes settle queued postbacks, and network postbacks retry with backoff.
Scoped API keys, staged writes that wait for your approval, idempotent creates, and delete dry-runs for agents and scripts.
Prosper202 now connects acquisition data to customer value, recurring revenue, engagement, and the next best action.
Resolve customer identity, maintain a revenue ledger, analyze cohorts, and measure realized or predictive LTV by campaign, source, landing page, and product.
Track subscription lifecycle events and connect recurring revenue back to the campaigns that created it.
Customer CRM profiles, company rollups, engagement scoring, custom fields, and next-offer recommendations power more relevant experiences.
An ensemble forecast weighted by how well each method has recently predicted your numbers, with 90% bands measured from rolling backtests. Tracking outages are set aside, level shifts are refit, and calendar events reshape the curve.
Sync performance dimensions to the LPO bridge and let conversion outcomes inform smarter landing-page decisions.
Verify live routes and rotators, check offer hosts without sending a click, rewrite offer URLs in bulk with an undo file, compare before and after a date, and import a network's conversion export—all from the CLI.
$ p202 campaign check-urls --url-contains old-network.com
Goals turn events into payouts—an opt-in, a sale, an upsell, the third purchase, $20 spent in a week. The conversion ledger keeps every amount accountable.
A funnel that once needed a campaign copy per step is now one campaign with a goal per step, each with its own payout and traffic-source postback.
event=on any pixel or postbackPOST /api/v3/eventsfrom your own backendp202.track()on landing pages (fixed-value goals pay; revenue sent from the page doesn't)Goals can count the Nth event or a running sum, require an earlier goal, and open a window from the click or the install. Every edit is a new version you can re-evaluate. Existing setups don't change: until a campaign has a goal, event= is still a plain conversion.
Pixel, postback, upload, goal, or the API key that wrote it. p202 click conversions explains a click's value row by row.
A reversal nets against the sale it names. Delete a conversion and its click value and customer LTV are corrected in the same transaction.
Traffic-source postbacks are queued with the conversion itself and retried with backoff when a send fails.
Remove a conversion and a pending postback is cancelled, or a retraction goes to the pixel's correction URL.
Attribute iOS and Android installs, and the in-app events after them, on your own server, alongside your web campaigns.
NSAdvertisingAttributionReportEndpoint → https://your-domain.com
referrer=p202%3D[[p202_install_token]]
Off, observe, or require, per app. In require mode an install pays only on a passing verdict.
Flags installs that land too fast (click injection) or too slow (click spamming).
Goals reached implausibly soon after install can be held and never paid.
Per-app install caps and per-install event caps stop floods at the door.
Analyze › Mobile Apps reports both platforms: the funnel by goal, the postbacks sent to traffic sources, and a verifier that checks a pasted postback's signature without storing it.
Rebuilt in 1.9.76: each conversion's value is spread across the visitor's own clicks—across every campaign—under five built-in models.
Go beyond last-click. Under every model a conversion's credits add up to exactly its value, so you can compare models side by side and move budget toward the touchpoints that actually drive revenue.
Clicks join a journey through your tracking domain's cookie, a landing-page id, and customer ids your own server signs—never IP addresses, user agents, or fingerprinting.
Pass a customer id signed with your account's linking key and one person's clicks connect across browsers and devices.
Turn identity off on a link, a landing page, or a whole campaign. No cookie is set or read, and each click stands on its own.
Breakdowns read an hourly rollup that matches the full computation exactly: 0.1–1.25 s for 30 days, down from 30–70 s.
Track performance across every dimension with real-time dashboards, fast JSON-powered report views, and consistent filtering.
Track performance by search keyword and sub-ID
Geographic performance with country, region, city
Mobile, desktop, and tablet breakdowns
Chrome, Firefox, Safari, and browser version data
Windows, macOS, iOS, Android, Linux reports
Track traffic sources and referring domains
Network provider performance analysis
Compare landing page variant performance
Financial reports with profit margins and EPC
Temporal performance patterns and trends
Multi-touch attribution model comparison
User-defined tracking parameters and filters
A deep REST API and two CLIs for operators, developers, CI/CD pipelines, and AI agents.
Manage acquisition, goals, apps, customer value, forecasts, and traffic rules from code—or let an agent operate the same tools while you keep the final say.
p202 search to find any command
# List all campaigns
curl -X GET https://your-domain.com/api/v3/campaigns \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json"
# Response
{
"data": [
{
"id": 1,
"name": "Summer Campaign",
"status": "active",
"clicks": 24847,
"conversions": 1284
}
],
"meta": { "total": 42, "page": 1 }
}# List campaigns with PHP CLI
$ bin/p202 campaign:list
┌────┬──────────────────┬─────────┬─────────────────┐
│ ID │ Name │ Payout │ Network │
├────┼──────────────────┼─────────┼─────────────────┤
│ 1 │ Summer Campaign │ $2.50 │ MaxBounty │
│ 2 │ Winter Promo │ $4.00 │ ClickDealer │
│ 3 │ Flash Sale │ $1.75 │ MaxBounty │
└────┴──────────────────┴─────────┴─────────────────┘
# Today's performance summary
$ bin/p202 report:summary --period today# List campaigns as JSON
$ p202 campaign list --json
# Create a new campaign
$ p202 campaign create \
--aff_campaign_name "Q1 Push Notifications" \
--aff_campaign_url "https://offer.example.com/?sub=[[subid]]" \
--aff_campaign_payout "2.50" \
--aff_network_id 4
# Which countries moved after a change on Sept 4?
$ p202 analytics --group-by country --split-at 2026-09-04
# Forecast revenue and verify live routing
$ p202 forecast --metric revenue --horizon 14
$ p202 tracker check# Give your agent a key that can read and propose, never write
$ p202 user apikey create 1 --scope read,stage
# The agent proposes a change; nothing happens yet
$ p202 campaign update 42 --aff_campaign_payout "3.10" --staged
# → staged as chg_… for approval
# You review the queue, then apply or discard
$ p202 change list
$ p202 change apply chg_…
# Preview what a delete would remove before running it
$ p202 rotator delete 8 --dry-runAI coding agents like Claude Code use the Prosper202 ClickServer CLI as naturally as you'd talk to a colleague. Here's a real workflow.
--scope read,stage
Propose-only keys: an agent can read everything and suggest changes, but can't make them.
--staged
Writes wait in an approval queue until a person applies or discards them.
--dry-run
Every delete can preview exactly what it would remove before anything goes.
sanitized output
Visitor-supplied text like keywords and ISP names is cleaned before an agent reads it.
No vendor lock-in. No third-party tracking. Complete control over your marketing data.
Self-hosted on your infrastructure. Your data stays on your servers — no third-party data sharing, ever.
BSL licensed with commercial options. Contributions welcome. Built by performance marketers, for performance marketers.
REST API, CLI tools, and webhook integrations. Build custom dashboards and automate your workflow.
Use a pre-built release on shared hosting, run the guided installer from source, launch the secure Docker stack, or deploy on Coolify in a few clicks.
# No terminal or Composer required
1. Download the pre-built release zip from GitHub Releases
2. Upload and extract it into your cPanel / Plesk web root
3. Visit your site to launch the guided setup wizard
# The wizard checks requirements, creates the database,
# validates your API key, and creates the admin account.# Clone and run the one-step installer
$ git clone https://github.com/tracking202/prosper202.git
$ cd prosper202
$ ./install.sh
# The installer checks dependencies, creates configuration,
# tests or creates the database, and prints the cron entry.# Clone and start with Docker Compose
$ git clone https://github.com/tracking202/prosper202.git
$ cd prosper202
$ echo "MYSQL_ROOT_PASSWORD=$(openssl rand -hex 16)" > .env
$ docker compose up -d
# Visit http://localhost:8000 and complete the wizard immediately# Running Coolify on a VPS? Deploy straight from the repo
1. New → Public Repository: github.com/tracking202/prosper202
2. Build pack Docker Compose, file /docker-compose.coolify.yaml
3. Set your domain on the web service and click Deploy
4. Open your domain and finish the setup wizard
# TLS, the database password, 202-config.php, and cron
# are all handled for you.