Ask questions, share tips, and discuss best practices about apps and integrations, App builder, APIs, SDKs, ZAF, and Sunshine
Recently active
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.For the locations of ticket sidebar, new ticket sidebarDefine 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
Our Azure Function App fails to connect to Zendesk with the following error:ConnectionResetError(104, 'Connection reset by peer')This happens on every request to our Zendesk subdomain — including a simple unauthenticated GET request:requests.get("https://{subdomain}.zendesk.com/api/v2/tickets.json", timeout=10) The same code with the same credentials works fine locally Our Azure NSG allows all outbound internet traffic No IP Restrictions are configured in Zendesk Admin Center (confirmed by our Zendesk admin) Our Zendesk admin confirmed OAuth is configured correctly and tokens can be generated Other third-party APIs (e.g. ZOHO) work perfectly from the same Azure environment using the same requests library Even a basic unauthenticated GET to Zendesk fails — ruling out any OAuth or credential issueHas anyone experienced this before? Is there a known solution or a way to get Azure datacenter IPs whitelisted on Zendesk's infrastructure level?
One thing I noticed while working with Zendesk is that some admin tasks are small but still take time because you have to check several things before making a change.Instead of treating every task as a separate manual process, I explored using App Builder to create a simple admin-focused workflow for checking ticket information and making common updates from one place.ChallenegThe difficult part wasn't one big task. It was all the small checks that happen before an admin can safely make a change.For example, checking the ticket status, priority, assigned group, tags, and other relevant information before taking action can become repetitive.Approach is :I designed the app around a simple flow:Start from the ticket : use the current ticket as the starting point. Show the important details : bring the information needed for the next decision together. Give the admin a clear action :avoid making the user navigate through multiple places. Keep changes intentional :only update information wh
One small problem I wanted to solve was the amount of time agents spent jumping between different places to understand a ticket.Sometimes the ticket itself didn't contain everything the agent needed. They might need to check customer details, previous interactions, internal information, or other ticket data before deciding what to do next.I Built :-I used App Builder to create a simple app that brings the most useful ticket-related information together in one place.Instead of making the agent switch between different screens, the app can surface the information they need while they're working on the ticket.1. I started with the agent's workflowRather than deciding what the app should do first, I looked at what information agents actually needed during a conversation.2. I focused on the most useful informationI avoided adding everything. The goal was to show only the details that could help an agent make a decision faster.3. I kept the interface simpleAgents shouldn't have to learn anot
I have been creating a flow with Power Automate to automatically download all attached files from tickets in Zednesk and save them into specific folders.So far the flow works perfectly, but for some reason it does not download the files for Whatsapp tickets.I have read most of the documentation that talks about API usage, but I could not find anything that talks about this.I can even see in the in DevTools where the files are stored, but I do not know how to get that information with the API.What I see in DevToolsHow can I get this with the API?Your Premium trial has ended
If you've been trying to authenticate a Custom Action using your own Zendesk account as the OAuth provider, here's a step-by-step guide on how to get it working that I got from support. I couldn’t find a good single resource on how to do this especially with the announcement of API Tokens going away so wanted to share with the larger community. This is for how to get the “Connection” setup for Action flows but would likely work for other areas to be used to replace webhook actions as well. Step 1: Create the Zendesk OAuth ClientGo to Admin Center > Apps and Integrations > APIs > OAuth clients and click "Add OAuth client".Configure it with the following:Set Client kind to Confidential Set the Redirect URL to: https://zis.zendesk.com/api/services/zis/connections/oauth/callback(Note: the subdomain is always zis, not your own account's subdomain) Copy the Secret value and store it somewhere safe — you'll need it in Step 2(For a full reference on each field, see: Using OAuth authen
Hi,One thing I've learned while working with Zendesk is that agents often spend more time on small, repetitive tasks than they realize. Updating fields, adding tags, changing priorities, and following the same process for every ticket can quickly become time-consuming.I used App Builder to create a simple workflow that reduced some of these manual steps.The goal wasn't to build a complex application. I wanted to make the process faster and more consistent for agents.My approach was simple:Identify a task that agents repeat every day. Break the process into smaller steps. Automate only the repetitive actions. Keep the workflow easy to understand.One lesson I learned is that it's better to start small. Trying to automate everything at once usually creates unnecessary complexity. A simple workflow is easier to maintain, easier to test, and much easier for teams to adopt.
Have you tried building something in App Builder that you couldn’t accomplish and need help with? Welcome to this special edition of Zendesk Voices, where we dive into your experiences with extending and integrating Zendesk in real world scenarios!Have you hit a roadblock while building something in App Builder?We want to hear your story. Tell us about the challenges you faced, what didn’t work as expected, and how you’re working through those hurdles. Your insights can help others overcome similar obstacles—and you could earn Spark points for your contributions!🤓We’d love to know:What you attempted: Describe the project or feature you were building. The challenge: Share what you found difficult or what couldn’t be accomplished. Your approach: Let us know how you went about troubleshooting or what alternative solutions you considered. Outcome & learnings: Explain what worked, what didn’t, and what you learned through the process.👀Helpful tips:Be specific and share real examples.
Hello all,Three days ago I got an email that tomorrow our API tokens will get deactivated because they weren’t used recently.Our OpsGenie token hasn’t been recently used, because thankfully we didn’t have a customer incident in the last few months.Unfortunately there isn’t a clear way to force keep an API token activated. So tomorrow, our OpsGenie integration stops working unless we keep rotating our API tokens? Is there any other way to do it?This is one of the most critical systems for us. Not responding to a ticket within an SLA means we breach our contractual obligations. And all these happen with just 4 days of notice in advance!Thank you for any help you migh be able to provide regarding this.
We have the Sunshine Conversations V2 Messages API working, but when we try to use the Passthrough API, we are getting a "should have required property 'content'" error. Here is the request, payload, and the response: POST: https://api.smooch.io/v2/apps/62d2b047fa1d7700ef4bc9f1/conversations/a63b416485367d8a768f6c6a/messages{"author": {"type": "business"},"content": {"type": "text","text": "Test"},"override": {"apple": {"payload": {"body": "https://smooch.io/","type": "richLink","richLinkData": {"url": "https://smooch.io/","title": "Title","assets": {"video": {"url": "https://images.apple.com/media/us/homepod/2018/98e6cc1a_37ec_4e69_b717_9e58c71e1937/films/expand/homepod-expand-tpl-cc-us-20180306_1280x720h.mp4","mimeType": "video/mp4"}}}}}}}{"errors":[{"code":"bad_request","title":"should have required property 'content'"}]} According to the documentation, the V2 API does support the "override" / passthrough APIs for Apple Business Chat: https://docs.smooch.io/rest/#o
Hi everyone,I'm building a custom Zendesk Top Bar App using the Zendesk Apps Framework (ZAF) for our Zendesk.The app creates tickets successfully and includes a custom attachment component. The UI shows the file as attached, but the attachment never appears on the created Zendesk ticket.Current BehaviourThe attachment component works as expected in the app:File can be selected Drag and drop works Image preview works File displays as "Attached" Ticket is created successfullyExample:![Attachment UI]image of how it looks on the app.However, after the ticket is created:No attachment appears on the ticket No downloadable file is available The ticket comment only contains the text contentWhat We're Currently DoingUser selects a file. File is read as binary. File is uploaded to Zendesk using:POST /api/v2/uploads.json?filename={filename}Upload token is extracted from:response.upload.tokenTicket is then created using:{ "ticket": { "comment": { "body": "Test", "uploads": ["upload_
I am Admin for our ZD instance, and I work on the business side, not IT. Back in a former life, I was a software engineer, but not anymore. So I use Power Automate when I need to do code-like things. I have a number of Power Automate flows that invoke the ZD API (via the HTTP action) and teach myself the API via Postman. Auth for both Power Automate and Postman uses API keys.API key auth is being eliminated for Support.I have no idea how to transition to OAuth for my needs. There is not documentation that provides me any guidance. I have no experience with OAuth, and this looks like something I’ll need IT assistance to set up - but I have no idea what to even ask for. Can someone provide me some guidance?Note that Exploring Zendesk APIs with Postman on the ZD developer website instructs to use API key auth for Postman.
Large full-account exports can look complete and still be difficult to validate. This is the checklist I use before treating an archive as reliable input for review or migration.1. Identify the format of every fileNDJSON contains one JSON object per line, so parsing the whole file with JSON.parse will fail or consume unnecessary memory. ZIP exports may also contain multiple split files, so keep the source filename for every record.2. Normalize a minimum ticket schemaKeep at least the ticket ID, created_at, updated_at, status, subject, requester/assignee/organization IDs, tags, custom_fields, and comment or audit data. Do not assume every export variant uses identical property names.3. Validate the conversation historyCheck public replies versus internal notes, comment order, author IDs, timestamps, and attachment metadata. A ticket record without its full conversation may be unusable even if the ticket count is correct.4. Merge duplicate ticket records carefullyThe same ticket can appe
SummaryZendesk OAuth currently contains a failure scenario that can permanently break an otherwise healthy integration after a single transient infrastructure failure.The issue is not related to OAuth itself, but to the way refresh token rotation is currently implemented.If an application successfully receives a new access token and refresh token pair but cannot persist the new refresh token before an unexpected failure (application crash, database outage, network failure, process termination, etc.), there is no supported way to recover.The integration permanently loses the ability to obtain new access tokens, even though the OAuth authorization itself remains valid.For unattended integrations, this creates a single point of failure that application developers cannot eliminate on their own.Why this matters nowThe published API Token deprecation timeline makes OAuth the only authentication mechanism for the Ticketing, Help Center, and Voice APIs.Once API Tokens are fully retired, this f
One of my customer uses salesforce integration to crate ticket from salesforce to zendesk. But one partner's salesforce account of my customer is facing a issue with the error. When the partner click the setting for login zendeks account in salesforce page, the below error message pops-up. Other accounts works well (to login zendesk account, to create ticket from salesforce) I guess the reason is related to role or permission of account. How can i resolve this issue?
Hi All I want to launch a global oauth app in Zendesk marketplace, but now I'm stuck because I don't know how to proceed with the application. Here is my current application progress:1. Does the app use a global Oauth client? Yes2. Please provide the "client_id" for the global oauth client. I’m not sure how to get the "client_id" in Zendesk3. Have you associated the global oauth client with your app following the instructions here? No, we currently use a per-customer confidential client.4. Have you implemented the refresh token grant type? No. We utilize the Client Credentials Grant Type instead. The app securely calls the /oauth/tokens endpoint directly in the background using each customer's specific client_id and client_secret to obtain a new access token.5. Does the app have API headers implemented as required? No
Hi allI’ve read and re-read the Action Flows articles and tried to make some basic ones of my own but I just don’t understand what I’m doing wrong or what all the technical terms mean. I’m not a developer, I’m an admin trying to build basic things like “If a ticket has a specific tag added to it, add this task list to it” but I just can’t figure it out. The inputs, variables and all the other things are so complicated to understand.I don’t see an Academy course for Action Flows and all the videos I can find that talk about it are very high level and don’t explain everything that I’m seeing. Is there any content I’m missing or can an Academy course be made for this? I like to think I’m at least of average intelligence but I just can’t wrap my head around Action Flows!Thanks!
Hi everyone,I am looking for some architectural clarity from the community and the Zendesk product team regarding how Zendesk Classic Chat compares to Zendesk Messaging when handling mobile browser lifecycles - specifically on iOS Safari.Our Context & ProblemWe run a virtual healthcare platform where maintaining a stable virtual waiting room/routing queue is critical to patient care. Currently, we are using the Zendesk Classic Web Widget.We are facing a severe issue with mobile users (specifically on iOS). When a user enters the chat queue, looks away to check another app, or switches tabs in Safari, iOS aggressively freezes the JavaScript execution context to save battery. In Classic Chat, this causes the live WebSocket connection to drop. Within 20 seconds to a couple of minutes, the Zendesk server flags the user as offline, removes their session, and drops them entirely from the active routing queue. When the user switches back to our tab, the widget attempts to reconnect, b
We observed an intermittent Web Widget Messaging issue involving native Basicresponses, a required category form, and multiple conversations. This channeldoes not use an AI Agent or Flow Builder bot.Zendesk Support asked us to bring the reproduction to the Platform andDeveloper community. Configuration- Product: Zendesk Messaging Web Widget- Response type: native Basic response- AI Agent / Flow Builder: none- Multiple conversations: enabled- Authenticated end user through zE("messenger", "loginUser", ...)- Conversation created either through the native New conversation control or zE("messenger:ui", "newConversation", ...)The Basic response sends a required category form withblockChatInput: true before handing the conversation to Support.Original failureThe issue reproduced on July 10, 2026:1. Start a new authenticated conversation.2. Wait for the native Basic response greeting and required category form.3. Confirm that the composer is unavailable.4. Do not answer the form.5. Refresh t
I am looking to see if I’am missing something, but can action flows access the ticket notes natively or do I need to make a custom API call. The custom API call uses more API credits, so it’s less appealing, but I have it working.
In one of my apps I’m trying to have the app create 2 custom objects (v2). To do that I’m including a requirements.json file in my app and specifying the creation of the 2 objects. When you use custom objects by default 2 standard fields get created, Name and ExternalId. The issue I am running into is that when I try to specify the autoincrement settings for Name or add a description for ExternalId the app fails to install. I’m assuming because the custom object believes I’m asking for a duplicate field to be set where as all I’m trying to do is set the autoincrement on the Name and a description on the ExternalId. Things that I can easily do in the UI but since this is an app I cannot go the UI route.I have code similar to this:{ "custom_objects_v2": { "objects": [ { "key": "object_1", "include_in_list_view": false, "title": Object 1", "title_pluralized": "Object 1", "description": "object
Problem Statement Administrators often need to bulk delete users, such as when a business unit is sold to another company and their associated data must be incrementally removed. Currently, taking an exported list of users from Zendesk Explore and removing them manually is time-consuming and inefficient.What makes this app special This app bypasses complex CSV file uploads and unnecessary safety confirmations, as it is designed strictly for admin use. It features a streamlined interface optimized for narrow spaces, allowing an admin to directly paste a raw list of email addresses, automatically handling duplicate removal and API rate limits by processing in batches.Core use cases Bulk deleting obsolete end-user profiles after a business unit is sold off. Pairing with a similar app used to bulk-delete closed tickets associated with the sold business unit. Processing batch deletions directly from a Zendesk Explore export copy-paste. Location of appSide Navigation, for complex apps th
Problem Statement Native reporting tools often require navigating away from the core Zendesk workspace and rely on periodic data refreshes. Support managers and team leads need real-time, interactive insights into agent workloads, handle times, and organization-level support efforts directly within the Zendesk interface, with the ability to instantly drill down into the underlying tickets.What makes this app special This app bridges the gap between high-level analytics and actionable ticket management. It utilizes the Zendesk Search API to pull real-time data while securely bypassing iframe limitations using native ZAF Client routing. It dynamically calculates team benchmarks based solely on active human agents (filtering out bots and AI integrations), distinctly separates "actionable" tickets from those blocked by engineering or third parties, and provides a dual-axis view of performance by either Agent or Organization.Prerequisites Before pasting the prompt into the App Builder, repl
Problem StatementExporting a large volume of end users based on specific tags often results in pagination limits, API rate limit errors, and missing organization data. Standard API searches cap out or fail to sideload organizations properly. This app provides a direct, highly resilient solution for extracting up to 5,000+ end-user records into a CSV file directly from the Zendesk interface.What makes this app special Cursor-Based Pagination & Rate Limit Handling: The app actively monitors for 429 Too Many Requests errors and utilizes the Retry-After header to pause and automatically retry requests, safely processing 5,000+ users without crashing. Organization Data Resolution: The standard Search API does not support organization sideloading. This app performs a secondary batch request (show_many) in the background to ensure organization names are accurately populated in the final CSV. Strict End-User Filtering: The API query enforces a role:end-user filter, preventing internal
We have been using a React Native wrapper for Zendesk Messaging:https://github.com/leegeunhyeok/react-native-zendesk-messaging/tree/mainThe wrapper’s most recent change was made about a year ago. Recently, however, we have received multiple reports of users suddenly being unable to send messages. When this occurs, the message displays a “Tap to retry” option, but retrying does not successfully resend it.Since there have been no recent changes to the wrapper, we would like to ask whether there have been any upstream changes to the Zendesk Messaging SDK or service that could be causing the wrapper to fail intermittently.At the moment, restarting the app resolves the issue for most users, allowing them to send messages normally again. However, there are still some cases where users continue to see the same “Tap to retry” error even after restarting the app.From the development side, we have not been able to reproduce the “Tap to retry” failure consistently, which has made it difficult to
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.