Westfold* Innovations · internal demo write-up
Everything that was designed, written, engineered, wired, and tested for one offer — from the ad click to the booked call to the 24-hour prototype promise. The same machine exists for 16 more offers; this is the flagship.
The offer The landing page A/B variants The application funnel Tracking Lead data The ad campaigns Quality & testing To launch
01 · The offer
The funnel sells a single, sharp deal: book one call, brief us on your app idea, and within 24 hours a working prototype is in your inbox — free. Payment only enters the conversation after the prospect has seen their own idea running. The full MVP then ships in weeks on a fixed quote, with the client owning the code outright.
Structurally this is a classic risk-reversal offer: the prototype replaces the proposal, the guarantee replaces the pitch, and the call is the only door — there is deliberately no email link, no direct calendar link, no contact form anywhere on the page. Every path leads through the application.
02 · The landing page
Live at westfold-funnels.vercel.app/buildmymvp. The design system is modeled on risebookings.com: near-black ground (#0A0A0A), Archivo 900 headlines with the key phrase underlined in emerald, Hanken Grotesk body, pill CTAs, uppercase tracked-out eyebrows, and cards on hairline borders.
Section by section, top to bottom — each one exists to advance exactly one belief:
03 · A/B variants
Ads choose the variant by URL — each is a fully static page (fast, zero flash), canonicalized to the base page, and the variant number follows the visitor all the way into the stored lead and the ad-platform events, so win-rates are measurable end to end.
| variant | headline | url |
|---|---|---|
| v1 | Your app, prototyped in 24 hours. | /buildmymvp |
| v2 | See your MVP before you spend a dollar. | /buildmymvp/v/2 |
| v3 | Stop pitching a deck. Start demoing a product. | /buildmymvp/v/3 |
04 · The application funnel
ad click (utm + click-id) → /buildmymvp (or /v/2, /v/3)
↓ every CTA on the page
/buildmymvp/start
step 1 what are you building? — project type + the idea, in their words
step 2 rough budget + timeline (chips, zero typing)
step 3 name · email · company · phone → lead captured here
step 4 mandatory booking — Calendly embedded in the page, prefilled
↓ fires only on Calendly's real event_scheduled signal
“Your 24-hour clock is set.” — confirmation with the 3-step what-happens-nextDesign decisions that matter: the lead is captured before the booking step, so a prospect who stalls at the calendar is still a lead you can chase. The booking is prefilled with their name and email. The confirmation state only triggers on Calendly’s own event_scheduled message — so the “Schedule” conversion means an actual booked call, not a hopeful click. And there is no skip link, no “or email us instead,” no secondary path anywhere.
05 · Tracking & attribution
| moment | meta | ||
|---|---|---|---|
| Page view | PageView (pixel) | GA4 Enhanced Measurement | PageVisit |
| Offer viewed | ViewContent + variant | view_item | ViewContent |
| Brief submitted | Lead — pixel and server (Conversions API), deduped by a shared event ID | Ads conversion + Enhanced Conversions (hashed email) | Lead — pixel + CAPI v3, deduped |
| Call booked | Schedule — pixel + server beacon with match data | booking conversion | Custom: Schedule |
Under the hood: first- and last-touch UTMs and click IDs (fbclid, gclid, rdt_cid) are captured on landing and stored with the lead; Meta’s _fbc cookie is synthesized even when the pixel is blocked; the server-side Conversions API calls carry hashed email/phone/name plus IP and user-agent for match quality; and the same event ID travels through the browser pixel, the server event, and Google’s transaction_id so nothing double-counts. All of it is env-gated — the moment the pixel keys are added, every channel lights up.
06 · Lead data & operations
/admin (basic-auth) shows every lead with per-offer and per-source breakdowns, plus a one-click Excel-safe CSV export.07 · The ad campaigns
Meta (priority 1). One script call creates: campaign WF | buildmymvp | Meta | Leads → two ad sets (Advantage+ broad, and a founder-interest stack resolved live against Meta’s API) → three ads each, with ad #3 automatically pointed at hero variant /v/2 so copy testing starts on day one. Everything arrives paused, optimizing on the pixel Lead event. Sample creative:
Your app, prototyped in 24 hours
“Book one call, tell us your app idea — and within 24 hours you’re looking at a working prototype. Free, before you pay anything. Like it? We build the full MVP in weeks. That’s the whole pitch.”
Google (priority 2). Generated Ads Editor CSVs — importable without a developer token — with two ad groups (mvp development: 8 commercial keywords; build my app idea: 6 intent keywords, each in phrase + exact), a 17-term negative list (jobs, courses, free-seekers…), and a 12-headline responsive search ad (“App Prototype in 24 Hours”, “See Your MVP Before You Pay”, “Prototype First, Pay After”…), all within character limits, verified by an automated validator.
Reddit (priority 3). Campaign script targeting r/startups, r/Entrepreneur, r/SaaS, r/sideproject, r/smallbusiness with plain-spoken promoted posts (“Agencies send proposals. We send a working prototype within 24 hours. $0 upfront.”).
Every URL in every channel carries the same convention — utm_campaign=wf_buildmymvp_{channel}_leads, utm_content={adset}_{ad} — so the admin dashboard and the platform reports reconcile line for line. The creation scripts refuse to run if the landing domain isn’t live, and every object is created paused: nothing can spend by accident.
08 · Quality & testing
The system behind this funnel went through three adversarial audit rounds (~95 findings found and fixed — from a dead Meta API version to CSV-injection hardening to silent tracking double-counts). The buildmymvp funnel specifically was then driven end-to-end in a real browser: an ad-style URL with click IDs → variant landing → attribution captured → all form steps → the stored lead verified to contain the variant, the exact ad, and every click ID → the embedded booking → the Schedule conversion firing on the real booking signal. Accessibility scans return zero violations on the application page.
09 · What remains to go live
The operational commitment that powers it all: every booked call starts a free 24-hour prototype clock. That promise is the funnel’s engine — capacity should be budgeted per day of booked calls before spend scales.