GA4, Orders, and Support Tickets: Building a Unified Engagement Score for Targeting

The gold standard for targeting isn’t open rates or last click—it’s context. And the only way to get true context? Merge GA4, ecommerce orders, and support data into a single view inside your warehouse.

That’s where the unified engagement score comes in.

This isn’t a fluffy intent signal. It’s a composite score calculated from web activity, purchase behavior, and customer experience inputs—then synced into Klaviyo (or your ESP) via reverse ETL.

Why Build an Engagement Score?

Every modern stack has web, purchase, and CX data sitting in silos. Alone, they offer slices of the customer journey. But only when you unify them can you start to see actual behavioral patterns that signal interest, risk, or churn.

A unified engagement score surfaces these patterns in a simple, actionable format: a number. One number that reflects intent, satisfaction, and potential.

Here’s why it matters:

  • GA4 tells you who’s actively browsing or bouncing

  • Shopify (or your ecommerce platform) shows who’s buying—and how often

  • Gorgias/Zendesk surfaces friction signals like tickets or complaints

Engagement scores let you:

  • Prioritize who gets limited-time promos

  • Suppress risky sends (e.g., angry customers)

  • Auto-include high-value engagers into VIP flows

Learn more: Estuary’s Trends on Activation and Segmentation

Score Anatomy: What Goes Into It

A strong unified engagement score draws from multiple touchpoints. Each system offers a different lens into the customer’s mindset—and combining them gives you richer insight.

  • Site behavior (GA4): Focus on metrics like number of sessions, pages viewed per session, time on site, and bounce rate. Recency is key—someone active yesterday is more relevant than someone who binged content last quarter.

  • Order history: Calculate not just how often they buy, but also the direction of the trend. Is AOV rising? Are they switching categories or sticking to favorites?

  • CX signals: Support interactions are often skipped, but they’re gold. Someone who just opened a ticket about a shipping delay probably doesn’t want to see a new product promo.

Normalize each component using min-max scaling or z-scores, depending on distribution. Then apply weights. These weights should reflect business priorities—do you value loyal buyers more than heavy browsers? Or do you want to penalize recent refunds more harshly?

Example weight schema:

  • Web activity: 30%

  • Purchase behavior: 50%

  • Support sentiment: 20%

The output should be a stable, interpretable score—something a marketer can confidently use in a flow decision.

Modeling It in BigQuery or Snowflake

The good news? You don’t need machine learning to make this powerful. SQL + dbt gets you 90% of the way there.

Start with modular CTEs:

1. GA4 Events

  • Source: BigQuery export from GA4

  • Join event_params on user_pseudo_id or email if available

  • Filter out noise events (e.g., page_view on privacy policy)

  • Use MAX(event_date) for recency, COUNT(DISTINCT session_id) for frequency

2. Orders Table

  • Use customer_email as the join key

  • Build out LTV, AOV trend (e.g., slope of spend over time), and number of distinct purchase events

  • Consider cohorting by acquisition source if available

3. Support History

  • Pull open tickets, CSAT scores, refund events

  • Use binary flags: has_open_ticket, recent_refund, nps_score_last30

  • For qualitative inputs (e.g., ticket tags), create derived sentiment flags using regex or keyword lists

Finally, build a composite model:

Test the output distribution. It should be relatively normal or bell-shaped—watch for skewed outliers.

Pushing to Klaviyo via Reverse ETL

Once the score is modeled, it needs to flow into your ESP reliably. That’s where reverse ETL tools shine.

Set up your sync in:

  • Hightouch: Great for marketer-led workflows

  • Census: Best if you already use dbt models

  • RudderStack: Ideal for hybrid event + attribute syncs

Map the score like so:

  • Destination: Klaviyo Profile Property

  • Field name: engagement_score

  • Value type: Float (0.00–1.00) or Integer (0–100)

  • Sync frequency: Daily (or hourly if CX inputs are volatile)

Best practice: keep a timestamp field like score_last_updated so you can build flows that only trigger when a score changes.

Why not an event? Because properties persist and are easier to build flows/segments around. Save events for things like ticket_opened or order_created.

Use Cases That Actually Work

This score isn’t just a vanity metric. Here’s how real brands use it to create lift:

1. Threshold-Based Flows

Launch product drops or loyalty perks to users with a score above 80. This focuses attention on those most likely to respond and convert.

2. Dynamic Suppression

If a user’s score falls below 30, hold back all non-critical sends. Let CX resolve their issue before re-engaging. It saves unsubscribes and protects brand equity.

3. Smart Segments

Combine the score with:

  • Geography (e.g., score > 70 AND lives in NY)

  • Channel preference (e.g., high score AND opted into SMS)

  • Purchase category (e.g., high score AND affinity for high-margin products)

4. Score Decay Over Time

No behavior? Lower the score by 10 points every 30 days. This gives you a natural recency buffer without building separate timestamp rules in Klaviyo.

Result? Your segmentation gets sharper. Your promos land better. And your flows start to feel like actual lifecycle marketing—not generic automation.

Caveats and Pitfalls

1. Identity Resolution

If your GA4 setup doesn’t pass emails via user_id, or your helpdesk has multiple accounts per email, your joins will fall apart. Build identity resolution logic (e.g., use most recent verified email, dedupe by last touchpoint).

2. Score Drift or Staleness

If you don’t re-sync daily, score values go stale. Someone who was highly engaged in July may be MIA in September. Schedule your reverse ETL jobs with freshness SLAs and set up alerts if syncs fail.

3. Overweighting Negativity

Not every open ticket should tank someone’s score. If a loyal VIP opens a ticket for a late shipment, they’re not necessarily a churn risk. Tune your CX weighting carefully.

4. Misuse in Flows

Avoid hard-gating all promos by score. This should be one input—not the only input. Blend it with other business rules (product interest, inventory, seasonality).

Measurement Plan: Does It Work?

You can’t optimize what you can’t measure. Here’s how to evaluate if your score is actually improving outcomes:

A/B Testing Methodology

  • Group A: receives flows and segments based on engagement score

  • Group B: uses standard logic (e.g., last purchase date, RFM)

Track across:

  • Open and click rates (are emails hitting better?)

  • Revenue per recipient (is targeting driving lift?)

  • Unsubscribe rates (is suppression protecting reputation?)

  • Repeat purchase rate (is long-term value improving?)

Overlay Klaviyo metrics with warehouse attribution reports. Bonus: run cohort analysis post-campaign to track revenue from high-score vs. low-score segments.