Everything
in 1.9.80.
Native ChatGPT Ads tracking leads the release. Around it: conversions sent from your server to ChatGPT Ads, Google Ads and GA4, money-loss alerts, the spend ledger, postback security, and much of what paid 1.9.56 had, brought back. Here are the 125 changes users will notice so far, by area. 1.9.80 is in final testing, so the list may still grow before it ships.
Six things to know first.
The upgrading guide has every step. Back up your database first: there is no downgrade.
Keys are shown once
API keys are now stored as a hash. Every key keeps working, but Reveal and Copy are gone, and a key is accepted only exactly as it was made, letter case included. Going back to an older version needs your pre-upgrade backup or new keys.
Postback security starts off
Existing accounts accept postbacks as before. To require the new token, copy your postback and pixel URLs again, give them to your networks, then switch it on under Account › API Integrations.
Money-loss alerts are on
For every account, including existing ones. A webhook subscribed to every event now also receives the alert events, so a receiver should ignore event names it doesn’t know.
Only signed releases install
The 1-click upgrade installs only releases signed by Tracking202, and says before you press the button when it can’t run on your server.
Coming from paid 1.9.56?
Your landing page code, pixels, postbacks, PurLinks and redirector rules work again without being redone, and the upgrade page links your upgrade notes.
The full changelog
Every API route, CLI command and schema change is in the release notes once 1.9.80 is released.
- ChatGPT Ads (5)
- Conversion destinations (10)
- Money-loss alerts and logs (13)
- Postbacks and pixels (7)
- Cost and currency (8)
- Clicks, fraud and landing pages (23)
- Redirectors (8)
- Payment platforms (11)
- Reports and attribution (9)
- API keys, privacy and security (15)
- AI assistants and the command line (2)
- Upgrading (14)
ChatGPT Ads
Native tracking for ChatGPT Ads, from the traffic source to the Conversions API.
- NewChatGPT Ads destination: send your conversions to OpenAI’s Conversions API from your server (Setup › Destinations).
- ChangedChatGPT Ads spend goes only to clicks from your ChatGPT Ads traffic sources, so another source’s clicks with the same ad id keep their own cost. If you set up a ChatGPT Ads source yourself, mark it as ChatGPT Ads on its edit form in Traffic Sources.
- NewClicks from ChatGPT ads keep OpenAI’s click id (
oppref): use[[oppref]]in your URLs, and a postback that sends it back finds its click. - NewAdd ChatGPT Ads on Traffic Sources, and a ChatGPT Ads tracking template on Get Links.
- NewConnect a ChatGPT Ads account with its Advertiser API key, and let Prosper202 set up the pixel, Conversions API key and event settings (Setup › Destinations).
Conversion destinations
Send conversions from your server to ChatGPT Ads, Google Ads and GA4.
- NewDestinations send your conversions to Google Analytics 4 from your own server, with a test and a delivery log (Setup › Destinations).
- NewDestinations upload your conversions to Google Ads from your own server, with your own developer token (Setup › Destinations).
- FixedA database hiccup no longer shows a destination’s credentials as unreadable.
- Fixed
p202 destinationcommands refuse flags that do not apply instead of ignoring them. - NewEdit a destination on Setup › Destinations: settings, campaigns, parameters, per-campaign conversion actions and credentials (a blank secret keeps the stored one).
- NewDestinations show what failed and why, with the full log, and failed or withheld conversions can be sent again after you fix the cause.
- NewSend a new destination the conversions recorded before it existed (the last 3 days for GA4, 90 for Google Ads).
- FixedDestinations say which privacy setting is in force and when it holds back EEA/UK visitors whatever consent is stated.
- NewIf Google Ads is still fetching your old paid 1.9.56 conversion feed, Setup › Offline Conversions shows it and moves it over with one button.
- NewGoogle Ads destinations: pick the account and conversion action from your Google Ads account instead of pasting IDs.
Money-loss alerts and logs
Hear when a campaign stops making money, and see every request that reached you.
- NewConversion Logs is back: every conversion on your account with its click and conversion times, IP, type, transaction ID, payout and user agent, filtered by date, campaign, subid, type and deleted state.
- NewSetup › Inbound Log shows every postback, pixel and payment notification received and why one was refused.
- NewMoney-loss alerts, on by default, by email, Slack or webhook when a steady campaign stops converting while it buys clicks, or passes a daily cost cap with no conversion. Turn them off under Personal settings.
- NewMoney-loss alerts also tell you when far more of your postbacks and pixels are refused in an hour than usual, with the main reasons. The alert pauses if the inbound log is too full to retain its 24-hour baseline.
- NewMoney-loss alerts are listed on Home and in your alert settings, with how each was sent or why it was not, so an email that never arrives cannot hide one.
- New"Send a test alert" checks that your money-loss alerts reach you, and says what each channel did.
- ChangedEach money-loss alert links to the page that shows the problem.
- ChangedMoney-loss alerts can be kept in the app only, with every channel off.
- ChangedThe Attribution page shows why something is failing and has a "Try again now" button.
- NewBefore you require the postback token, Account › API Integrations shows which postbacks and pixels still arrive without it, so turning it on refuses nobody by surprise.
- NewThe Inbound Log has search, says how to fix each refusal, and can record a refused postback or pixel with one click.
- NewA warning on Home and the Overview when conversions are not reaching your traffic sources because the cron job is not running. Set up the cron job or turn on AutoCron so they are sent.
- ChangedConversion Logs rows open their click and link their inbound requests, and the filtered list downloads as CSV.
Postbacks and pixels
Safer, faster postbacks that find their click.
- NewA global postback whose SubID was not filled in records its sale by the ad click id (
gclid,msclkid,fbclidand others) the network sends back, on your click that carries it. Name your network’s own parameter under Personal settings › Advanced. - FixedConversion amounts larger than 999,999.99999 are refused with a clear error instead of being silently stored as 999,999.99999.
- FixedThe global postback records sales sent in a form POST body again, as paid 1.9.56 did.
- ChangedFrom paid 1.9.56: on a form POST to the global postback, a subid or sid in the URL is used instead of the body’s.
- FixedSales from the per-campaign postback and from ClickBank, JVZoo, PayKickstart, Shopify and Zaxaa notifications now notify your traffic source’s server postback.
- ChangedPostbacks and pixels answer right away and traffic-source postbacks are sent in the background, so a slow outside service no longer slows down your pages or postbacks.
- NewPostbacks and pixels can require your account’s postback token, or only signed postbacks, so a guessed click id no longer records or reverses a conversion. Choose under Account › API Integrations once your networks have the new URLs.
Cost and currency
Billed spend as cost, and conversions in the currency they were recorded in.
- NewA spend ledger keeps what each ad platform billed per ad per hour, for the reports to use as cost.
- ChangedReports use the spend an ad platform reported for the clicks it matches, and say how far that spend data reaches.
- ChangedOverview, Group Overview, Breakdown and the Analyze pages show the same ad platform spend as cost, with a note above the figures.
- NewEach conversion keeps the currency it was recorded in. Changing your account’s currency no longer relabels earlier conversions, and reports say when a period holds more than one currency. If you changed your account’s currency before this version, say when on Personal settings and your earlier conversions take the currency they were in.
- NewPostback and pixel amounts on a campaign paid in another currency are converted into your account’s currency at a daily exchange rate, and keep the amount that was sent. After the upgrade, Personal settings lists those campaigns so you can switch them to your account’s currency in one step if their networks report in it.
- FixedUpdate Subids reads payout, transaction id and time on each line again, with a default payout and time zone.
- FixedCampaigns can be paid in another currency again; the payout is converted to your account currency when you save.
- FixedChanging your account currency now converts campaign payouts the right way round.
Clicks, fraud and landing pages
Cleaner clicks, and landing pages that check their own code.
- FixedGoogle Ads tracking templates from paid 1.9.56 installs record clicks again.
- NewGet Links gives landing-page links a Google Ads final URL and tracking template.
- FixedIPQualityScore now scores your clicks a few minutes after they arrive and filters fraudulent ones from your reports. Visitors from the EU, EEA, UK and Switzerland are never sent.
- FixedEditing a Get Links link keeps its tracker id, so API and CLI clients keep finding it.
- FixedThe API refuses a landing page URL without http:// or https://, as the Landing Pages page does.
- NewSetup > Campaigns suggests the
[[subid]]parameter for 23 affiliate networks’ links again (the paid Link Assistant). - NewGet LP Code can check that your landing page carries its code.
- FixedLanding page dynamic content fills form fields and 1.9.56’s segment names again, and the dcs script API is back.
- FixedLanding pages that call dcs.updateDataObj() update the recorded click’s c1-c4 and keyword again.
- FixedLanding pages from paid 1.9.56 that keep the original SubID (t202UseSubidOrig) do so again.
- FixedPurLinks with their own deep link keep it while the SubID is being prepared.
- ChangedPurLinks refresh after the Back button without recording another pageview.
- FixedPurLink clicks from paid 1.9.56 that had not converted yet still convert after upgrading.
- FixedLanding pages from paid 1.9.56 that set t202Settings values or t202UrlVars have them applied again.
- FixedT202SubidOrig, t202SourceId and
[[sourceid]]in PurLinks are filled again on landing pages. - FixedPurLinks on cloaked simple landing pages keep their own deep link.
- FixedRedirector links keep the
gclid, UTM values and tracking variables, as direct links do. - NewPurLinks are back: landing page links go straight to the offer, and the click-out is still recorded.
- NewDeferred pixels fire your traffic source’s pixels on the landing page when a PurLink click converts.
- NewVisitors shows why a click was filtered, and a click IPQualityScore filtered has a Not fraud button that counts it again.
- ChangedA landing page URL typed without https:// is completed for you instead of refused.
- NewLanding Pages shows whether each page carries its tracking code, and checks it for you.
- ChangedUpdate Subids accepts payouts pasted with a currency sign, such as $12.50.
Redirectors
Rules that match, warn and save in one piece.
- FixedRedirector rules on c1-c4, UTM values, keyword and referer work on offer links.
- FixedSaving a redirector’s rules on Setup › Redirectors is all or nothing, and removing a rule no longer leaves its destinations behind.
- ChangedA redirector holding a split-test weight over 100 must have it corrected before Setup › Redirectors saves it; the error says which rule.
- FixedRedirector rules on EU, fraud score, IP range, visitor, c1-c4, keyword, referer and utm values match again after upgrading from paid 1.9.56.
- FixedA redirector rule saved as "US" or "Mobile" now matches its visitors, and typing a country’s code or name saves it in the right form instead of refusing the save.
- NewRedirector rules suggest the UTM, c1-c4, keyword and referer values your own clicks carried as you type.
- NewSetup › Redirectors warns when a rule can never match, such as a fraud rule with no IPQualityScore key or a rule placed after one that takes every visitor.
- FixedA redirector’s "desktop" device rule now matches Macs, and the ISP rule type follows your own account’s MaxMind ISP setting.
Payment platforms
ClickBank, Shopify, JVZoo, PayKickstart and Zaxaa.
- FixedZaxaa Payment Notifications (ZPN) now update conversions; the ZPN URL on the integrations page used to answer 404.
- FixedJVZoo notifications at the paid 1.9.56 JVZIPN URL record sales again, as the affiliate’s.
- FixedA JVZoo vendor still on the 1.9.56 URL can choose "vendor" for it on the API integrations page, and a vendor’s sale there is no longer lost silently.
- FixedA second PayKickstart refund of the same amount is no longer dropped as a duplicate; it is refused and shown.
- FixedClickBank refunds of sales recorded before the upgrade are taken back again.
- FixedClickBank sales record again on accounts that count in a currency other than USD.
- FixedShopify order webhooks are recorded again, verified with the webhook secret you store under API integrations.
- FixedA sale in another currency than your account’s is held, the integration’s card tells you which setting to change, and one button records the held sales once you have.
- FixedA JVZoo vendor still on the 1.9.56 URL has sales with no affiliate recorded, and the JVZoo card offers one button to read that URL as a vendor’s.
- NewShopify refunds that are waiting or were refused are listed under Setup › Inbound Log, where each can be recorded or closed.
- NewThe Shopify integration gives a copy-ready theme snippet and shows whether your store’s webhooks are arriving.
Reports and attribution
Publishers, custom variables and attribution that keep going.
- FixedA model change that cannot be applied no longer holds up attribution for the rest of the account.
- FixedAttribution no longer stops for a visitor linked to a very large number of visitor ids.
- FixedCharts no longer go blank on servers that send a strict Referrer-Policy header.
- FixedAnalyze › Custom Variables never shows another account’s variable names.
- FixedPublisher links (
t202pubid) from paid 1.9.56 record their publisher again, for users with the Publisher role. - NewAnalyze > Publishers shows the clicks, leads and revenue of each publisher’s links, by link and campaign, with a download. Reports in the API and CLI can break down and filter by publisher.
- NewEvery report page can be narrowed to one publisher’s clicks with the new Publisher filter.
- NewAccounts on another user’s traffic source get their own copy automatically, and record custom variables again.
- ChangedSettings says when custom variable values are not being recorded because a traffic source is in another user’s account.
API keys, privacy and security
Keys you can tell apart, signed upgrades, and fewer third parties.
- NewAccount › API keys shows the watchers each AI app keeps running with its key, with a Stop button; revoking the key stops them too.
- FixedProduct analytics are no longer occasionally sent twice when a page and the hourly cron deliver at the same moment.
- ChangedAPI keys are stored as a hash and shown once, when made; Reveal and Copy are gone, and every key keeps working.
- FixedAn API key is accepted only exactly as made, letter case included.
- ChangedAfter the 1.9.80 upgrade, going back to an older version needs the pre-upgrade database backup or new API keys.
- NewChoose separately whether Prosper202 receives product analytics and whether it emails you offers and tips (Personal Settings › Data & communication).
- ChangedSigned-in pages no longer load a third-party script.
- ChangedAdding a network or traffic source no longer reports its name to Tracking202, and a slow or failed report can no longer hold up or clutter the save.
- ChangedThe 1-click upgrade installs only releases signed by Tracking202, and changes nothing when a download is not.
- FixedThe Slack integration no longer shows a command webhook URL that never worked.
- FixedSlack notices go to your own account’s webhook, not the install owner’s.
- NewEach API key shows when it was last used and by what, so you can tell which integration holds it.
- NewReplace an API key from My Account: the new key is shown once and the old one keeps working for 24 hours.
- Changed
gives the old key 24 hours, as Replace does;p202 user apikey rotateapikey deleteends a key at once. - NewName an API key when you make it, so you can tell your keys apart.
AI assistants and the command line
More for Claude, ChatGPT and p202 to work with.
- NewThe local MCP server (p202 mcp) loads more tools on request, starting with conversion destinations’ status, delivery log and test fire.
- FixedAn AI app connected through the hosted MCP server is told to check before retrying when a tool made its change and a later read was refused, instead of being told nothing was sent.
Upgrading
A clearer upgrade, from any version.
- FixedAfter restoring the database from a backup, the API no longer answers retried creates as done or offers staged changes made after the backup.
- FixedThe Bot202 Facebook Pixel Assistant from paid 1.9.56 works again: landing page settings, Meta Pixel events and the conversion Purchase.
- FixedOld API v1 setup addresses (campaigns, trackers, landing pages and more) answer again after upgrading from paid 1.9.56.
- FixedThe old paid Google Ads feed address now says where to make its replacement instead of failing silently.
- FixedLanding-page code from paid 1.9.56 installs tracks again without being re-pasted.
- FixedPixels and postbacks from paid 1.9.56 installs record repeat sales again when they send an order number (
t202txid). - FixedOffline conversion files no longer stall on MariaDB 11.
- ChangedFrom paid 1.9.56: to count repeat sales on one click, send the order number in
t202txid. - ChangedFrom paid 1.9.56: the same order number sent twice for one click counts once;
t202dedupeis no longer read. - FixedUpgrading from paid 1.9.56 no longer leaves the password column too short for new passwords.
- ChangedA failed upgrade shows what failed, what to do and a report to copy to support, on the page.
- ChangedThe 1-Click Upgrade says before you press the button when it cannot run on this server, and why.
- NewInstalls upgrading from paid 1.9.56 get a link to their upgrade notes on the upgrade page.
- ChangedAfter a database restore, Settings says what was set aside and where; it is removed after 30 days.
Be ready for 1.9.80.
New to Prosper202? Get the self-hosted download now. Already running it? When 1.9.80 ships, upgrade from your account’s download or with the 1-click upgrade.