Public Lead Forms
Create embeddable lead capture forms for your website with a visual form builder, built-in spam protection, and automatic lead creation in Readybuild.
Overview
Public Lead Forms provide a no-code solution for capturing leads from your website. Unlike the External Leads API, which requires developer implementation, Public Lead Forms offer:
- Visual form builder - Drag-and-drop interface for configuring fields
- Built-in security - Cloudflare Turnstile CAPTCHA and multi-tier rate limiting
- Customizable styling - Match your website's branding
- Two conversion modes - External leads for review or direct contact creation
- Email lookup - Detect returning customers automatically
Access & Permissions
Navigate to Settings > Marketing > Public Lead Forms
Required permission: marketing
Creating a Form
Step 1: Basic Settings
- Go to Settings > Marketing > Public Lead Forms
- Click Create New Form
- Enter a Form Name - This is internal only, visitors won't see it
- Choose the Conversion Mode:
External Lead Mode
Creates an external lead record for manual review.
When to use:
- You want to qualify leads before adding them as contacts
- Leads require follow-up before becoming customers
- You need a review process before data enters your main database
What happens on submission:
- Creates External Lead record
- Lead appears in Contacts > External Leads list
- You manually convert qualified leads to contacts
Direct Conversion Mode
Automatically creates a Contact (and optionally a Project) immediately upon submission.
When to use:
- All submissions should become contacts
- You want immediate follow-up capability
- Form is for existing customer inquiries
What happens on submission:
- Creates Contact record immediately
- Optionally creates associated Project
- Creates Activity for follow-up (with form data in description)
- Contact is ready for immediate follow-up
See Activity Creation for details on the activity that gets created.
Step 2: Configure Fields
The form builder displays available fields you can add to your form.
Default Fields
Every form includes:
- First Name (required)
- Last Name (required)
- Email (required)
Adding Fields
- Click Add Field or drag fields from the available list
- Choose from:
- Contact Fields - Phone, company name, custom contact fields
- Address Fields - Street, city, state, ZIP (virtual fields that map to contact address)
- Project Fields - Project name, description, custom project fields
- Message - Free-form text area for notes or questions
If this lead intake form will be used with a Scheduling Group for Client Appointment Scheduling, do not add the Project Type field to your form.
Scheduling groups have their own Require Project Type setting that handles project type selection during the booking process. Adding Project Type to the lead intake form would create a duplicate or conflicting selection step.
Field Configuration
For each field, you can configure:
| Setting | Description |
|---|---|
| Label | Text displayed above the field (what visitors see) |
| Required | Whether the field must be filled to submit |
| Placeholder | Hint text shown inside empty field |
Reordering Fields
Drag and drop fields to change their order. The order in the builder is the order visitors see.
Virtual Fields
Some fields are "virtual" - they combine multiple database fields into logical groups:
- Phone - Maps to contact phone number field
- Address - Includes street, city, state, ZIP as a grouped section
Step 3: Styling (Optional)
Customize how the form looks on your website.
Enable/Disable Styling
Toggle Apply Custom Styles to control styling:
- Enabled - Form uses your custom styling settings
- Disabled - Form inherits styles from your website's CSS (recommended for websites with existing form styles)
Style Options
When styling is enabled:
| Setting | Description |
|---|---|
| Primary Color | Button color and accent elements |
| Background Color | Form background |
| Text Color | Label and input text |
| Font Family | Font for all form text |
| Font Size | Base text size |
Custom CSS
For advanced customization, add custom CSS in the Custom CSS field. The form uses these CSS classes:
.rb-form-widget { } /* Form container */
.rb-form-field { } /* Individual field wrapper */
.rb-form-label { } /* Field labels */
.rb-form-input { } /* Text inputs */
.rb-form-textarea { } /* Textarea fields */
.rb-form-button { } /* Submit button */
.rb-form-error { } /* Error messages */
.rb-form-success { } /* Success message */
Step 4: Completion Action
Choose what happens after a visitor successfully submits the form.
Thank You Message
Display a custom message on the page:
- Select Show Message
- Enter your thank you text
- Message replaces the form after submission
Example:
Thank you for your interest! We'll be in touch within 24 hours.
Redirect URL
Send visitors to another page:
- Select Redirect to URL
- Enter the full URL (must start with
https://) - Visitor is redirected after successful submission
Use cases:
- Dedicated thank you page with next steps
- Scheduling page to book a consultation
- Resource download page
Redirect URLs must:
- Start with
https://(secure URLs only) - Be a valid, reachable URL
- Not contain tracking parameters that could be blocked
Step 5: Save and Activate
- Click Save Form
- Toggle Active to enable the form
- Copy the embed code for your website
Embedding on Your Website
Getting the Embed Code
- Open your form in Settings > Marketing > Public Lead Forms
- Click Get Embed Code or copy from the form details panel
- The code looks like:
<div id="rb-form-widget"></div>
<script src="https://project.readybuild.com/embed/widget.js"
data-widget-type="form"
data-form-hash="abc123xyz">
</script>
Installation
- Paste the code into your website HTML where you want the form to appear
- The form loads automatically when the page loads
- Test by submitting a test entry
Data Attributes
The embed code uses these attributes:
| Attribute | Description |
|---|---|
data-widget-type | Always form for lead forms |
data-form-hash | Unique identifier for your form (auto-generated) |
Testing the Embedded Form
After embedding:
- Visit your website page with the form
- Fill out and submit a test entry
- Verify the lead/contact appears in Readybuild
- Check the form's submission history for the entry
Rate limiting allows only 1 successful submission per IP every 5 minutes. When testing, wait 5 minutes between submissions or test from different devices/networks.
Security Features
Cloudflare Turnstile CAPTCHA
Every form includes automatic bot protection via Cloudflare Turnstile.
How it works:
- Invisible challenge runs in the background
- No user interaction required (no "click all the traffic lights")
- Blocks automated spam submissions
- Legitimate users aren't interrupted
No configuration required - Turnstile protection is automatic on all forms.
Rate Limiting
A three-tier rate limiting system prevents spam and abuse:
| Tier | Limit | What It Prevents |
|---|---|---|
| API Rate Limit | 60 requests/min per IP | General endpoint abuse |
| Submission Attempt Limit | 5 attempts/min per IP | Rapid-fire spam attempts |
| Successful Submission Limit | 1 per 5 minutes per IP | Duplicate lead creation |
IP Detection:
- Real client IP detected through Cloudflare proxy
- IPs validated to prevent spoofing
- Each visitor tracked separately
Validation errors (like missing required fields) count toward the attempt limit but NOT the successful submission limit. Users who make mistakes can correct and resubmit.
Domain Whitelisting
Control which websites can use your form.
Why this matters:
- Prevents your form from being embedded on unauthorized sites
- Protects against form hijacking
- Ensures leads come from legitimate sources
Configuration:
- Go to Settings > Company Settings
- Find Allowed Domains
- Add domains that can embed your forms (e.g.,
example.com,www.example.com) - Save changes
Add domains without https:// - just the domain name:
- ✅
yourcompany.com - ✅
www.yourcompany.com - ❌
https://yourcompany.com
Managing Forms
Viewing All Forms
Settings > Marketing > Public Lead Forms shows all forms with:
- Form name
- Active/inactive status
- Conversion mode
- Submission count
- Created date
Activating/Deactivating Forms
Toggle the Active switch to enable or disable a form:
- Active - Form accepts submissions
- Inactive - Form displays "Form unavailable" message
Deactivating a form doesn't delete submission history.
Duplicating Forms
Create a copy of an existing form:
- Open the form
- Click Duplicate
- New form created with "(Copy)" suffix
- Edit the copy as needed
Deleting Forms
Remove forms you no longer need:
- Open the form
- Click Delete
- Confirm deletion
Deleting a form also deletes all submission history. Export submission data first if needed.
Viewing Submissions
Submission History
Each form tracks all submission attempts:
- Open a form in Settings > Marketing > Public Lead Forms
- Click View Submissions or expand the submissions panel
- View all attempts with status
Submission Statuses
| Status | Meaning |
|---|---|
completed | Successfully created lead/contact |
spam_blocked | Blocked by Turnstile or rate limiting |
validation_error | Required fields missing or invalid |
api_error | System error during processing |
Submission Details
Each submission records:
- Timestamp
- IP address (for rate limiting, not stored long-term)
- User agent (browser information)
- All submitted field values
- Result status
- Created record ID (if successful)
Finding Created Records
After a successful submission:
- External Lead mode - Go to Contacts > External Leads
- Direct Conversion mode - Go to Contacts and filter by recent creation date
Email Lookup Feature
Public Lead Forms can detect returning customers and pre-fill information.
How It Works
- Visitor enters their email address
- System checks if email exists in your contacts
- If found, address fields auto-populate from the existing contact
- Visitor can modify pre-filled data before submitting
Benefits
- Faster form completion for returning customers
- Consistent contact data
- Better customer experience
Privacy Note
Email lookup only returns address information, not other contact details. Visitors still provide their name and other fields.
Conversion Modes Deep Dive
External Lead Mode
Process:
- Visitor submits form
- External Lead created in Readybuild
- Lead appears in Contacts > External Leads
- Team member reviews and qualifies lead
- Qualified leads manually converted to contacts
Data mapping:
- All form fields stored on External Lead record
- Source and campaign attribution preserved
- Notes include form name and submission timestamp
Best for:
- High-volume lead generation
- When qualification is required
- Marketing campaigns with mixed quality leads
Direct Conversion Mode
Process:
- Visitor submits form
- Contact created immediately
- Project created (if configured)
- Activity created automatically for follow-up
- Contact ready in Readybuild
Data mapping:
- Contact fields map directly to Contact record
- Project fields create associated Project (optional)
- Activity created with submission details
Activity Creation
When a form submission succeeds in Direct Conversion mode, an activity is automatically created to ensure timely follow-up:
| Activity Field | Value |
|---|---|
| Type | Web Form (or configured activity type) |
| Subject | "Web Form Submission: [Form Name]" |
| Description | Contains all submitted form data |
| Contact | Linked to the newly created contact |
| Project | Linked to the project (if one was created) |
| Status | Open (ready for follow-up) |
| Assigned To | Based on form's assignment rules or company default |
Finding the activity:
- View the contact's activity history in the Contact Details page
- Check the Calendar or My Work for assigned activities
- Filter Activities by type "Web Form" to see all form submissions
Best for:
- Existing customer forms (contact us, support requests)
- High-quality lead sources
- When immediate follow-up is needed
Troubleshooting
Form Not Appearing
Problem: Embed code added but form doesn't display
Solutions:
- Verify form hash - Check the
data-form-hashmatches your form - Check domain whitelist - Your website domain must be in Allowed Domains
- Verify form is active - Inactive forms show "unavailable" message
- Check browser console - Look for JavaScript errors (F12 > Console)
- Test script loading - Ensure widget.js loads (check Network tab)
Submissions Not Creating Leads
Problem: Users submit but no lead/contact appears
Solutions:
- Check submission history - Look for error statuses
- Verify required fields - All required fields must be filled
- Check rate limits - IP may be temporarily blocked
- Review domain whitelist - Submission origin must be allowed
- Test in incognito - Rule out browser caching issues
Rate Limit Errors
Problem: "Too many requests" error appears
Solutions:
- Wait 5 minutes - Successful submission limit resets after 5 minutes
- Check for duplicates - Multiple forms on same page can trigger limits
- Use different network - Test from different IP if blocked
- Contact support - If legitimate traffic is blocked
Styling Issues
Problem: Form looks wrong or doesn't match website
Solutions:
- Disable custom styling - Let website CSS control appearance
- Check CSS conflicts - Your site's CSS may override form styles
- Use custom CSS - Add specific overrides in the Custom CSS field
- Inspect elements - Use browser dev tools to identify conflicting styles
Redirect Not Working
Problem: Form submits but doesn't redirect
Solutions:
- Verify URL format - Must start with
https:// - Test URL directly - Ensure the destination is reachable
- Check for blockers - Ad blockers may prevent redirects
- Try different browser - Test in incognito mode
Related Documentation
- Lead Intake Forms Overview - Comparison of all lead capture methods
- External Leads API - Developer API documentation
- Zapier Integration - Connect with other apps
- Managing Contacts - Work with created contacts
- Sources - Lead source attribution
- Campaigns - Campaign tracking