Stop collecting data.
AIOSEO already collects enough data to drive a meaningful Lite → Pro lift, but ships none of it as trigger campaigns. This memo maps the fix: 4 layers (telemetry, segments, campaigns, outcomes), 24 data points, 19 named segments queryable in Metabase, and 19 trigger campaigns sequenced in Lindris, across a 6–8 month roadmap gated on a one-sprint decoder.
Today’s snapshot, tomorrow’s signal.
Today we collect ~14 fields per site, mostly for diagnostics — none of it actually segmentable. The plan adds 43 actionable fields across five classes, each with a clear phase gate.
- Environmentsite URL · PHP, WP, MySQL versions · server software · SSL · multisite · sites count · all active plugins + versions · theme · user count · locale · timezone · DB tables
- Identityadmin email
- AIOSEOplugin version · install date · full options + internal options (opaque PHP-serialized blob)
- Pro onlylicense key · license type · addon options
- A · Behavioral events +12 upsell_page_view · feature_gate_hit · seo_analysis_run · wizard_step_event · notification_event · gsc_connection_attempt · ai_credit_consumption · addon_state_change · license_renewal_button_click · support_ticket_opened · email_summary_opt_in · plugin_uninstall Needs P2 + Lite WP.org disclosure update
- B · Decoded options blob +13 wizard_completed_step · gsc_connected_at · email_summary_enabled · feature_states · social_profiles_set · local_seo_configured · redirects_count · link_assistant_* · schema_types_in_use · access_control_used · addon_versions · wizard_choice_category · ai_credits_used/total Needs P0a/P0b decoder (1 + 2–3 sprints)
- C · Content quality +4 new focus_keyword_coverage · truseo_distribution · posts_published_30d · traffic_estimate (most C-fields are derivable from existing plugin-list data) Plugin emit (P7); some derivable today
- D · Identity & enrichment +4 all admin user emails · domain enrichment · aioseo_account_ids · site_acquisition_utm Needs P5a (lightweight) and P5b (DPA-bound)
- E · Renewal & billing +3 new auto_renewal_status · payment_failure_event · license_tier_history (license_expiry_date already collected) Needs Stripe ETL into warehouse
When each touch lands.
Every campaign owns one segment. Each row is a campaign lane; each marker is one touch on the day it fires. Round = email, square = in-product. Click any row to preview the email that lands in the user’s inbox.