Launch tasks for Zendesk Suite

<!--
Source: https://github.com/documentation/cross_product/zs_launch_tasks.html
HC id: 4408882670106 (https://support.zendesk.com/hc/en-us/articles/4408882670106)
Warning! This is a custom article. To publish it, paste the source code directly into the Guide source code editor.
Don't attempt to use the publishing app.

- Do not delete any div tags
- Do not modify any class values
- Do not manually adjust the table column widths (they're set in the CSS)
- Do not change the order of the tasks (ask in the Docs channel)
- Do not remove non-breaking space entities (&nbsp;)
- Do not delete or modify the scripts at the bottom of the article

Tasks are listed in table rows. Each task row must have the following class values in order:

class="lt-task {plan} {channel}".

Possible plan values: "all", "team", "growth", "professional", "enterprise", "enterprise_plus"
Possible channel values: "all", "email", "voice", "messaging", "kb"

Example:



The article does not have a DITA source file.
-->
This interactive guide creates a launch plan, based on your suite plan and channels. Many steps are optional, depending on your needs. The order of launch tasks is important, because there are some dependencies.
Select options to build your custom launch plan.


What's your Suite plan type?
Team
Growth
Professional
Enterprise
Enterprise Plus



How do you want customers to reach you?
All channels
Email
Messaging
Voice
Knowledge base







Setting up



Planning



Planning your support solution

How to




Defining your organizational structure (More information)



Add groups
Overview
How to




Define custom roles
Overview
How to




Customize user fields
Overview
How to




Create organization fields
Overview
How to




Create organizations
Overview
How to




Defining your customer support experience (More information)



Create brands
Overview
How to




Set business schedules
Overview
How to




Create custom ticket fields
Overview
How to




Configuring settings and access (More information)



Configure security settings
Overview
How to




Configure end-user settings
Overview
How to




Defining ticket routing and workflows (More information)



Configure routing
Overview
How to




Create triggers
Overview
How to




Create automations
Overview
How to




Create SLA policies
Overview
How to




Create views
Overview
How to




Create macros
Overview
How to




Adding people (More information)



Add agents
Overview
How to




Import end users
Overview
How to









Setting up your channels



Setting up your email channel



Add support addresses
Overview
How to




Customize email notifications
Overview
How to




Setting up your help center and creating your knowledge base (More information)



Enable your help center in setup mode

How to




Brand your help center

How to




Add categories and sections

How to




Add knowledge base content

How to




Set Knowledge roles for agents

How to




Create user segments

How to




Create management permissions

How to




Change the URL of your help center

How to




Configure autoreplies with articles to deflect requests

How to




Setting up messaging (More information)



Configure the Web Widget for messaging

How to




Configure Zendesk messaging for Android and iOS apps

How to




Add a conversation bot to your messaging channel

How to




Customize the bot with answers

How to




Route messaging tickets and notifications

How to




Give your agents access to messaging

How to




Setting up the voice channel (More information)



Prepare your network


How to




Understand phone number availability

How to




Enable the voice channel

How to




Give your agents access to voice

How to




Add telephone numbers

How to




Configure general settings

How to




Create greetings

How to




Configure individual number settings

How to




Configure voicemail options

How to









Going live




Training your agents (More information)



Get familiar with the Agent Workspace

How to




View the agent guide

Guide




Testing before going live (More information)



Use the sandbox to test changes

How to




Going live to customers (More information)



Set up email forwarding from an existing address
Overview
How to




Configure voice channel call forwarding

How to




Activate your help center

How to




Embed Zendesk messaging into your help center or website

How to




Embed Zendesk messaging into your mobile app

How to




Add your social messaging channels

How to











// Bootstrap 5.3
const link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css';
link.integrity = 'sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH';
link.crossOrigin = 'anonymous';
document.head.appendChild(link);

// stylesheet
const style = document.createElement('style');
style.innerHTML = `
.lt-task {
display: none;
}
.lt-task.show {
display: block;
}

/* form */

#lt-form {
margin-top: 20px;
padding-bottom: 30px;
}
.lt-question {
padding-bottom: 20px;
}

/* launch tasks */

div.lt-group {
background-color: #fff;
margin-top: 40px;
border: 1px solid #d9d9d9;
}
div.lt-group table, div.lt-group td {
border: none;
}
h2.lt-group {
padding-top: 40px;
padding-left: 40px;
}
table.lt-group {
margin: 0 auto 30px 40px; /* top | horizontal | bottom | left */
}
tr.lt-task {
width: 600px;
}
tr.kb {
margin-bottom: 0;
}
td.lt-sub-group {
padding-top: 20px;
padding-bottom: 10px;
}
td.lt-task-gutter {
width: 5px;
}
td.lt-task-name {
width: 250px;
padding-bottom: 8px;
}
td.lt-task-link {
width: 100px;
text-align: center;
}
.btn {
margin: 0.5rem 0;
/*--bs-accordion-active-bg: white;*/
}
.what-plan-p {
line-height: 3rem;
}
img {
vertical-align: baseline;
}
`;
document.head.appendChild(style);


/**********************************************************************
* TASK FILTER *
* Custom filtering for the launch tasks *
/**********************************************************************
*/
const configureLaunchTasksPage = (utils) => {

// get elements to configure
let channels_select = document.getElementById("channels-select");
let get_plan_btn = document.getElementById("get-plan-btn");
let print_plan_btn = document.getElementById("print-plan-btn");

// deselect get_plan_btn if user clicks channels_select element
channels_select.addEventListener("click", function () {
if (get_plan_btn === document.activeElement) {
get_plan_btn.blur();
}
return false;
});

// set the translations for the form elements and buttons
const translations = getLocaleTranslations();

let plan_select_label = document.getElementById("plan-select-label");
plan_select_label.innerText = translations.what_plan;

let channels_select_label = document.getElementById("channels-select-label");
channels_select_label.innerText = translations.what_channels;

const channel_names = translations.channel_names;
for (var i = 0; i < channels_select.options.length; i++) {
channels_select.options[i].innerText = channel_names[i];
}

get_plan_btn.value = translations.get_launch_plan;
print_plan_btn.value = translations.print_launch_plan;

// filter the tasks if user clicks get_plan_btn
get_plan_btn.addEventListener("click", function (e) {
let plan_select = document.getElementById("plan-select");
const selected_plan = plan_select.value;
let selected_channels = channels_select.selectedOptions;
selected_channels = Array.from(selected_channels).map(
(option) => option.value
);
filterLaunchTasks(selected_plan, selected_channels);
});

// deselect "all" channel if another channel is selected or
// deselect other channels if "all" option is selected
options = channels_select.options;
console.log(options);
for (let i = 0; i < options.length; i++) {
options[i].addEventListener("mousedown", function (e) {
e.preventDefault();
e.target.selected = !e.target.selected; // multi select options without the ctrl key
if (e.target.value != "all") {
channels_select[0].selected = false;
} else {
for (let i = 1; i <= channels_select.length - 1; i++) {
channels_select[i].selected = false;
}
}
return false;
});
}

// print the plan if user clicks print_plan_btn
print_plan_btn.addEventListener("click", function () {
window.print();
});
};

/**
* @param {String} selected_plan - The plan the user selected to filter the tasks
* @param {Array} selected_channels - The channels the user selected to filter the tasks
*/
const filterLaunchTasks = (selected_plan, selected_channels) => {
// get eligible plans for the selection
const inherited_plan_lookup = {
team: ["team"],
growth: ["team", "growth"],
professional: ["team", "growth", "professional"],
enterprise: ["team", "growth", "professional", "enterprise"],
enterprise_plus: [
"team",
"growth",
"professional",
"enterprise",
"enterprise_plus",
],
};
let eligible_plans = inherited_plan_lookup[selected_plan];
eligible_plans.push("all"); // not a choice in the form but "all" is a possible class value

// get eligible channels for the selection
let eligible_channels = selected_channels;
if (eligible_channels.includes("all") && eligible_channels.length == 1) {
eligible_channels = ["all", "email", "voice", "messaging", "kb"];
} else if (!eligible_channels.includes("all")) {
eligible_channels.push("all");
}

// show/hide the tasks
const tasks = document.getElementsByClassName("lt-task");
for (let i = 0; i < tasks.length; i++) {
const task_classes = tasks[i].getAttribute("class").split(" ");
const task_plan = task_classes[1];
const task_channel = task_classes[2];
if (
eligible_plans.includes(task_plan) &&
eligible_channels.includes(task_channel)
) {
if (!task_classes.includes("show")) {
utils.addShowClass(tasks[i]);
}
} else if (task_classes.includes("show")) {
utils.removeShowClass(tasks[i]);
}
}
};

// get the translations for the form elements and buttons
const getLocaleTranslations = () => {
const translations = {
"en-us": {
what_plan: "What's your Suite plan type?",
what_channels: "How do you want customers to reach you?",
channel_names: ["All channels", "Email", "Messaging", "Voice", "Knowledge base"],
get_launch_plan: "Get my launch plan",
print_launch_plan: "Print my launch plan"
},
"es": {
what_plan: "¿Cuál es su plan de Zendesk Suite?",
what_channels: "¿Cómo desea que los clientes se comuniquen con usted?",
channel_names: ["Todos los canales", "Correo electrónico", "Mensajería", "Voz", "Base de conocimientos"],
get_launch_plan: "Obtener mi plan de lanzamiento",
print_launch_plan: "Imprimir mi plan de lanzamiento"
},
"de": {
what_plan: "Welchen Suite-Plan haben Sie?",
what_channels: "Über welche Kanäle sollen Kunden mit Ihnen Kontakt aufnehmen können?",
channel_names: ["Alle Kanäle", "E-Mail", "Messaging", "Telefon", "Wissensdatenbank"],
get_launch_plan: "Startplan anzeigen",
print_launch_plan: "Startplan drucken"
},
"fr": {
what_plan: "Quelle édition Suite utilisez-vous ?",
what_channels: "Comment préférez-vous que vos clients vous contactent ?",
channel_names: ["Tous les canaux", "E-mail", "Messagerie", "Centre d'appels", "Base de connaissances"],
get_launch_plan: "Créer mon plan de démarrage",
print_launch_plan: "Imprimer mon plan de démarrage"
},
"ja": {
what_plan: "ご使用のSuiteプラン : ",
what_channels: "カスタマーとやりとりするチャネル : ",
channel_names: ["すべてのチャネル", "メール", "メッセージング", "音声通話", "ナレッジベース"],
get_launch_plan: "ローンチプランを作成",
print_launch_plan: "ローンチプランを印刷"
},
"pt-br": {
what_plan: "Qual é seu tipo de plano do Suite?",
what_channels: "Como você quer que os clientes entrem em contato?",
channel_names: ["Todos os canais", "E-mail", "Mensagens", "Voz", "Base de conhecimento"],
get_launch_plan: "Quero meu plano de lançamento",
print_launch_plan: "Imprimir meu plano de lançamento"
},
"ko": {
what_plan: "사용 중인 Suite 플랜 유형이 무엇인가요?",
what_channels: "고객이 어떤 방법으로 연락하도록 할까요?",
channel_names: ["모든 채널", "이메일", "메시징", "음성", "지식창고"],
get_launch_plan: "시작 플랜 받기",
print_launch_plan: "시작 플랜 인쇄"
},
"it": {
what_plan: "Qual è il tuo piano Suite?",
what_channels: "Come vuoi che ti contattino i clienti?",
channel_names: ["Tutti i canali", "Email", "Messaggistica", "Voice", "Knowledge base"],
get_launch_plan: "Crea le mie operazioni di avvio",
print_launch_plan: "Stampa le mie operazioni di avvio"
},
"zh-cn": {
what_plan: "您的 Suite 计划类型是哪种？",
what_channels: "您希望客户如何与您联系？",
channel_names: ["所有渠道", "电邮", "消息传送", "语音", "知识库"],
get_launch_plan: "获取我的启动计划",
print_launch_plan: "打印我的启动计划"
}
};

const url = window.location.href;
let pageLocale = url.split("/")[4];
return translations[pageLocale];
};

// utility functions
const utils = {
addShowClass: function (element) {
let class_names = element.getAttribute("class");
if (class_names) {
class_names += " show";
element.setAttribute("class", class_names);
}
},
removeShowClass: function (element) {
let class_names = element.getAttribute("class");
if (class_names) {
class_names = class_names.replace(" show", "");
element.setAttribute("class", class_names);
}
},
};

// configure the page after it loads
document.addEventListener("DOMContentLoaded", configureLaunchTasksPage(utils));