Announcement campaigns
Each announcement has a switch, like an alarm. Live ones take turns in the bar, and countdowns run to the second.
October 2026


Problem
A Joburg décor and party hire business with a WooCommerce store it never needed, and quotes and invoices still done by hand on WhatsApp.
Solution
A headless rebuild: a fast public site and a custom admin made only for Giggle Factory, covering content, gallery, quotes, invoices, deposits and social posts. No plugins.
Result
Live and growing. The owner edits the site and runs quoting and invoicing herself, and social posts are gaining traction. Measured results will follow at 90 days.
Giggle Factory styles birthdays, baby showers, bridal showers and office parties across Johannesburg: balloon backdrops, themed décor, party hire and catering. Most of their customers find them on social media, through photos of past events, and then message them on WhatsApp.
We built their first site in 2025 on WordPress and WooCommerce. It was a full online store with a product configurator and delivery zones. It was also the wrong tool. Giggle Factory doesn't sell stock. Every event is styled, hired or catered, and every price starts with a conversation about the date, the theme and the number of guests.
A store asks customers to add things to a cart. Giggle Factory's customers ask, "How much for 20 guests?" The store sat unused while quotes carried on over WhatsApp, and the owner, Amanda, was left maintaining software she didn't need.
WooCommerce was also hard to run day to day. A simple quote meant working around product listings, and an invoice lived somewhere else again. Every extra plugin added another update to keep on top of. Across WordPress as a whole, 91% of the new security vulnerabilities found in 2025 were in plugins, not in WordPress itself.
So we rebuilt it around how the business actually works.
Version two is a headless build: a public website, and a separate admin made only for Giggle Factory. Both read from one database. There are no plugins and no add-ons. Every feature is part of the system.
The public site is fast on mobile, where most of their visitors are. That matters, because Google found that the chance of a visitor leaving rises by 32% as a page's load time goes from one second to three. Every page leads to a WhatsApp chat, because that is still how Giggle Factory's customers prefer to book.
The admin replaces WordPress, WooCommerce and a spreadsheet. Amanda can:
Client links are private by design. Each quote and invoice opens on a long random address, so nobody can browse other clients' documents by guessing a number.
Most of Giggle Factory's leads come from social media, from photos of real events. So the gallery and the social scheduler matter more to this business than any homepage banner. Event photos go up once, tagged once, and feed both the website gallery and the week's posts.
Every enquiry also starts with the number of guests. The next stage of the build is a booking builder that starts from that question. A customer picks 10, 20, 30 or 50 guests, the chairs, plates, cutlery and tables fill in automatically, and the calendar shows which dates that basket fits. Stock is held for 48 hours when a quote is accepted, and released if the 50% deposit doesn't arrive.
This is where the project changed how Keno Sonic builds. Because the site's content and data live in a structured database rather than in plugin settings, changes are repeatable. An AI coding agent can make a change, test it against the real business rules and ship it the same way every time. The client can work with the agent of their choice, and routine jobs can run on a schedule.
That only works with guardrails. Every booking rule, such as never double-booking the last chairs or releasing an unpaid hold after 48 hours, is written down as an automated test that runs before any change goes live.
This is a live system, not a finished brochure. Next on the list:
We'll publish real numbers here once the new site has 90 days of data.
Before and after
Drag the handle. Same photo, two different businesses. The earlier site was a shop: DIY kits, a cart and a customer login. Today's site leads with the work and one way to start, a WhatsApp message.


The earlier site used a stock photo here that has since been taken down, so today's hero photo is shown in its place for a like-for-like comparison.
The details
Live recreations of real Giggle Factory screens. Switch campaigns on and off, filter the gallery, change the guest count, record a deposit.
Each announcement has a switch, like an alarm. Live ones take turns in the bar, and countdowns run to the second.
Photos are tagged once at upload. The filters only offer what exists, with counts, so they grow with the portfolio.





Showing 5 of 5 · real Giggle Factory photos, sample tags
Every enquiry starts with "how many guests?", so the basket fills itself from that answer and never offers more stock than exists.
In developmentFits current stock. The calendar would now show which dates this basket is free.
Accepting a quote holds the stock for 48 hours. The moment payments cover the 50% deposit, the booking confirms itself.
Sample invoice, not a real client
Build Journal
Quotes and invoices now open on unguessable links, and invoices track deposits and part-payments. Accepting a quote holds the hire stock for 48 hours.
Availability rules for chairs, tables and delivery slots now live in the database, with 24 automated tests covering the last chair, overlapping events and expired holds.
A whole event's photos upload in one go, already tagged. The gallery builds filters for occasion, theme, item and year from the tags in use.
Countdowns, booking cut-offs and scheduled holiday notices for the announcement bar, each with its own on/off switch.
More work
Browse case studies across industries and service types.