Skip to main content
POST
/
contacts
/
sync
{
  "contacts": [
    {
      "externalId": "lead-123",
      "email": "[email protected]",
      "firstName": "Sarah",
      "lastName": "Chen",
      "linkedinUrl": "https://linkedin.com/in/sarahchen"
    },
    {
      "externalId": "lead-456",
      "email": "[email protected]"
    }
  ]
}
{
  "results": [
    {
      "externalId": "lead-123",
      "crmId": "contact_8f3k2j",
      "properties": {
        "leadScore": 85,
        "lifecycleStage": "MQL",
        "lastActivityDate": "2024-01-15T14:30:00Z"
      }
    }
  ]
}

Your Implementation Required

This endpoint must be implemented on your server
Enginy calls this endpoint to find which contacts already exist in your CRM. Your CRM decides the matching logic (by email, LinkedIn URL, phone, etc.).

Request

contacts
array
required
Array of contact objects to find

Contact Object

externalId
string
required
Enginy’s internal lead ID
email
string
Email address for matching
linkedinUrl
string
LinkedIn URL for matching
{
  "contacts": [
    {
      "externalId": "lead-123",
      "email": "[email protected]",
      "firstName": "Sarah",
      "lastName": "Chen",
      "linkedinUrl": "https://linkedin.com/in/sarahchen"
    },
    {
      "externalId": "lead-456",
      "email": "[email protected]"
    }
  ]
}

Response

Return only contacts that exist in your CRM.
results
array
required
Array of matched contacts
results[].externalId
string
required
The externalId from the request
results[].crmId
string
required
Your CRM’s ID for this contact
results[].properties
object
Optional properties to sync back to Enginy (leadScore, lifecycleStage, etc.)
{
  "results": [
    {
      "externalId": "lead-123",
      "crmId": "contact_8f3k2j",
      "properties": {
        "leadScore": 85,
        "lifecycleStage": "MQL",
        "lastActivityDate": "2024-01-15T14:30:00Z"
      }
    }
  ]
}
Contact lead-456 is not in the response because it doesn’t exist in the CRM. Only return matches.