The problem
Event, hotel and pricing data lived in HubSpot, but the website needed a page for every event and an offer for every hotel, and bookings had to flow back into the CRM.
Copying data into WordPress by hand would mean two versions of the truth and pages going stale the moment a price changed. On top of that, bookings needed real payment logic: deposits, remaining balances, booking windows and cancellation deadlines.
What I built
HubSpot data model
Custom objects for events, convention centres, hotels, suppliers, pricing and bookings, with a booking parent and booking-room children.
WordPress publisher plugin
Turns HubSpot records into event pages and hotel offers using content contracts, conditional sections and modals.
Readiness validation
Pre-flight checks block publishing when required data is missing, so visitors never see a half-built page.
Media diagnostics
Hotel image naming rules, galleries and image-quality checks inside the admin.
Booking layer
WooCommerce hotel selection, booking snapshots, deposits, remaining balance, cancellation deadlines, booking windows and payment states via Stripe.
Controlled write-back
Orders and group inquiries written back to HubSpot on purpose, not through a blind two-way sync.
Key decisions
- Decision 1HubSpot owns the data
WordPress only presents. Editors change a price once, in HubSpot, and the site follows.
- Decision 2Validate before publishing
A page is generated only when its record passes the readiness checks.
- Decision 3Snapshot every booking
The booking keeps the price and terms it was made with, even if HubSpot changes later.
- Decision 4Versioned patches, no staging
With no staging site available, every fix shipped as a small, versioned patch with a way back.
Where it stands
The platform is live. Event pages and hotel offers are generated from HubSpot, and bookings run through WooCommerce and Stripe and are written back to the CRM.
Problems solved along the way include Stripe checkout loading issues and WooCommerce AJAX failures. Some publisher and booking behaviour is still being refined; I don't have production metrics to publish yet, so this page makes no claims about volume.
Stack
Event hotel booking platform● Rev. 2026
- CMS
- WordPress, custom publisher plugin
- Commerce
- WooCommerce, Stripe
- CRM
- HubSpot API, custom objects and associations
- Language
- PHP, JavaScript
- My role
- Architecture, WordPress development, HubSpot integration, sync, booking flows, troubleshooting
More case studies
- PHP · MySQL · Zoho CRM
Pickup portal on Zoho CRM
A standalone, offline-first PHP app on Zoho CRM, built to serve 12 nursery branches and 1,640 students.
Read the case study - OpenAI · MCP · HubSpot
B2B lead intelligence pipeline
OpenAI drives a licensed data provider through MCP; approved contacts land in HubSpot. 296,000 records processed.
Read the case study - Security · Linux · WordPress
Compromised hosting account
An hourly cron job running encoded shell commands, hidden WordPress persistence, and a clean recovery.
Read the case study