You are reading the 3.x docs, an older version. Read the 5.x docs.
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 12 months of updates and support. After that, renewal is $299 a year for more updates and support, and it stays optional. Your install keeps running on the last version you received, even if the renewal lapses.
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.
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.
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.