La Marie Beauty — Unified WooCommerce Checkout
Overview
During the La Marie Beauty project, engineer Ishak implemented a unified WooCommerce checkout that handles both physical product purchases and service appointment bookings in a single cart flow. This approach required custom logic to handle the pricing display, payment capture, and downstream sync to Square.
This article documents the implementation approach, open technical challenges, and integration requirements discovered during the [1] engagement.
Architecture
The confirmed tech stack for this project is:
| Layer | Tool | Role |
|---|---|---|
| Checkout | WooCommerce | Unified cart and payment capture |
| Scheduling | Bookly | Appointment booking UX and slot management |
| Calendar / CRM | Square | Staff availability source of truth |
Zapier has been fully removed from the architecture. All data flow between Bookly/WooCommerce and Square is handled via direct API integration.
See also: [2]
Unified Checkout Implementation
How It Works
Ishak implemented a custom solution that allows a single WooCommerce checkout session to contain both:
- A physical product (e.g., a skincare item) — charged immediately at full price
- A service appointment slot (booked via Bookly) — displayed with its price but with the subtotal set to zero
The zero-subtotal approach allows the customer to complete a real payment transaction for the product while simultaneously reserving the service slot without charging for it at checkout. The service price is shown for transparency, and staff understand that upsells or service charges may occur at the appointment.
"He was able to make it so you can see the price, but the subtotal is zero. So when it does come through into Square, there is that price there."
— Melissa Cusumano, project call 2025-11-11
Bookly Cart Add-On Conflict
When WooCommerce is active, the Bookly Cart add-on must be disabled to avoid conflicts between the two cart systems. Bookly is retained solely for its scheduling and UX capabilities; WooCommerce owns the checkout.
Open Technical Challenges
1. Payment Tokenization
Status: Under investigation
The unified checkout cannot currently save a customer's credit card for future charges. This is a gap because La Marie Beauty requires the ability to charge a card on file post-appointment (e.g., for no-shows or add-on services).
- WooCommerce delegates payment processing to a third-party gateway (Square in this case)
- Square natively supports card-on-file tokenization within its own ecosystem
- It is not yet confirmed whether WooCommerce + Square gateway can expose tokenization (save card for later) through a native plugin feature or whether a custom hook is required
Owner: Ishak
Next step: Investigate whether a native WooCommerce/Square plugin checkbox enables tokenization, or whether custom development is needed.
2. Bookly-to-Square API Sync Delay
Status: Under investigation
When a customer books an appointment through the WooCommerce/Bookly flow, that appointment must sync to Square (the staff calendar source of truth). There is a known default delay in this sync — potentially up to 15 minutes — which creates a double-booking risk if another customer books the same slot through the Square app directly during that window.
"I would be curious if it is on a default timer of 15 minutes or if we do have the ability to customize the webhook events... even something like a minute is perhaps better."
— Kimberly Gehrmann, project call 2025-11-11
Owner: Ishak
Next step: Determine whether the Bookly-to-Square API sync can be configured for near real-time updates (target: ~1 minute) via webhook or polling interval adjustment.
Square Integration Requirements
Because WooCommerce handles checkout, appointment and purchase data must be pushed back to Square to keep staff calendars and sales records accurate. This applies to both:
- Product purchases — already flowing to Square prior to this engagement
- Service bookings — new requirement; Ishak is implementing the API connection from Bookly/WooCommerce to Square
Square remains the source of truth for staff availability. Staff schedules are not being migrated to Bookly; Bookly reads availability from Square and writes confirmed bookings back to it.
Related Context
- The "pay cash on arrival" option in WooCommerce was removed; a credit card is always required at checkout
- Service order vs. product order display in the unified cart is still being finalized (Roxana to advise on preferred ordering)
- Ishak is to be invited to the next project call to present technical findings directly
Related Articles
- [3]
- [4]
- [5]
- [2]
- [6]
Sources
- Index|La Marie Beauty
- Woocommerce Bookly Square Stack|Woocommerce + Bookly + Square Stack
- Index|La Marie Beauty Client Overview
- 2025 11 11 La Marie Beauty Project Call|La Marie Beauty Project Call — 2025 11 11
- Bookly Woocommerce Integration|Bookly + Woocommerce Integration Notes
- Service Page Variant Scope Conflict|Service Page Variant Scope Conflict — La Marie Beauty