questionnaire docs
Development

Hooks Reference

Shared React hooks for ads, pixels, and theme state.

Hooks Reference

All shared hooks live in components/hooks/. Use these instead of inline implementations.

Ad hooks

HookFileReturnsPurpose
useAdThemeTiminguseAdThemeTiming.jsisAdEnabled, shouldRenderTheme-based ad enable/timing gates
useAdDelaysuseAdDelays.jsDelay values per ad typeAd delay calculation
useAdWaterfalluseAdWaterfall.jsKV cycling stateAd waterfall with KV value cycling
useDisplayAdPlacementuseDisplayAdPlacement.jsPortal refAuto-placement portal for DisplayAd
useUniqueAdIduseUniqueAdId.jsStable ID stringUnique ID for ad containers
useKv2PopupuseKv2Popup.jsPopup stateKV2 inline popup state management
useBannerAdLoaderuseBannerAdLoader.jsLoad stateQuestionnaire banner ad loading

Pixel hooks

HookFilePurpose
useCategoryPixelsuseCategoryPixels.jsCategory page pixel firing effects
useConversionPixelsuseConversionPixels.jsConversion pixel state and firing
useButtonClickHandlersuseButtonClickHandlers.jsButton click with conversion tracking

Theme hooks

HookFilePurpose
useQuestionnaireStepsuseQuestionnaireSteps.jsQuestionnaire step navigation
useContentBluruseContentBlur.jsBlur effect on content containers
useScreenSizeuseScreenSize.jsisLargeScreen, isDesktop detection

WhatsApp hooks

HookFilePurpose
useWhatsAppThemewhatsapp/useWhatsAppTheme.jsFetch theme data from API
useWhatsAppMessageswhatsapp/useWhatsAppMessages.jsMessage flow and state
useWhatsAppAdHandlerswhatsapp/useWhatsAppAdHandlers.jsAd callbacks and redirects

Usage pattern

import useAdThemeTiming from "@/components/hooks/useAdThemeTiming";
import { AD_TYPES } from "@/components/utils/themeConfig";

const { isAdEnabled, shouldRender } = useAdThemeTiming(
  AD_TYPES.DISPLAY,
  themeType,
  { themeClosed, contentVisible, rewardedAdTriggered }
);

On this page