Case study
Bahay Liwanag
A boutique-resort booking experience connected to a real GoHighLevel CRM — a reservation pipeline, a published lifecycle-automation workflow, lead capture, and four branded guest emails. Built, connected, and tested end to end.
- Role
- Web Development + GHL Automation
- Platform
- GoHighLevel + GitHub Pages
- Type
- Portfolio / Concept Project
01
The Challenge
A booking page that looks good but goes nowhere isn’t a booking system — it’s a brochure. The goal was to design a polished, villa-by-villa booking experience and connect every submission to a structured reservation pipeline and CRM, so a guest inquiry becomes a trackable record, not an email that gets lost. And at each real moment in the stay — confirmed, about to arrive, checked out — the guest needed the right message, sent without someone having to remember to write it.
02
What I Built
Three layers, working together: a custom booking interface with villa selection, dynamic pricing, and promo-code handling; a native GoHighLevel CRM record for every reservation; and an automation layer that reacts to the guest’s progress through the stay.
Web experience
- ·Villa selection
- ·Dynamic pricing
- ·Date + guest selection
- ·Promo code handling
- ·Responsive booking flow
CRM
- ·GHL reservation form
- ·Contact custom fields
- ·Opportunity pipeline (6 stages)
- ·One Contact + Opportunity per booking
Automation
- ·Lead capture + tagging
- ·10% off welcome email
- ·Booking confirmation email
- ·Pre-arrival email
- ·Post-stay thank-you email
03
Booking Flow
Four steps, one purpose each. The guest picks a villa, dates, and guest count; submits their details through the native GHL form; passes through a demo payment step; and lands on a confirmation page. Reservation data — villa, dates, guests, promo code, running total — persists in the browser across all four steps, so nothing has to be re-entered.
Step 1 · Booking Details

Step 2 · Guest Details

Step 3 · Demo Payment

Step 4 · Confirmation

| Villa | Rate | Capacity |
|---|---|---|
Villa Sampaguita The Romantic Escape | ₱8,500/night | Sleeps up to 3 · 2 guests included |
Villa Narra The Family Retreat | ₱11,000/night | Sleeps up to 5 · 4 guests included |
Villa Amihan The Signature Stay | ₱14,500/night | Sleeps up to 3 · 2 guests included |
Pricing handles nights, base villa rate, included guests, extra-guest charges, subtotal, the BAHAY10 promo discount, and the final total.
04
CRM & Automation
Submitting the booking form creates the guest as a Contact and the reservation as an Opportunity in the Bahay Liwanag Reservations pipeline. As staff move that Opportunity through its stages, the connected workflow reacts — sending the right email at the right moment, with real reservation details merged in.
Bahay Liwanag Reservations — Pipeline

Stage 1
New Reservation
Stage 2
Booking Confirmed
Stage 3
Awaiting Payment
Stage 4
Ready for Check-In
Stage 5
Stay Completed
Stage 6
Cancelled
Cancelled is a real, configured pipeline stage — not just an opportunity status — confirmed directly in the pipeline’s stage settings.
Bahay Liwanag - Life Cycle Workflow

Default path: Form Submitted → Create Reservation Opportunity.
Three independent branches fire only when staff change the Opportunity’s stage: Booking Confirmed → confirmation email · Ready for Check-In → pre-arrival email · Stay Completed → thank-you email.
05
Automation Philosophy
The system does not decide when a reservation should become confirmed, ready for check-in, or completed — those stay human-controlled operational decisions. What’s automated is the repetitive communication that follows each decision. That split is deliberate: it automates the part that’s tedious and error-prone to do by hand, and leaves the part that still needs judgment to a person.
Human
Booking is confirmed.
Automation
Send booking confirmation email.
Human
Guest is ready for check-in.
Automation
Send pre-arrival information.
Human
Stay is completed.
Automation
Send thank-you email.
This is thoughtful automation, not automated decision-making — the system never guesses whether a guest actually checked in or a payment actually cleared. It only reacts once a person says so.
06
Lead Generation
A tasteful on-site popup — cream background, forest green and terracotta accents, matching the site’s own design system — offers 10% off a first stay. It appears after a short delay or scroll depth (never on load), submits to a native GHL form, and won’t reappear once a visitor has seen it.
10% Off Lead Popup

Visitor sees the offer
Popup appears after ~5s or ~40% scroll — never on load
Submits email
Native GHL form embedded in the popup
GHL contact created
A Contact record is created from the submission
Lead tag applied
"BL - 10% Off Lead" tag added to the Contact
Welcome email sent
Delivers the BAHAY10 promo code
BL - 10% Off Lead Welcome Workflow

Current status — verified in GHL
The BL - 10% Off Lead Welcome workflow (Form Submitted → Add Tag → Send 10% Off Welcome Email → END) is built and has been test-run once. As of this writing it is still in Draftin GHL, not yet published — so real visitor submissions aren’t triggering the welcome email in production yet. Flagging that honestly rather than describing it as fully live.
07
Email Automation
Four branded HTML emails share one visual system — warm cream, deep forest green, terracotta accents, and editorial serif headings. The three reservation-lifecycle emails merge in real Contact fields, so every email reads as specific to that booking, not a generic template.
Booking Confirmation

Pre-Arrival

Thank You

10% Off Welcome

Verified merge tags (contact-level)
{{contact.first_name}}
{{contact.villa_name}}
{{contact.checkin_date}}
{{contact.check_out_date}}
{{contact.number_of_guests}}
{{contact.number_of_nights}}
{{contact.booking_total}}08
Testing & QA
The system was tested manually, end to end — not with an automated test suite. Real form submissions were pushed through the pipeline stage by stage, as staff would, and each resulting email was checked for correct data and correct trigger timing.
- 01Villa selection, pricing, and promo-code math across all three villas
- 02Date selection and guest-count controls, including extra-guest pricing
- 03Guest Details form and data persisting through to Confirmation
- 04GHL form submission → Contact + Opportunity created with fields populated
- 05Pipeline stage changed manually, as staff would, for each of the three stages
- 06Booking Confirmation, Pre-Arrival, and Thank You emails — merge tags resolved
- 07Lead popup trigger, suppression, and the 10% Off Welcome email
- 08Responsive layout on mobile for the booking flow and the lead popup
No automated test suite exists for this project — every item above was checked by hand. The lead-welcome path was verified working as a workflow, but since it’s still in Draft in GHL, it hasn’t yet been exercised by a real site visitor.
09
Tech Stack
The booking site itself is hand-built static HTML, CSS, and JavaScript, deployed on GitHub Pages — not a framework application. Next.js only renders this portfolio page, not Bahay Liwanag itself.
Explore more projects
Skills demonstrated: booking-flow UX, GoHighLevel funnel and form configuration, CRM/pipeline design, lifecycle workflow logic, branded responsive HTML email, lead capture, and hands-on end-to-end QA.