1--- 2stage: Plan 3group: Certify 4info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments 5--- 6 7# Service Desk **(FREE)** 8 9> Moved to GitLab Free in 13.2. 10 11Service Desk is a module that allows your team to connect 12with any external party through email, without any external tools. 13An ongoing conversation in the same place as where your software 14is built ensures user feedback ends up where it's needed. 15 16With Service Desk, you can provide efficient email support to your customers. They can 17email you bug reports, feature requests, or general feedback. They all end up in your 18GitLab project as new issues. In turn, your team can respond directly from the project. 19 20As Service Desk is built right into GitLab itself, the complexity and inefficiencies 21of multiple tools and external integrations are eliminated. This significantly shortens 22the cycle time from feedback to software update. 23 24For an overview, check the video demonstration on [GitLab Service Desk](https://about.gitlab.com/blog/2017/05/09/demo-service-desk/). 25 26## How it works 27 28GitLab Service Desk enables people to create issues in your 29GitLab instance without needing their own user account. 30 31It provides a unique email address for end users to create issues in a project. 32Follow-up notes can be sent either through the GitLab interface or by email. End 33users only see the thread through email. 34 35For example, let's assume you develop a game for iOS or Android. 36The codebase is hosted in your GitLab instance, built and deployed 37with GitLab CI/CD. 38 39Here's how Service Desk works for you: 40 411. You provide a project-specific email address to your paying customers, who can email you directly 42 from the application. 431. Each email they send creates an issue in the appropriate project. 441. Your team members navigate to the Service Desk issue tracker, where they can see new support 45 requests and respond inside associated issues. 461. Your team communicates back and forth with the customer to understand the request. 471. Your team starts working on implementing code to solve your customer's problem. 481. When your team finishes the implementation, whereupon the merge request is merged and the issue 49 is closed automatically. 501. The customer's requests are handled through email, without ever having access to your 51 GitLab instance. 521. Your team saved time by not having to leave GitLab (or setup any integrations) to follow up with 53 your customer. 54 55## Configuring Service Desk 56 57Users with Maintainer and higher access in a project can configure Service Desk. 58 59Service Desk issues are [confidential](issues/confidential_issues.md), so they are 60only visible to project members. In GitLab 11.7 we updated the generated email 61address format. The older format is still supported, so existing aliases or 62contacts still work. 63 64If you have [templates](description_templates.md) in your repository, you can optionally select 65one from the selector menu to append it to all Service Desk issues. 66 67To enable Service Desk in your project: 68 691. (GitLab self-managed only) [Set up incoming email](../../administration/incoming_email.md#set-it-up) for the GitLab instance. 70 We recommend using [email sub-addressing](../../administration/incoming_email.md#email-sub-addressing), 71 but you can also use [catch-all mailboxes](../../administration/incoming_email.md#catch-all-mailbox). 721. In a project, in the left sidebar, go to **Settings > General** and expand the **Service Desk** section. 731. Enable the **Activate Service Desk** toggle. This reveals a unique email address to email issues 74 to the project. 75 76Service Desk is now enabled for this project! To access it in a project, in the left sidebar, select 77**Issues > Service Desk**. 78 79WARNING: 80Anyone in your project can use the Service Desk email address to create an issue in this project, **regardless 81of their access level** to your GitLab instance. 82 83To improve your project's security, we recommend the following: 84 85- Put the Service Desk email address behind an alias on your email system so you can change it later. 86- [Enable Akismet](../../integration/akismet.md) on your GitLab instance to add spam checking to this service. 87 Unblocked email spam can result in many spam issues being created. 88 89The unique internal email address is visible to project members at least 90the Reporter [role](../permissions.md) in your GitLab instance. 91An external user (issue creator) cannot see the internal email address 92displayed in the information note. 93 94### Using customized email templates 95 96> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/2460) in GitLab Premium 12.7. 97> - Moved to GitLab Free in 13.2. 98 99An email is sent to the author when: 100 101- A user submits a new issue using Service Desk. 102- A new note is created on a Service Desk issue. 103 104You can customize the body of these email messages with templates. 105Save your templates in the `.gitlab/service_desk_templates/` 106directory in your repository. 107 108With Service Desk, you can use templates for: 109 110- [Thank you emails](#thank-you-email) 111- [New note emails](#new-note-email) 112- [New Service Desk issues](#new-service-desk-issues) 113 114#### Thank you email 115 116When a user submits an issue through Service Desk, GitLab sends a **thank you email**. 117You must name the template file `thank_you.md`. 118 119You can use these placeholders to be automatically replaced in each email: 120 121- `%{ISSUE_ID}`: issue IID 122- `%{ISSUE_PATH}`: project path appended with the issue IID 123 124Because Service Desk issues are created as [confidential](issues/confidential_issues.md) (only project members can see them), 125the response email does not contain the issue link. 126 127#### New note email 128 129When a user-submitted issue receives a new comment, GitLab sends a **new note email**. 130You must name the template file `new_note.md`. 131 132You can use these placeholders to be automatically replaced in each email: 133 134- `%{ISSUE_ID}`: issue IID 135- `%{ISSUE_PATH}`: project path appended with the issue IID 136- `%{NOTE_TEXT}`: note text 137 138#### New Service Desk issues 139 140You can select one [description template](description_templates.md#create-an-issue-template) 141**per project** to be appended to every new Service Desk issue's description. 142 143You can set description templates at various levels: 144 145- The entire [instance](description_templates.md#set-instance-level-description-templates). 146- A specific [group or subgroup](description_templates.md#set-group-level-description-templates). 147- A specific [project](description_templates.md#set-a-default-template-for-merge-requests-and-issues). 148 149The templates are inherited. For example, in a project, you can also access templates set for the instance or the project’s parent groups. 150 151To use a custom description template with Service Desk: 152 1531. On the top bar, select **Menu > Projects** and find your project. 1541. [Create a description template](description_templates.md#create-an-issue-template). 1551. On the left sidebar, select **Settings > General > Service Desk**. 1561. From the dropdown **Template to append to all Service Desk issues**, search or select your template. 157 158### Using a custom email display name 159 160> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/7529) in GitLab 12.8. 161 162You can customize the email display name. Emails sent from Service Desk have 163this name in the `From` header. The default display name is `GitLab Support Bot`. 164 165To edit the custom email display name: 166 1671. On the top bar, select **Menu > Projects** and find your project. 1681. On the left sidebar, select **Settings > General > Service Desk**. 1691. Enter a new name in **Email display name**. 1701. Select **Save Changes**. 171 172### Using a custom email address **(FREE SELF)** 173 174> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/2201) in GitLab Premium 13.0. 175> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/284656) in GitLab 13.8. 176 177It is possible to customize the email address used by Service Desk. To do this, you must configure 178a [custom mailbox](#configuring-a-custom-mailbox). If you want you can also configure a 179[custom suffix](#configuring-a-custom-email-address-suffix). 180 181#### Configuring a custom mailbox 182 183NOTE: 184On GitLab.com a custom mailbox is already configured with `contact-project+%{key}@incoming.gitlab.com` as the email address, you can still configure the 185[custom suffix](#configuring-a-custom-email-address-suffix) in project settings. 186 187Using the `service_desk_email` configuration, you can customize the mailbox 188used by Service Desk. This allows you to have a separate email address for 189Service Desk by also configuring a [custom suffix](#configuring-a-custom-email-address-suffix) 190in project settings. 191 192The `address` must include the `+%{key}` placeholder within the 'user' 193portion of the address, before the `@`. This is used to identify the project 194where the issue should be created. 195 196NOTE: 197The `service_desk_email` and `incoming_email` configurations should 198always use separate mailboxes. This is important, because emails picked from 199`service_desk_email` mailbox are processed by a different worker and it would 200not recognize `incoming_email` emails. 201 202To configure a custom mailbox for Service Desk with IMAP, add the following snippets to your configuration file in full: 203 204- Example for installations from source: 205 206 ```yaml 207 service_desk_email: 208 enabled: true 209 address: "project_contact+%{key}@example.com" 210 user: "project_contact@example.com" 211 password: "[REDACTED]" 212 host: "imap.gmail.com" 213 port: 993 214 ssl: true 215 start_tls: false 216 log_path: "log/mailroom.log" 217 mailbox: "inbox" 218 idle_timeout: 60 219 expunge_deleted: true 220 ``` 221 222- Example for Omnibus GitLab installations: 223 224 ```ruby 225 gitlab_rails['service_desk_email_enabled'] = true 226 gitlab_rails['service_desk_email_address'] = "project_contact+%{key}@gmail.com" 227 gitlab_rails['service_desk_email_email'] = "project_contact@gmail.com" 228 gitlab_rails['service_desk_email_password'] = "[REDACTED]" 229 gitlab_rails['service_desk_email_mailbox_name'] = "inbox" 230 gitlab_rails['service_desk_email_idle_timeout'] = 60 231 gitlab_rails['service_desk_email_log_file'] = "/var/log/gitlab/mailroom/mail_room_json.log" 232 gitlab_rails['service_desk_email_host'] = "imap.gmail.com" 233 gitlab_rails['service_desk_email_port'] = 993 234 gitlab_rails['service_desk_email_ssl'] = true 235 gitlab_rails['service_desk_email_start_tls'] = false 236 ``` 237 238The configuration options are the same as for configuring 239[incoming email](../../administration/incoming_email.md#set-it-up). 240 241##### Microsoft Graph 242 243> Introduced in [GitLab 13.11](https://gitlab.com/gitlab-org/gitlab/-/issues/214900) 244 245Service Desk can be configured to read Microsoft Exchange Online mailboxes with the Microsoft 246Graph API instead of IMAP. Follow the [documentation in the incoming email section for setting up an OAuth2 application for Microsoft Graph](../../administration/incoming_email.md#microsoft-graph). 247 248- Example for Omnibus GitLab installations: 249 250 ```ruby 251 gitlab_rails['service_desk_email_enabled'] = true 252 gitlab_rails['service_desk_email_address'] = "project_contact+%{key}@example.onmicrosoft.com" 253 gitlab_rails['service_desk_email_email'] = "project_contact@example.onmicrosoft.com" 254 gitlab_rails['service_desk_email_mailbox_name'] = "inbox" 255 gitlab_rails['service_desk_email_log_file'] = "/var/log/gitlab/mailroom/mail_room_json.log" 256 gitlab_rails['service_desk_email_inbox_method'] = 'microsoft_graph' 257 gitlab_rails['service_desk_email_inbox_options'] = { 258 'tenant_id': '<YOUR-TENANT-ID>', 259 'client_id': '<YOUR-CLIENT-ID>', 260 'client_secret': '<YOUR-CLIENT-SECRET>', 261 'poll_interval': 60 # Optional 262 } 263 ``` 264 265The Microsoft Graph API is not yet supported in source installations. See [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/326169) for more details. 266 267#### Configuring a custom email address suffix 268 269You can set a custom suffix in your project's Service Desk settings once you have configured a [custom mailbox](#configuring-a-custom-mailbox). 270It can contain only lowercase letters (`a-z`), numbers (`0-9`), or underscores (`_`). 271 272When configured, the custom suffix creates a new Service Desk email address, consisting of the 273`service_desk_email_address` setting and a key of the format: `<project_full_path>-<custom_suffix>` 274 275For example, suppose the `mygroup/myproject` project Service Desk settings has the following configured: 276 277- Email address suffix is set to `support`. 278- Service Desk email address is configured to `contact+%{key}@example.com`. 279 280The Service Desk email address for this project is: `contact+mygroup-myproject-support@example.com`. 281The [incoming email](../../administration/incoming_email.md) address still works. 282 283If you don't configure the custom suffix, the default project identification will be used for identifying the project. You can see that email address in the project settings. 284 285## Using Service Desk 286 287You can use Service Desk to [create an issue](#as-an-end-user-issue-creator) or [respond to one](#as-a-responder-to-the-issue). 288In these issues, you can also see our friendly neighborhood [Support Bot](#support-bot-user). 289 290### As an end user (issue creator) 291 292> Support for additional email headers [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/346600) in GitLab 14.6. 293> In earlier versions, the Service Desk email address had to be in the "To" field. 294To create a Service Desk issue, an end user does not need to know anything about 295the GitLab instance. They just send an email to the address they are given, and 296receive an email back confirming receipt: 297 298![Service Desk enabled](img/service_desk_confirmation_email.png) 299 300This also gives the end user an option to unsubscribe. 301 302If they don't choose to unsubscribe, then any new comments added to the issue 303are sent as emails: 304 305![Service Desk reply email](img/service_desk_reply.png) 306 307Any responses they send via email are displayed in the issue itself. 308 309For information about headers used for treating email, see 310[the incoming email documentation](../../administration/incoming_email.md#accepted-headers). 311 312### As a responder to the issue 313 314For responders to the issue, everything works just like other GitLab issues. 315GitLab displays a familiar-looking issue tracker where responders can see 316issues created through customer support requests, and filter or interact with them. 317 318![Service Desk Issue tracker](img/service_desk_issue_tracker.png) 319 320Messages from the end user are shown as coming from the special 321[Support Bot user](../../subscriptions/self_managed/index.md#billable-users). 322You can read and write comments as you normally do in GitLab: 323 324![Service Desk issue thread](img/service_desk_thread.png) 325 326Note that: 327 328- The project's visibility (private, internal, public) does not affect Service Desk. 329- The path to the project, including its group or namespace, are shown in emails. 330 331### Support Bot user 332 333Behind the scenes, Service Desk works by the special Support Bot user creating issues. This user 334does not count toward the license limit count. 335