Getting Started with DeskDirector
Admin Console
Admin Console : Getting Started
Portal
Settings
Profile
Features
Tickets
Permissions
Portal Permissions in DeskDirector
FastTrack in DeskDirector
Setting Up and Using the VIP Priority
How to setup the Flag feature (ConnectWise)
Have Approvals go to Approvers according to site (ConnectWise)
Quotes (ConnectWise)
Invoices (ConnectWise)
Service Catalogue
Forms
Getting started with DeskDirector Forms
DeskDirector Forms - Question Types in Detail
DeskDirector Forms - Dynamic Fields
DeskDirector Forms - Dynamic Fields Implementation Example
DeskDirector Forms - Sections and Conditionals
DeskDirector Forms - Embed content
DeskDirector Forms - Replace Summary Field with Title Automation
DeskDirector Forms - Dynamic content
DeskDirector Forms - Field value format for automation
Service Catalogue
Service Types
Service Groups
Enable or Disable the 'Something Else' Option
Companies
User Groups
Managing Companies in DeskDirector
Filtering Companies to Manage
Exporting Companies as CSV
Contacts
Managing Contacts in DeskDirector
Exporting Contacts as CSV
Ticket Group Permissions
Contact Impersonation
Menu Group
Menu Items
Intro to Menu Items
Creating Menu Items
Extension Menu Security and Query Paramaters
Adding BiggerBrains Menu Item
Learning Center
Getting Started with the Learning Center
How to change the name of the Learning Center
Useful Learning Center Tips - Adding files from Google and Dropbox
Notebooks
Portal Access
Feature Preview
DeskDirector Desktop Portal V5
Tech
System
Feature Configuration
Default Board and Source
Configuring Approval Statuses
Adding a VIP Priority via the Admin Console
Automatic Contact Creation
Updating, Closing, and Reopening Tickets
Branding your DeskDirector Portal
Hosts Configuration
Office Hours
Integrations
ConnectBooster
Wise-Pay
QuoteWerks
ConnectWise Sell (previously Quosal)
How to configure ConnectWise Sell (previously Quosal) Order Porter integration
Adding ConnectWise Sell (previously Quosal) Order Porter Link to Opportunity
Microsoft Flow (Power Automate)
Get started with the DeskDirector Power Automate Connector
Power Automate Administration
Power Automate Template Gallery
Featured Solution: Teams Ticket Discussion
Featured Solution: Ticket Briefing
DeskDirector Connector Triggers
Action: Create an email from template
Power Automate Connector - Setting up your first flow
Getting Support for the DeskDirector Connector for Power Automate
AutoTask
ConnectWise
Advanced
Analytics
Account
Surveys
Task Lists
Contact Authentication Audit Log
Tech Portal
Tech Portal : Getting Started
Tickets
Managing Tickets from the Tech Portal
Tech Portal Ticket Details
Creating a Ticket from the Tech Portal
Request more information (forms request) with Task Forms
Enable/Disable Time Entry Timer Autostart
Chat
Getting Started with DeskDirector Chat
Handling Chat Requests
Viewing Chat History from the Tech Portal
Creating a Chat Session from the Tech Portal
Changing your Presence
"Pre-Ticket Chat" Feature
"Call me Back" Feature
Macros
Client Portal
Client Portal : Getting Started
Contact Support
Creating a Ticket from the Client Portal
Submitting a Generic Ticket
Creating a Chat Session from the Client Portal
Viewing Chat History from the Client Portal
Tickets
Approvals
Quotes & Invoices
Learning Center
BiggerBrains
Tickets & Chats
Notifications & Broadcasts
A walk through all the fields available in DeskDirector forms
Logging in to DeskDirector
Deskdirector - Sign up walk through
DeskDirector Roles and Permissions
Features
Login & Authentication
Custom Branding
Approvals in DeskDirector
Notifications
Email Notifications
Email Template Engine
Surveys in DeskDirector
Broadcasts
Custom Menus
Custom Email Templates
Easy Integrations
BiggerBrains & Learning Center
Analytics
Other DeskDirector Features
Ticket Dynamic Contents
How Tos & FAQs
APIs and Integration
ConnectWise 2019.5+
Autotask integration major update 2022
ConnectWise Member Impersonation
Autotask Resource Impersonation
Autotask 2020.3 integration (API) resource migration
Third-party integration with DeskDirector
Authentication
Desktop Portal
Diagnosing DeskDirector Desktop Portal Issues
DD Portal for Mac: Labtech Deployment Guide
DDPortal removal tool - uninstalling Windows portals
Deploying DD Desktop Portal v5 via PowerShell
Desktop Portal v5 Installation & Common Issues
Instance & Account Queries
Setting up your custom domain
Contact Limits FAQs
Finding out what server your DeskDirector instance is on.
How search works in DeskDirector products
Portal and User Issues
User can't log in
DeskDirector Portal Browser Support
Contact can't login portal, the contact is missing in admin console but it is in ConnectWise
DeskDirector Tech Portal - How to take advantage of browser tabs
Add DeskDirector Tech Portal as a Custom Menu item inside ConnectWise Manage
Sign in with Microsoft Issue in Tech or Admin Console - "Need Admin Approval"
How do I add Tech Members/Contacts/Companies to my DeskDirector instance?
Time Stamps in DeskDirector Portal
Missing contacts or companies in DeskDirector but they are in my PSA
User Group FAQs
Chat permission granted but "Chat" option is missing on "Contact Support" page
How do we set a landing page for the client portal?
Other Articles
Switching PSA or merging with another CW/AT instance
How to Allow Time Entries for StreamlineIT Members
Essential and Dynamic Plan Breakdown
Advanced Use
Generative AI
DeskDirector with Generative AI
Setting up AI Service Providers
AI Assistants in DeskDirector
Custom Tools for AI Assistants
Knowledge Bases for AI Assistants
Ticket Summary for Tech Portal
DeskDirector API
Subscribing to Chat Webhooks
Portal Deep Linking
Webhook Example with Zapier
Chat Session Payload
Get started with portal extension page demo
Dynamic content based on logged in user
Clean Tickets
Exporting Portal Usage
TimeZest integration with DeskDirector
Troubleshooting Connectwise/Autotask-related integration issues
Troubleshooting
Login & Authentication - Common Issues
DeskDirector Desktop App - Installation Issues
Tickets & Chats - Common Issues
ConnectWise Integration - Common Issues
Email & Email Delivery - Common Issues
Release Notes
Client Portal
Server
Tech Portal
Portal Release Notes - Windows/macOS
Differences Between different Desktop Portal version
Portal Release Notes - Web Client
Release Notes in the Admin Portal
Glossary
Archived
(ARCHIVED; MERGED) Setting/Resetting a Contact's Password
Importing Wufoo Forms to DD Forms
Building the DeskDirector Desktop Portal Installer (v4)
Security
Microsoft Teams App
Introducing the DeskDirector for Microsoft Team App
Setting up Content Security Policy (CSP)
Installing the Microsoft Teams App (Tech)
Setting up Tags for Teams Discussions (Tech)
Setting up DeskDirector for Microsoft Teams for your clients (Client mode)
Branding the DeskDirector Teams App
DeskDirector Teams App Notifications
User Groups Integration with Microsoft Teams
Troubleshooting
Advanced topic: Setting up Tech & Client Mode in the same tenancy
Integrating Microsoft Teams with DeskDirector Tech Portal
Smart Alerts for Tech Users
Release Notes - DeskDirector Teams App
Contact Support
- All Categories
- Getting Started with DeskDirector
- Admin Console
- Portal
- Service Catalogue
- Forms
- DeskDirector Forms - Dynamic Fields
DeskDirector Forms - Dynamic Fields
Updated
by Jason He
Dynamic fields provide a way to add and display dynamic content within your DeskDirector forms.
Usage & Limitations
Before continuing, it's important to provide some context regarding what these dynamic fields can and can't do.
- The dropdown menu for a dynamic field can display up to
30
items. - Each item's name is limited to a maximum of 100 characters and must be a string.
- Each item's identifier is limited to a maximum 50 characters and must be a string.
Web Service (API) design blue print
Request (GET or POST):
https://{domain}/{path}?{query parameters}
Query parameters or properties in JSON body payload
term
Search term, use for type-ahead systemticketId
Ticket ID that form is attached toaccess_token
Access Token is an JWT token, where web service can use to gather user information. Such as user ID, email, company ID etc. It can be verified through an public hash key.access_token_expiration
How long before access token expires (Number in seconds).
Example of GET request is:
Example of POST request is:
POST request is more secure than GET request. Since anything within body payload been encrypted and secured by HTTPS. Where anything passed through query parameter through URL are expost. This is by HTTPS design. Thus, access token is better passed through HTTP requesty body.
// POST https://host/api/path
{
"term": "john",
"ticketId": 3032,
"access_token": "token",
"access_token_expiration": 3600
}
Response
The response payload must be according to following JSON
schema. It is case insensitive:
{
"value": [
{
"name": "max length of 100 chars",
"identifier": "max length of 50 chars"
},
{
"name": "max length of 100 chars",
"identifier": "max length of 50 chars"
}
],
"request": {
"term": "search term",
"ticketId": number
}
}
Fallback "Other" Choice
Due to the inherently unreliable nature of web services, an escape option is provided to the user for all dynamic fields. This is so a user won't be prevented from completing a form in the event of API failure or the inability to find the correct choice (e.g. the contact they are looking for is not presented in the list, even though it should be).
The format of the other choice will be:
{
"name": "Other",
"identifier": "{field_identifier}_other",
"selected": true
}
In the case where the "Other" choice is selected, a new choice will appear in the choices
collection on the field and their answer will be placed into the value
property on the field.
e.g.
{
"type": "api_single_choice",
"name": "Choose a contact",
"identifier": "d4ptmn",
"required": false,
"choices": [
{
"name": "Other",
"identifier": "d4ptmn_other",
"selected": true
}
],
"meta": {
"render": "radio"
},
"value": "Bob Smith"
}
Error Response
Any service API error should be according to the following schema. If the error format is incorrect, the portal should display generic error.
{
error: string,
errorDescription: string
}
If an error is returned from the API, the form will allow the user to skip the question. They will be presented with an "Other" choice.
The error will be reported to Application Insights.
{
"name": 'DynamicFieldError';
"customDimensions": {
"form_entity_id": string;
"field_identifier": string;
"field_type": 'api_multi_select' | 'api_single_select';
"url": string;
[queryParamKey: string]: string;
}
}
Deliver answer from previous fields
From portal version 3.15.1 (17th of Nov, 2020), dynamic field in form is able to deliver answer from previous fields. Desktop portal require version 4.x+.
To achieve delivery of answers to the target API, you should specify previous field identifier as query parameter.
- Field has to be before current field. It can be from previous sections.
- It can be any field, include other dynamic fields
- Field identifier should record as parameter key inside API URL.
Use build in priorities API as an example.
/api/v2/ddform/dynamic/priorities
For the identifier for each field, you can navigate to webhook page of given the form. On that page, it will breakdown all sections and fields with their associated identifiers.
To access webhook page, open the dropdown from top right corner of form editor, and open webhook page in another tab.

To add birthday and select the user's answer to 'priority request', we should translate API URL from above to:
/api/v2/ddform/dynamic/priorities?epzipi&l2lunn
'Select priorities' field should now able to pass selected contact ID and birth day value to given API.
For example:
/api/v2/ddform/dynamic/priorities?epzipi=1985-03-20&l2lunn=203
Frequently Asked Questions:
Q: What happens to an API response that contains more than 30 items?
A: From a user experience point of view, too many items will give the users a hard time to scan through, this is why the dropdown of a dynamic field will only display first 30 items. It is best to provide search capability at API level if there are more than 30 items.
Q: What if one of item has name more than 100 chars?
A: Dropdown of the dynamic field is limited to display 100 chars only. Extra characters will be chopped off upon form submission.
Q: What if one of item's identifier has more than 50 chars?
A: Similar as name, on form submission, extra characters will be chopped off.
Q: What if the identifier is essential and it is more than 50 chars? What can we do about it?
A: You can hash those identifiers into a fixed length, then store it inside a key value pair data table.
Q: What if dynamic field is required, but the given API is broken or throws an error?
A: Forms would allow submission without answer from the API. The error would be submitted alongside the ticket.
Q: Adding previous field identifier to dynamic field seems complicated - are there any improvements planned?
A: Yes, we are planning to improve UI/UX to support that, once implemented, you no longer have to specify identifier inside the API URL, until it's implemented, parameter key is an alternative way to achieve it ahead of admin portal improvements.