Snowflake Integration: Data Out
1. What this page is about
This page explains how Neon Blue shares data back to your Snowflake.
It is for teams who want to:
Validate Neon Blue’s results in their own tools (e.g., Statsig, notebooks, dashboards)
Combine Neon Blue experiments and personas with internal data for deeper analysis
Create their own reporting or monitoring on top of Neon Blue outcomes
You do not need to know how the inbound integration works to read this, but the two are designed to complement each other.
2. Why we share data back to you
Neon Blue provides its own dashboards, but most teams also want:
Warehouse-native analysis – running SQL directly on assignments and outcomes
Consistency with internal metrics – verifying numbers against your existing definitions
Custom views – slicing by your own segments, cohorts, or programs
To support that, Neon Blue exposes a Secure Data Share back to your Snowflake with:
Raw assignment data (who saw what, when)
Optional persona and preference tags
Optional aggregate experiment metrics
You can treat this as a read-only source of truth for what Neon Blue did.
3. The outbound Snowflake share
From Neon Blue’s side:
We create a Snowflake
SHARE(e.g.,CUSTOMER_OUTBOUND)We publish a small set of tables from our internal schema
We grant your Snowflake account access
From your side:
You create a database from that share (e.g.,
NEON_BLUE_OUTBOUND)You can query the shared tables like any other Snowflake tables
This outbound share is where you’ll find all the experimentation and personalization outputs that relate to your users.
4. Table: gate_assignments – who is in control vs Neon Blue
A gate is a decision point that determines whether a user receives:
The legacy/control experience, or
The Neon Blue experience (which might itself run an internal bandit or A/B test)
Examples of gates:
“Is this user in the global Neon Blue program or global holdout?”
“Should we use Neon Blue copy or legacy copy for this welcome flow?”
The gate_assignments table records these decisions.
Suggested schema:
Typical columns:
user_id– canonical user idgate_id– internal id for the gategate_name– human-readable name (e.g., 'global_program_gate', 'welcome_flow_gate')variant_key– often 'control' or 'neon_blue'assigned_at– timestamp when the user entered the gatemetadata– JSON field with additional context if needed
How you might use it:
Compute revenue per user for
variant_key = 'control'vsvariant_key = 'neon_blue'Check holdout sizes, entrance counts, and long-term trends for each gate
Layer on your own segments (e.g., first-time vs repeat customers)
5. Table: experiment_assignments – which creative variant each user saw
Within a gate, Neon Blue often runs experiments to test different creative variants:
Email subject lines
Email bodies or modules
On-site banners or hero images
The experiment_assignments table records which variant each user is assigned to.
Suggested schema:
Typical columns:
user_id– canonical user idexperiment_id– internal experiment idexperiment_name– e.g., 'welcome_email_subject', 'homepage_banner_q1'variant_id– internal variant idvariant_name– e.g., 'control', 'value-focused', 'ingredient-focused'assigned_at– timestamp when user was first assigned the variantsticky– boolean indicating if the variant is sticky across exposuresmetadata– JSON with extra information (creative family, template references, etc.)
How you might use it:
Join to your
eventsandorderstables to compute:Click-through rate by variant
Conversion rate by variant
Revenue per user by variant
Compare Neon Blue’s reported metrics to your own calculations
Build internal dashboards (e.g., in Looker, Mode, Tableau)
6. Table: persona_assignments (optional) – user-level preferences
Neon Blue can infer personas or preference clusters based on user behavior and experiment outcomes.
Examples:
“Ingredient-conscious” vs “value-seeker”
“Subscription-first” vs “one-time buyer”
“Education-focused” vs “action-focused”
The persona_assignments table exposes these as user-level tags.
Suggested schema:
Typical columns:
user_id– canonical user idpersona_id– internal persona idpersona_name– human-readable labelconfidence_score– numeric value between 0 and 1updated_at– last update timestampmodel_version– optional; indicates which persona model version produced this assignment
How you might use it:
Segment reporting: compare performance by persona
Build audiences in your ESP/CRM (after joining to
user_messaging_id_map)Sanity check: do inferred personas match what you see qualitatively?
Important note: persona assignments are probabilistic. They get better as more data is collected. Use the confidence_score to filter or weigh analyses where necessary.
7. Optional aggregate metrics tables
In addition to raw assignments, Neon Blue can publish pre-computed metrics per experiment or gate.
An example table might look like:
Table: experiment_metrics
experiment_id,experiment_namevariant_id,variant_namemetric_name– e.g., 'click_rate', 'conversion_rate', 'revenue_per_user'window– description of the measurement window (e.g., '7d_post_assignment')numerator,denominatormetric_valuebaseline_variant_id,baseline_variant_namelift– relative to the baseline
These tables are convenient for quick looks and dashboards, but most analytical teams still prefer to compute their own metrics from raw assignments + their own events and orders. The outbound share supports both approaches.
8. Example: reproducing a gate-level revenue analysis
Here’s a simple example that computes 7-day revenue per user by gate variant using your own orders table.
This lets you:
Check that Neon Blue’s reported lift matches what you compute
Slice further by your own segments (e.g., new vs repeat, geography, subscription status) by joining
gatetouser_profiles
9. Example: analyzing experiment-level click-through rate
Similarly, for a subject line experiment:
This uses:
Outbound:
experiment_assignmentsInbound:
events(email clicks)
and gives you a fully warehouse-native view of experiment performance.
10. Data cadence and retention
By default:
Neon Blue updates outbound tables daily (or at an agreed cadence).
Assignments are generally retained for the lifetime of the program (subject to your data retention policies and legal requirements).
This means you can:
Backfill analyses as needed
Re-evaluate experiments with new definitions (e.g., different attribution windows)
Keep a historical view of how the program has evolved over time
11. How this fits into your workflow
A typical workflow for a data team looks like:
Neon Blue sets up the outbound Snowflake share with assignments and tags.
Your team creates a database from the share (e.g.,
NEON_BLUE_OUTBOUND).You build a few initial SQL queries to reproduce key metrics using your own definitions.
Once you’re confident the pipelines line up, you:
Plug these tables into your BI / experimentation tools
Use Neon Blue personas and gates in internal reporting and segmentation
The goal is for Neon Blue to be present and visible in your warehouse, not a black box.
Last updated