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: 'user@example.com',
  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": "user@example.com",
    "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: 'user@example.com',
  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: 'user@example.com',
  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: 'user@example.com'
});

// 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