Appearance
CRM Integration
Automatically send user data to your CRM whenever someone signs up through your extension.
Supported CRMs
ExtensionLogin integrates with:
- ClickFunnels - Direct API integration with tag support
- GoHighLevel - Direct API integration with tag support
- Custom Webhooks - Send data to any endpoint
Setting Up CRM Connections
In the Dashboard
- Go to app.extensionlogin.com
- Navigate to CRM Connections
- Click "Add Connection"
- Select your CRM type
- Enter your credentials
- Test the connection
- Link to your extension
Connection Types
ClickFunnels
CRM Type: clickfunnels
Required:
- API Key: Your ClickFunnels API key
- List ID: The funnel/list to add contacts to
Optional:
- Tags: Comma-separated tags to applyGetting your ClickFunnels API Key:
- Log in to ClickFunnels
- Go to Account Settings > API
- Create a new API key
- Copy the key to ExtensionLogin dashboard
GoHighLevel
CRM Type: gohighlevel
Required:
- API Key: Your GoHighLevel API key
- Location ID: Your GHL location ID
Optional:
- Tags: Comma-separated tags to applyGetting your GoHighLevel API Key:
- Log in to GoHighLevel
- Go to Settings > API Keys
- Create a new API key
- Copy the key and Location ID to ExtensionLogin dashboard
Custom Webhook
CRM Type: webhook
Required:
- URL: Your webhook endpoint
Optional:
- Headers: Custom headers (JSON format)
- Method: POST (default), PUT, or PATCHHow Data Flows
When you call identify():
javascript
await ExtensionLogin.identify({
email: '[email protected]',
name: 'John Doe',
metadata: { plan: 'pro' }
});ExtensionLogin:
- Validates the user data
- Stores it in your user database
- Sends to each connected CRM in parallel
- Returns the result
Extension → ExtensionLogin API → Your CRMs
├─→ ClickFunnels
├─→ GoHighLevel
└─→ Your WebhookCRM Data Mapping
ClickFunnels Mapping
| ExtensionLogin | ClickFunnels |
|---|---|
email | email |
name | name |
firstName | first_name |
lastName | last_name |
phone | phone |
metadata | custom_fields |
GoHighLevel Mapping
| ExtensionLogin | GoHighLevel |
|---|---|
email | email |
name | name |
firstName | firstName |
lastName | lastName |
phone | phone |
metadata | customField |
Webhook Payload
Webhooks receive the full user object:
json
{
"event": "user.identified",
"timestamp": "2024-01-15T10:30:00Z",
"user": {
"id": "usr_a1b2c3d4e5",
"email": "[email protected]",
"name": "John Doe",
"firstName": "John",
"lastName": "Doe",
"phone": "+1-555-123-4567",
"metadata": {
"plan": "pro",
"source": "chrome_extension"
},
"createdAt": "2024-01-15T10:30:00Z"
},
"application": {
"id": "app_xxxxx",
"name": "Your Extension Name"
}
}Tags
Add tags to segment users in your CRM:
Configure Tags in Dashboard
- Go to your CRM connection settings
- Add tags in the "Tags" field
- Enter comma-separated values:
chrome-extension, new-user, trial
Dynamic Tags via Metadata
Pass tags through metadata:
javascript
await ExtensionLogin.identify({
email: '[email protected]',
metadata: {
tags: ['premium', 'referral'],
source: 'product_hunt'
}
});Configure tag mapping in the dashboard to map metadata.tags to CRM tags.
Testing CRM Integration
Test Mode
Use test API keys to avoid sending data to production CRMs:
javascript
ExtensionLogin.init({
apiKey: 'el_test_xxxxxx' // Test key - won't send to CRMs
});Dashboard Test Tool
- Go to CRM Connections in dashboard
- Click "Test Connection"
- Enter test user data
- Verify data appears in your CRM
Debug Logging
Enable debug mode to see CRM requests:
javascript
ExtensionLogin.init({
apiKey: 'el_live_xxxxxx',
debug: true
});
// Console shows:
// [ExtensionLogin] Sending to CRM: clickfunnels
// [ExtensionLogin] CRM response: { success: true }Multiple CRM Connections
Send to multiple CRMs simultaneously:
- Add each CRM connection in dashboard
- Link all connections to your extension
- Every
identify()call sends to all connected CRMs
javascript
// Single call sends to ALL connected CRMs
await ExtensionLogin.identify({
email: '[email protected]',
name: 'John Doe'
});
// → Sent to ClickFunnels
// → Sent to GoHighLevel
// → Sent to your webhookError Handling
CRM errors don't block user identification:
javascript
const result = await ExtensionLogin.identify({
email: '[email protected]'
});
// User is always stored, even if CRM fails
console.log(result.success); // true
console.log(result.user); // User object
// CRM status is available separately
console.log(result.crm);
// {
// clickfunnels: { success: true },
// gohighlevel: { success: false, error: 'Rate limited' },
// webhook: { success: true }
// }Webhook Security
Secure your webhook endpoint:
Signature Verification
ExtensionLogin signs webhook requests. Verify the signature:
javascript
// Express.js example
app.post('/webhook', (req, res) => {
const signature = req.headers['x-extensionlogin-signature'];
const timestamp = req.headers['x-extensionlogin-timestamp'];
// Verify signature
const payload = JSON.stringify(req.body);
const expectedSignature = crypto
.createHmac('sha256', process.env.WEBHOOK_SECRET)
.update(`${timestamp}.${payload}`)
.digest('hex');
if (signature !== expectedSignature) {
return res.status(401).send('Invalid signature');
}
// Process webhook
const { user } = req.body;
console.log('New user:', user.email);
res.status(200).send('OK');
});Custom Headers
Add authentication headers in dashboard:
json
{
"Authorization": "Bearer your-secret-token",
"X-Custom-Header": "value"
}Retry Logic
ExtensionLogin automatically retries failed CRM requests:
- Attempts: 3 retries
- Backoff: Exponential (1s, 2s, 4s)
- Timeout: 30 seconds per attempt
Failed requests are logged in your dashboard for review.
Monitoring
Dashboard Analytics
View CRM delivery stats in your dashboard:
- Success rate by CRM
- Failed deliveries with error details
- Request volume over time
API Logs
Enable API logging to track all CRM requests:
- Go to Extension Settings
- Enable "Detailed Logging"
- View logs in the Logs tab
Best Practices
- Test First: Always test with
el_test_keys before production - Handle Errors: Don't break UX if CRM fails
- Use Tags: Segment users by source, plan, etc.
- Verify Webhooks: Always validate signatures
- Monitor Deliveries: Check dashboard regularly for failures
Next Steps
- Webhooks - Advanced webhook configuration
- Custom Fields - Map custom data to CRM fields
- Security - Secure your integrations