Recent searches


No recent searches

Creating webhooks to interact with third-party systems



image avatar

Jacquelyn Brewer

Zendesk Documentation Team

Edited Oct 09, 2024


4

78

78 comments

What can I do with the Webhook Response Body that is returned?  Can I access it from within a trigger?  Or does that have to be done in code?

0


@Timothy Schauder

You are my hero! Thank you for providing the format for basic auth with token to Zendesk's own API. This was driving me crazy trying to figure this out!

0


Hi, hoping someone can help me here. I'm looking for the appropriate placeholders for {{assignee_id}} and {{satisfaction_rating}} for a json trigger that is notifying an active webhook (that is known to be working).

The end goal is to add a tag to the ticket made up of the agent's ID+rating, so if a ticket is rated several times, we can capture what rating goes to each agent, versus automatically assigning the satisfaction rating of the ticket to the last agent that touched it.

The json I'm using (that is not working -.-) is:

{

    "ticket": {
    "additional_tags": ["csat_{{assignee_id}}_{{satisfaction_rating}}"],
        "id": "{{ticket.id}}" 
    }
}

 

The tag I'd want added is something like csat_1234355_bad

As you can see, it's not catching the placeholders, only adding the csat and underscores. And second issue would be that it's not adding it to tags. I don't know if it won't add it because it knows the tag created is not what was requested, so it doesn't send it over to the ticket, but I'd be surprised if it did do that. 

Note: I was able to use a similar json and trigger with the same webhook to add assignee name to a text field when the ticket changes group (to track number of escalations per agents), but using the placeholder {{current_user.email}}. In all the documentation I find, I can't find that placeholder (I keep using variations of that placeholder because it works, but can't recall where it came from initially). I don't know what the assignee ID and ticket rating counterparts of that placeholder would be. Does anyone know? Any help would be appreciated! 

I've seen these articles:

Edit: Just found that "additional_tags" is for the endpoint "tickets/update_many.json", and the webhook i'm currently using has endpoint "tickets/{{ticket.id}}". So that might be the issue, haven't created new webhook yet....but still don't know the right placeholders. 

0


HI Alexandra,
 
For the assignee id, you'd use /1263082116169 (see Zendesk Support placeholders reference for more info on placeholders). However, there isn't a placeholder that simply provides "good" or "bad" as text (there is one that would provide "Good, I am satisfied" (for example), but I think that would be more than you're looking for. As a workaround, you could create two copies of this trigger, one for Good (and Good with comment) ratings, and another for Bad/Bad with comment ratings, and hardcode "good" or "bad" into the string yourself.
 
Although I hear your trigger/webhook combo is working, I do have to provide the caveat that updating triggers this way can be unreliable: see Can I use a trigger and a webhook to update tickets?

1


@... thank you! That article provides the placeholders I needed (I used ticket.assignee.id for my purposes). I continue unable to update the tickets with the update-many endpoint. However, it all works with the tickets/{ticket.id} endpoint. The problem is it replaces all ticket tags with the one we're adding, which is what I did not want to do. So I'll continue messing around with this, but REALLY appreciate the correct placeholder article!

0


Webhooks targets - What max no of webhooks are allowed in LIVE?

 

0


Is there a way to handle status codes, like 4xx or 5xx responses ?

0


image avatar

Dane

Zendesk Engineering

Hi Venkata,
 
There's no documented limit for the number of web-hooks you can created. However, it is advisable to always check the API rate limit of the web-hooks that will be utilized. For Zendesk API rate limits, please refer to Usage Limits.
 
@Julien,
 
The only natively available option is to see the status of each call. You can go to each web-hook and click the activity tab.
 

 

0


Hi All,

i am trying to create a webhook with end point url as https://yoursubdomain.zendesk.com/api/v2/tickets/{{ticket.id}}.json (i replaced your domain with our subdomain) however it returns with an error 

If someone can help please!

0


image avatar

Jacob the Moderator

Zendesk LuminaryCommunity Moderator

Hi Prakash,
What is the error you're seeing?

Could be a number of things, are you authenticating the call?
https://support.zendesk.com/hc/en-us/articles/4408839108378?page=2#topic_qbn_v4w_dpb

0


If I use a webhook with a ticket id placeholder inside the url, the activity log dont show any information about the used url. So I don't know anything about the request if the body was empty. Could you please add the request url to the activity log information?

0


image avatar

Brett Bowser

Zendesk Community Manager

Hey Maik Künnemann

You'll want to share this feedback in our Feedback on the ticketing system (Support) topic since that is actively being monitored by our Product Managers. That doesn't guarantee that you'll receive a response but we do monitor and follow up with users as we have information to share. 

Let me know if you have another questions for me in the meantime. 

Cheers!

0


I was investigating creating threads from new tickets to our other internal system. However this requires data to be in form-data format. Is this something that I can do in ¨Webhooks?

Also, can I pick up values from the response of internal system such as the ticket number of the internal system which is returned when submitting this call?

I need to post this type of request to the internal system and pick up the response below to ticket fields.

0


Otto Lindqvist I'm hoping we see an answer to your questions! I think according to this article you should be able to do both. But I have no idea how and I've previously run into similar challenges when doing external chat bot integrations.

For the form-data, I think this part of the article makes it sound like you can send form-data in a webhook:

You can use webhooks to pass information to third-party services and REST APIs that accept JSON, XML, or form-encoded content in HTTP requests.

As for receiving the returned values and updating a ticket's custom fields. This sentence from the article makes it sound like that should be possible:

Webhooks are important because they are the means by which triggers and automations can result in actions based on the HTTP responses from third-party services.

I'm sure I don't fully understand everything because I would not know how to send form data in a webhook and don't know how to make Zendesk do anything with the response from an external system. 🤔 Maybe I don't understand what you want to do or maybe I'm misinterpreting the article. 

The only way I would currently be able to accomplish something like this would be to send the ticket ID to the other system and then have the other system make a separate call to Zendesk using that Ticket ID to put the two values into the custom fields of that associated Ticket ID. 

1


Thanks for the reply Ronald

What you quoted from the docs is excactly what I read and understood also. However I could not find documentation about that how to use those features, especially the latter.

But after commenting and continuying reading the docs I came to conclusion that webhooks wont work in my case anyways because of the custom header issue already discussed in this article earlier. So I'll need to find some integrator for this, I already tried Zapier but didnt get the results I was looking for.

0


Any documentation of how the response body received from the GET method webhook can be accessed and used? Can it be used to update values of the specific tickets?

0


image avatar

Dane

Zendesk Engineering

Hi Aurimas,
 
Unfortunately, there's none (at least in Zendesk). This workflow will require you to leverage your own/third-party app that will parse the data from using GET then update the ticket using the Update Ticket API.

0


Hi Zendesk community,

I've created a trigger that is supposed to sent a User Date Custom Field value to a Ticket Date Custom Field Value.

But it doesn't work because the User Date Custom Field placeholder sends a date on this format: 2022-10-13 00:00:00 +0000 and the Ticket Field only accepts this format: 2022-10-13.

I tried liquid : {{ticket.requester.custom_fields.date_dernier_appel | date: "%Y-%m-%d"}} but JSON doesn't accept it..

I tried $substring (example:$substring("Hello World", 3) => "lo World") but it didn't work too..

Do you have a solution please?

Best regards,

Raphaël

 

0


Hi Raphaël Péguet - Officers.fr

While the URL does allow for substitutions, the JSON seems to be uninterpreted text only. 
At least, I haven't had any success trying to substitute anything in the payload.

 

0


Hi Peter Hochstrasser,

Thanks for your answer, as placeholders are interpreted i hoped that liquid will be but it's not.. I still hope finding a solution with Zendesk only, I will put it here if I do!

Best regards,

0


We've been back and forth with Zendesk support for the past month and have not got anywhere so I'm hoping if anyone reads this and can help out will comment. Our tickets used to automatically CC the CSMs of the Salesforce account. For some reason this stopped working and we were told to create webhooks. We have and it still fails the test but when I check Activity it says success. Does anyone know what we can do to have the Salesforce CSMs email CC on every ticket?

This is our current webhook and trigger set up. Any help is greatly appreciated. 

0


Hi Kelly Centeno -- I'm pretty sure your setup is correct and is already actually working.

A couple of things about your test setup from the screenshots of the Webhook creation page:

  • For the Request JSON body in your screenshot you have the default placeholder request body that Zendesk automatically puts there. If you tried to use that with this PUT request you'll definitely always receive the 404 response. In that box you should put the same JSON request payload as what you have in the second screenshot
  • Another important thing to note about the webhook test is that the test won't work correctly with placeholders like {{ticket.id}} -- but it looks like you've got the placeholders correct in the endpoint of the webhook and request body from the trigger

In order to test a webhook like this I would submit a test ticket and then use that specific ticket ID rather than the {{ticket.id}} placeholder in the endpoint.

And I would take the request body you have in the second screenshot, from the trigger, and paste that into the test box but again you'll have to replace the custom field placeholder values for the actual values that are stored in the associated custom fields.

As far as I can tell, the only problem that you could have with the setup is if the custom field values with the intended collaborators don't conform to the requirements of the additional_collaborators property. I'm pretty sure you can simply pass just an email address there but it can also take IDs and objects consisting of a name and email property. I'm assuming you're storing an email address in those custom organization and ticket fields so that should be all good!

0


Hello.  As 2FA Session management has not been securely implemented (to mandate users must use 2FA with every login event) I would like to establish an automation to achieve:

At 7pm each night - destroy all active sessions.

Can you please provide guidance to this.
- I have established a webhook that calls the Sessions API and is authenticated via token.
- How to build the automation that is preferably time dependant.  I imagine the logic will need to be something like:  Loop through all open sessions - destroy each active session.

I am not a developer, and at this time I can't see how to achieve this in automation.  Please do provide some detailed guidance - especially given the 2FA implementation is not secure.

Thanks,

0


Has anyone tried creating a webhook for discord since Zendesk discord integration is no longer supported.

0


Hello all!

I've managed to create the webhooks and triggers to update tickets. I am stuck though on trying to populate a ticket custom field from a ticket.organization_custom _field.
Is there anyone here who has done it?
example
Organization_custom_field (id:34) is automatically populated through internal code.
I want this info to be transferred to a ticket_custom_field (id:45). 
I need the JSON body to do this.

Thanks in advance

0


Hi Efthymis!

When you want to update custom fields on tickets via API, you need to have to have correct structure. Custom fields on the ticket JSON needs to be on an array like this:

{   
    "ticket": {    
        "comment": {            
            "body": "Body of the message",
            "public": true,
        },
        "custom_fields":[{
            "id": 123456789, //This is the field ID from Zendesk
            "value":"Content for the custom field."
            }]  
    }
}

1


Thank you Otto for the help,

Still my main question is "what's the placeholder for an organization custom field"? Can you help?

Thanks

0


image avatar

Jacob the Moderator

Zendesk LuminaryCommunity Moderator

Efthymis Kouzelis

There is one for the tag and another for the value of such a field, you can reference this:
https://support.zendesk.com/hc/en-us/articles/4408886858138-Zendesk-Support-placeholders-reference

ticket.organization.custom_fields.<field_key> Property/placeholder format for custom organization fields. See Adding custom fields to organizations.
ticket.organization.custom_fields.<field_key>.title Property/placeholder format for the value of a custom organization drop-down field. See Adding custom fields to organizations

0


hello why my webhooks got 400 bad request and no username

 

 

 

got this error

 

"code": 400,
    "name": "Bad Request",

0


image avatar

Brett Bowser

Zendesk Community Manager

Hey Crm team, 
 
I'd recommend reaching out to our Customer Support team regarding this issue so they can take a look at your account. More information on contacting their team here: Contact Zendesk Customer Support
 
Hope this helps!

0


Please sign in to leave a comment.