Ask questions, share tips, and discuss best practices about apps and integrations, App builder, APIs, SDKs, ZAF, and Sunshine
Recently active
Hello, I noticed that I can't seem to revoke/delete an oauth token via the API. I am using an authorization token with full access. I try:curl https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/oauth/tokens.json -v -u $ZENDESK_EMAIL/token:$ZENDESK_API_TOKEN And I get a page of results like{"tokens":[{"url":"https://xyz.zendesk.com/api/v2/oauth/tokens/1234567890.json","id":1234567890,...If I then do:curl https://$ZENDESK_SUBDOMAIN.zendesk.com/api/v2/oauth/tokens/1234567890 -v -u $ZENDESK_EMAIL/token:$ZENDESK_API_TOKENI get{"error":"RecordNotFound","description":"Not found"}I tried using the OAuth Client page in the admin, found the token I was interested in by paging through lots of pages manually (you need a better UI on the Oauth Client > View Tokens page), but I found it, and tried to delete from there. It did not delete there, either, I also got a 404 I tried another token and was able to get it. I didn't want to actually delete it, so I just retreived it, but I did no
Hallo zusammen, wir möchten gerne über unser Externes System bestimmt Mail bzw. Tickets über die API vorbereiten. Auch neue Tickets erstellen, aber noch nicht an den Kunden versenden. Leider gibt es von Zendesk keine direkte Möglichkeit dafür. Hat jemand eine Idee wie man so etwas realisieren kann?Danke
My team is currently integrating the messaging mobile SDKs. While doing so on iOS we encountered an unexpected presentation behavior.According to the documentation https://developer.zendesk.com/documentation/zendesk-web-widget-sdks/sdks/ios/getting_started/#presenting-the-conversation-modally this is how we should display the messaging screen modally:if let viewController = Zendesk.instance?.messaging?.messagingViewController() { let navigationController = UINavigationController(rootViewController: viewController) navigationController.modalPresentationStyle = .fullScreen present(navigationController, animated: true)}Our app is a pure SwiftUI app, so we had to wrap it in a UIViewControllerRepresentable.When we do so, the user has no button at all to close the modal, nevertheless which exitAction we pick for showMostRecentConversation screen.So we had to add a close button to the toolbar of the SwiftUI View wrapping the Zendesk content. But then we end up with two navigation bar
Hi, I'm developing an app and I was wondering how to open the other tickets in the same browser tab and open a new tab in Zendesk. Now I have linked to the other tickets in the interaction history, but when the user clicks on the links to the tickets, it opens in a new browser tab.Like this: I want it to open like this: Whats the code for this? Thanks for help in advance!
Hello, could you please help me?I’m using Zendesk SDK 4.2.2 for Unity. I log in using a token with: ZendeskSdk.Instance.Messaging.LoginAsync(response.Token); After that, I request an unread message count update with: ZendeskSdk.Instance.Messaging.GetUnreadMessageCountAsync(ZendeskUpdatedMessage); I receive the update once, but after that I no longer get unread message count updates automatically. The only way to get a new update is to send the request again manually. Is this expected behavior, or is there a way to subscribe to continuous unread message count updates/events?Could you please clarify what these parameters in GetUnreadMessageCountAsync mean? onUnreadCountChanged (Action): Action to be called when the unread count changes. shouldSubscribe (bool): Whether to subscribe to the websocket event outside of a conversation. My understanding was that onUnreadCountChanged would be triggered automatically whenever the unread message count changes, especially when shouldSubscribe is se
Problem StatementThe Assignment Control app is a ticket sidebar application that provides targeted visibility controls for the ticket assignee dropdown. It dynamically hides specific agents and groups based on configurable targeting rules, such as the current agent's role, group membership, ticket attributes etc. Locations: ticket sidebar, new ticket sidebar PromptCreate a ticket_sidebar app called "Assignment Control" that hides specific agents and groups from the ticket assignee dropdown, based on whether the current agent matches configurable targeting rules.Define six app parameters in the manifest so they appear on the app's installation settings screen (all type: text, all optional):`hidden_user_ids` — labelled "Hidden users". Help text: "A comma-separated list of user IDs to be hidden from the Assignee dropdown." `hidden_group_ids` — labelled "Hidden groups". Help text: "A comma-separated list of group IDs to be hidden from the Assignee dropdown." `targeted_user_ids` — labelled
We figured out a way to add CCs to a ticket based on conditions defined in a trigger. First, you need to set up a webhook with the endpoint https://<company-name>.zendesk.com/api/v2/tickets/{{ticket.id}}.json as JSON/PUT request. Then, you can define a trigger with your conditions that calls the webhook ("Update active webhook") and sends the following JSON data: { "ticket": { "email_ccs": [ { "user_id": "123456789", "action": "put" }, { "user_id": "987654321", "action": "put" } ] }} You can use the Zendesk API to query the appropriate user IDs. You may also configure another webhook to put a comment into the ticket notifying your agents about the change: { "ticket": { "comment": { "body": "new CCs added", "public": false } }} Please note that the trigger should probably not act on "Ticket is updated" because that might cause an infinite loop wit
Let's be honest: Most Zendesk migrations fail the same way.It’s rarely because the tools are broken or the underskilled teams. It's because someone, somewhere, treated the whole thing of enterprise data migration like an export-import task. They only realize the mistake when the "New Help Desk" goes live and suddenly: tickets are missing context, SLA timestamps have evaporated, and agents can't piece together a customer’s history.That's an expensive way to learn a lesson. This enterprise migration checklist exists so you don't have to be the one explaining to the CTO why six months of data just vanished.Why Enterprise Data Migration Needs a ChecklistHere's the thing about enterprise data migration: the risks aren't usually technical. They're structural.You’re dealing with API throttling that kills your progress mid-transfer. You’re fighting SLA timestamps that won't survive a schema change. You’re managing parent-child ticket relationships that arrive broken, or user identities that tu
Hello.. I'm using "client.on("ticket.conversation.changed", func)" in my app, to capture the conversation changes.. But, I'm facing some issues in that.. That function triggers multiple times, when a single message came.. (ie), When user sends a message means, that function triggers multiple times (sometimes more than 40 times), so that it captures the conversation data multiple times.. Therefore, It slows down my app functionality.. So, I need to control that triggering event only once, when new message came or any conversation changes happen.. Can you please suggest any ideas to control or off that conversation listener, when function not called.. I just tried with "client.off("ticket.conversation.changed")", But, its not working.. Looking forward for solutions.. Thank you..
Hi. We are using: ZendeskSDK 3.15.0ZendeskSDKConversationKit 13.2.0 We observe the crashes, could you please support? Crashed: com.apple.root.default-qosEXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x00000009a3c36598 Crashed: com.apple.root.default-qos0 libobjc.A.dylib 0x5dac objc_class::realizeIfNeeded() + 241 libobjc.A.dylib 0x5ea8 objc_destructInstance + 362 libswiftCore.dylib 0x399838 swift_deallocClassInstance + 1123 libswiftCore.dylib 0x39978c _swift_release_dealloc + 564 libswiftCore.dylib 0x39a700 bool swift::RefCounts<swift::RefCountBitsT<(swift::RefCountInlinedness)1>>::doDecrementSlow<(swift::PerformDeinit)1>(swift::RefCountBitsT<(swift::RefCountInlinedness)1>, unsigned int) + 15
A nav bar app that gives your support team a single place to understand how macros are being used and to browse all Chat shortcuts. It lives in the left-side navigation bar so agents and admins can access it at any time, independent of any open ticket.The app has two tabs:Macros usage analytics, filtering, bulk actions, and housekeeping tools Chat Shortcuts a read-only browser for all Zendesk Chat shortcuts with search, tagging, and export Why this is usefulZendesk doesn't have a built-in view that shows you macro usage data alongside filtering, duplicate detection, and bulk management in one place. If you manage a large macro library, it can be hard to know which macros are stale, which ones overlap, or which groups are using what. This app surfaces all of that in a single dashboard.For Chat shortcuts, the native Zendesk Chat interface doesn't let you search, sort by word count, export to CSV, or generate tag slugs for tracking purposes. This tab fills that gap.What the Macros tab doe
Hello Team We are Planning to Migrate Jira data from Data Center to Cloud Instance. As a part of migration we need to migrate Zendesk data present in Data Center to Cloud Site. Please Help us providing required documents/Steps to Prepare Zendesk for Migration activity and actions need to be performed post of migration Thanks & Regards Srikanth Gowda
Hello,we are migrating Jira from Data Center to Cloud, and we have a ZenDesk integration.I saw this article: https://support.zendesk.com/hc/en-us/articles/4408830699546-Migrating-the-Zendesk-Jira-integration-when-moving-Jira-instancesThe migration guide seems to be quick and simple, but it just talks about a switch from DC to Cloud.Since we are on a big instance, we are planning a migration in more steps.How would it work in this case? Is it possible to migrate projects in more steps? Or is it required to migrate all ZenDesk projects at once? Thanks a lot!Roberto
Hi team, Could someone please help me figure out how to format the json to set actions (i.e., update fields) for many macros at once? I'm looking here, but it only shows me how to update the active status for the macro or the macro position. But I need to update other fields (like, all of them: priority, type, comment text, category, etc) for ~500 macros, so I'm desperately hoping I'm just formatting my json incorrectly and it's not the case that you can only use this endpoint for updating active status and position :x. This is the json I used to test, and the active status changed properly but the actions didn't stick. Am I formatting incorrectly? { "macros": [ { "id": 1234, "active": false, "actions": [ { 
I recently moved our brand in a multibrand Zendesk instance to our own instance. We use our closed tickets as a knowledge base (did we have this error already? etc.), so we needed to import a lot of our existing tickets. About 99% of the tickets are in the closed state, so that got a lot of attention while figuring out how to migrate. On Zendesk's own recommendation, I initially evaluated Helpdesk Migration as a service to import all of our tickets. I quickly came to the conclusion that while they offer an interesting service, we'd rather do it ourselves, because we had some special requirements. So, I started to collect all of the requirements: export and import tickets and all of their associated objects, starting at the release date of our last supported release of the product we support using Zendesk. Since we cross-linked Zendesk tickets with our development issue tracker (JIRA), we required that the Zendesk tickets in the new instance can be identified knowing their ID in the ol
Hi folks,I got user and ticket XML data from freshservice. Now I want to import that data into zendesk.So using the user id from freshserice and assigning that value to the external id in zendesk , we imported the user data into zendesk. Now we want to import all ticket data in the same way, but we want to use the external id of a user to be able to associate tickets with him.Any thoughts, you folks have? I tried to do it using an external id only to upload a ticket. But it did not upload the ticket to that specific user.
I am trying to use a nonce to avoid allowing unsafe-inline/unsafe-eval in my CSP for my site where I am using the new (messenger) version of the Zendesk chat widget.I followed the steps here -> https://developer.zendesk.com/documentation/zendesk-web-widget-sdks/sdks/web/csp/#cnc_machining_service and added a nonce to my script tags. The nonce seems to be coming through correctly, but I still get console errors saying that inline style cannot be applied.Here's how I have the script tags used in my .cshtml file:<!-- Start of Zendesk Widget script --> <script nonce="@ViewBag.nonce" id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=[mykey]"></script> <!-- End of Zendesk Widget script --> <script type="text/javascript" nonce="@ViewBag.nonce"> function initZendeskWidget() { if (typeof zE !== 'undefined') { zE('messenger', 'hide'); // Hide everything on load $('#chat-link').on('click',
Hello Zendesk Devs! I am looking to update all 17K of the macros we have in our instance and am looking for a good way to do this. I've seen documentation on updating the description but what I'm looking for is: a way to add the actions of "add a tag" and whatever tag I need associated with the particular Macro Can anyone help me out with this?
Problem StatementThe Attachment Manager app is a ticket sidebar application that helps manage ticket attachments. It lets agents redact sensitive files, control which file types are allowed/invalid, organize attachments in a library, and tag tickets based on attachments. Location: ticket sidebar PromptCreate a ticket_sidebar app called "Attachment Manager" that lets agents view, redact, and manage ticket attachments through an accordion-style interface with three sections: All Attachments, Invalid Attachments, and a personal Attachment Library. Define five app parameters in the manifest so they appear on the app's installation settings screen:`attachment_tag` — labelled "Attachment tag". Help text: "Tag added to existing tickets which have attachments." (type: text, required, default: `has_attachment`) `new_attachment_tag` — labelled "New attachment tag". Help text: "Tag to be added to new ticket comments with attachments." (type: text, required, default: `has_new_attachment`) `allowli
I have custom private app and using Zafclient to fetch data from external API to show on ticket side bar. When I include a custom HTTP header like ZENDESK_AUTH_TOKEN, that header is not being sent to the external API (I have access to external API, so I can see request metadata). However if I add Authorization HTTP header, I can see that header is sent. Is there restriction on which headers can be sent to external API via Zafclient and Zendesk proxy? I am using secure settings with placeholder {{setting.myParam}} and Zendesk proxy to replace these values, in case this helps.
We’re seeing occasional fatal crashes in production that symbolicated to SunCoFayeClient.connect inside ZendeskSDKMessaging (Sunshine / Faye layer), not our app code — e.g. SunCoFayeClient.swift ~line 155, with thunk for closure, objc_destructInstance / swift_deallocClassInstance, and work on a background queue (EXC_BAD_ACCESS / bad pointer).Setup: Native iOS app, ZendeskSDKMessaging 2.37.0 (update if we’ve bumped), initialize Messaging after login with channel key + JWT (initialize, loginUser, event observers). Crashes correlate with iOS 26.x (e.g. 26.3.x) on recent iPhones.We’ve already tried main-thread dispatch for app state updates from SDK callbacks, weak captures in observers, and serializing init, but stacks still point at SunCoFayeClient.connect.Questions for Zendesk / the community:Is this a known issue with a fix in a specific SDK version or release notes we should read? Any recommended patterns for iOS 26 (init/teardown order, avoiding overlapping connect, threading)? Are o
I remember when testing the incremental API few years back that adding a comment to a ticket using the dashboard did not trigger an update event but changing the priority/status/assignee did. But when I tried the incremental API recently, adding a comment to the ticket via the dashboard successfully triggered an update event when using the incremental API for tickets object. Was there a change in the API behavior ? If so can someone please point me to the documentation / changelog where this is mentioned. Many thanks.
We have a tool, Help Desk Migration, that supports the automatic migration from and to Zendesk. Recently, we have been encountering the issue with getting the 403 error when sending the API requests to Zendesk.If we use the method GET on these endpoints:help_center/user_segmentshelp_center/localeshelp_center/categories/{category_id}/translations/missinghelp_center/sections/{section_id}/translations/missing And the token of the Zendesk instance where we send the request is expired, we get the error 403. However, the error we should be getting is 401, not 403. The same happens if we use the methods GET and POST at these endpoints:help_center/articleshelp_center/categorieshelp_center/sectionshelp_center/categories/{category_id}/translationshelp_center/sections/{section_id}/translationshelp_center/articles/{article_id}/translationshelp_center/articles/{article_id}/bulk_attachmentsAlso, the same error when deleting article using help_center/articles/{article_id} We get the 403 error when
Problem StatementThe Proactive Tickets App helps build better relationships with your customers by allowing you to proactively reach out to them via Zendesk Support tickets. The app allows you to search a list of your users based on any searchable user field, and then create tickets in bulk on their behalf. Location: nav bar Screenshots Prompt Create a nav_bar app called "Proactive Tickets" that lets agents search for end users, build a ticket template, and bulk-create one support ticket per selected user — then create a Zendesk view to track all those tickets.Add two settings to the app so admins can configure them during installation:`newStatusTicketFieldId` — labelled "Status field ID". Help text: "The ID of the ticket status field. Find it under Admin > Objects and rules > Tickets > Fields." Required, type: number. `numberOfUsersPerPage` — labelled "Users per page". Help text: "Number of users to show per page in the search results." Type: number, default: 20.Read thes
Hi allI’m not a developer but I am the Customer Experience Manager at my company and we have an app for iOS and Android. We want to add the option for customers to access support through the app (including chatting with an agent, engaging with AI agents, accessing Knowledge articles, submitting a ticket). I’m confused as to how we can do this and what it could look like if we did. I have two questions:where do we find resources that explain how to do what we are trying to do? where can we find examples of what it could look like, or other companies who have done it?Thanks so much!Fiona
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.