What You'll Build
By the end of this guide you'll have a complete landing page with: - Hero section with headline, sub-headline, and CTA button - Social proof row (logos or testimonial) - Feature section (3-column grid) - Pricing section - FAQ accordion - Lead capture form (connected to Supabase or a Make webhook) - Published on a custom domain with HTTPS
Total build time: 4–6 hours for a first build, 1–2 hours once you've done it before.
Step 1: Set Up Your Project
Create a new WeWeb project. Choose "Blank" — don't use a template if you want full control over the structure.
First setup steps: 1. Set your default font in Project Settings → Fonts. Import a Google Font (Inter or Plus Jakarta Sans work well for SaaS). 2. Set your brand colours as design tokens in the Styles panel: primary, secondary, text, background, border. 3. Set the page width: max-width 1280px, centred, with 24px horizontal padding on mobile.
Invest 20 minutes here. Getting tokens right now saves hours of inconsistency later.
Step 2: Build the Hero Section
The hero is the most important section — build it first.
Structure: <section> (full viewport height, centred content) <div> (badge/pill — optional, e.g. "Now in beta") <h1> (primary headline — the outcome) <p> (sub-headline — who it's for, how it works) <div> (CTA buttons — primary + optional secondary) <div> (hero image or product screenshot)
WeWeb tips: - Use a Section element, not a Container, so the background stretches full-width - Set the H1 font size to a WeWeb breakpoint variable: 56px desktop, 40px tablet, 32px mobile - Add a gradient or subtle noise texture to the background — pure black/white heroes look flat
Step 3: Social Proof and Features
Social proof row: place it directly below the hero. Use a Flexbox row with justify-content: center, gap: 32px. Add company logo images (SVG or WebP, grey/opacity 60%).
Feature section: - Container with a 3-column Grid (CSS Grid, gap: 24px) - Each card: icon (24px), H3 (feature name), P (one-sentence description) - Add a subtle border (1px solid rgba(255,255,255,0.08)) for separation without weight
WeWeb shortcut: create one feature card, style it, then duplicate it 2× and update the content. Don't build each card from scratch.
Step 4: Pricing Section
A three-column pricing layout is the SaaS standard. Build it with CSS Grid: three equal columns, centre column highlighted (different background, "Most popular" badge).
Each pricing card needs: - Plan name (H3) - Price + billing period - 4–6 feature bullets (use a WeWeb List component, not hardcoded divs — it's easier to update) - CTA button
WeWeb trick: bind the pricing card content to a WeWeb variable (array of objects). This lets you change prices and features from one data object without editing each card individually. When your pricing changes, update one array — all three cards update automatically.
Step 5: FAQ Accordion
An accordion is one WeWeb component with a click toggle. Build it with: - A container for each FAQ item - H3 for the question (clickable) - A div for the answer (visibility toggled by a WeWeb variable)
WeWeb variables approach: 1. Create a variable: openFaqIndex (type: Number, default: -1) 2. On each question click: set openFaqIndex = index of this item (or -1 if it's already open) 3. Show/hide each answer div: add a condition "openFaqIndex === thisIndex"
This creates a proper accordion where only one answer is open at a time, with zero JavaScript code written.
Step 6: Lead Capture Form
Add a form above the footer. Keep it minimal: Name, Work email, CTA button ("Book a demo" or "Start free trial").
Connecting the form to Supabase: 1. In WeWeb, add a Form component 2. Add an Action on submit: "Insert row" → your Supabase "leads" table 3. Add a second Action: show a success message (toggle visibility of a thank-you div)
Connecting to Make instead: 1. Create a Make webhook scenario 2. In WeWeb, use the "HTTP Request" action on form submit → POST to your Make webhook URL 3. In Make: add email notification + HubSpot/Notion/Airtable row creation
Always add a honeypot field (hidden input that real users never fill — bots do). Filter out any submission where the honeypot field is not empty.
Step 7: Publish to Your Domain
In WeWeb, go to Hosting → Custom Domain. 1. Add your domain (e.g., app.yoursite.com or yoursite.com) 2. WeWeb gives you a CNAME record to add in your DNS provider 3. Add the CNAME, wait for DNS propagation (5–30 minutes typically) 4. WeWeb auto-provisions an SSL certificate via Let's Encrypt
Before publishing: - Check every section at 375px, 768px, and 1280px - Run a Lighthouse audit (Chrome DevTools → Lighthouse tab) — target 90+ performance - Check page title and meta description in WeWeb's SEO settings - Add your Google Analytics or Plausible snippet in Project Settings → Custom Code → <head>
Publish and you're live. Total time: one day.