Config Trail
Config Trail provides a history of all configuration changes on your Drupal site, allowing you to see what changed, when, and who made the change. It offers tools to safely undo these changes, even across deployments, by integrating with Git and other workflows.
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