The bidirectional Zendesk + Iterable integration lets you send data from Iterable to your Zendesk account and vice versa. For example, you could use this integration to automatically create a support ticket in Zendesk when one of your users clicks a help button in one of your Iterable campaigns. When the Zendesk ticket is resolved, you can automatically trigger an event in Iterable to send a follow-up email campaign that asks the customer for feedback about their support experience. With this integration, you can effortlessly streamline your customer support process and boost customer engagement.
In this article
Sending Data from Iterable to Zendesk
To send data from Iterable to Zendesk, you'll need to create a Zendesk API key and add a journey webhook to one of your Iterable journeys.
Step 1: Create a Zendesk API key
To create a Zendesk API key, follow these instructions in the Zendesk support docs.
Step 2: Create an Iterable journey webhook
In Iterable, go to Integrations > Journey Webhooks.
Click New Webhook.
Enter a name for your webhook (for example, "Create a Zendesk ticket").
For Destination, select Custom.
For Method, select POST.
-
In the Endpoint field, enter the URL of the Zendesk API endpoint you want the webhook to call. For example:
https://<YOUR_ZENDESK_ORG>.zendesk.com/api/v2/tickets.json
You can find a list of available endpoints in Zendesk's API documentation.
NOTE
To authenticate your webhook, see Zendesk's article How can I authenticate API requests?.
For Body, select JSON.
-
Configure the webhook to send the data Zendesk expects. (See Zendesk's API documentation for help with this).
Here's an example of what the JSON body could look like:
{ "ticket": { "subject": "Example Ticket from journey webhook", "comment": { "body": "This is the description of the ticket." }, "requester": { "name": "{{name}}", "email": "{{email}}", "external_id": "{{userId}}" }, "priority": "normal", "tags": [ "support" ] } }
NOTE
This example uses Handlebars to include relevant data about the requester in the JSON body.
Click Create webhook.
The completed webhook configuration looks like this:
Step 3: Add the webhook to one of your journeys
In Iterable, open one of your journeys or create a new one.
Add a Call webhook tile to the journey.
Double-click the tile to open its settings menu.
Leave the Use a present webhook toggle switched on.
Select the name of the webhook you created in Step 1, and click Update.
Save and publish the journey. Iterable will start sending data to Zendesk when users enter the tile.
Sending data from Zendesk to Iterable
To send data from Zendesk to Iterable, you'll need to create an Iterable API key and create a Zendesk webhook.
Step 1: Create an Iterable API key
- In Iterable, go to Integrations > API Keys.
- Click New API Key.
- Give your API key a name (for example, "Zendesk Integration") and select Server-side.
- Click Create.
- Copy the API key and save it somewhere secure. Once you close this window, the full API key won't be displayed again.
To learn more about creating API keys in Iterable, see API Keys.
Step 2: Create a Zendesk webhook
In this example, we'll set up a Zendesk webhook that triggers a custom event in Iterable when a Zendesk ticket is marked as resolved.
In Zendesk, go to your Admin Center and create a new webhook. (See Zendesk's guide Creating webhooks to interact with third-party systems for help with this.)
-
For the Endpoint URL field, enter the URL of the Iterable API endpoint you want the webhook to call. In this example, we'll use the
POST /api/events/track
endpoint:https://api.iterable.com/api/events/track
You can find a list of available endpoints in the API Overview.
For Request method, select POST.
For Request format, select JSON.
-
For Authentication, select API key and enter the following settings:
-
Header name:
Api-Key
-
Value:
[YOUR ITERABLE API KEY]
-
Header name:
-
Click Update.
-
Test your webhook to ensure it works as expected. The JSON body's format must match the expectations of the receiving API endpoint.
CAUTION
Testing the webhook will send data to the connected Iterable project.
See the API Overview to check the expected JSON format for your selected API endpoint.
Step 2: Connect your Zendesk webhook to a trigger or automation
-
Follow Zendesk's instructions to connect your webhook to a trigger or automation.
- In our example, the webhook is triggered when a ticket's status is changed to Resolved.
-
The format of the JSON body varies depending on the Iterable API endpoint your webhook sends data to. This example uses Iterable's
POST /api/events/track
endpoint, which takes the following format:{ "email": "{{ticket.requester.email}}", "userId": "{{ticket.requester.external_id}}", "eventName": "Ticket Resolved", "dataFields": { "id": "{{ticket.id}}", "url": "{{ticket.url}}", "tags": "{{ticket.tags}}", "type": "{{ticket.ticket_type}}", "priority": "{{ticket.priority}}" } }
(This example uses Zendesk placeholders to include relevent data in the JSON body.)
Click Save.
Now, when a Zendesk ticket is marked as resolved, Iterable will track a custom event and add it to the requester's user profile.