Skip to content

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

  1. Go to app.extensionlogin.com
  2. Navigate to CRM Connections
  3. Click "Add Connection"
  4. Select your CRM type
  5. Enter your credentials
  6. Test the connection
  7. 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 apply

Getting your ClickFunnels API Key:

  1. Log in to ClickFunnels
  2. Go to Account Settings > API
  3. Create a new API key
  4. 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 apply

Getting your GoHighLevel API Key:

  1. Log in to GoHighLevel
  2. Go to Settings > API Keys
  3. Create a new API key
  4. 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 PATCH

How Data Flows

When you call identify():

javascript
await ExtensionLogin.identify({
  email: '[email protected]',
  name: 'John Doe',
  metadata: { plan: 'pro' }
});

ExtensionLogin:

  1. Validates the user data
  2. Stores it in your user database
  3. Sends to each connected CRM in parallel
  4. Returns the result
Extension → ExtensionLogin API → Your CRMs
                             ├─→ ClickFunnels
                             ├─→ GoHighLevel
                             └─→ Your Webhook

CRM Data Mapping

ClickFunnels Mapping

ExtensionLoginClickFunnels
emailemail
namename
firstNamefirst_name
lastNamelast_name
phonephone
metadatacustom_fields

GoHighLevel Mapping

ExtensionLoginGoHighLevel
emailemail
namename
firstNamefirstName
lastNamelastName
phonephone
metadatacustomField

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

  1. Go to your CRM connection settings
  2. Add tags in the "Tags" field
  3. 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

  1. Go to CRM Connections in dashboard
  2. Click "Test Connection"
  3. Enter test user data
  4. 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:

  1. Add each CRM connection in dashboard
  2. Link all connections to your extension
  3. 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 webhook

Error 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:

  1. Go to Extension Settings
  2. Enable "Detailed Logging"
  3. View logs in the Logs tab

Best Practices

  1. Test First: Always test with el_test_ keys before production
  2. Handle Errors: Don't break UX if CRM fails
  3. Use Tags: Segment users by source, plan, etc.
  4. Verify Webhooks: Always validate signatures
  5. Monitor Deliveries: Check dashboard regularly for failures

Next Steps

Built for Chrome Extension Developers