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.
Your license includes updates for the major version available at the time of purchase. That includes patch and minor updates within the same major release line, but does not automatically include the next major version unless we announce otherwise or provide it in writing.
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 license key
- Click Validate
You receive your license key when you buy. Find it in your purchase confirmation email or in your account on the store where you bought.
The system validates the key for you. Once validated, your license status and support expiration date will display.
Update Entitlement
Your license includes updates for the major version available at the time of purchase. That includes patch and minor updates within the same major release line, but does not automatically include the next major version unless we announce otherwise or provide it in writing.
If we keep an older major version updated, provide a free major upgrade, or extend update access beyond these terms, that does not waive our right to limit future update access to the licensed major version.
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.
Protected Files and New Features
Protection cuts both ways. Your customized files survive every update, which also means a new feature cannot add its own settings to them. When a release introduces configuration keys for a protected file, your copy keeps working without them and the feature stays off until you add the keys yourself. The changelog calls this out per release with the exact lines to add.
Current example: prepaid passes read has_prepaid_passes and max_prepaid_passes from config/plans.php. Upgraded installations enable the feature by adding both keys to their plans, or per partner under Partners → Permissions without touching the file. Upgrading From an Earlier Version walks through it.
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.
Updates and Support Renewal
Your purchase includes 12 months of updates and support. After that, $299 a year keeps your updates and support, and it is optional. You can renew at any time, even after it has lapsed.
The install runs forever even if you stop renewing. A lapsed customer keeps the last version they received, and the software keeps working. Renewing gives you dashboard updates and direct support again. Use the /support page for the current support channel.
Even without an active renewal, you can download the version you already own from your purchase and use Install from Package or Manual File Replacement.