What is Zendesk
Zendesk is a customer service solution for handling support tickets.
Get an API key
- Go to the Inkeep Dashboard
- Select your project under Projects
- Go to the Integrations tab
- Click on Create integration
- Select Web
- Provide a Name and URL (optional) for the integration
- Click on Create
- Click the Example < /> button to get your API key and view suggested settings
Connect the script
- Click the Zendesk Products in the top bar, then select Guide
- Navigate to Guide Admin
- Click Customize on the theme you want to edit
- Click Edit code. Which will open theme code editor
In the templates section, find the document_head.hbs
file and paste the code below:
<script id="inkeep-script" src="https://unpkg.com/@inkeep/uikit-js@0.3.18/dist/embed.js" type="module" defer></script>
Creating the container
Add a container for the widget:
- Open the
home_page.hbs
and section_page.hbs
files
- Add an element with the ID -
inkeepSearchBarNav
and inkeepSearchBarHero
- Apply the below before -> after changes to
home_page.hbs
:
- Apply the below before -> after changes to
section_page.hbs
:
- Click Publish
Custom CSS
Zendesk allows you to add a custom css file to the assets directory:
- Create an
inkeep-styles.css
stylesheet and paste in the below::
[data-theme="light"] .ikp-search-bar-trigger__wrapper {
background: white;
border-radius: 6px;
width: 100%;
}
- In the theme code editor, click Add
- Click on Asset
- Upload the created css file
Next, go back to the header.hbs
file and add the following code at the end of the file:
<script type="text/javascript" defer>
const inkeepScript = document.getElementById("inkeep-script");
// configure and initialize the widget
const addInkeepWidget = (componentType, targetElementId) => {
const inkeepStyles = "{{asset 'inkeep-styles.css'}}"; // <--- should match the uploaded file
const inkeepWidget = Inkeep().embed({
componentType,
targetElement: targetElementId,
properties: {
baseSettings: {
apiKey: "INKEEP_API_KEY", // required
integrationId: "INKEEP_INTEGRATION_ID", // required
organizationId: "INKEEP_ORGANIZATION_ID", // required
primaryBrandColor: "#26D6FF", // your brand color, widget color scheme is derived from this
organizationDisplayName: "Inkeep",
// ...optional settings,
theme: {
stylesheetUrls: [inkeepStyles], // optional
},
},
modalSettings: {
// optional settings
},
searchSettings: {
// optional settings
},
aiChatSettings: {
// optional settings
botAvatarSrcUrl: "https://mydomain.com/mylogo", // use your own bot avatar
quickQuestions: [
"Example question 1?",
"Example question 2?",
"Example question 3?",
],
},
},
});
};
inkeepScript.addEventListener("load", () => {
if (document.body) {
const navSearchBarContainer =
document.getElementById("inkeepSearchBarNav");
const heroSearchBarContainer = document.getElementById(
"inkeepSearchBarHero"
);
addInkeepWidget("ChatButton"); // initialize the ChatButton widget
navSearchBarContainer &&
addInkeepWidget("SearchBar", "#inkeepSearchBarNav"); // initialize the nav SearchBar widget
heroSearchBarContainer &&
addInkeepWidget("SearchBar", "#inkeepSearchBarHero"); // initialize the hero SearchBar widget
}
});
</script>
Different styles between hero and nav bar
You can conditionally apply different stylesheets to the navigation bar or hero search bar.
const inkeepSearchBarNavStyles = "{{asset 'inkeep-styles.css'}}";
const inkeepSearchBarHeroStyles = "{{asset 'inkeep-hero-styles.css'}}";
const stylesheetUrls =
componentType === "ChatButton"
? []
: targetElementId === "inkeepSearchBarHero"
? [inkeepSearchBarHeroStyles]
: [inkeepSearchBarNavStyles];
const inkeepWidget = Inkeep().embed({
componentType,
targetElement: targetElementId,
properties: {
baseSettings: {
theme: {
stylesheetUrls,
},
},
},
});
Save custom code
Click on the Publish. Navigate to your web application to make sure the widget is installed correctly.
For a full list of customizations, check out the Common Settings.