Integration

Connect Zendesk to Salesforce

Give support agents the account context on every ticket, and give the CRM a live view of support load: new tickets create or link a Salesforce Case, status and comments sync both ways under a loop guard, and each account's ticket count and CSAT roll up to the Salesforce Account. Every record change is an ordered run.

Two-way
Direction
Event-driven or polled
Latency
Ticket created or updated
Common trigger
Template, then map fields and statuses
Setup

Why teams connect Zendesk and Salesforce

Support works in Zendesk, account teams work in Salesforce, and each is blind to the other. Agents do not know an account's plan or renewal date. CSMs do not know an account just opened five urgent tickets. The usual fixes are a shallow native connector or a manual weekly export.

  • A new ticket is stamped with the account's plan, ARR, and CSM from Salesforce before an agent picks it up
  • Tickets and Cases stay in step both ways: status, priority, assignee, and public comments sync, with a loop guard so an update the sync made does not trigger itself back
  • Ticket volume, first response time, and CSAT roll up to the Salesforce Account, so success sees support health next to renewal date
  • Every record change is an ordered run log, so a case that fell out of sync can be traced to the exact sync and field

Worked example

The enrichment and sync flow most teams turn on first.

New Zendesk ticket to a linked Salesforce Case, with account context and a loop guard

Triggered on ticket creation, with a second flow for ongoing two-way updates.

  1. 1Trigger: a Zendesk trigger fires on Ticket is Created and calls Neblex with the ticket ID and the requester email.
  2. 2Resolve account: search Salesforce for a Contact by email, then read its Account for Plan__c, ARR__c, CSM__c, and Renewal_Date__c.
  3. 3Stamp the ticket: Zendesk Update ticket sets the tier custom field, the CSM custom field, and a tag of tier-enterprise or similar.
  4. 4Create the case: Salesforce Create record on Case, keyed on Zendesk_Ticket_Id__c, mapping the fields below and linking the Contact and Account.
  5. 5Loop guard: the case write is tagged as system-originated. The reverse flow ignores any Salesforce change whose last-modified-by is the integration user.
  6. 6Ongoing: a two-way flow syncs status, priority, assignee, and public comments. A Zendesk status maps to a Case status through a lookup, not one to one.
  7. 7Rollup: a scheduled flow recomputes open ticket count and 30-day CSAT per account and writes them to the Salesforce Account.

Field mapping

The starting map for the Zendesk ticket to Salesforce Case step. The status map is a lookup, not a direct copy.

ZendeskSalesforce CaseNotes
ticket.idZendesk_Ticket_Id__cMatch and idempotency key. Custom field on Case.
case.Id→ ticket custom field salesforce_case_idReverse match key. Written back after create.
ticket.subjectSubject
ticket.descriptionDescriptionFirst comment only. Later comments sync as Case comments.
ticket.requester.emailContactId (resolved)Resolved to a Contact, and its Account to AccountId. No match tags the ticket unmatched-account.
ticket.statusStatusLookup map. solved and closed both map to a single Case status you choose.
ticket.priorityPriorityLookup map. Zendesk has four levels, Salesforce has three by default.
ticket.assignee.emailOwnerId (resolved)Resolved through a user-map table. Unresolved assignees keep the queue owner.
ticket.created_at,Not written. Salesforce sets its own CreatedDate. Kept in the run log.
(system flag)LastModifiedById checkThe loop guard. Changes by the integration user are not synced back.

What syncs, each direction

  • Tickets to Cases. New tickets create linked Cases. Status, priority, assignee, and public comments sync on every update. (Zendesk to Salesforce)
  • Account context. Plan, ARR, CSM, renewal date, and account health are written to Zendesk ticket fields and the organization record. (Salesforce to Zendesk)
  • Case changes back. A Case status change, an internal comment, or a reassignment made in Salesforce syncs to the Zendesk ticket, subject to the loop guard. (Salesforce to Zendesk)
  • Support rollups. Open ticket count, first response time, and 30-day CSAT per account roll up to the Salesforce Account on a schedule. (Zendesk to Salesforce)

Governance and audit

The same controls apply to this sync as to every other Neblex workload.

  • Ordered run log. Every record sync is an event log with the before and after of each field and the loop-guard decision. Replay without re-creating the case.
  • Approval steps. Pause for review on a bulk status change or the first run of a changed status map, so a mapping error does not close a thousand cases.
  • Scoped access. Zendesk uses an agent API token with the needed role. Salesforce uses a connected app and a permission set limited to Case, Contact, and Account.
  • Environments. Build against a Zendesk sandbox and a Salesforce sandbox, then promote the same flow and mappings to production.

Frequently asked questions

How does the two-way sync avoid an infinite loop?

Every write the sync makes is tagged as system-originated. The reverse flow checks the last-modified-by user and ignores changes made by the integration account, so only real user edits propagate.

Zendesk has more ticket statuses than Salesforce has case statuses. How is that handled?

Status is a lookup map you define, not a one-to-one copy. Several Zendesk statuses can map to one Case status and vice versa, and the map is versioned in the flow.

Is this prompt or batched?

Event-driven for tickets when a Zendesk trigger calls a Neblex webhook endpoint, and streamed for Salesforce change events; otherwise within a polling interval. The support rollups run on a schedule.

What if a ticket's requester is not in Salesforce?

The ticket is tagged unmatched-account and the Case is created without an Account link, so support still gets a case and the CSM sees it later when the contact is added.

Is this different from the native Zendesk for Salesforce app?

The native app does one-way ticket-view and basic case creation. This adds two-way field sync with a loop guard, a defined status map, account enrichment onto the ticket, and support rollups, all in one run log.

Connectors on this page

Zendesk

Customer Support

Operations
626
Typed outputs
88.5%
Change triggers
Poll or inbound webhook
Authentication
None

Salesforce

CRM

Operations
1,296
Typed outputs
57.9%
Change triggers
95 (poll)
Authentication
OAuth2
See it on your data

Bring one real integration

We will build it with you against your own systems, with the run log open.