Drupal is a registered trademark of Dries Buytaert
Release: Leaflet 10.4.11 Minor update available for module leaflet (10.4.11). Release: Session Inspector 1.0.8 Minor update available for module session_inspector (1.0.8). Release: Migrate QA 2.0.4 Minor update available for module migrate_qa (2.0.4). Release: CKEditor Description List 3.0.0 Major update available for module ckeditor_descriptionlist (3.0.0). Release: FlowDrop 2.4.0 Minor update available for module flowdrop (2.4.0). Release: JWT Token Refresh 1.0.4 Minor update available for module jwt_token_refresh (1.0.4). Release: ConReg 1.0.0-beta1 First beta version released for module conreg (1.0.0-beta1). Release: AI Image Studio 1.0.0-beta8 New beta version released for module ai_image_studio (1.0.0-beta8). Usage Milestone: Role Theme Switcher Module role_theme_switcher crossed 1,000 active installs. Module Revived: Decoupled Router 2.0.7 Module decoupled_router updated after 11 months of inactivity (2.0.7).

Config Trail

1 sites Security covered
View on drupal.org

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

  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

Tracked releases
1
Tracked since
May 2026
Latest release
3 months ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Active

Releases

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