Skip to content
Orvenant
Orvenant

CRM & API integrations

Make your systems work as one process.

CRM and API integrations that move the right information between teams and tools. Build around clear ownership, permissions and a recoverable path when something fails.

Illustration: an example event in code beside the CRM record it updates. Each event field fills its matching record field, one field shows its precedence rule and the record reads as synced.

Connect records only after their owners are clear.

A CRM integration often begins with a request to make two dashboards agree. The important question is which system creates a contact, owns an address change and records the customer's permission. We trace the journey from a submitted event to the person who acts on it. This work fits when duplicate entry, delayed handoffs or inconsistent status is affecting real operations, and the systems provide suitable interfaces and access.

  • Enquiries that arrive twice

    Repeated submissions, invalid contact details and an unavailable owner each need a distinct state, not a duplicate record.

    View Lead capture & follow-up
  • Orders that drift out of step

    A storefront may accept an order while stock is stale or the accounting record arrives twice.

    View Ecommerce integrations
  • Status nobody trusts

    Two systems show different states for the same customer, and staff reconcile them by hand.

Map who owns each field before data moves.

Describe identifiers, required fields, ownership, consent meaning and access by role before data moves. A field name alone rarely captures a business rule.

Example

Example ownership map for a contact record
FieldOwning systemWho may change itWhen systems disagree
Contact referenceCRMCreated once by the CRMA reference without a match waits for an operator
Email addressCRMSales teamThe newer update wins
Newsletter consentEmail platformThe contactStored as recorded, never inferred from other fields
Enquiry sourceWebsite formNo one after receiptKept for reporting only
Order statusStoreFulfillment teamThe store’s state decides

A project enquiry is not newsletter permission. Consent is mapped only from the system that recorded it, with its meaning intact.

  1. Plan field ownership for orders and stock

    Assign an owner to each product, stock quantity, customer and order state before drawing connections between platforms.

    Read the guide: Connecting orders, inventory and CRM

Define a contract people can inspect.

The exact contract depends on the API and business workflow. It names the identifier each event carries, the owner of each field and the agreed next step after each kind of failure.

A timeout means the caller did not receive a result. The other system may already have committed the change. Before retrying a write without duplicate protection, look up the original business record or reconcile the destination state.

Interactive illustration with sample data

Event from the website form contact.updated

{  "event_id": "evt_8841",  "type": "contact.updated",  "source": "website_form",  "contact_ref": "C-1047",  "consent": "newsletter",  "updated_at": "2026-10-02T09:14Z"}
  1. AcceptedRecorded with event_id
  2. QueuedWritten to the CRM
  3. CompletedOne contact updated

The event was recorded, queued and written once. Each state is shown on its own, so a quick response is not mistaken for a finished update.

The same event arrives a second time.

The receiver already holds this event_id, so the second delivery changes nothing and the CRM keeps one contact.

The CRM commits the write, but its reply never arrives.

The outcome was unknown, not failed. Before any retry the CRM record is looked up; the update is already there, so nothing is written again.

Another event arrives with a contact_ref the CRM does not know.

The record waits in the operator list with the field to correct. It is not retried until someone fixes the reference or returns it to the owning team.

Field rules

event_id
A stable identifier from the sender. The receiver records it before acting, so a second delivery is recognized rather than applied again.
contact_ref
Matched on the CRM identifier, never on a name. A reference without a match goes to the operator list instead of creating a contact.
consent
The permission and its meaning as the owning system recorded them. The receiver stores the value as sent and does not infer permission from other fields.
updated_at
Decides precedence when both systems changed the record, and shows whether an update already landed. An older update does not overwrite a newer value.
  1. Exchange and reconciliation

    Build bounded requests, idempotent updates where possible and a way to compare source and destination after a partial failure.

  2. Operator handoff

    Show staff where rejected records appear, what can be corrected and when a decision needs to return to the owning team.

    View Automation maintenance

Start with one event and trace it to completion.

We choose a representative record and follow creation, update, failure and correction across the boundary. We distinguish accepted, queued and completed work. This avoids treating a successful HTTP response as proof that a person received the right information.

  1. Accepted

    The event is validated and stored with its identifier before the sender is told it arrived.

  2. Queued

    Processing is separated from receipt, so a slow CRM does not keep the sender waiting.

  3. Written to the CRM

    The record is matched on its identifier and updated once. A repeated event changes nothing.

  4. Team notified

    The responsible person is told after the record is dependable, so a failed message does not create the record again.

  5. Completed

    The business action has finished in the receiving system; a success response alone is not completion.

Your team confirms what the resulting status means to sales or support, while technical checks confirm what the interfaces actually returned.

Two systems can disagree without either one being broken.

An old record, an edited address or a reversed order may be valid in one system and stale in another. We agree precedence and conflict resolution rather than silently overwriting it. API limits, vendor terms, paid access, historical cleanup and personal-data retention are assessed in the actual provider environment. The integration cannot guarantee delivery when a provider is down; the recovery path is part of the design.

  1. Silent overwrite

    Whichever system writes last wins, and a valid newer value disappears without anyone noticing.

    • An edited address is replaced by an old one
    • A reversed order reappears
    • Nobody can say which value is right
  2. Agreed precedence

    Each field has an owner and a conflict rule, so an older update cannot overwrite a newer value.

    • The owning system decides
    • An older update does not overwrite a newer value
    • Every correction is recorded with its reason

Document what the connection depends on.

A small change to a form, CRM schema or permission may affect the exchange, so change review is part of continued operation. Any support term or new integration remains a separate agreement.

Connection record

Endpoints
every system the connection calls, and in which direction
Authentication
who owns each credential; source credentials stay in organizational accounts
Data fields
each mapped field and the system that owns it
Monitoring
which signals raise an alert, and who receives it
Replay limits
what may be replayed, by whom and after which check
Provider changes
the contact responsible when an interface or schema changes

Some of the teams we have worked with.

Across talent, fitness, mobility, payments and local commerce.
RandstadClassPassVeezuRushpaySupport Black Owned

Questions about integrations.

Can you merge all our CRM records as part of an integration?

Historical deduplication and data quality require their own rules and review. We can identify the needed work while defining the exchange, but we will not silently merge people or organizations on a weak match.

How do you prevent a repeated event from creating duplicate work?

We use stable identifiers and test what the destination does when the same request arrives again. Where idempotency is unavailable, the workflow needs a reconciliation step before another write.

Do you need access to our live systems to start?

No. We start from a representative record and the interfaces your systems document. Credentials and customer data belong in an approved secure channel, never in an initial enquiry.

Continue exploring

Continue exploring

  1. AI & automation

    Business automation, CRM integrations and AI implementation for defined operational tasks. Connect systems without hiding the rules or the exceptions.

    View AI & automation
A DIRECT CONVERSATION

Bring one event that goes wrong today.

Tell us where it starts, which systems should agree and what staff fix by hand. We can trace it to completion and define the contract around it.

Privacy settings

Each option stays off unless you allow it. Enquiry contents and contact details are never sent to Google.

Optional measurement

Google Analytics cookies measure visits and pages, traffic sources and campaigns, approximate location and devices.

Google signals adds age, gender, interest and cross-device reports, and Google may also use this data to personalize ads. Requires Analytics.

Withdrawing stops future collection and removes this site’s accessible Google cookies. It does not erase information already received by Google. Privacy notice · Cookie notice