Skip to main content
Version: Vue SDK

Screen tracking

Track page transitions in your Vue Router app so Screeb can evaluate URL-based and page-level targeting rules for messages and surveys.

Automatic tracking via Vue Routerโ€‹

Screeb automatically detects URL changes in the browser. For most use cases with Vue Router's history mode, no additional setup is needed โ€” navigation events update window.location, which Screeb monitors.

Manual event tracking per routeโ€‹

If you want to trigger specific Screeb events on route transitions, use Vue Router's afterEach hook:

// main.ts or router/index.ts
import { createRouter, createWebHistory } from "vue-router";
import { ScreebPlugin } from "@screeb/sdk-vue";
import { createApp } from "vue";
import App from "./App.vue";

const router = createRouter({
history: createWebHistory(),
routes: [ /* your routes */ ],
});

const app = createApp(App);

app.use(ScreebPlugin, {
websiteId: "<YOUR-CHANNEL-ID>",
autoInit: true,
});

router.afterEach((to) => {
import("@screeb/sdk-browser").then(({ eventTrack }) => {
eventTrack("page_viewed", {
path: to.fullPath,
name: String(to.name ?? ""),
});
});
});

app.use(router).mount("#app");

Use within a componentโ€‹

Alternatively, track page views from a layout component that renders on every route change:

<!-- layouts/DefaultLayout.vue -->
<script setup lang="ts">
import { watch } from "vue";
import { useRoute } from "vue-router";
import { useScreeb } from "@screeb/sdk-vue";

const route = useRoute();
const { eventTrack } = useScreeb();

watch(
() => route.fullPath,
(path) => {
eventTrack("page_viewed", { path });
},
);
</script>