Drupal is a registered trademark of Dries Buytaert
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)! bootstrap 8.x-3.40 Minor update available for theme bootstrap (8.x-3.40). menu_link_attributes 8.x-1.7 Minor update available for module menu_link_attributes (8.x-1.7). eca 3.1.1 Minor update available for module eca (3.1.1). layout_paragraphs 2.1.3 Minor update available for module layout_paragraphs (2.1.3). ai 1.3.3 Minor update available for module ai (1.3.3). ai 1.2.14 Minor update available for module ai (1.2.14). node_revision_delete 2.0.3 Minor update available for module node_revision_delete (2.0.3). moderated_content_bulk_publish 2.0.52 Minor update available for module moderated_content_bulk_publish (2.0.52). klaro 3.0.10 Minor update available for module klaro (3.0.10). klaro 3.0.9 Minor update available for module klaro (3.0.9). layout_paragraphs 2.1.2 Minor update available for module layout_paragraphs (2.1.2). geofield_map 11.1.8 Minor update available for module geofield_map (11.1.8).

Commerce Checkout Lock

Prevents duplicate checkout submissions in Drupal Commerce.

Features

  • Server-side locking using Drupal's persistent lock backend
  • Client-side double-click protection with visual feedback
  • Automatic lock cleanup via kernel terminate safety net
  • Configurable checkout pane for flexible placement

Installation

  1. Install as usual: `composer require drupal/commerce_checkout_lock`
  2. Enable the module
  3. Configure your checkout flow to include the "Checkout Lock" pane before payment

Configuration

In your checkout flow settings, add the "Checkout Lock" pane to an existing step
(e.g., "Review" or "Payment") before any payment-related panes. The pane is
invisible to customers - it only attaches the protection logic to the form.

How it works

  1. When checkout form submits, JavaScript disables buttons and shows "Processing..."
  2. The checkout pane acquires a persistent lock for the order
  3. If lock fails (concurrent submission), user sees an error message
  4. Lock releases on checkout completion or request termination (safety net)

Requirements

  • Drupal 10.3+ or 11.x
  • Commerce 2.x or 3.x

Activity

Total releases
1
First release
Jan 2026
Latest release
3 months ago
Release cadence
Stability
100% stable

Releases

Version Type Release date
1.0.0 Stable Jan 13, 2026