How apps work and what they can do

Apps run within Deskpro itself, in the browser, in a special iframe sandbox. An "app" is a ZIP file containing a description of the app (the manifest); an HTML file; and a bundle of app files such as Javascript, CSS styling, and images. Administrators install and configure apps from Admin > Apps.

Writing Apps

Apps are written in Javascript/ReactJS using our Apps SDK. The SDK generates an empty app for you, and includes tooling to help you test, develop, and deploy your app. There is also a standard UI toolkit you can use to make your app look and feel like the rest of Deskpro.

The majority of your app can be rewritten however you want, using the tools and libraries you're used to. The SDK has a low overhead and is fairly agnostic as to how you actually write your apps. For example, you could add Redux or React-Router if you wanted to. You could even wrap an Angular app, or even just a simple jQuery app.

The basis of the Apps SDK tooling is create-react-app. If you're familiar with that tool, then you'll know how easy it makes to get started!

The developer experience

The SDK includes a fully isolated developer environment that runs on your localhost. This developer environment comes pre-built with mocked data (that you can customise); it has hot-reloading; enhanced error messages; and more.

This makes it really easy to go from nothing-to-something very very quickly (as the next section demonstrates!).

You can also develop your apps inside of a real Deskpro helpdesk. This involves running your app off of your localhost, but it actually runs inside of a real Deskpro instance. This is good when you want to preview how your app would behave once it's actually deployed.

Features of apps

Tickets, People, Organizations, etc

Apps have access to the context in which they run. For example, if your app is set up to run in a ticket, then your app will be able to fetch information about the ticket it runs in, and any data related to that like the profile of the person who raised the ticket.

Deskpro Interface

Apps also have some control over the actual interface. For example, apps can badge their icon with counts, they can listen to events, and they can intercept (and sometimes cancel) some actions like sending a reply.

Data storage and associations

Apps can store arbitrary data in a variety of ways. There's key-value pair data storage for simple cases, and custom fields can be used for more advanced cases.

Custom fields can be used to store relationships with external objects. For example, maybe you have an external issue tracking system where you want to associate external issues with tickets (concrete examples might be something like Trello or JIRA).

Your app can store these associations in a custom field which then enables advanced workflows with triggers, webhooks, and filters. For example "When the JIRA ticket gets resolved, resolve every linked ticket".

Secure access to external APIs

You can proxy API requests to external services through a local server-side proxy. This enables you to use APIs that are not CORS-compatible, or you might use the proxy simply to hide API credentials.