Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/calibermind-integration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@gitbook/integration-calibermind': major
---

Add CaliberMind integration
5 changes: 5 additions & 0 deletions .changeset/olive-dodos-tap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@gitbook/integration-calibermind': major
---

Initial release of calibermind
23 changes: 18 additions & 5 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added integrations/calibermind/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
39 changes: 39 additions & 0 deletions integrations/calibermind/gitbook-manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: calibermind
title: CaliberMind
icon: ./assets/icon.png
description: Track and identify GitBook page visitors with CaliberMind's AnalyticsJS tracker.
externalLinks:
- label: Documentation
url: https://docs.calibermind.com/
visibility: public
organization: gitbook
script: ./src/index.ts
scopes:
- site:script:inject
- site:script:cookies
contentSecurityPolicy:
script-src: |
https://cdn.calibermind.com;
connect-src: |
cdn.calibermind.com;
summary: |
# Overview
CaliberMind is a B2B marketing analytics and attribution platform that helps you understand who visits your pages, identify accounts, and track engagement across the buyer journey.

# How it works
The GitBook CaliberMind integration injects the CaliberMind AnalyticsJS tracker into your published site. Each page view fetches the tracker with your write key substituted in, enabling visitor tracking, account identification, and ABM vendor detection in your CaliberMind dashboard.

# Configure
Install the integration on the GitBook site of your choice, then provide your CaliberMind write key. You can find your write key in CaliberMind under Settings > Website > Tracker, or by asking your Customer Success Manager.
categories:
- analytics
configurations:
site:
properties:
write_key:
type: string
title: Write Key
description: Your CaliberMind write key, found under Settings > Website > Tracker in your CaliberMind account.
required:
- write_key
target: site
19 changes: 19 additions & 0 deletions integrations/calibermind/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "@gitbook/integration-calibermind",
"version": "1.0.0",
"private": true,
"dependencies": {
"@gitbook/api": "*",
"@gitbook/runtime": "*"
},
"devDependencies": {
"@gitbook/cli": "workspace:*",
"@gitbook/tsconfig": "workspace:*"
},
"scripts": {
"typecheck": "tsc --noEmit",
"check": "gitbook check",
"publish-integrations-staging": "gitbook publish .",
"publish-integrations": "gitbook publish ."
}
}
66 changes: 66 additions & 0 deletions integrations/calibermind/src/calibermindScript.raw.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
!(function () {
var analytics = (window.analytics = window.analytics || []);
if (!analytics.initialize) {
if (analytics.invoked) {
window.console && console.error && console.error('CaliberMind snippet included twice.');
} else {
analytics.invoked = true;
analytics.methods = [
'trackSubmit',
'trackClick',
'trackLink',
'trackForm',
'pageview',
'identify',
'reset',
'group',
'track',
'ready',
'alias',
'debug',
'page',
'once',
'off',
'on',
'addSourceMiddleware',
'addIntegrationMiddleware',
'setAnonymousId',
'addDestinationMiddleware',
];
analytics.factory = function (method) {
return function () {
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
analytics.push(args);
return analytics;
};
};
for (var i = 0; i < analytics.methods.length; i++) {
var key = analytics.methods[i];
analytics[key] = analytics.factory(key);
}
analytics.load = function (name, options) {
if (options) {
analytics._loadOptions = options;
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.src =
(document.location.protocol === 'https:' ? 'https://' : 'http://') +
'cdn.calibermind.com/' +
name +
'.js';
var first = document.getElementsByTagName('script')[0];
first.parentNode.insertBefore(script, first);
};
analytics.SNIPPET_VERSION = '4.13.1';
analytics.load('a', {
writeKey: '<TO_REPLACE>',
abmVendors: ['CLEARBIT', 'ROLLWORKS', 'SIXSENSE', 'BOMBORA', 'DEMANDBASE'],
});
analytics.load('js/fingerprint');
analytics.load('js/abm');
}
}
})();
39 changes: 39 additions & 0 deletions integrations/calibermind/src/index.ts
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 './calibermindScript.raw.js';

type CaliberMindRuntimeContext = RuntimeContext<
RuntimeEnvironment<
{},
{
write_key?: string;
}
>
>;

export const handleFetchEvent: FetchPublishScriptEventCallback = async (
_event,
{ environment }: CaliberMindRuntimeContext,
) => {
const writeKey = environment.siteInstallation?.configuration?.write_key;

if (!writeKey) {
return;
}

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

export default createIntegration<CaliberMindRuntimeContext>({
fetch_published_script: handleFetchEvent,
});
3 changes: 3 additions & 0 deletions integrations/calibermind/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "@gitbook/tsconfig/integration.json"
}
Loading