← Back to Blog
DevOps2026-05-07Β·35 min read

Building a $0 B2B Funnel: 15 Static HTML Lead Pages + Webhook

By 孫昊

Building a $0 B2B Funnel: 15 Static HTML Lead Pages + Webhook

Current Situation Analysis

Traditional B2B lead-capture stacks (HubSpot + Calendly + Mailchimp + Zapier) introduce significant friction before generating a single qualified lead. The primary pain points include:

  • High Fixed Overhead: ~$200/month in SaaS subscriptions before achieving product-market fit or monetization.
  • Performance Degradation: Third-party embeds and tracking pixels inflate page load times to 2–4 seconds, directly correlating with bounce rate increases and lower conversion rates.
  • Compliance & Privacy Friction: GDPR/CCPA tracking requirements force intrusive cookie banners and pixel scripts that erode trust with technical B2B buyers.
  • Over-Engineering Prematurely: Teams often spend weeks building complex CRM workflows and A/B testing infrastructure before validating core messaging or copy. This delays the feedback loop and masks the real bottleneck: poor value proposition communication.

WOW Moment: Key Findings

Deploying a static HTML + Cloudflare Workers architecture eliminated SaaS overhead while outperforming traditional stacks across critical conversion and performance metrics. Over a 3-week cold-start period, the system captured 47 leads (7.8% conversion) from ~600 organic visitors, routing 3 sales-ready (tier_C) leads and booking 1 paid call at $0 infrastructure cost.

Approach Monthly Cost Page Load Time Conversion Rate
Traditional SaaS Stack ~$200 2.0–4.0s 3.0–5.0%
Static HTML + Webhook $0 ~200ms 7.8%

Key Findings:

  • Latency-to-Conversion Correlation: 200ms static loads directly outperformed 2–4s embedded SaaS forms, validating performance as a primary conversion driver.
  • Intent > Behavior: Submit-time tier scoring proved significantly more predictive of sales readiness than behavioral signals (time-of-day, device class, scroll depth).
  • Digest > Dashboard: For low-volume B2B leads, a daily email digest outperformed CRM dashboards by reducing context-switching and enabling immediate follow-up.
  • Privacy as a Moat: Explicit "no-tracking-pixel" claims functioned as a trust differentiator, improving form completion rates among security-conscious B2B buyers.

Core Solution

The architecture strips lead capture down to its functional core: static HTML forms POST structured JSON to a Cloudflare Worker, which logs data to KV and routes notifications based on lead tier.

Architecture Flow:

[15 HTML pages] β†’ [Cloudflare Workers webhook] β†’ [JSON log + email digest]

Per-Page Execution Logic:

  1. Define window.LEAD_WEBHOOK_URL in <head>
  2. Intercept form submit event β†’ trigger submitLead({email, source, tier, ...})
  3. POST JSON payload containing rich UTM parameters + page context
  4. Webhook appends to append-only JSON log + triggers daily digest or immediate routing

Cloudflare Workers Implementation (~50 lines TypeScript):

export default {
  async fetch(req: Request, env: Env) {
    const lead = await req.json();
    lead.timestamp = new Date().toISOString();
    lead.ip = req.headers.get('CF-Connecting-IP');

    await env.LEADS_KV.put(`lead:${lead.timestamp}`, JSON.stringify(lead));

    // Score-based routing
    if (lead.tier === 'tier_c') {
      await sendImmediateNotification(env, lead);
    }

    return new Response('ok', {status: 200});
  }
};

Lead Page & Tier Scoring Matrix:

  • b2b-quiz.html: 7-question fit quiz β†’ tier_a (0-3) / tier_b (4-7) / tier_c (8+)
  • roi-calculator.html: ROI estimate input β†’ tier assigned when yearlyTotal > 0
  • quote-calculator.html: Multi-step quote β†’ tier locked at step 2/3
  • book-call.html: Calendly + email pre-capture β†’ warm
  • free-ai-audit.html: 47-question audit β†’ hot/warm by completion %
  • free-templates.html: Email template library β†’ warm
  • index.html: Newsletter signup at scroll-50 β†’ cold
  • 8 additional ICP-specific lead magnets β†’ dynamic tier assignment

Pitfall Guide

  1. Over-Engineering Form Fields: High-field forms (e.g., multi-step quote calculators) increase cognitive load and drop conversion. Replace with low-friction "quick-quote" variants that convert 3Γ— better.
  2. Premature A/B Testing: Running pricing or feature tests without sufficient traffic generates statistical noise. Validate core copy and value proposition before introducing experimental variants.
  3. Ignoring Tier-Based Routing: Treating all leads equally wastes sales engineering time. Implement immediate webhook routing for tier_c leads to capitalize on high-intent signals while context is fresh.
  4. Prioritizing Behavioral Metrics Over Intent: Scroll depth, time-on-page, and device class are noisy proxies for B2B buying signals. Submit-time tier scoring provides a deterministic, actionable qualification metric.
  5. Building Funnel Infrastructure Before Content: The webhook takes ~2 hours; 15 pages take ~3 days. Copy iteration and message-market fit take weeks. Do not optimize the pipeline before validating the message.
  6. Neglecting Privacy as a Conversion Lever: Tracking pixels and third-party JS increase GDPR compliance overhead and user friction. Explicit "no-tracking" claims reduce hesitation and improve form completion in technical B2B segments.

Deliverables

πŸ“˜ Blueprint: 30-Day Cold-Start Execution Plan

  • Days 1–3: Deploy 15 static HTML pages + Cloudflare Worker + KV namespace
  • Days 4–7: Publish 1 high-signal lead magnet (dev.to/Substack) driving 100+ targeted visitors
  • Days 8–14: Monitor daily digest β†’ iterate copy on lowest-converting pages
  • Days 15–21: Implement tier-based email routing + immediate tier_c alerts
  • Days 22–30: Scale traffic to top 3 converting pages β†’ book first paid consultation

βœ… Implementation Checklist

  • Create LEADS_KV namespace in Cloudflare dashboard
  • Deploy Worker with fetch handler + SES/Email digest integration
  • Configure window.LEAD_WEBHOOK_URL in all HTML <head> sections
  • Implement submitLead() payload structure (email, source, tier, UTM, timestamp)
  • Set up daily digest cron trigger + immediate tier_c routing logic
  • Verify CORS headers + JSON response validation
  • Publish traffic source post + append UTM parameters to all landing URLs

βš™οΈ Configuration Templates

  • wrangler.toml KV binding & environment variables
  • HTML head snippet for webhook URL injection
  • Form submission handler pattern (submitLead payload schema)
  • KV key structure: lead:{ISO-8601-timestamp} β†’ JSON blob
  • Email digest payload template (daily rollup + tier breakdown)

Source: GitHub Pages repository (MIT licensed) β€” all 15 pages and Worker code publicly available for fork and production deployment.