---
title: Technical Implementation Review — 2026-04-05
type: article
created: '2026-04-05'
updated: '2026-04-05'
source_docs:
- raw/2025-11-18-la-marie-beauty-project-call-102534050.md
tags:
- meeting
- la-marie-beauty
- wordpress
- woocommerce
- bookly
- square
- payments
- php
- javascript
- booking-system
layer: 2
client_source: LaMarie Beauty
industry_context: ecommerce
transferable: false
---

# Technical Implementation Review — 2026-04-05

## Overview

Technical call with Asymmetric team (Kimberly, Melissa) and developer Isahaque to clarify implementation details on the La Marie Beauty website. Four areas were covered: custom payment logic for mixed carts, Square-Bookly booking sync, Bookly widget customization scope, and the architecture of dynamic product pages.

**Attendees:**
- Kimberly Gehrmann (LMB-side technical lead / PM)
- Melissa Cusumano (Asymmetric)
- Isahaque Mahmud (Asymmetric — developer)
- Roxana Lopez (La Marie Beauty)
- Katie Schueller, Lisa Frommelt (La Marie Beauty — partial)
- Mark Hope, Chris Ostergaard (Asymmetric)

---

## Key Decisions

### 1. Custom PHP Required for Payment Logic

WooCommerce and Bookly cannot natively handle the mixed-cart payment requirement. A custom PHP solution is required because WordPress and WooCommerce expose backend integration points via PHP hooks — there is no equivalent JavaScript path for this layer.

**The requirement:**
- Products → charged in full at checkout
- Services → card held on file (not charged); charged post-service or for no-show/cancellation penalties

**The approach:**
- Custom PHP code using **Square APIs** for tokenization and card-on-file storage
- Square APIs are preferred over fully custom handling to preserve existing customer profiles and reduce PCI risk
- Isahaque will create the Square API key; no client-side action needed from LMB

> *"For all those type payment, we need to write some custom PHP code."* — Isahaque

> *"I want to reduce the risk of leaked credit card details. And also, Square has a profile of a customer."* — Kimberly

### 2. Square-Bookly Sync Is Instantaneous

Concern was raised about double-bookings when appointments are made simultaneously through the Square app and the LMB website (via Bookly). Isahaque confirmed the sync is **instantaneous via API** — no polling delay.

- A booking on either platform immediately updates the other
- Square will throw an error to the second booking if a conflict occurs
- Admin-side calendar changes in Square are also pushed to Bookly in real time

True simultaneous conflicts (two users booking the exact same slot at the exact same millisecond) are considered negligible in practice.

### 3. Bookly Widget Customization: Restyling Yes, New Functionality No

The Bookly widget's default UI (block buttons, generic icons, sidebar layout) clashes with the site's minimalist aesthetic. Customization is possible within limits:

| Allowed | Not Allowed |
|---|---|
| Replace or remove icons | Add new buttons or UI elements |
| Remove duplicate data fields (e.g., staff name shown twice) | Add new functionality |
| Restyle buttons, layout, colors to match site | — |
| Reposition sidebar elements | — |

Kimberly noted the widget currently feels "plug and play from Bookly" and does not match the bespoke button styles used elsewhere on the site.

**Blocker:** Lisa has not yet reviewed the Bookly flow. No CSS customization should proceed until Lisa gives design approval.

### 4. Dynamic Product Pages Use Custom JavaScript — Developer-Only Updates

Product pages (e.g., Vampire Facial) use a single URL with custom JavaScript that conditionally renders different images, text, and "Book Now" link targets depending on which variation button is selected.

```
if (button A selected) → render image A, text A, book-now link A
else if (button B selected) → render image B, text B, book-now link B
else → render image C, text C, book-now link C
```

This means **Roxana cannot self-serve updates** to these pages via standard WordPress editing. Any content change (new image, updated text, new variation) requires a developer modifying the JavaScript directly.

Kimberly flagged this as a significant maintenance concern and will review the code herself before determining the long-term strategy.

---

## Action Items

| Owner | Action | Status |
|---|---|---|
| **Isahaque** | Create Square API key for Bookly/WooCommerce/Square integration | 🔲 Open |
| **Isahaque** | Begin custom PHP development for service hold/charge payment logic; use Square APIs; notify Kimberly and Melissa if blocked | 🔲 Open |
| **Kimberly** | Schedule Bookly design review with Lisa; record Loom walkthrough of Bookly flow for reference | 🔲 Open |
| **Kimberly** | Review custom JavaScript on variation/product pages via Elementor to assess maintenance complexity | 🔲 Open |
| **Kimberly** | Email Melissa to reschedule next week's meeting (pending travel to Salt Lake City) | 🔲 Open |
| **Melissa** | Hold off on product page content updates until Kimberly completes code review | 🔲 Open |
| **Roxana** | No action items — reconnecting after Denver travel | — |

---

## Technical Notes

### Why PHP for Backend Payment Logic?

WordPress and WooCommerce expose customization points through a **hook system** that is PHP-native. Backend integrations with WooCommerce checkout flows must use these hooks. JavaScript is appropriate for frontend/UI behavior (as used on product variation pages) but cannot reach the WooCommerce/Bookly backend layer.

### Accessing the Custom JavaScript

The variation page JavaScript is embedded via **Elementor** templates, not standard WordPress pages. To locate it:
1. Navigate to the product page (e.g., Vampire Facial) from the staging site
2. Use "Edit with Elementor" (not "Customize")
3. Locate the custom JS block within the single product template

Kimberly has been granted WordPress admin access to the staging site to review the code. She has committed not to modify any code during this review phase.

---

## Open Questions / Risks

- **Bookly UI design approval** — blocked on Lisa review; no CSS work should proceed until resolved
- **Product page maintenance strategy** — custom JS makes client self-service impossible; long-term ownership (Asymmetric vs. LMB vs. Kimberly) not yet decided
- **Scope of product page updates** — what is in vs. out of scope for Asymmetric has not been finalized; pending conversation with Mark
- **Content readiness** — product/service spreadsheet has significant gaps; only Lisa and Roxana can fill it in, and both are currently capacity-constrained

---

## Related

- [[wiki/clients/current/lamarie/_index]]
- [[wiki/clients/current/lamarie/]] *(other LMB meeting notes)*