Config Pull Request
This module allows users to create pull requests for configuration changes made through the Drupal UI. It automates the process of committing UI-based configuration updates to your codebase, preventing accidental reverts and simplifying workflow for site builders unfamiliar with command-line Git.
Config Pull Request lets site builders and stakeholders turn Drupal configuration changes made in the admin UI into a pull request on GitHub or GitLab — with no command line and no Git knowledge.
It is built for two situations: people who need to export configuration but do not use Git on the command line, and sites where configuration is imported automatically on deployment, so UI changes are silently reverted unless someone commits them.
Works with Drupal 10, 11 and 12.
How it works
- Make your configuration changes in the admin UI as usual.
- Go to the Configuration synchronization page and open the Pull Request tab.
- Select the configuration you want to keep, confirm the repository, add a title and description, and submit.
- The module authenticates against the repository and opens the pull request. It can also notify developers.
- A code reviewer reviews, comments, accepts or rejects it.
Note: you do not need a local repository on your Live or Staging environment. This module pushes directly to the repository using APIs.
Case study
Some changes are needed to the Google Analytics configuration.
With this module:
- The Audience Dev team makes the tweaks on Staging.
- They go to the Config Pull Request page, select the configuration they want to keep, and issue a pull request.
- They create a ticket and assign it to the pull request.
- The developers review, test and merge.
- The ticket is deployed.
- The Audience Dev team gets exactly what they asked for.
Without it, the workflow is usually:
- Audience Dev requests changes to the Google Analytics module.
- A product manager writes a ticket — and not every requirement makes it in.
- A developer implements the ticket — and may misunderstand what was wanted.
- A tester checks it — and, being human, can miss what the developer missed.
- The ticket goes live.
- Audience Dev finds a problem.
- Back to step 1.
Pros
- Speeds up exporting last minute or urgent changes
- Lets stakeholders tweak configuration quickly and keep the changes
- Helps site builders export configuration without the command line
- Keeps the intent, the author and the discussion in the pull request
Supported repositories
- GitHub, including GitHub Enterprise
- GitLab, including self-managed GitLab
- BitBucket (in development)
Installation
composer require 'drupal/config_pr:^3.0'Enable the main module and the sub-module for your host. GitHub support works straight away. For GitLab, also require the client library:
composer require m4tthumphrey/php-gitlab-api:^12Then add a repository access token on your user profile, and set the repository owner and name in the module settings. Each module and sub-module has a README listing its Composer dependencies.
Your repository needs at least one configuration export already committed before the first pull request can be created.
Security
Access tokens are stored per user rather than site-wide, so everyone acts as themselves on the repository and the audit trail stays accurate. Both forms are permission-controlled, and the token field is hidden from users without the relevant permission. Give tokens the narrowest scope that still allows creating branches and pull requests.
Similar modules
Config Patch — provides a framework for generating patch files for configuration, that is, the differences between active and sync configuration.
Screenshots
Demo
Contributing
Bug reports and feature requests are welcome in the issue queue.
Depends on
Dependencies of the latest stable release
- config Drupal core
- field Drupal core
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Release Timeline
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 3.0.0 | Stable | 10–11 | Aug 24, 2026 | ||
| 3.0.x-dev | Dev | 10–11 | Aug 24, 2026 | ||
| 8.x-2.0-beta3 | Pre-release | 8–11 | Feb 20, 2025 | ||
| 8.x-2.0-beta2 | Pre-release | 8–11 | Feb 16, 2025 |