Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: OpenID Connect / OAuth client 3.0.0-alpha9 New alpha version released for module openid_connect (3.0.0-alpha9). Release: Opensolr Search 4.5.0 Minor update available for module opensolr_search (4.5.0). Release: Timelinr 1.0.1 Minor update available for module timelinr (1.0.1). Usage Milestone: Simplify Module simplify crossed 10,000 active installs. Usage Milestone: Views Reference Filter Module entityreference_filter crossed 10,000 active installs. Usage Milestone: Dropdown Language Module dropdown_language crossed 10,000 active installs. Usage Milestone: Paragraphs Browser Module paragraphs_browser crossed 10,000 active installs. Usage Milestone: OpenAPI Module openapi crossed 10,000 active installs. Usage Milestone: Decoupled Router Module decoupled_router crossed 10,000 active installs. Module Revived: Entityqueue Buttons 1.1.2 Module entityqueue_buttons updated after 8 months of inactivity (1.1.2).

Commerce Checkout Lock

1 sites No security coverage Drupal 10–11 Commerce ecosystem
View on drupal.org

This module prevents users from submitting the Drupal Commerce checkout form multiple times. It uses server-side locking and client-side double-click protection to ensure only one submission is processed, while automatically cleaning up locks on completion or termination.

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

Depends on

Dependencies of the latest stable release

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
1
Tracked since
Jan 2026
Latest release
7 months ago
Releases (12 mo)
1 ▲ from 0
Maintenance
Slowing

Releases

Version Type Core Release date
1.0.0 Stable 10–11 Jan 13, 2026