Back to Furniture Fiesta RSVP Internal · noindex
Changelog

Furniture Fiesta · Site updates

A rolling log of every visible update to the /furniturecity lead-gen page. Group lead: Zelix Labs.

29 May 2026 v0.12 Live social proof: scarcity bar + floating RSVP notices

📞 Forms & Conversion

  • Added🔥 Free-gift scarcity bar above the form. A cream chip with a mustard fill bar (Free gift spots filling up · 22 left) now sits directly above the hero RSVP card, themed to the site palette with the crimson count drawing the eye. The count starts at 22 of 60 spots and ticks down slowly over the session (one every 30 to 70 seconds), floored at 7 so it never reads "sold out" and stalls RSVPs. The bar fill animates, the number pops on each tick, and the remaining count persists in sessionStorage so it feels continuous across page views. Simulated scarcity, signed off by the team.
  • AddedFloating "just RSVP'd" social-proof toasts. Notices like Priya S. just RSVP'd · 1pm and Linda K. reserved the recliner! fade in from the bottom-left on a gentle cadence (first at ~6s, then every 12 to 20s, auto-dismiss after ~5s). Styled as dark-brown cards with cream text (no side accent stripe) to sit cohesively against the cream canvas. They rotate a long list of Singaporean first names across nine action variants. Pauses when the tab is hidden and stops entirely once a real RSVP succeeds. The container is aria-hidden so screen readers aren't fed simulated names.

🛠️ Technical

  • AddedReduced-motion + layering hygiene. Both elements respect prefers-reduced-motion (no shimmer, slide, or pop). Toasts sit at z-index 45 (below the sticky CTA and tour overlay) and lift to bottom:78px on phones so they clear the full-width sticky RSVP bar.
24 May 2026 v0.11 Canonical + asset URLs migrated to fiesta.furniturecity.sg

🤖 SEO/AEO/GEO

  • FixedOG / Twitter / Schema.org image links 404'd on production. Every absolute URL in <head> still pointed at https://www.zelixlabs.com/furniturecity/... from the original sub-path deploy plan, but the live site is now standalone at https://fiesta.furniturecity.sg/. Social link previews were silently fetching the share card from a domain that doesn't host it, so WhatsApp / FB / X were either falling back to the old image or rendering a blank card.
  • UpdatedCanonical URL. /, /changelog/, and /tour/ canonicals now point at https://fiesta.furniturecity.sg/{path}. Index, og:url, schema.org offer URL all aligned.

🛠️ Technical

  • FixedFavicon paths broken at the root domain. Links were path-prefixed (/furniturecity/img/favicon.png) for the sub-path deploy. On fiesta.furniturecity.sg that resolves to /furniturecity/img/... → 404. All three pages now use root-relative /img/favicon.png et al.
  • FixedInternal nav links in /changelog/ and /tour/. "Back to RSVP", "Start the walkthrough", and the inter-page changelog link were all prefixed /furniturecity/... and 404'd on the new domain. Switched to root-relative paths.
  • RemovedDead LCP preload. <link rel="preload"> was warming FCLAB_Main_Banner_720w.webp for an in-card image that no longer exists on the page (the form card has no hero thumbnail in v0.2+). The preload was a wasted byte at every page load.
24 May 2026 v0.10 Favicon: three-card brand mark in browser tabs

🎨 Visual

  • AddedFavicon set across all three pages. Three-card icon mark (teal sofa, mustard bed, crimson stool) sourced from the FCL brand kit, cropped tighter so the cards read at 16-32px tab sizes. favicon-32.png (32×32), favicon.png (512×512 master), apple-touch-icon.png (180×180). Wired into /furniturecity/, /changelog/, and /tour/.
24 May 2026 v0.9 Bigger top-bar logo, new OG share card

🎨 Visual

  • UpdatedTop-bar wordmark scaled 2x. Logo height 30→60px desktop, 26→52px tablet, 24→44px phone. Bar feels more brand-forward; reads cleanly against the cream canvas without crowding the WhatsApp pill.

🤖 SEO/AEO/GEO

  • UpdatedOG + Twitter share image. Swapped FCLAB_Main_Banner.png for purpose-built img/FCLAB_OG_Share.jpg (1200×630, 83KB). Composition: wordmark top, dining-set hero left, three-line headline right with mustard "Free door gift" highlight and the same Apple-style sub. Reads cleanly in WhatsApp, Facebook, and X link previews.
  • UpdatedSchema.org SaleEvent image. Now points at the new share card so Google's event-result rich snippets pull the on-brand poster.
  • RemovedPre-launch TODO about banner re-render. The OG concern is resolved by the dedicated share card; the inline launch checklist now only flags GTM_ID.
24 May 2026 v0.8 Full Furniture City wordmark in bar and footer

🎨 Visual

  • UpdatedTop-bar logo: icons + duplicate text to full wordmark. Swapped the cropped 3-icon mark plus the hand-set "Furniture City / Labrador, Singapore" text block for the official horizontal wordmark (icons + FURNITURE CITY type). Height 30px desktop, 26px tablet, 24px phone. The dropped subtitle reappears in the event-meta strip and the footer copyright.
  • AddedWordmark in the footer. 24px tall (22px on phones), 70% opacity → 100% on hover, leading the row before the copyright and legal links. On phones the footer stacks centered so the mark sits on top.
  • Addedimg/FCLAB_Wordmark.png + WebP. 1400×250 master (5.6:1), q82 lossless WebP at 20KB. White-text variant FCLAB_Wordmark_white also banked in img/ for any future dark-background placement (form card, success state).
23 May 2026 v0.7 RSVP form: day + 2-hour slot replace guest count

📞 Forms & Conversion

  • AddedPreferred day picker. 2-card grid: Saturday 6 June and Sunday 7 June. Mustard fill on selection, weekday name above the date stamp. Matches the existing emoji-card visual language.
  • AddedPreferred 2-hour time slot picker. Five options from 11:30am-1:30pm through 7:30pm-9:30pm. 2-col grid with the fifth slot spanning both columns for balance. Tabular numerals so the time labels line up; white-space:nowrap on the slot text so no slot ever wraps mid-time.
  • RemovedGroup-size question. Net field count stays manageable (Name · Phone · Day · Time = 4) and the new fields are higher-signal for FCL staff rostering than headcount.
  • UpdatedValidation + dataLayer event. Replaced getGuests() with a generic getRadio(name) + per-group error wiring. rsvp_submit now reports rsvp_day + rsvp_time instead of rsvp_guests.

🛠️ Technical

  • UpdatedApps Script schema. RSVPs tab now writes Submitted at · Name · Phone · Preferred day · Preferred time · Page URL · Referrer · User agent (8 cols, was 7). Existing RSVPs tab needs to be deleted and re-provisioned via setup(), or the header row updated by hand.
  • UpdatedWalkthrough tour stop 5. Was "Guest size as cards"; now "Day + time slot as visual cards", spotlighting .time-grid.
23 May 2026 v0.6 Fiesta 2.0 · weekend, six promos, Sheet intake

📅 Schedule

  • UpdatedEvent moves to Sat-Sun 6-7 June 2026. Two-day weekend event, doors 11:30am to 9pm both days. Hero eyebrow, headline ("One weekend"), event meta strip, countdown target (2026-06-06T11:30:00+08:00), Why-attend heading, Weekend-only deals eyebrow, location meta, final CTA, and all four prefilled WhatsApp messages all carry the new dates.
  • UpdatedSchema.org SaleEvent. name bumped to "Furniture City Fiesta 2.0", startDate / endDate span both days, description rewritten as "two-day factory-direct furniture weekend", validFrom moved to 1 May.
  • UpdatedPage metadata. <title>, meta description, Open Graph and Twitter cards all reference 6-7 June. Banner artwork (img/FCLAB_Main_Banner.png) still carries the v1 date burned in. Flagged for re-render before push.

🛍️ Promos

  • UpdatedDeals grid: four cards to six. 4 Rozel + 2 X'Clusive Home, ordered $10 → $399 → $499 → $499 → $699 → $699 to lead with the strongest hook. Wide-viewport layout switches from repeat(4, 1fr) to repeat(3, 1fr) for clean 2-row reading; tablet 2 cols and mobile 1 col unchanged.
  • AddedRozel dining table + 4 free chairs ($399). Crimson tag, RZ branded card.
  • AddedRozel cooling mattress + storage bedframe ($699). Teal tag, RZ branded card.
  • AddedRozel leather recliner sofa ($699). Teal tag, RZ branded card.
  • AddedX'Clusive Musterring mattress ($499). Crimson tag, brand block.
  • UpdatedX'Clusive recliner sofa now $499. Was $699, re-shot artwork, mustard tag.
  • RemovedX'Clusive Dormiflex 30-day mattress trial card. Not part of the v2 promo set.
  • UpdatedAsset bundle. Six fresh promo PNGs from Thernissa, resized to 1200px and WebP-encoded at q82 (25-70KB each). Filenames simplified to RZ_Chair / RZ_Table / RZ_Mattress / RZ_Sofa / XH_Sofa / XH_Mattress with PNG + WebP pairs. Eight orphan promo files removed.

🎬 Video

  • UpdatedNew showroom reel. Final-cut FC_Fiesta_V1_FA, 1080×1350 (4:5 portrait), 41s. Re-encoded from 47MB H.264 source to 17MB CRF 25 with +faststart. Reel container aspect-ratio switched from 9:16 to 4:5 to match the source crop without losing edges. Reel width nudged 320→360 desktop, mobile max 380→420.

📞 Forms & Conversion

  • UpdatedRSVP intake: Web3Forms to Google Apps Script. Form now POSTs to a deployed Apps Script web app that appends each submission to Thernissa's "Furniture Fiesta 2.0 - RSVP" Google Sheet directly. text/plain Content-Type bypasses the CORS preflight that Apps Script doesn't answer to. WhatsApp fallback path preserved on network error.
  • Addedapps-script.gs in the project root. Self-contained doPost handler bound to the sheet, including a setup() function that auto-provisions the RSVPs tab with a frozen, bold header row. Inline deployment notes (Extensions → Apps Script → Deploy as web app).
7 May 2026 v0.5 Countdown, confetti, pull-quote, picker out

🎨 Visual

  • AddedEvent countdown band. Dark crimson section between hero and Why-attend with mustard tabular numbers ticking to 2026-05-16T11:30:00+08:00. Grid of four cells (Days · Hours · Mins · Secs); flips to "Doors are open" when the timer hits zero.
  • AddedPull-quote card. Third column on the testimonial section pulling the burned-in line from the reel ("I will definitely recommend.") with a generic 2024-attendee attribution. Fills the right-side dead space on wide viewports; stacks below the meta on mobile.

🎉 Delight

  • AddedPage-load confetti. Three-shot celebration burst fires ~700ms after load, once per browser session (sessionStorage flag prevents re-fire on refresh). Brand palette: crimson, mustard, teal, gold, cream.
  • AddedRSVP-click explosion. Mustard CTA click fires a 3-shot burst (180 + 80 + 80 particles) anchored to the button's screen position. Runs before validation so every click feels rewarded.
  • Addedcanvas-confetti via jsDelivr with SHA-384 SRI. defer + integrity hash, no-op if the CDN is unreachable. Honours prefers-reduced-motion.

🔒 Hygiene

  • RemovedFloating font picker. FCL chose Familjen Grotesk; the picker has done its job. Dropped the corner UI, the ?nopicker flag, the localStorage hook, and the unused Google Fonts (Bricolage Grotesque · Outfit · Manrope · Hanken Grotesk · Geist). Added a one-time localStorage.removeItem('fcl-font') so prior team picks fall back to the new default.
7 May 2026 v0.4 Walkthrough tour and Familjen lock-in

🛠️ Technical

  • AddedInteractive walkthrough. 8-step spotlight tour covering form-on-fold, headline, trust pillars, guest cards, pulsating CTA, and sticky bar. Each step has a short body and a "Why" explainer line. Activate with ?tour=1.
  • AddedTour entry page. /furniturecity/tour/ is a noindex internal landing with a stop-list and a "Start the walkthrough" button. Not linked from any public surface.
  • AddedKeyboard control. Arrow keys and Space advance the tour, Escape closes. Animations honour prefers-reduced-motion.

🎨 Visual

  • UpdatedDefault font: Familjen Grotesk. FCL chose Familjen Grotesk after previewing the picker options. Switched the :root defaults and the picker badge. Other faces remain available via the picker.
7 May 2026 v0.3 Type rollback and font picker

🎨 Visual

  • RemovedFraunces. Rolled back the v0.2 display face. New default is Bricolage Grotesque: friendly modern grotesque, single-typeface system across body and display.
  • UpdatedCSS variable type system. All font-family declarations now read from --font-display and --font-body, set on :root. Switching faces no longer requires touching individual rules.

🛠️ Technical

  • AddedFloating font picker. Top-right pill (top of viewport on desktop, above the sticky bar on mobile) opens a 6-option panel: Bricolage Grotesque · Outfit · Manrope · Hanken Grotesk · Familjen Grotesk · Geist. Each option previews in its own face. Selection persists in localStorage.
  • Added?nopicker flag. Append to the URL to hide the picker entirely (clean screenshots, production lock once a font is chosen).

📞 Forms & Conversion

  • UpdatedCouple emoji. Swapped 💑 for 👫 on the guest-size card to keep gender pairing explicit.
7 May 2026 v0.2 Brand and copy polish

🎨 Visual

  • UpdatedFriendlier type system. Anton swapped for Fraunces (soft optical, weight 700) on display, DM Sans swapped for Plus Jakarta Sans on body. Warmer, family-feel, distinct from /peak360.
  • FixedTop-bar logo readability. Cropped logo to icons-only (460×285 → 18KB WebP) and rebuilt the wordmark in dark Fraunces ink so it reads cleanly on the cream canvas.

📝 Content

  • UpdatedApple-style copy throughout. Hero, why-attend, deals, testimonials, location, and final CTA rewritten for hammer-blow brevity. Cut every "thanks you on Saturday" and similar AI prose.
  • UpdatedHeadline typography. Mixed-case Fraunces serif replaces uppercase Anton. Mustard underline highlight retained on "Free door gift".

📞 Forms & Conversion

  • AddedEmoji guest cards. Group size dropdown replaced with a 4-up radio card grid (🙋 Just me · 💑 Couple · 👨‍👩‍👧 Family of 3 · 🎉 4 or more). Mustard fill on selection.
  • AddedPulsating CTA with gift emoji. Primary "🎁 RSVP & Claim My Free Gift" button now runs a 2.4s outer-glow pulse plus a small emoji wiggle. Animation pauses on hover, on disabled state, and respects prefers-reduced-motion.
7 May 2026 v0.1 Initial launch

🚀 Launch

  • AddedHero-fold RSVP form. Form now sits in the first viewport (right column on desktop, stacked above the trust strip on mobile) so paid traffic converts before any scroll.
  • AddedThree-pillar trust strip. Free door gift, stock-loaded delivery, factory-direct pricing. Lifted from the source Shopify page and condensed into 12-word reads.

📞 Forms & Conversion

  • AddedWeb3Forms lead capture. Submission posts to a Web3Forms inbox, then opens a prefilled WhatsApp thread to +65 8913 1159 for instant confirmation.
  • AddedSingapore phone validation. Country-aware regex blocks bad numbers before submit. Country selector defaults to SG with 6 fallback codes.
  • AddedSticky mobile RSVP bar. Pinned bottom bar on screens under 880px keeps the CTA in reach on long scrolls.

🎨 Visual

  • AddedBrand-led palette. Cream canvas + crimson form card + teal/mustard accents, sampled from the FCL banner and logo icons.
  • AddedAnton + DM Sans pairing. Anton handles party-poster headlines to mirror the live banner aesthetic; DM Sans for body.
  • AddedLocal asset bundle. All 8 product images converted to WebP (with PNG/JPG fallback via <picture>), 1200w and 720w hero banner srcset, testimonial video re-encoded from 45MB to 14MB.

🤖 SEO/AEO/GEO

  • AddedSchema.org SaleEvent JSON-LD. Full address, start/end times, organizer, free-entry offer.
  • AddedOpen Graph + Twitter Card. Pointing at the FCL main banner so WhatsApp link previews look like the real Fiesta poster.

🛠️ Technical

  • AddedGTM dataLayer hooks. Container ID is empty by default. rsvp_submit and cta_click events fire whether GTM is wired or not, so a future container picks them up retroactively.
  • AddedLCP preload + font preconnect. 720w hero banner and Google Fonts both preconnected to keep first paint under target.