Skip to main content

Overview

The Custom CRM integration allows you to connect Enginy with your own CRM system or internal database. This enables Enginy to:
  • Export contacts and companies from Enginy to your CRM
  • Create tasks directly in your system when sequences or workflows require task creation
  • Create associations between contacts and companies in your CRM
  • Log activities (LinkedIn messages, emails) to your CRM
  • Assign owners to exported records (if your CRM supports users)
This integration is designed for companies with proprietary CRM systems or custom-built internal tools that aren’t supported by our standard integrations.

How It Works

When you connect a Custom CRM:
  1. You provide Enginy with your API base URL and authentication credentials
  2. Enginy validates the connection by calling your /health endpoint
  3. Once connected, Enginy can export contacts, companies, and create tasks in your system

Prerequisites

Before connecting, your CRM must expose the following endpoints:

Authentication

Your CRM must accept API key authentication via a configurable header. When connecting, you’ll specify:
ParameterDescriptionDefault
baseUrlYour API’s base URL (e.g., https://api.mycrm.com)Required
apiKeyYour API key or secret tokenRequired
apiKeyHeaderThe header name for authenticationX-API-Key
contactLinkTemplateURL template for contact records (use {{crmId}} as placeholder)Optional
companyLinkTemplateURL template for company records (use {{crmId}} as placeholder)Optional
Enginy will include this header in all requests:
POST /contacts HTTP/1.1
Host: api.mycrm.com
X-API-Key: your-secret-key
Content-Type: application/json
Accept: application/json
When configured, Enginy can generate clickable links to open contact and company records directly in your CRM. This allows users to quickly navigate from Enginy to the corresponding record in your system. To enable this feature, provide URL templates when connecting your CRM:
{
  "baseUrl": "https://api.mycrm.com",
  "apiKey": "your-crm-api-key",
  "apiKeyHeader": "X-API-Key",
  "contactLinkTemplate": "https://mycrm.com/contacts/{{crmId}}",
  "companyLinkTemplate": "https://mycrm.com/companies/{{crmId}}"
}
The {{crmId}} placeholder will be replaced with the actual CRM ID when generating links. For example:
  • Template: https://mycrm.com/contacts/{{crmId}}
  • Result: https://mycrm.com/contacts/ABC123
The link templates are optional. If not provided, the “Open in CRM” links will not be available for Custom CRM records.

Users/Owners Support (Optional)

If your CRM has a concept of users or owners that can be assigned to contacts, companies, tasks, and activities, you can implement the optional /users endpoint to enable owner selection in Enginy.

How It Works

When you connect your Custom CRM, Enginy automatically tests the /users endpoint:
ResponseResult
2xx with user list✅ Owner selection enabled in export modal
404 / 501 / 405Owner selection gracefully disabled (not an error)
Other errorsOwner selection disabled, connection proceeds normally
This detection happens every time Enginy needs to fetch owners, not just during initial connection. This means you can add or remove the /users endpoint at any time.

What You Get

When users are available, Enginy shows an owner dropdown in:
  • Export modal - Assign an owner to all exported contacts/companies
  • Task creation - Set the task owner
  • Activity logging - Associate activities with the owner

Implementation

Your /users endpoint should return an array of users:
GET /users

[
  { "id": "user-123", "name": "John Smith", "email": "[email protected]" },
  { "id": "user-456", "name": "Jane Doe", "email": "[email protected]" }
]
The id is sent back to your CRM when creating records with an owner assignment.

Users API Reference

See the complete Users endpoint specification

Connecting Your CRM

Step 1: Implement the Required Endpoints

Before connecting, ensure your CRM implements the required interface. See the Custom CRM API Reference for detailed specifications.

Reference Implementation

Clone our open-source reference implementation to get started quickly

Step 2: Test the Connection

Use the test endpoint to validate your configuration:
curl -X POST https://openapi.enginy.ai/v1/custom-crm/test \
  -H "x-api-key: gsk_your_enginy_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "baseUrl": "https://api.mycrm.com",
    "apiKey": "your-crm-api-key",
    "apiKeyHeader": "X-API-Key"
  }'
The test response includes information about users support:
{
  "success": true,
  "supportsUsers": true,
  "users": [{ "id": "user-123", "name": "John Smith", "email": "[email protected]" }]
}
If supportsUsers is true, the test also fetches your users to verify the endpoint works correctly.

Step 3: Connect

Once the test passes, connect your CRM:
curl -X POST https://openapi.enginy.ai/v1/custom-crm/connect \
  -H "x-api-key: gsk_your_enginy_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "baseUrl": "https://api.mycrm.com",
    "apiKey": "your-crm-api-key",
    "apiKeyHeader": "X-API-Key",
    "contactLinkTemplate": "https://mycrm.com/contacts/{{crmId}}",
    "companyLinkTemplate": "https://mycrm.com/companies/{{crmId}}"
  }'
The contactLinkTemplate and companyLinkTemplate parameters are optional. Include them to enable “Open in CRM” links.

Step 4: Verify Status

Check your connection status anytime:
curl https://openapi.enginy.ai/v1/custom-crm/status \
  -H "x-api-key: gsk_your_enginy_api_key"

Exporting to Your CRM

Once connected, you can export contacts and companies from Enginy to your Custom CRM:
  1. Select leads/companies in Enginy
  2. Choose “Export to CRM” and select Custom CRM
  3. Enginy will:
    • First create companies (if any)
    • Then create contacts
    • Finally create associations between contacts and companies
  4. CRM IDs are saved in Enginy for future reference
The export is push-only. Enginy sends all available fields as-is to your CRM. Your CRM is responsible for mapping and storing the data appropriately.

Disconnecting

To disconnect your Custom CRM:
curl -X DELETE https://openapi.enginy.ai/v1/custom-crm/disconnect \
  -H "x-api-key: gsk_your_enginy_api_key"

Next Steps