Integration patterns
Choose how data moves, how changes are identified and how failures are recovered.
On this page
Choose the pattern from the requirement
Use event delivery when the receiving workflow needs timely changes and the source offers a suitable webhook. Use scheduled extraction when completeness, reconciliation or historical reporting matters more than immediate delivery. A hybrid design can combine an event path with periodic reconciliation.
Define ownership before mapping fields
For every shared object, record a stable source identifier, the owning system, the fields that may be written and the direction of updates. Bidirectional synchronization needs an explicit conflict policy. A timestamp alone may be insufficient when vendors use different update clocks or asynchronous processing.
Make processing repeatable
An integration should handle repeated delivery without creating repeated business actions. Preserve a source event identifier, validate its schema and record the processing outcome. Use idempotent writes where the destination supports them. Decide how long deduplication records need to be retained.
Plan for exceptions
Separate transient failures from invalid data and revoked access. Bound retry attempts and backoff, respect vendor rate limits and route unresolved items to an accountable owner. A recovery runbook should describe how to inspect, correct and replay work without duplicating downstream actions.
Verify the whole journey
Test create, update, merge, delete, consent changes, missing fields, pagination, duplicate delivery and destination downtime. Reconcile representative source and destination totals and include operational monitoring in the handover.
Separate receipt from the business effect
A receiving endpoint can validate and durably record an event before a worker performs the business action. This separates the sender’s response window from destination latency. An internal event envelope normalizes vendor payloads into a consistent processing contract. Keep tenant and object context with the source key. HubSpot documents that eventId is not guaranteed unique, so it should not be the sole deduplication key. Build and test an event fingerprint appropriate to the selected delivery model.
{
"schema_version": 1,
"source": "crm",
"tenant_reference": "account_01",
"object_type": "contact",
"source_record_id": "contact_1042",
"event_type": "qualification_changed",
"occurred_at": "2026-09-14T09:30:00Z",
"correlation_id": "journey_208",
"business_action_key": "account_01:contact_1042:qualification_7"
}Classify the failure before choosing a retry
Transient transport failures, invalid business data and authorization failures need different owners. Respect the destination’s response semantics and retry guidance. A timeout is especially important because the destination may already have accepted the operation. Read back the record or inspect the supported operation status before repeating a consequential write.
| Condition | Response | Evidence to retain |
|---|---|---|
| Temporary throttling | Wait under the vendor policy and retry within a bounded budget. | Attempt count, delay and correlation reference |
| Invalid field or identity | Quarantine the record for correction. | Mapping version and validation reason |
| Revoked access | Stop the affected connection and notify its owner. | Connection reference and authorization failure |
| Unknown write outcome | Inspect destination state before another write. | Business action key and destination reference |
Use reconciliation to detect silent gaps
Monitor execution failures and data agreement separately. Compare source and destination keys, selected owned fields, associations and deletion state over an agreed period. A process can have no recent errors while its event subscription has stopped receiving data. A reconciliation job should expose missing records and stale checkpoints, create targeted recovery work and preserve the reason each difference was considered legitimate or incorrect.
Standards and documentation
Explore the protocol specifications and platform guidance for this topic.
Bring the contract into your operating environment.
Discuss an implementation