Short answer
For every object an integration touches, write down which system owns it, which way data flows, how records match and what happens on error. Match on durable external IDs, not names or emails; start one way; test sandbox to sandbox; and add error alerts, retries and a reconciliation report before go-live.
The integration register
Keep one table per integration with these columns:
| Column | Example |
|---|---|
| Object | Contact |
| System of record | Salesforce |
| Direction | Salesforce to HubSpot |
| Match key | Salesforce ID stored in HubSpot |
| Fields owned by the other system | Marketing source, email engagement |
| Frequency | Near real time |
| Error handling | Alert to admin channel, retry 3 times, daily error report |
Rules
- One owner per field. Two systems writing the same field is how data flips back and forth.
- Durable IDs. Store each system's ID in the other. Name and email matching breaks on shared and changed addresses.
- One way first. Add the reverse direction only for fields a process needs.
- Check the API before scoping. Confirm the endpoints cover the objects you need, and estimate API usage against limits.
- Leave history out. Load historical activity once, outside the live sync, to protect API limits and storage.
Before go-live
- Test sandbox to sandbox with realistic volume.
- Error alerts go to a named owner, not a shared inbox nobody reads.
- A reconciliation report compares record counts and key fields daily for the first month.
- Raising API limits is a short-term fix. If usage is close to the limit, change the design.
Official documentation
Frequently asked questions
What is a system of record in a CRM integration?
The system that owns a type of data and wins when values conflict. Each object, and ideally each field, should have exactly one system of record.
Should integrations match records on email address?
Avoid it where you can. Store each system's record ID in the other and match on that. Email matching breaks when people share or change addresses.
Salesforce, HubSpot, Anthropic and OpenAI change their products often. Check the official documentation before you rely on a specific setting, limit or price.
