Skip to content
← All projects

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

Booking Details page with Villa Sampaguita selected, dates and guest count set, and the BAHAY10 promo code applied showing a discounted total
Villa selected, dates and guests set, BAHAY10 applied — the live pricing summary updates in real time.

Step 2 · Guest Details

Guest Details step — a native GHL form collecting first name, last name, phone, email, and a guest note, with the reservation summary alongside
The native GHL form — First Name, Last Name, Phone, Email, and a guest note.

Step 3 · Demo Payment

Demo Payment step showing a card-entry form with GCash and Maya options, a portfolio-demo disclaimer, and the recalculated stay total with BAHAY10 applied
A demo checkout — Card, GCash, or Maya — labelled plainly as a portfolio demo. No real payment is processed.

Step 4 · Confirmation

Confirmation page reading Your Stay Is Confirmed, badged Booking Confirmed! - Demo Booking - No Real Payment, with a full booking summary and demo booking reference
“Booking Confirmed! — Demo Booking — No Real Payment,” with the full booking summary and a demo reference number.
VillaRate

Villa Sampaguita

The Romantic Escape

₱8,500/night

Villa Narra

The Family Retreat

₱11,000/night

Villa Amihan

The Signature Stay

₱14,500/night

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

GoHighLevel Opportunities board for the Bahay Liwanag Reservations pipeline, showing six stages
The real GHL Opportunities board — 6 configured stages, captured directly from the account.

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

GoHighLevel workflow canvas for Bahay Liwanag - Life Cycle, showing the form-submitted default path and three stage-changed email branches
The published Life Cycle workflow — one default path, three independent stage-triggered branches.

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

Bahay Liwanag lead-generation popup offering 10% off a first stay, with First Name and Email fields
The live popup — shown after a scroll/time trigger, suppressed after one view.

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

GoHighLevel workflow canvas for BL - 10% Off Lead Welcome, showing Form Submitted, Add Tag, and Send Email nodes, with the Draft/Publish toggle set to Draft
Form Submitted → Add Tag → Send Email → END — the Draft/Publish toggle (top right) confirms it isn’t published yet.

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

Booking Confirmation email showing reservation details merged from contact fields
Sent when an Opportunity moves to Booking Confirmed.

Pre-Arrival

Pre-Arrival email reminding the guest of their upcoming stay details
Sent when an Opportunity moves to Ready for Check-In.

Thank You

Thank You email sent after a guest's stay is marked completed
Sent when an Opportunity moves to Stay Completed.

10% Off Welcome

10% Off Welcome email delivering the BAHAY10 promo code to a new lead
Sent by the lead-welcome workflow — currently in Draft (see Lead Generation).

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.

HTML / CSS / JavaScriptLocalStorage (booking-state persistence)GoHighLevel — FunnelsGoHighLevel — FormsGoHighLevel — CRM / OpportunitiesGoHighLevel — WorkflowsGoHighLevel — Custom FieldsGoHighLevel — Email BuilderGitHubGitHub Pages

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.