Skip to content
Draft
3 changes: 3 additions & 0 deletions integrations/zendesk/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": ["@gitbook/eslint-config/integration"]
}
25 changes: 25 additions & 0 deletions integrations/zendesk/gitbook-manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: zendesk
title: Zendesk
organization: gitbook
visibility: public
description: ''
summary: |
# Overview
https://support.zendesk.com/hc/en-us/articles/4593564000410-Setting-up-the-search-crawler
categories:
- analytics
script: src/index.tsx
scopes:
- site:script:inject
- site:script:cookies
secrets: {}
configurations:
site:
properties:
site_tag:
type: string
title: Zendesk Site ID
description: Site Tag from Zendesk
required:
- site_tag
target: site
17 changes: 17 additions & 0 deletions integrations/zendesk/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"name": "zendesk",
"private": true,
"scripts": {
"lint": "eslint --ext .js,.jsx,.ts,.tsx .",
"typecheck": "tsc --noEmit",
"publish": "gitbook publish ."
},
"dependencies": {
"@gitbook/runtime": "*"
},
"devDependencies": {
"@gitbook/cli": "*",
"@gitbook/eslint-config": "*",
"@gitbook/tsconfig": "*"
}
}
39 changes: 39 additions & 0 deletions integrations/zendesk/src/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import {
createIntegration,
FetchPublishScriptEventCallback,
RuntimeContext,
RuntimeEnvironment,
} from '@gitbook/runtime';

import script from './script.raw.js';

type ZendeskRuntimeContext = RuntimeContext<
RuntimeEnvironment<
{},
{
site_tag?: string;
}
>
>;

export const handleFetchEvent: FetchPublishScriptEventCallback = async (
event,
{ environment }: ZendeskRuntimeContext
) => {
const trackingId = environment.siteInstallation?.configuration?.site_tag

if (!trackingId) {
return
}

return new Response((script as string).replace('<TO_REPLACE>', trackingId), {
headers: {
'Content-Type': 'application/javascript',
'Cache-Control': 'max-age=604800',
},
});
};

export default createIntegration<ZendeskRuntimeContext>({
fetch_published_script: handleFetchEvent,
});
9 changes: 9 additions & 0 deletions integrations/zendesk/src/script.raw.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
(function (z, e, n) {
const trackingID = '<TO_REPLACE>';

z = e.getElementsByTagName('head')[0];
n = e.createElement('meta');
n.name = 'zd-site-verification';
n.content = `${trackingID}`;
z.appendChild(n);
})(window, document);
6 changes: 6 additions & 0 deletions integrations/zendesk/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"extends": "@gitbook/tsconfig/integration.json",
"compilerOptions": {
"lib": ["ES6", "DOM"],
}
}
Loading