Hooks
Hooks let you listen to Screeb lifecycle events. You can define hooks globally via the plugin config or per-survey/per-message.
Available hooks
| Hook Name | Plugin config / init | surveyStart | messageStart |
|---|---|---|---|
onReady | ✅ | ❌ | ❌ |
onSurveyDisplayAllowed | ✅ | ❌ | ❌ |
onMessageDisplayAllowed | ✅ | ❌ | ❌ |
onSurveyShowed | ✅ | ✅ | ❌ |
onSurveyStarted | ✅ | ✅ | ❌ |
onQuestionReplied | ✅ | ✅ | ✅ |
onSurveyCompleted | ✅ | ✅ | ❌ |
onSurveyHidden | ✅ | ✅ | ❌ |
onMessageShowed | ✅ | ❌ | ✅ |
onMessageStarted | ✅ | ❌ | ✅ |
onMessageCompleted | ✅ | ❌ | ✅ |
onMessageHidden | ✅ | ❌ | ✅ |
Global hooks (plugin config)
Define hooks once in main.ts:
createApp(App)
.use(ScreebPlugin, {
websiteId: "<YOUR-CHANNEL-ID>",
autoInit: true,
hooks: {
version: "1.0.0",
onReady: (payload) => {
console.log("Screeb ready", payload);
},
onSurveyShowed: (payload) => {
console.log("Survey showed", payload);
},
onSurveyCompleted: (payload) => {
console.log("Survey completed", payload);
},
},
})
.mount("#app");
Per-survey hooks
Pass hooks to surveyStart():
<script setup lang="ts">
import { useScreeb } from "@screeb/sdk-vue";
const { surveyStart } = useScreeb();
await surveyStart("<survey-id>", undefined, false, {}, {
version: "1.0.0",
onSurveyCompleted: (payload) => {
console.log("Survey completed", payload);
},
});
</script>
Per-message hooks
Pass hooks to messageStart():
<script setup lang="ts">
import { useScreeb } from "@screeb/sdk-vue";
const { messageStart } = useScreeb();
await messageStart("<message-id>", true, {}, {
version: "1.0.0",
onMessageCompleted: (payload) => {
console.log("Message completed", payload);
},
});
</script>