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

How to get better solar leads:
ad, landing page, survey.

Most bad solar leads aren't a targeting problem. They're a capture problem. A one-tap form lets anyone through and tells you nothing. Here's the system we use to get quote-ready leads instead: the ad, the landing page, a multi-step 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 solar leads are bad
  2. The system: ad, landing page, survey, CRM
  3. The ad
  4. The landing page
  5. The survey: the 8 questions that filter tyre-kickers
  6. The optional power bill upload
  7. Tracking: telling Meta you want better leads
  8. Speed to lead
  9. The tech stack
  10. Example Claude Code prompt
  11. Posting leads to your CRM
  12. Privacy and compliance
  13. FAQ
The problem

Why most solar leads are bad.

Most solar leads come from one of two places: a lead seller who sells the same enquiry to three or four installers, 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, forget they did, and don't answer when you call. You get a name, a number and maybe a postcode. You don't know if they own the home, what their bill is, whether they already have panels, or if they're buying this year or just curious.

So you spend the first ten minutes of every call qualifying, half the calls go nowhere, 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 comparing lead sources, our breakdowns of exclusive vs shared solar leads and what solar leads cost in Australia cover the economics. This guide is about the build.

The thesis

Ad, landing page, survey, CRM.

1. AdSpeaks to one homeowner 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 quote. 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.

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 stays 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 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. One way forward.
Step 3

The survey: 8 questions that filter tyre-kickers.

This is the part that does the work. A LeadsHook-style survey asks one question per screen, answered with big tap buttons, with contact details at the very end. It feels like a quiz, not 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. 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."See what solar would save you" is a free assessment. "Contact us" is a sales call.
  • Junk filters itself out.Bots, renters and the merely curious drop off halfway. A one-tap form lets them all through.

The standard 8 questions for solar

#QuestionAnswers
1What are you interested in?Solar / Battery / Solar + battery / Not sure yet
2Do you already have solar?No / Yes, panels only / Yes, panels + battery
3How old is your system? (only if they have solar)Under 5 / 5 to 10 / 10 to 15 / 15+ years
4What's your feed-in tariff? (only if they have solar)Free text, or "Not sure"
5Average quarterly power bill?Under $300 / $300 to $600 / $600 to $1,000 / $1,000+
6Do you own the home?Own outright / Mortgaged / Renting (ends the survey)
7What type of property is it?Freestanding house / Townhouse or duplex / Apartment / Commercial
8When are you looking to install?ASAP / 1 to 3 months / 3 to 6 months / Just researching

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

Rules that make it work

  • Tap answers, not typing.Every free-text question costs completions. Keep typing to the contact step and the feed-in tariff.
  • Branch."No solar" skips questions 3 and 4. Nobody answers a question that doesn't apply, so 8 questions feel like 6.
  • Disqualify politely."Renting" ends with a friendly message, not a lead. You never pay attention to someone who can't buy.
  • 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 (roof type, best time to call) by SMS or on the call.
What you get

Every lead arrives knowing what they want, their current system, their bill, that they own the home and when they want it done. That's what we call quote-ready: you could rough out a quote before you dial. Our guide to high-quality solar leads goes deeper on what makes a lead worth calling.

Optional

The power bill upload: half a quote.

After the contact step, offer an optional upload: "Got your last power bill handy? Upload it and we'll size your system properly." 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 bill gives you usage, tariff and retailer before you call. Store uploads in a private storage bucket, only accessible to your team, and say so in your privacy policy. A power bill has a name, address and account number on it.

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", 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 site visit, 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.

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 a competitor's too. An automatic SMS within seconds ("Thanks Sarah, got your details. Is now a good time for a quick call about the battery?") keeps them warm, and an AI agent can confirm their details and book the call before a human picks up the phone.

The data on this is consistent. See why lead response time matters for 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 bill 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 bills 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 solar lead funnel as a static site for
GitHub Pages. Business: Sunny Coast Solar, Sunshine Coast QLD.
Brand colour #F59E0B, 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: "See what solar and a battery would save you."
- One line of proof under it, then the survey straight away.
- A LeadsHook-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. What are you interested in? Solar / Battery /
     Solar + battery / Not sure yet
  2. Do you already have solar? No / Yes, panels only /
     Yes, panels + battery
  3. (only if they have solar) How old is your system?
     Under 5 / 5-10 / 10-15 / 15+ years
  4. (only if they have solar) Feed-in tariff? text, or Not sure
  5. Average quarterly power bill? Under $300 / $300-600 /
     $600-1,000 / $1,000+
  6. 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.
  7. Property type? Freestanding house / Townhouse or duplex /
     Apartment / Commercial
  8. When are you looking to install? ASAP / 1-3 months /
     3-6 months / Just researching
- Final step: first name, last name, email, mobile, postcode,
  with a consent checkbox for calls, SMS and email. Validate an
  Australian mobile and a 4-digit postcode.
- Optional power bill upload (PDF or photo) 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,
bill uploads stored privately, SMS follow-up, and how to request
access or deletion. Contact: hello@sunnycoastsolar.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 bill 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": "4556",
  "source": "Meta - Battery retrofit",
  "custom_fields": {
    "interested_in": "Solar + battery",
    "existing_solar": "Yes, panels only",
    "system_age": "10-15 years",
    "feed_in_tariff": "44c",
    "quarterly_bill": "$300-600",
    "ownership": "Own outright",
    "property_type": "Freestanding house",
    "timeframe": "1-3 months",
    "bill_url": "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 lead with a $600+ bill who wants it ASAP" 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 bills 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 bill storage.Bills are personal documents. 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, branching and contact details last, a well-built survey often converts about as well as a short form.

How many questions should a solar survey have?

Around 8 tap questions, plus contact details. That covers everything a quote needs. Past that, each extra question costs more completions than the answer is worth.

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.

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 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. 10 quote-ready leads in your first 30 days, or we keep working for free until you have them.

Your ad accounts Your domain No lock-in

Keep Reading

Related articles.