Marketing permissions per 100 users, across 11 sites.
unique_eligible
unrecognized_unique_visitorsrecognized_uncaptured_visitorsThe sum of permissions across five channels: email, SMS, wallet pass, web push, and app. Each one is an explicit consent from a user to be reached on that channel — no null-state shortcuts.
A user counts once per channel they granted, so someone reachable on three channels contributes 3 to the numerator.
Only email and SMS are instrumented today; wallet pass, web push, and app are part of the definition but not yet populated in the data.
The pool of unique people we could still capture a permission from — deduplicated per person, not per visit. Breaks down as:
unique_eligibleunrecognized_unique_visitorsrecognized_uncaptured_visitorsUnrecognized unique visitors — people we've seen but have no identity for, counted once each (many visit 2–5×). Recognized, uncaptured — people we match via hashed email but who haven't subscribed.
The existing per-site value is shown as-is; the unrecognized / recognized split is part of the definition but not yet populated.
The raw fraction is small (single-digit per 100), so we report rate × 100. Computed with SAFE_DIVIDE, which returns NULL rather than erroring when a site has no eligible users yet.
email on file.email_consented = TRUE — explicit consent.phone on file.sms_consented = TRUE — explicit consent required (TCPA).unique_eligible can be inflated by bot traffic.-- Cumulative exchange rate for a single site. -- Numerator: 5 permission channels (wallet_pass / web_push / app pending). -- Denominator: unique eligible visitors, deduplicated per person — -- the unrecognized / recognized split is not yet instrumented. WITH permissions AS ( SELECT COUNTIF(email IS NOT NULL AND email_consented = TRUE) AS email_permissions, COUNTIF(phone IS NOT NULL AND sms_consented = TRUE) AS sms_permissions, COUNTIF(wallet_pass_active = TRUE) AS wallet_pass_permissions, -- pending COUNTIF(web_push_subscribed = TRUE) AS web_push_permissions, -- pending COUNTIF(app_push_consented = TRUE) AS app_permissions -- pending FROM `user` WHERE website_id = 'NaVnjma' -- Final Boss Sour ), eligible AS ( -- Unique people, deduplicated (once per person, not per visit). SELECT COUNT(DISTINCT IF(identity_id IS NULL, visitor_id, NULL)) AS unrecognized_unique_visitors, COUNT(DISTINCT IF(identity_id IS NOT NULL AND NOT subscribed, identity_id, NULL)) AS recognized_uncaptured_visitors FROM `visit` WHERE website_id = 'NaVnjma' ) SELECT unrecognized_unique_visitors, recognized_uncaptured_visitors, unrecognized_unique_visitors + recognized_uncaptured_visitors AS unique_eligible, email_permissions, sms_permissions, wallet_pass_permissions, web_push_permissions, app_permissions, email_permissions + sms_permissions + wallet_pass_permissions + web_push_permissions + app_permissions AS total_permissions, SAFE_DIVIDE( email_permissions + sms_permissions + wallet_pass_permissions + web_push_permissions + app_permissions, unrecognized_unique_visitors + recognized_uncaptured_visitors ) * 100 AS permissions_per_100_users FROM permissions, eligible;
-- Daily cohort exchange rate for a single site, last 14 days. -- Cohort = users / visitors first seen on day D. Counted as of now. -- Recent days under-state the rate (cohorts haven't matured). -- wallet_pass / web_push / app and the visitor split are pending. WITH permissions AS ( SELECT DATE(created_at) AS cohort_date, COUNTIF(email IS NOT NULL AND email_consented = TRUE) AS email_permissions, COUNTIF(phone IS NOT NULL AND sms_consented = TRUE) AS sms_permissions, COUNTIF(wallet_pass_active = TRUE) AS wallet_pass_permissions, -- pending COUNTIF(web_push_subscribed = TRUE) AS web_push_permissions, -- pending COUNTIF(app_push_consented = TRUE) AS app_permissions -- pending FROM `user` WHERE website_id = 'NaVnjma' AND created_at >= CURRENT_DATE() - INTERVAL 14 DAY GROUP BY cohort_date ), eligible AS ( -- Unique people per cohort day, deduplicated (once per person). SELECT DATE(first_seen_at) AS cohort_date, COUNT(DISTINCT IF(identity_id IS NULL, visitor_id, NULL)) AS unrecognized_unique_visitors, COUNT(DISTINCT IF(identity_id IS NOT NULL AND NOT subscribed, identity_id, NULL)) AS recognized_uncaptured_visitors FROM `visit` WHERE website_id = 'NaVnjma' AND first_seen_at >= CURRENT_DATE() - INTERVAL 14 DAY GROUP BY cohort_date ) SELECT p.cohort_date, e.unrecognized_unique_visitors, e.recognized_uncaptured_visitors, e.unrecognized_unique_visitors + e.recognized_uncaptured_visitors AS unique_eligible, p.email_permissions, p.sms_permissions, p.wallet_pass_permissions, p.web_push_permissions, p.app_permissions, SAFE_DIVIDE( p.email_permissions + p.sms_permissions + p.wallet_pass_permissions + p.web_push_permissions + p.app_permissions, e.unrecognized_unique_visitors + e.recognized_uncaptured_visitors ) * 100 AS permissions_per_100_users FROM permissions p JOIN eligible e USING (cohort_date) ORDER BY p.cohort_date DESC;