Updating.
Three ways to update Reward Loyalty — dashboard updates, install from package, and manual file replacement.
💡 Always test updates in a test environment before updating production. Back up your database, verify everything works, then deploy. See Staging Installation for setup instructions.
Updates are free forever. As long as Reward Loyalty exists, you can download the latest version from the purchase store at no additional cost. This applies to everyone who has ever purchased a license.
Three Ways to Update
Choose the method that fits your hosting environment:
| Method | Best For | Requirements |
|---|---|---|
| Dashboard Update | VPS, dedicated servers | Active support + exec() |
| Install from Package | VPS, dedicated servers | exec() (no support needed) |
| Manual File Replacement | Shared hosting, no exec() |
FTP/SFTP access |
Dashboard Update
The fastest option. The admin dashboard checks for new versions, downloads the update, and installs it automatically.
Requirements: Active support license and the exec() PHP function (available on VPS hosting, often disabled on shared hosting).
When a new version is available, you'll see a notification in License & Updates. Review the changelog and click Update Now. The system downloads the update, backs up critical files, applies changes, runs database migrations, and clears caches.
→ See Activating Your License to enable dashboard updates.
Install from Package
You already have the zip file. Let the admin dashboard handle the rest. Place the downloaded zip in storage/app/manual-update/ on your server, and the dashboard detects it.
Requirements: The exec() PHP function. No active support license needed. If you have the zip, you can install it.
This uses the same background updater as dashboard updates (backup → extract → migrate → cache clear). The only difference: the zip comes from your server instead of being downloaded.
→ Full instructions: Install from Package
Manual File Replacement
Upload files directly via FTP or SFTP. This is the fallback for shared hosting environments where exec() is disabled.
Requirements: FTP/SFTP access. Works on any hosting environment.
You download the latest version, upload the files to your server, and run migrations. No automated backup or cache clearing. You handle each step.
→ Full instructions: Manual File Replacement
Activating Your License
A license is only required for dashboard updates (downloading from the update server). Install from Package and Manual File Replacement work without an active license.
- Log in as an administrator at
/en-us/admin - Navigate to License & Updates in the sidebar
- Enter your purchase code
- Click Validate
Your purchase code is found in your purchase downloads. Open your order, then click "Download" and "License certificate & purchase code".
Once validated, your license status and support expiration date will display.
What Gets Preserved
When you run a dashboard update or install from package, the system replaces all application files except for protected paths. Any files or directories not in the protected list will be overwritten.
Core Protected Paths
These paths are always protected automatically:
.env, your environment configuration.htaccess, server configurationstorage/app, application storage filesstorage/logs, log filesbootstrap/cache, cached framework filespublic/files, user uploads and mediapublic/.htaccess, public directory server configpublic/favicon.ico, your site icondatabase/database.sqlite, SQLite database (if using SQLite)
The core protected paths may change with future updates. The definitive list is always in config/reward-loyalty.php under the protected_paths array.
Protecting Custom Files
If you've added custom translations, branding, or other files you want to preserve across updates, add them to your .env file:
PROTECTED_TRANSLATIONS="de_DE,fr_FR"
PROTECTED_PATHS="custom/branding/,my-custom-file.php"
PROTECTED_TRANSLATIONS: A comma-separated list of translation locale folders to preserve. These are relative to the lang/ directory. For example, de_DE,fr_FR protects lang/de_DE/ and lang/fr_FR/.
PROTECTED_PATHS: A comma-separated list of additional files and directories to preserve. Use paths relative to the application root. Add a trailing slash for directories (e.g., custom/branding/) or omit it for files (e.g., my-custom-file.php).
⚠️ Important: If you've made any customizations outside of protected paths, they will be lost during automated updates. Always add your custom paths to
.envbefore updating.
Note: When using Manual File Replacement, you manage protected paths yourself by backing up and restoring files manually.
Checking Your Version
Your current version displays on the admin dashboard and in the License & Updates section.
Support Renewal
Support can be renewed at any time, even after it has expired. Renewing gives you access to dashboard updates and direct support. Use the /support page for the current support channel.
Even without active support, you can download updates from the purchase store and use Install from Package or Manual File Replacement.
Extended License Holders
If you have an Extended license and your support has expired, you don't need to pay the higher Extended renewal price to keep the dashboard updater working.
You can purchase a Regular license ($99) instead. Both licenses validate the same for update server access. The license type affects your legal usage rights (selling accounts to clients), not the updater.
We need to cover the costs of running the update server infrastructure. A Regular license renewal accomplishes that while saving you money.
💡 Tip: If you purchased Extended for white-label/agency use, you already have those rights permanently. A Regular license keeps your updater active at a lower cost.