Leads

Every form submission on your website is automatically captured, stored, and displayed in the Leads tab — complete with contact details, form data, file attachments, and ad tracking parameters. No manual setup required.

How Lead Capture Works

When a visitor submits a form on your website, the following happens automatically:

  1. A Cloudflare Worker receives the form data
  2. The submission is stored as a JSON log in Cloudflare R2 (backup)
  3. The lead is written to the Supabase database (crm.leads table)
  4. A confirmation email is sent via SendGrid
  5. A contact and deal are created in the CRM automatically

The entire process completes in under a second. Leads appear in your dashboard in real time.

KPI Dashboard

The top of the Leads tab shows key performance indicators at a glance:

MetricDescription
TodayLeads received today (highlighted green if > 0)
YesterdayLeads from the previous day
This WeekRolling 7-day lead count
This MonthCurrent calendar month
This YearYear-to-date total
ArchivedTotal archived leads (click to toggle archived view)

Each metric shows a percentage change compared to the previous period.

Search & Filter

Find any lead instantly with the powerful filter bar:

  • Full-text search — Search across name, email, phone, city, and zip code (300ms debounce, server-side)
  • Form type filter — Filter by specific form types (quote request, callback, contact, etc.)
  • Date range — Narrow results to a specific time period
  • Sort — Order by newest, oldest, or other criteria
  • Clear all — Reset all filters with one click

Lead Detail Panel

Click any lead to open the slide-in detail panel. The panel is organized into clear sections:

  • Contact — Name, email, phone, address with quick-action buttons
  • Message — The original message or request submitted
  • Form Details — All form-specific fields from the form_data JSONB column
  • Ad Tracking — Badges showing Google Ads or Bing Ads attribution (campaign, keyword, device, match type)
  • Attachments — Files uploaded through the form (stored in R2)

Quick Actions

From the detail panel footer:

  • Email — Opens your email client with the lead's address pre-filled
  • Call — Tap to call on mobile, or click to dial on desktop
  • Copy CSV — Copies the full lead row as a two-line CSV to clipboard
  • Archive / Unarchive — Move the lead to or from the archive

Export to CSV

Click Export CSV in the filter bar to download all matching leads as a CSV file. The export:

  • Respects all active filters (search, date range, form type, archived status)
  • Includes up to 10,000 rows
  • Contains 21 columns including all ad tracking fields
  • Downloads as leads-{client}-{date}.csv

Ad Tracking

Leads from paid ads are automatically enriched with attribution data:

ParameterSourceDescription
gclidGoogle AdsGoogle Click ID
msclkidBing AdsMicrosoft Click ID
keywordGoogle/Bing AdsSearch keyword that triggered the ad
deviceGoogle/Bing AdsDevice type (mobile, desktop, tablet)
match_typeGoogle AdsKeyword match type (broad, phrase, exact)
campaign_idGoogle AdsCampaign identifier
ad_group_idGoogle AdsAd group identifier
networkGoogle AdsSearch network or display network

Ad parameters are captured on the frontend via localStorage with a 90-day TTL and submitted with every form.

Archive & Bulk Actions

  • Single archive — Hover over any row to reveal the archive button
  • Bulk archive — Use the checkbox column to select multiple leads, then use the bulk action bar
  • Archived view — Click the Archived KPI card to toggle between active and archived leads
  • Unarchive — Available individually or in bulk from the archived view
Leads are never deleted — archiving simply hides them from the default view. You can always restore archived leads.