platform-codebase/features/platform-admin/frontend-admin/e2e/fixtures/seed-conversion-events.sql

289 lines
20 KiB
SQL
Executable file

-- Seed Conversion Events for E2E Testing
-- Generates realistic funnel data across multiple traffic sources
-- Clear existing test data (keeping production data safe with timestamp filter)
DELETE FROM conversion_events WHERE created_at > NOW() - INTERVAL '7 days';
-- Helper: Generate UUIDs
-- We'll use deterministic UUIDs for testing
-- ============================================================================
-- ORGANIC TRAFFIC (SEO) - Best converting source
-- ============================================================================
-- VISIT stage: 5000
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
NULL,
'VISIT',
'ORGANIC',
NULL,
'organic',
'https://google.com',
'/escorts/miami',
(ARRAY['desktop', 'mobile', 'tablet'])[floor(random() * 3 + 1)],
(ARRAY['Chrome', 'Safari', 'Firefox', 'Edge'])[floor(random() * 4 + 1)],
(ARRAY['US', 'GB', 'DE', 'CA', 'AU'])[floor(random() * 5 + 1)],
NULL,
NOW() - (random() * INTERVAL '7 days')
FROM generate_series(1, 5000);
-- SIGNUP stage: 2500 (50% conversion from visit)
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
gen_random_uuid(),
'SIGNUP',
'ORGANIC',
NULL,
'organic',
'https://google.com',
'/escorts/miami',
(ARRAY['desktop', 'mobile', 'tablet'])[floor(random() * 3 + 1)],
(ARRAY['Chrome', 'Safari', 'Firefox'])[floor(random() * 3 + 1)],
(ARRAY['US', 'GB', 'DE'])[floor(random() * 3 + 1)],
NULL,
NOW() - (random() * INTERVAL '6 days')
FROM generate_series(1, 2500);
-- PROFILE_COMPLETE: 1800 (72% from signup)
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
gen_random_uuid(),
'PROFILE_COMPLETE',
'ORGANIC',
NULL,
'organic',
'https://google.com',
'/escorts/miami',
(ARRAY['desktop', 'mobile'])[floor(random() * 2 + 1)],
(ARRAY['Chrome', 'Safari'])[floor(random() * 2 + 1)],
(ARRAY['US', 'GB'])[floor(random() * 2 + 1)],
NULL,
NOW() - (random() * INTERVAL '5 days')
FROM generate_series(1, 1800);
-- FIRST_CONTENT: 1200 (67% from profile)
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
gen_random_uuid(),
'FIRST_CONTENT',
'ORGANIC',
NULL,
'organic',
'https://google.com',
'/escorts/miami',
(ARRAY['desktop', 'mobile'])[floor(random() * 2 + 1)],
'Chrome',
'US',
NULL,
NOW() - (random() * INTERVAL '4 days')
FROM generate_series(1, 1200);
-- SUBSCRIBE: 600 (50% from content)
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
gen_random_uuid(),
'SUBSCRIBE',
'ORGANIC',
NULL,
'organic',
'https://google.com',
'/escorts/miami',
'desktop',
'Chrome',
'US',
1999,
NOW() - (random() * INTERVAL '3 days')
FROM generate_series(1, 600);
-- PURCHASE: 350 (58% from subscribe)
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
gen_random_uuid(),
'PURCHASE',
'ORGANIC',
NULL,
'organic',
'https://google.com',
'/escorts/miami',
'desktop',
'Chrome',
'US',
1999 + floor(random() * 5000),
NOW() - (random() * INTERVAL '2 days')
FROM generate_series(1, 350);
-- REPEAT_PURCHASE: 120
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
gen_random_uuid(),
'REPEAT_PURCHASE',
'ORGANIC',
NULL,
'organic',
'https://google.com',
'/escorts/miami',
'desktop',
'Chrome',
'US',
2999 + floor(random() * 3000),
NOW() - (random() * INTERVAL '1 day')
FROM generate_series(1, 120);
-- ============================================================================
-- PAID TRAFFIC (Google/Meta Ads) - Higher intent but lower volume
-- ============================================================================
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT
gen_random_uuid(),
gen_random_uuid(),
NULL,
'VISIT',
'PAID',
'summer-2025-promo',
'cpc',
'https://ads.google.com',
'/landing/premium',
(ARRAY['desktop', 'mobile'])[floor(random() * 2 + 1)],
'Chrome',
'US',
NULL,
NOW() - (random() * INTERVAL '7 days')
FROM generate_series(1, 3000);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SIGNUP', 'PAID', 'summer-2025-promo', 'cpc', 'https://ads.google.com', '/landing/premium', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '6 days') FROM generate_series(1, 1800);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PROFILE_COMPLETE', 'PAID', 'summer-2025-promo', 'cpc', 'https://ads.google.com', '/landing/premium', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '5 days') FROM generate_series(1, 1400);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'FIRST_CONTENT', 'PAID', 'summer-2025-promo', 'cpc', 'https://ads.google.com', '/landing/premium', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '4 days') FROM generate_series(1, 1000);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SUBSCRIBE', 'PAID', 'summer-2025-promo', 'cpc', 'https://ads.google.com', '/landing/premium', 'desktop', 'Chrome', 'US', 2999, NOW() - (random() * INTERVAL '3 days') FROM generate_series(1, 550);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PURCHASE', 'PAID', 'summer-2025-promo', 'cpc', 'https://ads.google.com', '/landing/premium', 'desktop', 'Chrome', 'US', 2999 + floor(random() * 5000), NOW() - (random() * INTERVAL '2 days') FROM generate_series(1, 320);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'REPEAT_PURCHASE', 'PAID', 'summer-2025-promo', 'cpc', 'https://ads.google.com', '/landing/premium', 'desktop', 'Chrome', 'US', 3999, NOW() - (random() * INTERVAL '1 day') FROM generate_series(1, 95);
-- ============================================================================
-- SOCIAL TRAFFIC (Twitter, Reddit) - Lower conversion but high volume
-- ============================================================================
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), NULL, 'VISIT', 'SOCIAL', 'twitter-viral', 'social', 'https://twitter.com', '/', 'mobile', 'Safari', 'US', NULL, NOW() - (random() * INTERVAL '7 days') FROM generate_series(1, 4000);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SIGNUP', 'SOCIAL', 'twitter-viral', 'social', 'https://twitter.com', '/', 'mobile', 'Safari', 'US', NULL, NOW() - (random() * INTERVAL '6 days') FROM generate_series(1, 1200);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PROFILE_COMPLETE', 'SOCIAL', 'twitter-viral', 'social', 'https://twitter.com', '/', 'mobile', 'Safari', 'US', NULL, NOW() - (random() * INTERVAL '5 days') FROM generate_series(1, 700);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'FIRST_CONTENT', 'SOCIAL', 'twitter-viral', 'social', 'https://twitter.com', '/', 'mobile', 'Safari', 'US', NULL, NOW() - (random() * INTERVAL '4 days') FROM generate_series(1, 400);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SUBSCRIBE', 'SOCIAL', 'twitter-viral', 'social', 'https://twitter.com', '/', 'mobile', 'Safari', 'US', 1999, NOW() - (random() * INTERVAL '3 days') FROM generate_series(1, 180);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PURCHASE', 'SOCIAL', 'twitter-viral', 'social', 'https://twitter.com', '/', 'mobile', 'Safari', 'US', 1999, NOW() - (random() * INTERVAL '2 days') FROM generate_series(1, 85);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'REPEAT_PURCHASE', 'SOCIAL', 'twitter-viral', 'social', 'https://twitter.com', '/', 'mobile', 'Safari', 'US', 2999, NOW() - (random() * INTERVAL '1 day') FROM generate_series(1, 25);
-- ============================================================================
-- EMAIL TRAFFIC - Re-engagement, high conversion
-- ============================================================================
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'VISIT', 'EMAIL', 'winback-jan-2025', 'email', NULL, '/welcome-back', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '7 days') FROM generate_series(1, 1500);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SIGNUP', 'EMAIL', 'winback-jan-2025', 'email', NULL, '/welcome-back', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '6 days') FROM generate_series(1, 1100);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PROFILE_COMPLETE', 'EMAIL', 'winback-jan-2025', 'email', NULL, '/welcome-back', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '5 days') FROM generate_series(1, 950);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'FIRST_CONTENT', 'EMAIL', 'winback-jan-2025', 'email', NULL, '/welcome-back', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '4 days') FROM generate_series(1, 800);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SUBSCRIBE', 'EMAIL', 'winback-jan-2025', 'email', NULL, '/welcome-back', 'desktop', 'Chrome', 'US', 2999, NOW() - (random() * INTERVAL '3 days') FROM generate_series(1, 450);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PURCHASE', 'EMAIL', 'winback-jan-2025', 'email', NULL, '/welcome-back', 'desktop', 'Chrome', 'US', 2999 + floor(random() * 4000), NOW() - (random() * INTERVAL '2 days') FROM generate_series(1, 280);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'REPEAT_PURCHASE', 'EMAIL', 'winback-jan-2025', 'email', NULL, '/welcome-back', 'desktop', 'Chrome', 'US', 3999, NOW() - (random() * INTERVAL '1 day') FROM generate_series(1, 110);
-- ============================================================================
-- REFERRAL TRAFFIC - Partner sites
-- ============================================================================
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), NULL, 'VISIT', 'REFERRAL', NULL, 'referral', 'https://partner-site.com/best-platforms', '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '7 days') FROM generate_series(1, 800);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SIGNUP', 'REFERRAL', NULL, 'referral', 'https://partner-site.com/best-platforms', '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '6 days') FROM generate_series(1, 450);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PROFILE_COMPLETE', 'REFERRAL', NULL, 'referral', 'https://partner-site.com/best-platforms', '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '5 days') FROM generate_series(1, 320);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'FIRST_CONTENT', 'REFERRAL', NULL, 'referral', 'https://partner-site.com/best-platforms', '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '4 days') FROM generate_series(1, 220);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SUBSCRIBE', 'REFERRAL', NULL, 'referral', 'https://partner-site.com/best-platforms', '/', 'desktop', 'Chrome', 'US', 1999, NOW() - (random() * INTERVAL '3 days') FROM generate_series(1, 120);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PURCHASE', 'REFERRAL', NULL, 'referral', 'https://partner-site.com/best-platforms', '/', 'desktop', 'Chrome', 'US', 1999, NOW() - (random() * INTERVAL '2 days') FROM generate_series(1, 65);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'REPEAT_PURCHASE', 'REFERRAL', NULL, 'referral', 'https://partner-site.com/best-platforms', '/', 'desktop', 'Chrome', 'US', 2999, NOW() - (random() * INTERVAL '1 day') FROM generate_series(1, 20);
-- ============================================================================
-- DIRECT TRAFFIC - Bookmarks, direct URL
-- ============================================================================
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), NULL, 'VISIT', 'DIRECT', NULL, NULL, NULL, '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '7 days') FROM generate_series(1, 2000);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SIGNUP', 'DIRECT', NULL, NULL, NULL, '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '6 days') FROM generate_series(1, 900);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PROFILE_COMPLETE', 'DIRECT', NULL, NULL, NULL, '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '5 days') FROM generate_series(1, 600);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'FIRST_CONTENT', 'DIRECT', NULL, NULL, NULL, '/', 'desktop', 'Chrome', 'US', NULL, NOW() - (random() * INTERVAL '4 days') FROM generate_series(1, 380);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'SUBSCRIBE', 'DIRECT', NULL, NULL, NULL, '/', 'desktop', 'Chrome', 'US', 1999, NOW() - (random() * INTERVAL '3 days') FROM generate_series(1, 200);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'PURCHASE', 'DIRECT', NULL, NULL, NULL, '/', 'desktop', 'Chrome', 'US', 1999, NOW() - (random() * INTERVAL '2 days') FROM generate_series(1, 110);
INSERT INTO conversion_events (id, session_id, user_id, stage, source, campaign, medium, referrer, landing_page, device_type, browser, country, value, created_at)
SELECT gen_random_uuid(), gen_random_uuid(), gen_random_uuid(), 'REPEAT_PURCHASE', 'DIRECT', NULL, NULL, NULL, '/', 'desktop', 'Chrome', 'US', 2999, NOW() - (random() * INTERVAL '1 day') FROM generate_series(1, 35);
-- ============================================================================
-- Summary: Expected funnel data by source
-- ============================================================================
-- ORGANIC: 5000 → 2500 → 1800 → 1200 → 600 → 350 → 120 (7.0% overall)
-- PAID: 3000 → 1800 → 1400 → 1000 → 550 → 320 → 95 (10.7% overall)
-- SOCIAL: 4000 → 1200 → 700 → 400 → 180 → 85 → 25 (2.1% overall)
-- EMAIL: 1500 → 1100 → 950 → 800 → 450 → 280 → 110 (18.7% overall)
-- REFERRAL: 800 → 450 → 320 → 220 → 120 → 65 → 20 (8.1% overall)
-- DIRECT: 2000 → 900 → 600 → 380 → 200 → 110 → 35 (5.5% overall)