Browse documentation

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.

Internal event envelope examplejson
{
  "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.

ConditionResponseEvidence to retain
Temporary throttlingWait under the vendor policy and retry within a bounded budget.Attempt count, delay and correlation reference
Invalid field or identityQuarantine the record for correction.Mapping version and validation reason
Revoked accessStop the affected connection and notify its owner.Connection reference and authorization failure
Unknown write outcomeInspect 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

Image preview