diff --git a/integrations/wistia/assets/icon.svg b/integrations/wistia/assets/icon.svg
new file mode 100644
index 000000000..1c0db6fbd
--- /dev/null
+++ b/integrations/wistia/assets/icon.svg
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/integrations/wistia/assets/wistia-preview.jpg b/integrations/wistia/assets/wistia-preview.jpg
new file mode 100644
index 000000000..10eaa3003
Binary files /dev/null and b/integrations/wistia/assets/wistia-preview.jpg differ
diff --git a/integrations/wistia/gitbook-manifest.yaml b/integrations/wistia/gitbook-manifest.yaml
new file mode 100644
index 000000000..6dd4bba8a
--- /dev/null
+++ b/integrations/wistia/gitbook-manifest.yaml
@@ -0,0 +1,25 @@
+name: wistia
+title: Wistia
+icon: ./assets/icon.svg
+previewImages:
+    - ./assets/wistia-preview.png
+description: Add Wistia video analytics to your GitBook site.
+visibility: public
+script: ./src/index.ts
+scopes:
+    - site:script:inject
+    - site:script:cookies
+organization: gitbook
+contentSecurityPolicy:
+    script-src: https://fast.wistia.com;
+summary: |
+    # Overview
+    This integration adds the Wistia analytics script to your published GitBook site.
+
+    # How it works
+    The integration injects the Wistia script (https://fast.wistia.com/assets/external/E-v1.js) 
+    on your page to enable video analytics tracking.
+
+categories:
+    - analytics
+target: site
\ No newline at end of file
diff --git a/integrations/wistia/package.json b/integrations/wistia/package.json
new file mode 100644
index 000000000..63a2e3085
--- /dev/null
+++ b/integrations/wistia/package.json
@@ -0,0 +1,19 @@
+{
+    "name": "@gitbook/integration-wistia",
+    "version": "1.0.0",
+    "private": true,
+    "dependencies": {
+        "@gitbook/api": "*",
+        "@gitbook/runtime": "*"
+    },
+    "devDependencies": {
+        "@gitbook/cli": "workspace:*",
+        "@gitbook/tsconfig": "workspace:*"
+    },
+    "scripts": {
+        "typecheck": "tsc --noEmit",
+        "publish-integrations-staging": "gitbook publish .",
+        "check": "gitbook check",
+        "publish-integrations": "gitbook publish ."
+    }
+}
\ No newline at end of file
diff --git a/integrations/wistia/src/index.ts b/integrations/wistia/src/index.ts
new file mode 100644
index 000000000..eabb7954d
--- /dev/null
+++ b/integrations/wistia/src/index.ts
@@ -0,0 +1,23 @@
+import {
+    createIntegration,
+    FetchPublishScriptEventCallback,
+    RuntimeContext,
+    RuntimeEnvironment,
+} from '@gitbook/runtime';
+
+import script from './script.raw.js';
+
+type WistiaRuntimeContext = RuntimeContext>;
+
+export const handleFetchEvent: FetchPublishScriptEventCallback = async () => {
+    return new Response(script as string, {
+        headers: {
+            'Content-Type': 'application/javascript',
+            'Cache-Control': 'max-age=604800',
+        },
+    });
+};
+
+export default createIntegration({
+    fetch_published_script: handleFetchEvent,
+});
\ No newline at end of file
diff --git a/integrations/wistia/src/script.raw.js b/integrations/wistia/src/script.raw.js
new file mode 100644
index 000000000..84c87ca9c
--- /dev/null
+++ b/integrations/wistia/src/script.raw.js
@@ -0,0 +1,24 @@
+const GRANTED_COOKIE = '__gitbook_cookie_granted';
+
+function getCookie(cname) {
+    const name = `${cname}=`;
+    const decodedCookie = decodeURIComponent(document.cookie);
+    const ca = decodedCookie.split(';');
+    for (let i = 0; i < ca.length; i++) {
+        let c = ca[i];
+        while (c.charAt(0) === ' ') {
+            c = c.substring(1);
+        }
+        if (c.indexOf(name) === 0) {
+            return c.substring(name.length, c.length);
+        }
+    }
+    return '';
+}
+
+if (getCookie(GRANTED_COOKIE) === 'yes') {
+    const script = document.createElement('script');
+    script.src = 'https://fast.wistia.com/assets/external/E-v1.js';
+    script.async = true;
+    document.head.appendChild(script);
+}
\ No newline at end of file
diff --git a/integrations/wistia/tsconfig.json b/integrations/wistia/tsconfig.json
new file mode 100644
index 000000000..7e359bb57
--- /dev/null
+++ b/integrations/wistia/tsconfig.json
@@ -0,0 +1,7 @@
+{
+    "extends": "@gitbook/tsconfig/base.json",
+    "compilerOptions": {
+        "outDir": "./dist"
+    },
+    "include": ["src/**/*"]
+}
\ No newline at end of file