---
title: La Marie Beauty — Unified WooCommerce Checkout
type: article
created: '2025-11-11'
updated: '2025-11-11'
source_docs:
- raw/2025-11-11-la-marie-beauty-project-call-100818942.md
tags:
- woocommerce
- bookly
- square
- payment-tokenization
- api-integration
- checkout
- la-marie-beauty
layer: 2
client_source: null
industry_context: null
transferable: true
---

# 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 [[clients/la-marie-beauty/_index|La Marie Beauty]] 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: [[knowledge/architecture/woocommerce-bookly-square-stack|WooCommerce + Bookly + Square Stack]]

---

## 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

- [[clients/la-marie-beauty/_index|La Marie Beauty Client Overview]]
- [[meetings/2025-11-11-la-marie-beauty-project-call|La Marie Beauty Project Call — 2025-11-11]]
- [[knowledge/woocommerce/bookly-woocommerce-integration|Bookly + WooCommerce Integration Notes]]
- [[knowledge/architecture/woocommerce-bookly-square-stack|WooCommerce + Bookly + Square Stack]]
- [[knowledge/scope/service-page-variant-scope-conflict|Service Page Variant Scope Conflict — La Marie Beauty]]