Your Implementation Required
These endpoints must be implemented on your server
Overview
The sync and update endpoints allow bidirectional data flow between Enginy and your CRM:Key Principle: All matching logic lives in your CRM, not Enginy. You decide how to identify
companies (by domain, name, LinkedIn URL, etc.) and what data to sync back.
How Matching Works
When Enginy sends companies to sync, your CRM should:- Look up each company using your preferred identifier(s)
- Return matches with your CRM’s internal ID (
crmId) - Optionally return properties you want synced back to Enginy
Common Matching Strategies
Domain (Most Common)
Match by
domain field - the most reliable identifier for companiesLinkedIn URL
Match by
linkedinUrl - useful for B2B companiesCompany Name
Match by
name - use fuzzy matching for variationsComposite Key
Combine domain + name for higher accuracy
Domain Normalization
Always normalize domains before matching:Sync Companies
Request
Request Body
Enginy sends all companies it wants to sync:Response
Return only companies that exist in your CRM:Company
company-789 is not in the response because it doesn’t exist in your CRM. Only return matches.Example Implementation
Here’s how to implement the matching logic:Update Companies
After syncing, Enginy knows which companies have CRM IDs. The update endpoint receives only companies that were previously matched.Request
Request Body
Response
Example Implementation
Properties You Can Sync Back
When you returnproperties in your response, Enginy will store these values on the company. Common properties to sync:
You can return any properties you want. Enginy will store them as custom fields on the company.
Handling Null Values
To prevent accidentally clearing data in Genesy, follow these guidelines:
Best Practice: Only include fields in
properties that you explicitly want to sync back. If you don’t want to modify a field, don’t include it in the properties object.
Available Company Fields
Enginy sends these fields (when available):Engagement Field Updates
When contacts at a company engage with campaigns, Enginy can also send engagement updates to companies through thePUT /companies endpoint. These updates contain custom field names configured by the user.
Example Engagement Update
Field names are user-configurable. Your CRM should accept any field name and store it appropriately.
Error Handling
Partial Success
If some companies fail, return successful results and errors separately:Update Failures
For updates, indicate failure in the result:Handling Edge Cases
Subsidiaries & Parent Companies
If your CRM tracks parent/subsidiary relationships, decide how to handle:Duplicate Domains
If multiple accounts share a domain, pick the most relevant:Engagement Field Updates
When contacts at a company engage with campaigns, Enginy can also update company records through thePUT /companies endpoint. These updates contain custom field names configured by the user.
Example Engagement Update
Available Engagement Fields
The same engagement fields available for contacts can be configured for companies:Field names are user-configurable. Your CRM should accept any field name and store it appropriately.
Implementation Tip
Make sure yourPUT /companies handler stores unknown fields:
Reference Implementation
GitHub Repository
See a complete working implementation of companies sync and update endpoints, including engagement field
handling.