Before You Upgrade
Upgrading your Prosper202 software is easy, but back up your database and your 202-config.php file first, every time. An upgrade changes the database in place and there is no downgrade: restoring the database backup taken before the upgrade is the only way back. Putting the old files back is not a rollback: from 1.9.76, the previous version’s code can no longer record conversions against an upgraded database.
After restoring a database, restart memcached (or flush it) before taking traffic. Tracking links cache the ids of the rows they look up for 30 days. A cached id may name a row the backup does not hold, and the restored database can give that id to a different value.
Take a full mysqldump of the Prosper202 database (or your host’s database snapshot) after the site stops taking traffic and before you start. The upgrade page says so above its button.
READ: Version 1.8.x and higher uses a different 202-config.php file. Follow the instructions below exactly.
Upgrading to 1.9.78
1.9.78 includes security fixes, so update every install as soon as you can. The upgrade takes a 1.9.77 or 1.9.76 database, or a 1.9.55 or older one, to 1.9.78 in one pass. The full list of changes is in changelogs.txt.
Your install won’t offer 1.9.78 in its update notice or through 1-Click Upgrade, so don’t wait for a prompt. Download the 1.9.78 release zip from your account, replace the files and open 202-config/upgrade.php, as in the upgrade instructions below.
- After the upgrade. Sign in and open My Account > User Management. If you see a user you don’t recognise, remove it: updating does not remove an account that already exists.
- Docker. If you run Prosper202 in Docker, rebuild the image after you update. The 1.9.78 image is built on PHP 8.3.36, the PHP release of October 21, 2026 that fixes two critical PHP security vulnerabilities (CVE-2026-109618, CVE-2026-109619). On Coolify, redeploy. With Docker Compose, run
docker compose build --pull, thendocker compose up -d. Then check thatphp -vin the web container says 8.3.36: a rebuild without--pullcan keep the PHP the server pulled before. - Database and PHP versions. 1.9.78 needs MySQL 8.0 or newer, or MariaDB 10.6 or newer, and PHP 8.3 or newer. Check your database version before you upgrade by running
SELECT VERSION();. The upgrade page refuses an older server before it changes the database, but by then you have already replaced the files, so check the version first. - Large installs. The upgrade page answers only when the upgrade has finished; from 1.9.55 or older with a million conversions, that is one to two minutes, which can outlast your proxy’s or host’s time limit and show a timeout error. The upgrade keeps running on the server regardless: wait a few minutes and reload the page. If it is still running the page says “An upgrade is already running” and changes nothing; once it has finished it sends you to sign in. There is nothing to redo.
- Cron. The attribution worker runs from the minutely cron (
202-cronjobs/index.php), or on its own as202-cronjobs/attribution-worker.php. After an upgrade from 1.9.55 or older, it brings your existing conversions into multi-touch attribution and builds the report rollup (about 20 minutes of worker time per million conversions); reports compute in full meanwhile and say how far it has got. Check that the minutely cron runs (the attribution queue should not keep growing:p202 attribution queue, orGET /api/v3/attribution/queueon an install without Pro), as described in the multi-touch attribution runbook. A cron job run against a database that still needs the upgrade exits with “the database needs an upgrade”. - Cron and monitoring. A cron run that fails writes the error to
cronjob.logand ends with exit code 1 on the command line, or HTTP 500 when it is called over HTTP. An hourly or daily job that fails part way is tried again at the next run. The database error page, andhealth.phpwhen it cannot read its figures, answer HTTP 500, so an uptime monitor sees a database failure as a failure. - Memcached. Every cached entry is named after its install, so two installs that share one memcached server each read only their own. After the upgrade, each entry is looked up in the database once more.
- Upgrading from 1.9.76 or older: click-data deletion. If Delete click data older than is set under My Account > Settings, it deletes those clicks from the first cron run after the upgrade; 1.9.76 and earlier deleted almost none of them. To keep older clicks, set it to 0 (keeps every click) or a larger number before you upgrade, signed in as the account that installed Prosper202.
- Upgrading from 1.9.76 or older: chat. The upgrade drops the old chat’s local tables,
202_messaging_conversationsand202_messaging_messages. Conversations and announcements live with the chat service, in the chat box. Only your backup can bring the old tables back. - Permissions. An upgrade from 1.9.55 or older adds
view_attribution_reportsandmanage_attribution_models; review role assignments under My Account > User Management. The Mobile Apps pages use the same two permissions. - AI assistants and API key labels. 1.9.78 lets claude.ai and other AI apps that use MCP work with your install, with the access you approve. It needs Prosper202 ClickServer Pro, as the CLI does. See Connect an AI assistant. API keys can now carry a label, shown under My Account > Personal Settings > API keys: the key an AI connection creates is labelled with its app.
- Mobile202. The separate 202-Mobile pages are retired; their addresses redirect to the responsive pages.
- Custom deployments. If you install from source rather than the release zip, run
composer install --no-devafter replacing the files. It stops if PHP’s mbstring extension is missing, which Prosper202 already needed. Building thep202CLI from source needs Go 1.25 or newer; the release zip ships it ready-built.
Upgrade Instructions
- Download the latest version from your account at my.tracking202.com.
- Back up the database: a full
mysqldumpor your host’s snapshot, taken after the site stops taking traffic. This is the only way back if anything goes wrong. - Back up the 202-config.php file.
- Delete all the previous files on the domain (this is extremely important, as the old files may have vulnerabilities).
- Upload all of the new files (you should be uploading to an EMPTY directory after the previous delete).
- Copy the database settings from your old 202-config.php into the 202-config-sample.php file.
- Rename the 202-config-sample.php file to 202-config.php.
- Navigate to your Prosper202 URL, which takes you to
202-config/upgrade.php, and follow the prompts.
That’s it: Prosper202 is upgraded. The 1-Click Upgrade in the new-version notice under the header doesn’t offer 1.9.78, so these steps are how you get it.
How-to Upgrade Video
Video: Upgrading Your Prosper202 Installation To Version 1.8.3 (an older version; the steps above are current).