diff --git a/app/assets/javascripts/integrations/overrides/components/integration_overrides.vue b/app/assets/javascripts/integrations/overrides/components/integration_overrides.vue
new file mode 100644
index 0000000000000000000000000000000000000000..bfb16779854fc35c22dde8d738d667d2adafe691
--- /dev/null
+++ b/app/assets/javascripts/integrations/overrides/components/integration_overrides.vue
@@ -0,0 +1,15 @@
+<script>
+export default {
+  name: 'IntegrationOverrides',
+  props: {
+    overridesPath: {
+      type: String,
+      required: true,
+    },
+  },
+};
+</script>
+
+<template>
+  <div></div>
+</template>
diff --git a/app/assets/javascripts/integrations/overrides/index.js b/app/assets/javascripts/integrations/overrides/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..0f03b23ba218d3411bbfa35a1fec288fcd2ca097
--- /dev/null
+++ b/app/assets/javascripts/integrations/overrides/index.js
@@ -0,0 +1,23 @@
+import Vue from 'vue';
+import IntegrationOverrides from './components/integration_overrides.vue';
+
+export default () => {
+  const el = document.querySelector('.js-vue-integration-overrides');
+
+  if (!el) {
+    return null;
+  }
+
+  const { overridesPath } = el.dataset;
+
+  return new Vue({
+    el,
+    render(createElement) {
+      return createElement(IntegrationOverrides, {
+        props: {
+          overridesPath,
+        },
+      });
+    },
+  });
+};
diff --git a/app/assets/javascripts/pages/admin/integrations/overrides/index.js b/app/assets/javascripts/pages/admin/integrations/overrides/index.js
new file mode 100644
index 0000000000000000000000000000000000000000..b150470914433fac8149178606c5bd5c652b5b8e
--- /dev/null
+++ b/app/assets/javascripts/pages/admin/integrations/overrides/index.js
@@ -0,0 +1,3 @@
+import initIntegrationOverrides from '~/integrations/overrides';
+
+initIntegrationOverrides();