Drupal is a registered trademark of Dries Buytaert
cms 2.1.2 Update released for Drupal core (2.1.2)! drupal 11.1.10 Update released for Drupal core (11.1.10)! drupal 10.5.10 Update released for Drupal core (10.5.10)! drupal 10.4.10 Update released for Drupal core (10.4.10)! drupal 11.2.12 Update released for Drupal core (11.2.12)! drupal 11.3.10 Update released for Drupal core (11.3.10)! drupal 10.6.9 Update released for Drupal core (10.6.9)! drupal 10.6.8 Update released for Drupal core (10.6.8)! drupal 11.3.9 Update released for Drupal core (11.3.9)! drupal 11.3.8 Update released for Drupal core (11.3.8)! drupal 11.3.7 Update released for Drupal core (11.3.7)! drupal 11.2.11 Update released for Drupal core (11.2.11)! drupal 10.6.7 Update released for Drupal core (10.6.7)! drupal 10.5.9 Update released for Drupal core (10.5.9)! cms 2.1.1 Update released for Drupal core (2.1.1)! drupal 11.3.6 Update released for Drupal core (11.3.6)! drupal 10.6.6 Update released for Drupal core (10.6.6)! cms 2.1.0 Update released for Drupal core (2.1.0)! linkit 7.0.15 Minor update available for module linkit (7.0.15). views_data_export 8.x-1.10 Minor update available for module views_data_export (8.x-1.10).

config_trail

No security coverage
View on drupal.org

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

  1. Database only — fast, but lost on the next
    drush cim
  2. Database + Export to yml — writes the yml file to
    the sync directory
  3. Database + Export + Git commit — commits locally
    without pushing
  4. Database + Export + Git commit + Push — pushes
    directly to the target branch
  5. Database + Export + Git commit + Push + MR/PR
    opens a merge/pull request for team review

Activity

Total releases
1
First release
May 2026
Latest release
4 days ago
Release cadence
Stability
0% stable

Releases

Version Type Release date
1.0.0-beta1 Pre-release May 17, 2026