config_trail
Config Trail gives you a complete, timestamped history of every configuration
change on your Drupal site — with the tools to understand and undo them safely,
even across deployments.
The problem it solves
Rolling back config only in the database means the next
drush config:import
silently overwrites your rollback. Config Trail treats yml sync files and
Git as first-class citizens of the rollback workflow, so rollbacks survive
deployments.
Features
- Automatic tracking of every config create, update, and delete
- Side-by-side diff viewer for any two trail entries
- Per-key partial restore — undo only the keys that changed in an entry,
leaving all other keys untouched - Full restore — replace the entire config with a point-in-time snapshot
- Bulk rollback — revert every tracked config to a chosen date and time
- Five rollback strategies: DB only → DB + yml export → + Git commit →
+ push → + GitLab MR / GitHub PR - Sync status page — spot configs that will be overwritten on the next
deployment before it happens - Async queue support — Git and API operations run via Drupal Queue so
they never block a page request - Drush commands for every operation (list, show, rollback, export,
sync-status, clean) - Slack and Microsoft Teams webhook notifications on every rollback
and export - Configurable exclusion patterns with wildcard support
- Developer hooks:
hook_config_trail_should_track_alter(),
hook_config_trail_entry_saved(),
hook_config_trail_rollback_applied()
Comparison with config_revision
Feature config_revision Config Trail Change tracking ✅ ✅ Diff viewing ✅ ✅ Rollback ✅ ✅ Auto-export to yml ❌ ✅ Git commit on rollback ❌ ✅ GitLab MR / GitHub PR ❌ ✅ Deployment-safe rollbacks ❌ ✅ Slack / Teams notifications ❌ ✅ Drush commands Partial ✅ Drupal 11 support ❌ ✅ No core patches required ❌ ✅Requirements
- Drupal 10.x or 11.x
- PHP 8.1+
- Git binary on the server (optional — only needed for commit/push features)
- cURL extension (optional — only needed for GitLab/GitHub/Slack/Teams)
Installation
composer require drupal/config_trail drush en config_trail -y drush updb -y
Tracking begins immediately. No configuration required to get started.
Tracking begins immediately. No configuration required to get started.
Configuration
Administration → Configuration → Development → Config Trail → Settings
Set your rollback strategy default, exclusion patterns, Git binary path,
remote/branch, GitLab/GitHub tokens, and notification webhooks. API tokens
and webhook URLs are stored in Drupal State so they are never exported to
yml or committed to Git.
Rollback strategies
- Database only — fast, but lost on the next
drush cim - Database + Export to yml — writes the yml file to
the sync directory - Database + Export + Git commit — commits locally
without pushing - Database + Export + Git commit + Push — pushes
directly to the target branch - Database + Export + Git commit + Push + MR/PR —
opens a merge/pull request for team review