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