Create Zendesk support tickets directly from Salesforce Cases using Flow Builder - no code required.
A Salesforce-native integration that enables customer service teams to automatically create Zendesk tickets from Salesforce Cases. Built with Invocable Apex for seamless Flow Builder compatibility.
Package Version: 0.1.0-1
Subscriber Package Version Id: 04tfo000001FaSPAA0
- Invocable Apex Action - Use in Flow Builder to create Zendesk tickets with no code
- Custom Metadata Configuration - Store API credentials securely (no hardcoded values)
- Priority Mapping - Automatically maps Salesforce Case priority to Zendesk
- Error Handling - Returns success/failure status with detailed error messages
- External ID Linking - Links Zendesk tickets back to Salesforce Cases
- Escalate high-priority Cases to your support team in Zendesk
- Sync customer issues across CRM and helpdesk platforms
- Automate ticket creation when Cases meet specific criteria
- Enable service agents to create Zendesk tickets with one click
| Component | Type | Description |
|---|---|---|
ZendeskTicketService |
Apex Class | Invocable action for Flow Builder |
ZendeskTicketServiceTest |
Apex Test Class | Test coverage for the service |
Zendesk_Settings__mdt |
Custom Metadata Type | Stores API credentials securely |
Zendesk_API |
Remote Site Setting | Enables callouts to Zendesk API |
Click one of the install buttons above, or use the Salesforce CLI:
sf package install --package 04tfo000001FaSPAA0 --target-org your-org-alias --wait 10- Log in to your Zendesk Admin Center
- Navigate to Apps and integrations > APIs > Zendesk API
- Click Add API token
- Copy the generated token (you won't be able to see it again)
- Go to Setup > Security > Remote Site Settings
- Find and edit Zendesk_API
- Replace
your-subdomainwith your actual Zendesk subdomain in the URL- Example:
https://acme.zendesk.com
- Example:
- Save the changes
- Go to Setup > Custom Metadata Types
- Click Manage Records next to Zendesk Settings
- Edit the Default record:
| Field | Description | Example |
|---|---|---|
| Subdomain | Your Zendesk subdomain | acme (for acme.zendesk.com) |
| Zendesk agent email address | support@acme.com |
|
| API Token | Token from Step 2 | abc123xyz789... |
| Is Active | Enable the integration | true |
- Save the record
- Open Flow Builder
- Add an Action element
- Search for "Create Zendesk Ticket"
- Configure the inputs:
| Variable | Required | Description |
|---|---|---|
| Case ID | Yes | The Salesforce Case record ID |
| Subject | No | Ticket subject (defaults to "Case from Salesforce") |
| Description | No | Ticket body/comment |
| Priority | No | High, Medium, or Low |
| Requester Email | No | Email of the ticket requester |
| Requester Name | No | Name of the ticket requester |
| Variable | Type | Description |
|---|---|---|
| Success | Boolean | true if ticket was created |
| Zendesk Ticket ID | String | ID of the created Zendesk ticket |
| Error Message | String | Error details if creation failed |
Record-Triggered Flow on Case
↓
When Case Status = "Escalated"
↓
Action: Create Zendesk Ticket
- Case ID: {!$Record.Id}
- Subject: {!$Record.Subject}
- Description: {!$Record.Description}
- Priority: {!$Record.Priority}
- Requester Email: {!$Record.Contact.Email}
- Requester Name: {!$Record.Contact.Name}
↓
Decision: Check Success
↓
If True → Update Case with Zendesk Ticket ID
If False → Create Task for Manual Review
| Error | Cause | Solution |
|---|---|---|
Zendesk integration is not configured or inactive |
Settings not configured or Is_Active is false | Complete Step 4 and set Is Active to true |
Zendesk API Error: 401 |
Invalid credentials | Verify email and API token are correct |
Zendesk API Error: 404 |
Wrong subdomain | Check Remote Site Setting URL matches your Zendesk URL |
System.CalloutException |
Remote Site not configured | Complete Step 3 |
- Create a simple Screen Flow with the Create Zendesk Ticket action
- Use a test Case ID
- Run the Flow and check the output variables
- Verify the ticket appears in Zendesk
- API tokens are stored in Custom Metadata (protected, not exposed in code)
- Uses Basic Authentication with token (Zendesk recommended approach)
- All callouts use HTTPS
- External ID links tickets back to Salesforce for auditing
This project is licensed under the MIT License - see the LICENSE file for details.
Issues and pull requests are welcome! Please open an issue first to discuss any changes.