You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When the Site Goals widgets are first rendered in their "Aggregated" state (i.e. the googlesitekit_event_provider and googlesitekit_form_id custom dimensions have not yet been created for the Analytics property), and after the Introductory Modal CTA has been dismissed, a "New" notice CTA should be displayed within each applicable widget to encourage the user to enable the custom dimension breakdown.
Enabling the breakdown allows Site Kit to track event data by plugin source (googlesitekit_event_provider) and by form ID (googlesitekit_form_id), unlocking the tabbed/grouped views in both Site Goals widgets. The notice should use the existing Notice component infrastructure (assets/js/components/Notice/index.js). See Figma mocks and the Design Doc for full context.
Acceptance criteria
Once the Introductory Modal CTA has been dismissed and a Site Goals widget is in the Aggregated state (custom dimensions not yet created), a "New" notice CTA should be rendered within each applicable widget (and selection panel), independently:
The notice in the Online store performance widget should be relevant to e-commerce event breakdown (by plugin source) - Figma mock
The notice in the Lead generation performance widget should be relevant to lead form breakdown (by form ID). - Figma mock
The notice should not appear if the custom dimensions googlesitekit_event_provider and googlesitekit_form_id have already been created for the Analytics property.
The notice should not appear before the Introductory Modal CTA has been dismissed.
The primary CTA on the notice ("Enable" or equivalent) should trigger the breakdown setup flow (OAuth + custom dimension creation), which will be handled in a subsequent issue.
Clicking "No thanks" should dismiss the notice. Upon dismissal, an admin menu tooltip should be displayed pointing the user to Analytics Settings, where custom dimensions can be enabled later.
Dismissing the notice in a widget should also dismiss it in the Site Goals Side Panel (if rendered), and vice versa — dismissal state should be shared.
Once dismissed a tooltip should be shown pointing it to the user that breakdown can be set from settings at any time. When dismissed from selection panel, dismiss tooltip should be shown after panel has been closed.
The notice component should reuse the existing Notice component (assets/js/components/Notice/index.js).
Implementation Brief
Define a shared dismissed item slug constant (e.g. SITE_GOALS_BREAKDOWN_NOTICE) in assets/js/modules/analytics-4/components/site-goals/constants.ts
This single slug is used by both widgets and the Side Panel, ensuring shared dismissal state per the ACs
Create a BreakdownNotice component under assets/js/modules/analytics-4/components/site-goals/notifications/
Accept title, description, and CTA label props from the parent
Accept an optional onDismissComplete callback prop for controlling post-dismiss behavior (tooltip timing)
Use the Notice component with type set to NOTICE_TYPES.NEW
Visibility conditions (all must be met to render the notice):
isItemDismissed( SITE_GOALS_INTRO_MODAL_BANNER ) from CORE_USER must be true - the intro modal has been dismissed
hasCustomDimensions( [ 'googlesitekit_event_provider', 'googlesitekit_form_id' ] ) from MODULES_ANALYTICS_4 must be false — the breakdown dimensions have not yet been created
isItemDismissed( SITE_GOALS_BREAKDOWN_NOTICE ) from CORE_USER must be false - the notice itself has not been dismissed
If any of these selectors returns undefined (still loading), return null to avoid flash
On click: call CORE_USER.dismissItem( SITE_GOALS_BREAKDOWN_NOTICE ) to persist dismissal, then invoke the onDismissComplete callback if provided
Integrate BreakdownNotice into assets/js/modules/analytics-4/components/site-goals/widgets/OnlineStorePerformanceWidget.tsx
Render the notice after the "Key action" TilesGroup and before the "How are your visitors engaging?" section. Pass ecommerce-specific title and description per the Figma
On dismiss, immediately show the admin menu tooltip via useShowTooltip with content per the Figma ("You can always enable breakdown from settings later") and a dismiss label ("Got it"). Follow the same tooltip settings pattern as ConsentModeSetupCTABanner
Integrate BreakdownNotice into assets/js/modules/analytics-4/components/site-goals/widgets/LeadGenerationPerformanceWidget.tsx
Same placement and tooltip behavior as OnlineStorePerformanceWidget, with lead-specific content
Integrate BreakdownNotice into assets/js/modules/analytics-4/components/site-goals/selection-panel/PanelContent.tsx
Render a BreakdownNotice above each GoalTypeSection - one above the ecommerce section with ecommerce-specific copy, one above the lead section with lead-specific copy. Each renders independently based on whether that goal type is active
Pass panel-specific styling classes (same approach as CustomDimensionsNotice using SelectionPanelNotice classes) via the className prop
On dismiss, do not show the tooltip immediately - instead set a pending tooltip flag (e.g. via a new action/selector pair in GA4 datastore value) that the panel parent reads on close. Since both notices share the SITE_GOALS_BREAKDOWN_NOTICE slug, dismissing either one dismisses both
Update assets/js/modules/analytics-4/components/site-goals/selection-panel/index.tsx to handle the deferred tooltip on panel close
Track the pending tooltip flag set by the notice's dismiss handler
In the closePanel callback or via an effect watching isOpen transitioning to false, check the flag. If set, call useShowTooltip with the same tooltip settings (content, dismiss label) and clear the flag
This ensures the tooltip only appears once the side panel overlay is closed and the admin menu is visible
Update the site-goals feature tour step in assets/js/modules/analytics-4/components/site-goals/feature-tours/site-goals.ts that currently targets .googlesitekit-site-goals-primary-action as a placeholder
Replace the target with the actual BreakdownNotice CSS class selector (e.g. the class applied to the notice container)
Feature Description
When the Site Goals widgets are first rendered in their "Aggregated" state (i.e. the
googlesitekit_event_providerandgooglesitekit_form_idcustom dimensions have not yet been created for the Analytics property), and after the Introductory Modal CTA has been dismissed, a "New" notice CTA should be displayed within each applicable widget to encourage the user to enable the custom dimension breakdown.Enabling the breakdown allows Site Kit to track event data by plugin source (
googlesitekit_event_provider) and by form ID (googlesitekit_form_id), unlocking the tabbed/grouped views in both Site Goals widgets. The notice should use the existingNoticecomponent infrastructure (assets/js/components/Notice/index.js). See Figma mocks and the Design Doc for full context.Acceptance criteria
googlesitekit_event_providerandgooglesitekit_form_idhave already been created for the Analytics property.Noticecomponent (assets/js/components/Notice/index.js).Implementation Brief
Define a shared dismissed item slug constant (e.g.
SITE_GOALS_BREAKDOWN_NOTICE) inassets/js/modules/analytics-4/components/site-goals/constants.tsCreate a
BreakdownNoticecomponent underassets/js/modules/analytics-4/components/site-goals/notifications/onDismissCompletecallback prop for controlling post-dismiss behavior (tooltip timing)NOTICE_TYPES.NEWisItemDismissed( SITE_GOALS_INTRO_MODAL_BANNER )fromCORE_USERmust be true - the intro modal has been dismissedhasCustomDimensions( [ 'googlesitekit_event_provider', 'googlesitekit_form_id' ] )fromMODULES_ANALYTICS_4must be false — the breakdown dimensions have not yet been createdisItemDismissed( SITE_GOALS_BREAKDOWN_NOTICE )fromCORE_USERmust be false - the notice itself has not been dismissedCORE_USER.dismissItem( SITE_GOALS_BREAKDOWN_NOTICE )to persist dismissal, then invoke theonDismissCompletecallback if providedIntegrate BreakdownNotice into
assets/js/modules/analytics-4/components/site-goals/widgets/OnlineStorePerformanceWidget.tsxuseShowTooltipwith content per the Figma ("You can always enable breakdown from settings later") and a dismiss label ("Got it"). Follow the same tooltip settings pattern asConsentModeSetupCTABannerIntegrate BreakdownNotice into
assets/js/modules/analytics-4/components/site-goals/widgets/LeadGenerationPerformanceWidget.tsxOnlineStorePerformanceWidget, with lead-specific contentIntegrate BreakdownNotice into
assets/js/modules/analytics-4/components/site-goals/selection-panel/PanelContent.tsxBreakdownNoticeabove eachGoalTypeSection- one above the ecommerce section with ecommerce-specific copy, one above the lead section with lead-specific copy. Each renders independently based on whether that goal type is activeCustomDimensionsNoticeusingSelectionPanelNoticeclasses) via the className propSITE_GOALS_BREAKDOWN_NOTICEslug, dismissing either one dismisses bothUpdate
assets/js/modules/analytics-4/components/site-goals/selection-panel/index.tsxto handle the deferred tooltip on panel closeclosePanelcallback or via an effect watchingisOpentransitioning to false, check the flag. If set, calluseShowTooltipwith the same tooltip settings (content, dismiss label) and clear the flagUpdate the site-goals feature tour step in
assets/js/modules/analytics-4/components/site-goals/feature-tours/site-goals.tsthat currently targets.googlesitekit-site-goals-primary-actionas a placeholderTest Coverage
Add component tests for BreakdownNotice:
dismissItemwith the correct slug and invokes onDismissCompleteUpdate
assets/js/modules/analytics-4/components/site-goals/widgets/OnlineStorePerformanceWidget.test.tsxandLeadGenerationPerformanceWidget.test.tsx:Add tests for
assets/js/modules/analytics-4/components/site-goals/selection-panel/PanelContent.test.tsx:BreakdownNoticerenders above each goal type section when conditions are metAdd/update tests for
assets/js/modules/analytics-4/components/site-goals/selection-panel/index.test.tsx:Add/update Storybook stories for both widgets and the selection panel showing the notice in the aggregated state
QA Brief
siteGoalsfeature flag.Changelog entry