IntegrationsZendeskHelp center

Add Chat and Search to Zendesk Help Center

Add Inkeep's chat button and search bar to your Zendesk Help Center.

What is Zendesk

Zendesk is a customer service solution for handling support tickets.

Get an API key

Follow these steps to create an API key for your web integration.

Connect the script

  1. Click the Zendesk Products in the top bar, then select Guide
  2. Navigate to Guide Admin
  3. Click Customize on the theme you want to edit
  4. 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"
  type="module"
  src="https://cdn.jsdelivr.net/npm/@inkeep/cxkit-js@0.5/dist/embed.js"
  defer
></script>

Creating the container

Add a container for the widget:

  1. Open the home_page.hbs and section_page.hbs files
  2. Add an element with the ID - inkeepSearchBarNav and inkeepSearchBarHero
  3. Apply the below before -> after changes to home_page.hbs:
<!-- other code -->
<section id="main-content" class="section hero">
  <div class="hero-inner">
    <h2 class="visibility-hidden">{{ t 'search' }}</h2>
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="12"
      height="12"
      focusable="false"
      viewBox="0 0 12 12"
      class="search-icon"
      aria-hidden="true"
    >
      <circle cx="4.5" cy="4.5" r="4" fill="none" stroke="currentColor" />
      <path stroke="currentColor" stroke-linecap="round" d="M11 11L7.5 7.5" />
    </svg>
    {{search submit=false instant=settings.instant_search class='search
    search-full'}}
  </div>
</section>
<!-- other code -->
<section id="main-content" class="section hero">
  <div class="hero-inner">
    <div id="inkeepSearchBarHero"></div>
  </div>
</section>
  1. Apply the below before -> after changes to section_page.hbs:
<!-- other code -->
<div class="sub-nav">
  {{breadcrumbs}}
  <div class="search-container">
    <svg
      xmlns="http://www.w3.org/2000/svg"
      width="12"
      height="12"
      focusable="false"
      viewBox="0 0 12 12"
      class="search-icon"
      aria-hidden="true"
    >
      <circle cx="4.5" cy="4.5" r="4" fill="none" stroke="currentColor" />
      <path stroke="currentColor" stroke-linecap="round" d="M11 11L7.5 7.5" />
    </svg>
    {{search scoped=settings.scoped_kb_search submit=false}}
  </div>
</div>
<!-- other code -->
<div class="sub-nav">
  {{breadcrumbs}}
  <div class="search-container">
    <div id="inkeepSearchBarNav"></div>
  </div>
</div>
  1. Click Publish

Custom CSS

Zendesk allows you to add a custom css file to the assets directory:

  1. Create an inkeep-styles.css stylesheet and paste in the below::
inkeep-styles.css
[data-theme="light"] .ikp-search-bar__button {
  background: white;
  border-radius: 6px;
  width: 100%;
}
  1. In the theme code editor, click Add
  2. Click on Asset
  3. Upload the created css file

Initialize the widgets

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 inkeepStyles = "{{asset 'inkeep-styles.css'}}"; // <--- should match the uploaded file
  const config = {
    baseSettings: {
      apiKey: "INKEEP_API_KEY", // required
      primaryBrandColor: "#26D6FF", // your brand color, widget color scheme is derived from this
      organizationDisplayName: "Inkeep",
      // ...optional settings,
      theme: {
        styles: [
          {
            key: "main",
            type: "link",
            value: inkeepStyles,
          },
        ],
      },
    },
    modalSettings: {
      // optional settings
    },
    searchSettings: {
      // optional settings
    },
    aiChatSettings: {
      // optional settings
      aiAssistantAvatar: "https://mydomain.com/mylogo", // use your own AI assistant avatar
      exampleQuestions: [
        "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"
      );
 
      Inkeep.ChatButton(config); // initialize the ChatButton widget
      navSearchBarContainer && Inkeep.SearchBar("#inkeepSearchBarNav", config); // initialize the nav SearchBar widget
      heroSearchBarContainer &&
        Inkeep.SearchBar("#inkeepSearchBarHero", config); // 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'}}"; // <--- should match the uploaded file
const inkeepSearchBarHeroStyles = "{{asset 'inkeep-hero-styles.css'}}"; // <--- should match the uploaded file
 
const getStyles = (componentType, targetElementId) => {
  if (componentType === "ChatButton") {
    return [];
  }
  return targetElementId === "inkeepSearchBarHero"
    ? [{ key: "main", type: "link", value: inkeepSearchBarHeroStyles }]
    : [{ key: "main", type: "link", value: inkeepSearchBarNavStyles }];
};
 
const config = {
  // ...other settings,
  baseSettings: {
    // ...other baseSettings,
    theme: {
      styles: getStyles(componentType, targetElementId),
    },
  },
};
 
const inkeepWidget =
  componentType === "ChatButton"
    ? Inkeep.ChatButton(config)
    : Inkeep.SearchBar(targetElementId, config);
// ...

Save custom code

Click on the Publish button. Navigate to your web application to make sure the widget is installed correctly.

For a full list of customizations, check out the Common Settings.

On this page