WT Commerce Suite is a lightweight e-commerce and booking system that unifies physical products, hotel rooms, and appointments into a single shopping cart. It offers a GDPR-compliant checkout with a focus on preventing database bloat and timezone issues common in traditional systems. This module is designed for small to medium-sized businesses needing a fast and flexible hybrid storefront.
The WT Commerce Suite is a lean e-commerce and booking suite for Drupal 11. Physical products, hotel rooms and hourly appointments share one slide-out cart and one checkout, paid through Viva Wallet, PayPal, Stripe, bank transfer or at reception.
It is built for small and medium-sized businesses that need a shop, a booking system, or both, without the size and setup of a full commerce framework. Everything is made of standard Drupal nodes, fields and Views. Payment happens on the gateway's own secure page, so card details never touch your site, and an order is marked as paid only after the payment has been verified with the gateway.
Core Features
- Five ways to pay: Viva Wallet Smart Checkout, PayPal (REST API v2), Stripe Checkout, direct bank transfer (IBAN / IRIS) and pay at reception. Enable only the ones you need; each gateway has its own controller, so a problem with one does not affect the others.
- Verified payments: orders, reservations and appointments become "Paid" only after the gateway confirms the payment. Amounts are compared in cents, Stripe webhooks are signature-verified and idempotent, and PayPal is checked before and after capture.
- Keys stay out of the database: all gateway secrets live in
settings.php, never in the database or in exported configuration. The settings page shows which keys it finds, without printing them. - Slide-out cart and Digital-Only mode: an accessible, session-based cart drawer. Carts that contain only bookings skip shipping automatically, and a global "Digital-Only" switch removes shipping and address fields for service businesses.
- Free bookings: €0.00 carts (free consultations, quote requests) skip the payment step and create the booking directly.
- Bank transfer with discount: a clear IBAN / IRIS page with copy buttons and a reference ID, plus an optional percentage discount to reward buyers who avoid gateway fees.
- No double bookings: availability is checked in one place, unpaid bookings hold their slot while the buyer pays, and checkout locks each room or service and re-checks every booking before anything is created.
- Abandoned payments clean up after themselves: a failed or cancelled payment, the buyer's next checkout, or the cron sweeper cancels unpaid orders and frees their bookings. Before removing a Stripe order, cron asks Stripe whether it was paid.
- Confirmation e-mails with calendar links: customizable, translatable confirmations, sent instantly for offline payments or after the verified webhook for online ones, with "Add to Google / Outlook Calendar" links for every booking.
- Accessible GDPR consent: translatable privacy-policy consent at checkout, with the checkbox label and the policy link kept separate for screen readers. The buyer's e-mail is passed to the gateway to pre-fill its form.
- Product variations and shipping: sizes and colors (dropdowns or plain labels, depending on what is available), up to three delivery methods with live updates, and a free-shipping threshold.
- Built-in protection: a cache-safe honeypot instead of a CAPTCHA, Post/Redirect/Get on every form (no duplicate cart items on refresh), orders tied to the buyer's session, and flood control on unpaid gateway checkouts.
- Pay in your own currency (Viva Wallet): Viva Smart Checkout can offer international cardholders payment in their home currency and settles the funds in yours, with no exchange-rate setup in Drupal.
- Ready-made dashboards: Orders, Reservations and Appointments views at
/admin/wt-commerce/…, with two dedicated permissions for staff.
Use Cases:
- The e-shop (physical and digital goods): use the core module on its own. Sell physical items with delivery methods such as courier or parcel lockers and a free-shipping threshold, or switch on Digital-Only mode for e-books and services.
- The hotel (nightly room bookings): add WT Simple Booking. Rent rooms by the night with automatic night counts, availability checks and optional iCal sync with booking platforms.
- The appointment book (hourly slots): add WT Slot Booking for clinics, salons or consultants. Times are stored as plain strings, so there are no timezone shifts between server and browser.
- The hybrid store: combine all three. A customer can buy a bottle of massage oil, book a 60-minute treatment and reserve a weekend suite in one cart and one checkout.
Post-Installation
Install with Composer (composer require drupal/wt_commerce), then enable the core WT Simple Pay module and, if you need them, the WT Simple Booking (rooms) and WT Slot Booking (appointments) extensions.
On install, the modules create their own content types, fields and dashboards: orders (wt_order), rooms and reservations (wt_room, wt_reservation), services and appointments (wt_service, wt_appointment). Existing types with the same name are kept. The product type (wt_product) is yours to create; its fields are listed in the WT Simple Pay README.
Your next steps:
- Add the keys of the gateways you use to
settings.php(the README lists the key names). - Go to Configuration > Web services > WT Commerce: Payment & Cart Setup: choose gateways and sandbox/live mode, delivery methods, labels and your GDPR consent texts.
- Set up the webhooks in your Viva Wallet and Stripe dashboards (URLs in the README). PayPal needs no webhook.
- Go to Structure > Block layout and place the "WT Cart Toggle Button" in your header and the "WT Slide-Out Cart Drawer" in your footer.
- Grant the Administer WT Commerce and View WT Commerce orders and bookings permissions to your staff roles, then open your dashboards at
/admin/wt-commerce/orders.
Updating from 1.1.x? Back up your database, run drush updb and read the 1.2.0 release notes first.
Additional Requirements
- Drupal core: 11.x
- PHP: 8.1 or higher
- Installed by Composer: Paragraphs (enabled automatically) and the
stripe/stripe-phplibrary. - For online payments: a merchant account with Viva Wallet, PayPal or Stripe (sandbox or live). Bank transfer and pay at reception need no account.
- Webhooks: a public HTTPS address for your site.
Recommended modules/libraries
- Two-factor Authentication (TFA) for the staff accounts that manage orders and payments.
The booking calendars load FullCalendar and Flatpickr from the jsDelivr CDN. If your privacy policy requires it, plan to self-host them.
Similar projects
- Drupal Commerce: the complete commerce framework, with stock management, shipping-rate services, taxes and a large ecosystem. Choose it for large or complex stores. WT Commerce is for businesses that want a simple shop and bookings in one cart with much less setup.
- BAT (Booking and Availability Management Tools): a powerful availability engine based on its own entities and states. WT Commerce takes a simpler route: bookings are ordinary nodes, availability is calculated directly, and bookings are paid through the same cart as products.
Supporting this Module
This suite is built and maintained by Web-Thread.
The best way to support it: use it, report bugs and ideas in the issue queue, and tell us what you built.
Community Documentation
- WT Commerce Suite promotional page
- Explore our Demo E-Shop
- Explore our Demo Hotel System
- Explore our Demo Appointment System
- WT Commerce Suite Official Documentation
- Project README (installation, gateway keys, webhook URLs, permissions)
- Viva.com Developer Portal & Help Center
👋 Show Us What You've Built!
We would love to see how the WT Commerce Suite helps your business or your clients. If you launch a site with it, send us a link or a short case study at [email protected]. Real stores in action are the best reward for our open-source work, and they help shape the next features.
Ask your assistant about WT Commerce Suite
Check compatibility with your Drupal and PHP version, maintenance and security coverage, from current release data. How it works
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Release Timeline
Releases
| Version | Type | Core | PHP | Release date | |
|---|---|---|---|---|---|
| 1.2.0 | Stable | Oct 12, 2026 | |||
| 1.1.2 | Stable | 11 | May 30, 2026 | ||
| 1.1.1 | Stable | 11 | May 26, 2026 | ||
| 1.1.0 | Stable | 11 | May 25, 2026 | ||
| 1.0.19 | Stable | 11 | May 12, 2026 | ||
| 1.0.18 | Stable | 11 | May 12, 2026 | ||
| 1.0.17 | Stable | 11 | May 11, 2026 | ||
| 1.0.16 | Stable | 11 | May 11, 2026 | ||
| 1.0.15 | Stable | 11 | May 8, 2026 | ||
| 1.0.14 | Stable | 11 | May 8, 2026 |