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:
- A Cloudflare Worker receives the form data
- The submission is stored as a JSON log in Cloudflare R2 (backup)
- The lead is written to the Supabase database (
crm.leadstable) - A confirmation email is sent via SendGrid
- 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:
| Metric | Description |
|---|---|
| Today | Leads received today (highlighted green if > 0) |
| Yesterday | Leads from the previous day |
| This Week | Rolling 7-day lead count |
| This Month | Current calendar month |
| This Year | Year-to-date total |
| Archived | Total 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_dataJSONB 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:
| Parameter | Source | Description |
|---|---|---|
gclid | Google Ads | Google Click ID |
msclkid | Bing Ads | Microsoft Click ID |
keyword | Google/Bing Ads | Search keyword that triggered the ad |
device | Google/Bing Ads | Device type (mobile, desktop, tablet) |
match_type | Google Ads | Keyword match type (broad, phrase, exact) |
campaign_id | Google Ads | Campaign identifier |
ad_group_id | Google Ads | Ad group identifier |
network | Google Ads | Search 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
