This document defines the backend eligibility payload contract consumed by:
apps/widgetruntime survey orchestrationpackages/react-native-sdkruntime survey orchestration
- Convex endpoint:
api.surveys.getActiveSurveys - Auth modes:
- Visitor session token path (
visitorId+sessionToken) - Authenticated agent path (workspace settings permission)
- Visitor session token path (
Each item in the query result is a survey document containing at least:
_id: survey identifiernameformat:"small" | "large"questions: question definitions for rendering/submissionintroStep,thankYouStepshowProgressBar,showDismissButtontriggers:type:"immediate" | "page_visit" | "time_on_page" | "event"pageUrl,pageUrlMatchdelaySecondseventName
frequency:"once" | "until_completed"scheduling:startDateendDate
Runtime clients apply a shared helper (@opencom/sdk-core selectSurveyForDelivery) to enforce:
- Schedule window (
startDate/endDate) - Trigger satisfaction (
immediate,page_visit,time_on_page,event) - Suppression:
- already completed
- already shown in current runtime session
- previously shown for
frequency === "once"
Clients provide this context while selecting a survey:
currentUrltimeOnPageSecondsfiredEventName(last tracked event name)now(optional override for deterministic tests)
If eligibility query data is unavailable, runtimes continue normal chat/messenger boot and skip survey rendering until eligibility data is available.