POTTERY WORKSHOP POTTERY WORKSHOP POTTERY WORKSHOP

project:

Custom
course booking system
Ecommerce for
pottery workshop

Prenotazione Corsi con Sistema Custom Isola

A smooth user experience, flexible internal management

For an art workshop specializing in organizing pottery courses, we designed and developed a fully customized online course booking system. The intervention covered both the front-end and the logical and functional architecture of the back-end, with a focus on usability, administrative flexibility and scalability.

The site is configured as a true vertical e-commerce, aimed at selling tickets to access courses. The project required extensive customization of existing plugins and the development of ad hoc modules to meet specific customer needs not supported by market plugins.

Technology stack and architecture

The platform is based on WordPress and WooCommerce, supported by:

  • Advanced Custom Fields (ACF) for advanced management of metadata and conditional logic
  • WooCommerce Appointments for time-based booking management
    Custom plugins developed in PHP and integrated with existing infrastructure

All code was written with adherence to WordPress standards (coding standards, actions and filters), so as to ensure future compatibility and maintainability over time.

Sviluppato sistema custom per prenotazione corsi

Custom plugins developed

Cross-product availability synchronization

One of the key requirements was the centralized management of availability. Although the courses are sold as different products, they share the same physical space: a lab with limited capacity.
We therefore developed a custom plugin that could automatically synchronize available slots among all courses that overlapped temporally. The system:

  • Analyze active reservations on all related products
  • updates the global availability for each in real time
  • Invalidates or limits the selection of conflicting slots
  • provides visual notifications via badges and tooltips in hover, to improve UX and guide the user in choice.

This logic has been integrated on both the front-end (with JS and AJAX) and back-end, ensuring data consistency even with simultaneous accesses.

Dynamic conditional discounting

The client required a multilevel discount system that was conditional on time and quantity variables. Therefore, we designed a dynamic pricing module with the following features:

  • Automatic activation of discount upon reaching purchase thresholds (e.g., two or more courses)
  • Automatic exclusion of certain time slots (e.g., Sunday and Wednesday evenings)
  • Coupon compatibility disabled, to avoid cumulative discounts
  • custom field in admin to manage percentage, enable/disable promo, and modify operating conditions.


This logic was implemented by acting on both WooCommerce hooks and with PHP/JS conditional scripts in the checkout.

Advanced Gift Card System

We have developed a complete system for purchasing and sending digital gift cards (prepaid codes), which can be used for booking courses.
The flow includes:

  1. user’s choice of amount
  2. Recipient data entry and personalized message
  3. automatic generation of a unique code with a default value
  4. Automatic sending of a branded email, with dynamic content
  5. Ability to use the card as a payment method during checkout.


This module was created without external plugins, providing maximum freedom for customization and integration with the logic of “course” products.

Appointments plugin override and customization

We worked directly on the core of the WooCommerce Appointments plugin, performing targeted template overrides and introducing custom filters to adapt booking logic to the constraints of the lab.
In particular, we:

  • Forced the logic of shared unavailability across multiple courses
  • Managed holidays and special times directly from backend
  • Modified the automatic notification system, integrating it with email and dynamic badges.


The result is a plugin that maintains the reliability of a solid base, but with completely tailored behaviors.

Payments integration with SumUp

The payment system has been extended to support SumUp, both as an online payment method and to synchronize physical sales with the ecommerce platform.
Via REST API, the gateway enables:

  • Direct payments from physical POS synchronized with WooCommerce orders
  • automatic reconciliation of sales data
  • Unified reporting management via dashboard.

Automation of promotional windows with timed discounts

In order to offer targeted promotions at certain times of the year or according to business strategies, a plugin has been developed to automatically enable and disable promotional windows. The system allows:

  • Define time intervals of validity for each promo
  • Apply specific discounts on certain courses or time slots
  • Show dynamic promotional badges in the UI based on the active status of the promo

Everything is manageable from the backend via a dedicated interface, allowing campaigns to be scheduled in advance without daily manual intervention. The system is seamlessly integrated with slot logic and availability, avoiding conflicts or overlaps.

Automatic removal of unconfirmed orders to free up availability

To optimize slot occupancy and reduce “ghost” bookings, a module was developed that monitors pending orders and automatically cancels them after a predetermined time. This logic:

  • Avoids blocking of slots by unfinalized orders
  • Updates real-time availability by making vacated slots immediately accessible
  • Is configurable from the backend, with the ability to define different intervals by day or course type

The result is a more efficient system that minimizes unnecessary reservations and maximizes real availability for users.

Manual appointment entry directly in the studio

To meet the day-to-day operational needs of the lab, a feature was developed that allowsmanual entry of appointments by staff directly from the WordPress backend. When a client shows up at the studio without having booked online, the operator can access the administrative area, select the desired course and slot, and create a booking in real time. The interface has been optimized to speed up the registration process, with quick selection of the client (including anonymous), indication of the payment method, and automatic generation of the corresponding WooCommerce order, marked as “paid on site.”
At the technical level, the module interacts with the same internal APIs used for online bookings, ensuring consistency in updating availability and data integrity. Manually entered reservations follow the same cross-product synchronization rules and are tracked in the dashboard for unified appointment management. Provision has also been made to distinguish, via custom metadata, staff-entered reservations versus user-generated reservations, facilitating analysis and reporting.

Design and UX

Each element was designed and coded to provide smooth navigation consistent with the brand identity. User interfaces were carefully curated, with targeted interventions on:

  • Management of the status of available slots (exhausted, running low, available)
  • Tooltips, visual feedback, and contextual call-to-actions
  • Minimized booking flow, with no superfluous pages
  • Full responsive design for mobile and tablet.

The final result

The website is not just a digital storefront, but a management system in its own right. The laboratory now has a tool that allows it to:

  • sell courses easily and efficiently
  • Independently manage availability, discounts, coupons and communications
  • Optimize the user experience with guided and intelligent flows
  • Monitor sales and reservations with centralized tools.

A project that combines advanced development, deep customization, and user experience curation into a single digital ecosystem.

Random image
Random image

What's New: Google Premier Partners 2025 Awarded!

We fall within the top 3% of the best performing agencies in Italy 🚀