Zapier Webhook Integration
Complete API DocumentationOverview
The SnapCoat CRM Zapier webhook allows you to automatically create leads in your sales pipeline from any trigger source. Each lead is instantly assigned a unique Deal ID, placed in your "New Lead" stage, and triggers notifications to your team.
Secure & Unique
Each company gets a cryptographically secure webhook token
Real-Time
Leads appear instantly in your pipeline with automatic notifications
Flexible & Comprehensive
4 required fields + 25+ optional fields for rich lead data
Integration Methods
SnapCoat CRM offers two ways to integrate with Zapier. Choose the method that best fits your needs:Webhook Method
Recommended for most users- Easiest setup - just copy/paste webhook URL
- Works with any Zapier trigger
- No authentication setup needed
- Perfect for creating leads from forms
Use when: You want to create leads from external sources (forms, ads, etc.)
REST API Method
For advanced integrations- Full API access with authentication
- Polling triggers ("New Lead" events)
- Multiple actions (create, update, get)
- Professional native Zapier app
Use when: Building a native Zapier app or need advanced features
📚 Documentation Structure
This page covers the Webhook Method. For REST API integration details including authentication setup and API endpoints, see:REST API Endpoints:
- • Auth Test: GET /api/zapier/auth/test
- • Create Lead: POST /api/zapier/leads
- • Get Leads: GET /api/zapier/leads
- • Update Lead: PATCH /api/zapier/leads/:id
x-webhook-token headerGetting Started
Prerequisites
- • Active SnapCoat CRM account
- • Zapier account (free or paid)
- • Look for the "Connect to Zapier" button in your SnapCoat header
Step 1: Get Your Webhook URL
- 1Log into SnapCoat CRM and click "Connect to Zapier" button in the header (top navigation bar)
- 2In the dialog that opens, click the "Lead Creation" tab
- 3Click "Copy Webhook URL" to copy your unique webhook URL
- 4Your unique URL will look like:
https://www.snapcoatcrm.com/api/webhooks/leads/wh_your_token...
Step 2: Configure Zapier
- 1Create a new Zap in your Zapier dashboard
- 2Choose your trigger app (e.g., Google Forms, Facebook Lead Ads, Typeform)
- 3Add action: Search for "Webhooks by Zapier" and select "POST"
- 4Paste your webhook URL and map the required fields (see below)
- 5Test your Zap and turn it on!
Webhook Configuration
Method:POST
Content-Type:application/json
Authentication:Token in URL
Timeout:30 seconds
Complete Field Reference
Required Fields
No companyId needed - your unique URL handles authentication!
✨Supports both camelCase and lowercase field names
firstName
First name (or firstname)
lastName
Last name (or lastname)
email
Email address
phone
Phone number
source
Lead source (optional)
notes
Project type or notes (optional)
💡 Highly Encouraged: While
source and notes are optional, we highly recommend including them! Use the notes field for project details or type of work the customer is requesting (e.g., "Interior Painting", "Exterior Painting", "Cabinet Refinishing").Optional FieldsEnhance your lead data with these additional fields
Contact Information
| Field Name | Type | Description |
|---|---|---|
alternateEmail | String | Secondary email address |
alternatePhone | String | Secondary phone number |
companyName | String | Company name (for B2B customers) |
Address Information
💡 Best Practice: When providing address fields, include all of
address, city, state, and zip together. This triggers automatic customer record creation with a unique Customer ID.| Field Name | Type | Description |
|---|---|---|
address | String | Street address |
unitNumber | String | Apt, suite, or unit number |
city | String | City name |
state | String | State (2-letter code recommended, e.g., "CA") |
zip | String | ZIP/Postal code |
gateCode | String | Property gate access code |
Business & Lead Details
| Field Name | Type | Description | Default |
|---|---|---|---|
source⭐ Encouraged | String | Lead source identifier (e.g., "Facebook Ads", "Google PPC") | "Zapier Integration" |
notes⭐ Encouraged | String | Project type or notes (e.g., "Interior Painting", "Exterior Painting", "Cabinet Refinishing") | NULL |
internalNotes | String | Internal notes for team only | NULL |
estimatedValue | Number/String | Estimated project value (decimal format, e.g., "5000.00") | NULL |
status | String | Initial lead status | "New Lead" |
Appointment Request Fields
| Field Name | Type | Description | Format |
|---|---|---|---|
isAppointmentRequest | Number | Flags this as an appointment request | 0 or 1 |
preferredDate1 | String | First preferred appointment date | YYYY-MM-DD |
preferredTime1 | String | First preferred appointment time | HH:MM (24-hour) |
preferredDate2 | String | Second preferred appointment date | YYYY-MM-DD |
preferredTime2 | String | Second preferred appointment time | HH:MM (24-hour) |
Assignment & Categorization
| Field Name | Type | Description | Format |
|---|---|---|---|
assignedTo | String/Number | User ID to assign the lead to | Valid user ID |
tags | Array | Array of string tags for categorization | ["tag1", "tag2"] |
📊 Pro Tip: Use the
source field to track campaign ROI, estimatedValue for pipeline forecasting, and tags for advanced segmentation and automation triggers.Example Payloads
1. Minimal Required Fields Only
Basic lead creation with just the required fields:JSON
{
"firstName": "John",
"lastName": "Smith",
"email": "john.smith@example.com",
"phone": "+15551234567"
}Result: Lead created with source "Zapier Integration"
2. With Custom Lead Source
Track where your leads come from by specifying a source:JSON
{
"firstName": "Jane",
"lastName": "Doe",
"email": "jane.doe@example.com",
"phone": "(555) 987-6543",
"source": "Facebook Ads - Summer Campaign"
}Result: Lead created with source "Facebook Ads - Summer Campaign" • Phone auto-formatted to +15559876543
3. Complete Lead with Address
Comprehensive lead data that triggers automatic customer creation:JSON
{
"firstName": "Sarah",
"lastName": "Williams",
"email": "sarah.williams@example.com",
"phone": "(555) 321-7654",
"alternatePhone": "(555) 321-7655",
"companyName": "Williams Properties LLC",
"address": "789 Oak Avenue",
"unitNumber": "Suite 200",
"city": "Los Angeles",
"state": "CA",
"zip": "90001",
"gateCode": "#4567",
"source": "Facebook Ads - Spring Campaign",
"notes": "Interested in full exterior repaint",
"internalNotes": "High-value lead, follow up within 24 hours",
"estimatedValue": "8500.00",
"tags": ["commercial", "high-value", "urgent"]
}Result: Lead created with complete details + Customer record automatically generated with unique Customer ID
4. Appointment Request
Lead with appointment booking information:JSON
{
"firstName": "Mike",
"lastName": "Johnson",
"email": "mike.j@example.com",
"phone": "+15555551234",
"address": "456 Pine Street",
"city": "San Francisco",
"state": "CA",
"zip": "94102",
"source": "Website Booking Form",
"isAppointmentRequest": 1,
"preferredDate1": "2025-12-15",
"preferredTime1": "10:00",
"preferredDate2": "2025-12-16",
"preferredTime2": "14:00",
"notes": "Need color consultation for living room"
}Result: Lead created with appointment request flags for easy scheduling and follow-up
Validation Rules
📞Phone Number Processing
Accepted Formats:
(555) 123-4567555-123-45675551234567+15551234567
+1XXXYYYZZZZ)📧Email Validation
Format: Standard email validation appliedDuplicate Policy: Same email allowed (customers can have multiple projects)Case Sensitivity: Not case-sensitive
⚠️Required Field Check
Rule: All 4 required fields must be present and non-emptyError: 400 Bad Request if any field is missingTip: Use Zapier's "Required" toggle to prevent empty values
🚫Duplicate Prevention
Rule: Prevents exact duplicates within 5-minute windowCriteria: Same firstName + lastName + email + phonePurpose: Prevents accidental double-submissions
Response Codes
201 Created - Success
201Lead successfully created and added to your sales pipeline.
{
"success": true,
"message": "Lead created successfully",
"data": {
"id": 12345,
"dealId": "CMP-1-D12345",
"firstName": "John",
"lastName": "Smith",
"fullName": "John Smith",
"email": "john.smith@example.com",
"phone": "+15551234567",
"status": "New Lead",
"leadSource": "Zapier Integration",
"companyId": 1,
"createdAt": "2025-12-09T10:30:00.000Z"
},
"requestId": "uuid-here",
"processingTime": "145ms"
}
400 Bad Request - Missing Fields
400One or more required fields are missing.
{
"success": false,
"message": "Missing required fields. Please provide firstName, lastName, email, and phone",
"receivedFields": ["firstName", "email"],
"requestId": "uuid-here"
}
Fix:Verify all 4 required fields are mapped and non-empty in your Zap.
401 Unauthorized - Invalid Token
401Webhook token is invalid or expired.
{
"success": false,
"message": "Invalid webhook token. Please check your webhook URL.",
"requestId": "uuid-here"
}
Fix:Click "Connect to Zapier" in header → "Lead Creation" tab → Copy exact URL
Security Best Practices
✅ DO
- •Keep your webhook URL private and secure
- •Store securely in Zapier only
- •Regenerate token if compromised
- •Monitor webhook activity regularly
- •Use HTTPS for all requests (enforced)
❌ DON'T
- •Share your webhook URL publicly
- •Include token in screenshots shared online
- •Commit webhook URLs to version control
- •Use same token across multiple companies
- •Ignore suspicious webhook activity
Token Regeneration
If you suspect your webhook token has been compromised, you can regenerate it:- 1.Click "Connect to Zapier" button in the header
- 2.Go to the "Lead Creation" tab
- 3.Click "Regenerate Token"
- 4.Copy the new webhook URL and update your Zaps immediately
⚠️ Warning: Old token stops working immediately upon regeneration.
Troubleshooting
❌ "Missing required fields" Error
Cause:One or more of the 4 required fields is missing or empty.
Solution:
- Check that all 4 required fields are mapped in Zapier:
firstName,lastName,email,phone - Ensure mapped values are not empty or null
- Use Zapier's "Required" toggle to prevent empty values
- Test with sample data in Zapier's testing tool
🔒 "Invalid webhook token" Error
Cause:Webhook URL is incorrect or token has been regenerated.
Solution:
- Click "Connect to Zapier" in the header and go to "Lead Creation" tab
- Copy the exact webhook URL from SnapCoat
- Replace the entire URL in Zapier (don't try to edit it)
- Check for extra spaces or characters
- Test the Zap again
👻 Leads Not Appearing in Pipeline
Cause:Leads may be filtered out or webhook failed silently.
Solution:
- Check Zapier Task History for actual response code
- Look for HTTP 201 success status
- Toggle "Show All" in pipeline filters
- Search by lead name or email
- Check webhook activity in "Connect to Zapier" → "Status" tab
🔄 Duplicate Lead Errors
Cause:Same lead (name + email + phone) submitted within 5 minutes.
Solution:
- This is intentional to prevent double-submissions
- Wait 5 minutes before resubmitting
- Check if duplicate was already created successfully
- For legitimate repeat projects, modify one field slightly