227

Product support

Get help in the plugin support forum.

Categories

ChangeTrail adds a History tab to the records you choose: plugin models and Tailor entries. Every save is logged with the person who made it and a readable before/after comparison of each changed field. When a client asks "who changed this price, and can you put it back?", you open the record, see the change, and restore it.

WHAT YOU GET

  • History tab on every tracked record: who changed it, when, and a word-by-word diff of each field. Rich text is compared as text, dropdowns and switches show their labels, and tag lists show added and removed items.
  • Safe restore: put back one field or a whole change. It always asks for confirmation, warns you if the field has been changed again since (instead of silently overwriting), and the restore is logged as its own entry.
  • Activity Log (Settings → Logs): every tracked change across the site in one list, filterable by date, user, event and type, with a detail page per change.
  • Zero-code setup: pick models and Tailor sections in Settings → System → ChangeTrail. Your models are not edited.
  • Permissions: separate permissions to view history, restore changes and change settings.
  • Privacy: passwords, tokens, secrets and API keys are recorded as "changed" without their values and are never restorable. You can add your own field patterns to mask.
  • Retention: keep history for as many days as you choose. Older history is removed daily by October's scheduler.
  • Clean history: saving a form without changes logs nothing, and empty-vs-blank or 49 vs 49.00 never shows up as a "change".
  • Safe by design: if logging ever fails, your save still goes through, and the problem is written to the system log.

WORKS WITH

October CMS 4.4 and later. Plugin models and Tailor entries.

SUPPORT

Email support@amjad.com.pk. First reply within 2 business days.

Full guide and product page: https://amjad.com.pk/october-cms/plugins/changetrail

Installation via Command Line

php artisan plugin:install AmjadIqbal.ChangeTrail

REQUIREMENTS

October CMS 4.4 or later, PHP 8.2 or later.

SETUP

  1. Install the plugin. The migration creates two tables: amjadiqbal_changetrail_changesets (one row per save) and amjadiqbal_changetrail_changes (one row per changed field).
  2. Open Settings → System → ChangeTrail.
  3. Under Tracked records, add each model or Tailor section to track. The dropdown lists the models found in every enabled plugin's models folder, Backend administrators, and all Tailor sections. For each one you can set "Only these fields" (empty = every column) and "Never track these fields".
  4. Under Retention & privacy, set how long to keep history (default 365 days, 0 = forever), any extra field patterns to mask (for example internal_*), and whether to log changes made from the command line (off by default, so seeders and imports don't flood the log).
  5. Make sure the server runs October's scheduler (php artisan schedule:run every minute); ChangeTrail prunes old history daily.

PERMISSIONS

amjadiqbal.changetrail.view: History tab and Activity Log amjadiqbal.changetrail.restore: Restore buttons amjadiqbal.changetrail.settings: The settings page

HOW IT WORKS

  • Tracking attaches to the chosen classes from outside (Model::extend) and listens to the model.afterCreate, model.afterUpdate and model.afterDelete events. Your model classes are never changed.
  • The History tab is added to the top-level update form of a tracked record for users with the view permission. You can also place it yourself with a form field of type: changetrailhistory.
  • History is looked up by model type and record id together (and the Tailor section for Tailor entries), so records of different types never mix.
  • Primary keys and timestamps are never tracked. Fields named like password, _token, secret*, api_key and similar are always masked: their values are not stored.
  • Tailor: draft and version rows are skipped. Publishing a new entry's first draft is logged as Created.
  • Restore writes the stored value back and saves through the model, so validation and model events still run. If the field changed again since, nothing is written until you confirm "Restore anyway".
  • If writing to the log fails, the error is written to the system log and the original save continues.

LIMITATIONS (v1)

  • Database columns only: relations, repeaters and file attachments are not compared yet.
  • Creates and deletes are logged (a delete keeps a snapshot of the last values), but only edits can be restored.
  • Changes made with raw queries that bypass the model (for example Db::table()->update()) can't be seen.
  • After saving a form, the History tab shows the new entry on the next page load.

FULL GUIDE

https://amjad.com.pk/october-cms/plugins/changetrail

1.0.1

Support contact and product page links (no code changes)

Oct 11, 2026

1.0.0

First version of ChangeTrail

Oct 11, 2026

1.0.1: Support contact (support@amjad.com.pk) and product page links. No code or database changes; nothing to do when upgrading.

1.0.0: First release.