How to Get Better Kitchen and Bathroom Leads: Ad, Landing Page, Survey | QuoteLeads
Renovation Lead Gen · Funnels · Tracking · Tech Stack

How to get better kitchen and bathroom leads:
ad, landing page, survey.

Most bad renovation leads aren't a targeting problem. They're a capture problem. A one-tap form lets anyone through and tells you nothing: not the room, not the scope, not the budget. Here's the system we use to get quote-ready kitchen and bathroom leads instead: the ad, the landing page, a quiz-style survey, tracking that teaches Meta what a good lead looks like, and the exact tech stack and prompts to build it yourself.

In this guide
  1. Why most renovation leads are bad
  2. The system: ad, landing page, survey, CRM
  3. The ad
  4. Making the ad creative
  5. The landing page
  6. The survey: the 8 questions that filter tyre-kickers
  7. The optional photo upload
  8. Tracking: telling Meta you want better leads
  9. Campaign setup
  10. Scaling
  11. Speed to lead
  12. Cost per booked job
  13. The tech stack
  14. Example Claude Code prompt
  15. Posting leads to your CRM
  16. Privacy and compliance
  17. FAQ
The problem

Why most renovation leads are bad.

Most kitchen and bathroom leads come from one of two places: a lead site that sells the same enquiry to three or four builders, or a Meta instant form that fills itself in from the person's Facebook profile. Both have the same flaw. The homeowner never had to think.

An instant form is one tap. People submit it while scrolling past a nice kitchen photo, forget they did, and don't answer when you call. You get a name, a number and maybe a suburb. You don't know which room, whether it's a full rip-out or new benchtops, what they want to spend, whether they own the place, or if they're starting this year or just collecting ideas.

So you spend the first ten minutes of every call qualifying, drive out to measure-ups that were never going to sign, and Meta keeps sending you more of the same people, because as far as it can tell, every one of those taps was a success.

Better leads don't come from better targeting. They come from asking better questions before the lead reaches you.

If you're weighing up where your jobs should come from, our breakdowns of cost per acquisition for trade businesses and Google vs Meta for trade leads cover the economics. This guide is about the build.

The thesis

Ad, landing page, survey, CRM.

1. AdSpeaks to one room and one situation, and sends them off Facebook
2. Landing pageYour brand, your domain, one job: start the survey
3. Survey8 tap questions that filter and enrich, contact details last
4. TrackingPixel + Conversions API fire only on a finished survey
5. CRMHTTP POST with every answer, texted back in seconds

Each step does one job. The ad earns the click. The landing page earns the start. The survey does the filtering and collects what you need to price the job. Tracking tells the ad platform which people turned into real leads, so it finds more of them. And the CRM gets the whole picture the moment the lead lands, so you or an AI SMS can reply while they're still on the page.

None of it is new technology. What's different is that every step is built around one idea: make the lead tell you who they are before you pay attention to them.

Creative

Making the ad creative: real jobs, real owner.

Good hooks need something to sit on. You don't need a studio or an agency to make it: a phone, Canva and an AI writing tool cover almost everything.

Static creatives

  • Use real job photos.Your own finished kitchens and bathrooms, and before-and-afters of the same room from the same angle. They beat stock photos and AI images every time, because homeowners can tell, and they prove you actually do the work.
  • One idea per creative.A short headline that matches the hook ("Bathroom stuck in the 90s?"), one strong photo, your logo. If it needs a paragraph, it's the ad's primary text, not the image.
  • Build them in Canva.Make one template in your brand colours, then swap the photo and headline for each version. Use AI (ChatGPT or Claude) to write 10 headline options from your offer and pick the best 3 or 4.
  • Make variations, not one perfect ad.Different rooms, different photos, different hooks. Meta works out which ones win; your job is to give it enough options to choose from.

Videos: the owner pitching the offer

The creative that works best is usually the simplest: the owner, on their phone, explaining the offer to camera. 30 to 60 seconds, ideally standing in a finished kitchen or bathroom. Who you are, what you do, who it's for, and "answer a few quick questions for a ballpark on yours". It feels local and trustworthy in a way a polished ad doesn't. Add captions, because most people watch with the sound off.

Formats and sizes

FormatSizeWhere it shows
Portrait 4:51080 x 1350 pxFacebook and Instagram feeds. The best all-rounder on mobile.
Square 1:11080 x 1080 pxFeeds, and a safe fallback anywhere.
Vertical 9:161080 x 1920 pxStories and Reels. Keep text and faces away from the top and bottom edges, where the app's buttons sit.

Make each creative in at least 4:5 and 9:16, so it fits every placement without Meta cropping it badly. Start with 8 to 12 creatives, roughly 60% images and 40% video.

Step 2

The landing page: one job.

The landing page exists to get the survey started. Everything else is a distraction.

  • Its own domain.Put the funnel on a separate domain (for example yourbusiness.online) instead of your main site. Your website and gallery stay untouched, the funnel loads fast with nothing else on it, and you can change it without breaking anything.
  • Fast on a phone.Almost every click is mobile. A static page with no heavy plugins loads in under a second.
  • The survey above the fold.Headline, one strong project photo, one line of proof, and the first question visible without scrolling. The first question is the call to action.
  • No navigation.No menu, no links to your blog or portfolio. One way forward.
Step 3

The survey: 8 questions that filter tyre-kickers.

This is the part that does the work. A quiz-style survey asks one question per screen, answered with big tap buttons, with contact details at the very end. It feels nothing like a form.

It sounds backwards, but a well-built survey often converts as well as a short form, and the leads are far better. Here's why:

  • The first step is easy.One tap: kitchen or bathroom. A contact form asks for their phone number first, which is where most people leave.
  • People finish what they start.After six easy taps, typing a phone number feels like the last step, not the first.
  • It feels like getting something."Get a ballpark for your new bathroom" is a free estimate. "Contact us" is a sales call.
  • Junk filters itself out.Bots, renters and people collecting Pinterest ideas drop off halfway. A one-tap form lets them all through.

The standard 8 questions for kitchens and bathrooms

#QuestionAnswers
1Which room are you renovating?Kitchen / Bathroom / Both / Ensuite or laundry
2What kind of job is it?Full renovation / Partial update (benchtops, cabinets, fixtures) / Not sure yet
3How big is the space?Small / Medium / Large or open-plan / Not sure
4What budget do you have in mind?Under $15k / $15k to $30k / $30k to $60k / $60k+
5Do you own the home?Own outright / Mortgaged / Renting (ends the survey)
6What type of property is it?House / Townhouse or duplex / Apartment or unit
7Do you have plans or a design yet?Yes, plans ready / Ideas and inspiration / Starting from scratch
8When are you looking to start?ASAP / 1 to 3 months / 3 to 6 months / Just researching

Then, and only then: name, email, phone and suburb or postcode.

Rules that make it work

  • Tap answers, not typing.Every free-text question costs completions. Keep typing to the contact step.
  • Budget as ranges.Nobody wants to type a number, but almost everyone will tap a range. It's the single most useful answer for a renovation lead, because it tells you straight away whether the job is worth a measure-up.
  • Set your floor.If you don't take jobs under $15k, end "Under $15k" with a friendly message instead of sending you a lead. Same for renting.
  • Flag apartments.A unit or apartment usually means strata approval, so you know to ask about it on the first call.
  • Show progress."Step 5 of 8" keeps people going.
  • Cap it.Around 8 questions is the sweet spot. Past that, each extra step costs more leads than the information is worth. Ask the nice-to-haves (finishes, appliances, best time to call) by SMS or on the call.
What you get

Every lead arrives knowing which room, how big the job is, roughly what they want to spend, that they own the home and when they want to start. That's what we call quote-ready: you know whether it's worth a measure-up before you dial.

Optional

The photo upload: a measure-up before you visit.

After the contact step, offer an optional upload: "Got a few photos of the space? Upload 2 or 3 and we'll come to the measure-up prepared." Make it clearly optional, and never block the lead on it.

Not everyone will do it. The ones who do are the most motivated leads you'll get, and the photos show you the layout, the condition and any surprises (old tiles, plumbing in an awkward spot) before you get in the car. Store uploads in a private storage bucket, only accessible to your team, and say so in your privacy policy. Photos of the inside of someone's home are personal.

Step 4

Tracking: tell Meta you want better leads.

This is the step most people skip, and it's why their ads keep finding tyre-kickers. Meta optimises for whatever event you tell it is a success. If that event is "tapped submit on a form", it finds people who tap submit. If it's "finished an 8-question survey as a homeowner with a real budget", it finds those people instead.

  • Install the Meta Pixel on the funnel.Fire PageView on load and Lead only when the full survey and contact step are submitted. Not on the first question.
  • Add the Conversions API (CAPI).Browser tracking misses a lot of conversions (ad blockers, iOS privacy). Send the same Lead event server-side from your backend, with hashed email and phone and the same event_id so Meta de-duplicates it.
  • Send quality back.When a lead turns out good (booked a measure-up, got a quote, signed), send another event for that lead through CAPI. Optimising toward those deeper events is how you tell Meta "more like these, fewer like the rest".
  • Pass the click ID.Capture fbclid and the UTM tags from the URL and store them on the lead, so every lead traces back to the ad that produced it.
The point

The survey filters the leads you get today. The tracking changes who Meta shows your ads to tomorrow. Together, lead quality gets better over time instead of worse.

Running Google too? The same idea applies: conversion tracking on the finished survey, with enhanced conversions. Our Google vs Meta comparison covers when each one makes sense.

Setup

Campaign setup: keep it simple.

A simple structure gives Meta enough data to learn fast. Splitting a small budget across lots of ad sets starves every one of them.

SettingWhat we use
CampaignOne campaign per offer (for example kitchens, and a separate one for bathrooms). Objective Leads, conversion location Website, optimise for the Lead event.
BudgetAt least $50 a day, set at campaign level.
Ad setsOne, broad. Location is your service area (a radius or postcodes). Age and gender left open, unless your own sales data says otherwise. The survey does the filtering.
Ads8 to 12 creatives, about 60% images and 40% video, with 3 to 5 versions of the primary text. Call to action: Get quote.
Advantage+ creativeTurn off the automatic enhancements (text changes, image touch-ups, music). They can change your copy into something you didn't approve.
TrackingUTM tags on every ad, so each lead traces back to the exact ad that made it.
  • Days 1 to 3: don't touch it.Meta is learning. Only check that it's spending and the ads are approved.
  • Refresh, don't rebuild.When frequency passes 3, or the click rate drops 30% from week one, add 3 or 4 new creatives and pause the 3 weakest. Never rebuild a campaign that's working.
  • One change at a time,so you know what made the difference.
Scaling

Scaling: slowly, then steadily.

The fastest way to break a good campaign is to double its budget overnight. Meta treats a big jump as a new campaign and starts learning again, and your cost per lead usually jumps with it.

  1. Get at least two weeks of data first.Don't scale on a good few days. Wait until the cost per lead is steady.
  2. Raise the budget by about 20%.For example from $50 to $60 a day.
  3. Wait 3 to 5 daysand let the cost per lead settle before you judge it.
  4. Holding steady? Do it again.Another 20%, another 3 to 5 days.
  5. Cost per lead jumped and stayed up?Step back to the last budget that worked and give it a few more days before trying again.
One rule

Don't change the creatives and the budget at the same time. If results move, you won't know which change did it.

Step 5

Speed to lead: seconds, not hours.

A quote-ready lead goes cold fast. The homeowner who just finished your survey is probably filling in two other builders' forms too. An automatic SMS within seconds ("Thanks Sarah, got your details. Is now a good time for a quick call about the bathroom?") keeps them warm, and an AI agent can confirm their details and book the measure-up before a human picks up the phone.

The data on this is consistent. See why lead response time matters for the numbers.

The number that matters

Cost per booked job, not cost per lead.

Everything in this guide is built around one number: what it costs you to get a job booked. Cost per lead is easy to see in Ads Manager, so it's the number most people chase. It doesn't matter. A cheap lead that never answers, rents, or "just wanted a price" isn't cheap. It's a wasted call and a wasted measure-up.

Cost per booked job = cost per lead ÷ the share of leads that book.

Cheap one-tap leadSurvey lead
Cost per lead$40$120
Leads that book a job1 in 201 in 4
Cost per booked job$800$480
Calls to get one job204
Wasted measure-upsLotsFew: you already know the room, budget and timing

Example numbers to show the maths. Use your own booking rate.

The lead that costs three times as much is the cheaper one: it costs less per job, takes a fifth of the phone calls, and saves you driving out to quote jobs that were never going to sign. That's why the survey asks 8 questions including budget, and why the tracking tells Meta which leads booked. You're not trying to make leads cheap. You're trying to make jobs cheap.

Track it monthly: ad spend ÷ jobs booked. Our guide to cost per acquisition for trade businesses goes deeper on the numbers.

Build it

The tech stack we like to use.

You don't need a funnel builder subscription. A survey funnel is a fast static page plus a small backend, and the tools are free or close to it.

  • GitHub: code and hosting.The funnel lives in a GitHub repository, so every change is saved and reversible. GitHub Pages serves it for free on your own domain with HTTPS. If you want preview links for every change, Vercel or Netlify connect to the same repo and do the same job.
  • Supabase: the backend.A Postgres database to store every lead, private storage for photo uploads, and Edge Functions for anything that needs a secret: receiving the form, sending CAPI events and posting to your CRM.
  • Claude Code: building the pages.Describe the funnel and Claude Code writes it: the survey page, the thank-you page, the privacy policy and the terms. You review and tweak, it does the typing.
  • Cloudflare Turnstile: spam protection.An invisible check that stops bots without making real people pick traffic lights.
  • Meta Pixel + Conversions API: tracking.As above.

The pages you need

  • index.htmlThe landing page and survey.
  • thank-you.htmlWhat happens next, and where the Lead event fires if you prefer a confirmation page.
  • privacy.htmlWhat you collect, why, the Pixel, where photos are stored, and how to ask for data to be deleted.
  • terms.htmlTerms of use for the site.
One rule

Never put an API key in the page. Anything in index.html can be read by anyone. The page sends the lead to your Supabase Edge Function, and the function, which holds the keys, posts it to your CRM and Meta. That's why the stack has a backend at all.

Copy this

Example Claude Code prompt.

Open Claude Code in an empty folder (or your GitHub repo) and give it something like this. Swap in your business details.

Build a mobile-first kitchen and bathroom renovation lead
funnel as a static site for GitHub Pages. Business: Coastline
Kitchens & Bathrooms, Newcastle NSW. Brand colour #14B8A6,
dark background, modern sans-serif.

Pages: index.html, thank-you.html, privacy.html, terms.html.
Plain HTML, CSS and vanilla JS. No frameworks, no build step.

index.html
- Headline: "Get a ballpark for your new kitchen or bathroom."
- One project photo and one line of proof under it, then the
  survey straight away.
- A quiz-style survey: one question per screen, big tap
  buttons with icons, a progress bar ("Step 3 of 8") and a
  Back link. Auto-advance on tap.
- Questions, in order:
  1. Which room are you renovating? Kitchen / Bathroom /
     Both / Ensuite or laundry
  2. What kind of job is it? Full renovation / Partial update
     (benchtops, cabinets, fixtures) / Not sure yet
  3. How big is the space? Small / Medium / Large or
     open-plan / Not sure
  4. What budget do you have in mind? Under $15k / $15k-30k /
     $30k-60k / $60k+
     - Under $15k ends the survey with a friendly "that's below
       the jobs we take on" message. No lead is sent.
  5. Do you own the home? Own outright / Mortgaged / Renting
     - Renting ends the survey with a friendly "sorry, you need
       to own the home" message. No lead is sent.
  6. Property type? House / Townhouse or duplex /
     Apartment or unit
  7. Do you have plans or a design yet? Yes, plans ready /
     Ideas and inspiration / Starting from scratch
  8. When are you looking to start? ASAP / 1-3 months /
     3-6 months / Just researching
- Final step: first name, last name, email, mobile, suburb or
  postcode, with a consent checkbox for calls, SMS and email.
  Validate an Australian mobile and a 4-digit postcode.
- Optional photo upload (up to 3 images) after the contact
  step, clearly marked optional.
- Capture fbclid and utm_* from the URL and include them.
- Add Cloudflare Turnstile (site key: TURNSTILE_SITE_KEY).
- On submit, POST JSON to SUPABASE_FUNCTION_URL with every
  answer, contact details, tracking and an event_id (UUID).
  Then fire fbq('track', 'Lead', {}, {eventID: event_id}) and
  go to thank-you.html. Never put API keys in the page.
- Meta Pixel ID: PIXEL_ID, PageView on every page.

privacy.html: an Australian Privacy Principles style policy
covering what we collect, the Meta Pixel and Conversions API,
photo uploads stored privately, SMS follow-up, and how to request
access or deletion. Contact: hello@coastlinekb.com.au.

terms.html: simple website terms of use.

Then write a Supabase Edge Function (TypeScript) that receives
the POST, verifies Turnstile, saves the lead to a "leads" table,
stores the photos in a private bucket, sends the Lead event to
the Meta Conversions API (hashed email and phone, same event_id)
and forwards the lead to my CRM. Give me the SQL for the table.

Claude Code will build the pages, show you the files and explain how to deploy them. Review the copy, check it on your phone, and push it to GitHub. Treat the privacy policy and terms it writes as a first draft to check, not legal advice.

Step 6

Posting leads to your CRM.

Almost every CRM accepts new leads over an HTTP POST: a webhook URL, or an API endpoint with a key. Your Edge Function sends something like this:

POST https://api.your-crm.com/v1/leads
Authorization: Bearer YOUR_CRM_API_KEY
Content-Type: application/json

{
  "first_name": "Sarah",
  "last_name": "Nguyen",
  "email": "sarah@example.com",
  "phone": "0412345678",
  "postcode": "2290",
  "source": "Meta - Bathroom renovations",
  "custom_fields": {
    "room": "Bathroom",
    "job_type": "Full renovation",
    "size": "Medium",
    "budget": "$30k-60k",
    "ownership": "Own outright",
    "property_type": "House",
    "plans": "Ideas and inspiration",
    "timeframe": "1-3 months",
    "photo_urls": ["https://.../signed-link"]
  },
  "tracking": { "fbclid": "...", "utm_campaign": "..." }
}

Every CRM names its fields differently, and that's where Claude Code earns its keep. Give it your CRM's API documentation (paste the "create a lead" or "create a contact" page, or the link) and ask it to map the survey answers to your CRM's fields, including any custom fields you've set up. Then test with one fake lead, check it lands in the CRM with every answer, and you're live.

  • Keep a copy.Save every lead in Supabase before posting to the CRM, so nothing is lost if the CRM is down. Retry failed posts.
  • Send the answers as fields, not one long note.Fields can be filtered, sorted and reported on. "Show me every full bathroom renovation over $30k starting in the next 3 months" is only possible if the answers are fields.
  • Trigger the SMS from the same function,or let the CRM's automation do it on new leads.
Don't skip this

Privacy and compliance.

  • Privacy policy.Say what you collect, that you use the Meta Pixel and Conversions API, where photos are stored, and how people can ask for access or deletion, in line with the Australian Privacy Principles.
  • Consent for calls, SMS and email.A clear consent checkbox at the contact step. Under the Spam Act, marketing SMS and email need consent and a way to opt out (honour "STOP").
  • Hash before sending to Meta.Email and phone go to the Conversions API hashed (SHA-256), never in plain text.
  • Private photo storage.Photos of someone's home are personal. Private bucket, short-lived links for your team, deleted when no longer needed.
  • Get it checked.An AI-drafted policy is a starting point. If you're unsure, have it reviewed.
FAQ

Common questions.

Won't more questions mean fewer leads?

Fewer total submissions than a one-tap instant form, usually. But far more usable leads, because the ones who finish are real homeowners who told you what they want. With tap answers and contact details last, a well-built survey often converts about as well as a short form.

How many questions should a renovation survey have?

Around 8 tap questions, plus contact details. That covers the room, the scope, the budget and the timing, which is everything you need to decide on a measure-up. Past that, each extra question costs more completions than the answer is worth.

Should I really ask about budget?

Yes, as ranges. It's the answer that saves you the most wasted measure-ups, and people are far happier to tap "$30k to $60k" than to type a number or be asked on the phone.

Should I use Meta instant forms or a landing page?

A landing page with a survey, if lead quality matters. Instant forms are cheap per lead because they're easy to submit, and that's exactly the problem: they're easy to submit without meaning it.

Do I need the Conversions API if I have the Pixel?

Yes. The Pixel alone misses a meaningful share of conversions because of ad blockers and browser privacy settings. CAPI sends the same events from your server, so Meta sees more of your real leads and optimises better.

How much should I spend on Meta ads for renovation leads?

Start at $50 a day or more, set at campaign level, with one broad ad set and 8 to 12 creatives. Less than that and Meta doesn't get enough data to learn who your good leads are.

How fast can I scale a renovation ad campaign?

After at least two weeks of steady data, raise the budget by about 20%, then wait 3 to 5 days for the cost per lead to settle before the next increase. Big jumps reset Meta's learning and usually push your cost per lead up.

What's a good cost per lead for kitchen and bathroom leads?

The wrong question. Cost per lead doesn't matter on its own: cost per booked job does. A $120 lead that books 1 in 4 is far cheaper than a $40 lead that books 1 in 20.

Can I build this without a developer?

With Claude Code, mostly yes. It writes the pages, the backend function and the CRM mapping from a plain-English brief. You'll still need to set up the accounts (GitHub, Supabase, your domain, Meta) and test it properly before you spend on ads.

Rather have it built for you?

We build this exact system for kitchen and bathroom businesses, on your own ad account and your own domain, ready to go live within 48 hours of access, then hand it over in your name.

Your ad accounts Your domain No lock-in

Keep Reading

Related articles.