---
title: "Demo Analytics Cheat Sheet — Key Metrics, Benchmarks & Actions"
slug: "/help/api/demo-analytics-cheat-sheet"
last_updated: "2026-03-10T11:55:40Z"
zendesk_id: 49764402121235
zendesk_url: "https://help.walnut.io/hc/en-us/articles/49764402121235-Demo-Analytics-Cheat-Sheet-Key-Metrics-Benchmarks-Actions"
locale: "en-us"
product: "api"
displayed_sidebar: "apiSidebar"
sidebar_position: 5
---

A one-page reference for understanding your demo analytics. For each metric: what it means, how to calculate it, what "good" looks like, and what to do when it's off.

---

# Core Performance Metrics

   
| Metric | Formula | Benchmark | What It Tells You |
| --- | --- | --- | --- |
| **Bounce Rate** | `bounced / total sessions` | \< 40% good • 40–60% needs attention • > 60% problem | Are prospects sticking past the first screen? |
| **Completion Rate** | `completed / total sessions` | \> 30% good • 15–30% needs attention • \< 15% problem | Is your demo story holding attention all the way through? |
| **Avg Interactions** | From `/summary` → `averages.interactions` | \> 3 good • 1–3 average • \< 1 passive viewing | Are prospects clicking and exploring, or just watching? |
| **Avg Screen Views** | From `/summary` → `averages.screen_views` | Compare to total screens in your demo — aim for > 50% of screens viewed | How deep into the demo are prospects going? |
| **Avg Duration** | From `/summary` → `averages.duration_seconds` | 30–90 sec is healthy • \< 10 sec = bouncing • > 3 min = might be confused | Are prospects spending meaningful time? |

---

# Lead Capture Metrics

   
| Metric | Formula | Benchmark | What It Tells You |
| --- | --- | --- | --- |
| **Lead Form Conversion** | `lead_form_submitted / lead_form_opened` | \> 40% good • 20–40% average • \< 20% too much friction | Is your form converting, or scaring people off? |
| **Lead Form Skip Rate** | `lead_form_skipped / lead_form_opened` | \< 30% good • > 50% problem | Are too many people dismissing the form? |
| **Identification Coverage** | Sessions with `email_gate_exists=true` OR `lead_form_exists=true` / total | \> 70% good • 40–70% some visibility • \< 40% flying blind | How many viewers can you actually identify? |

---

# Channel & Audience Metrics

   
| Metric | Formula | Benchmark | What It Tells You |
| --- | --- | --- | --- |
| **Internal/External Ratio** | `internal / total sessions` | \< 10% internal is ideal • 10–20% fine • > 20% reps viewing more than prospects | Is your team sending demos, or just previewing them? |
| **Embed vs. Direct Split** | From `/summary` → `by_embed` | Depends on strategy — track the trend, not a fixed target | Which channel drives more engagement? Optimize accordingly. |
| **Embed Completion Rate** | Compare completion rate for `is_embed=true` vs `is_embed=false` | Embeds typically have lower completion but higher volume | Are website embeds pulling their weight vs. direct shares? |

---

# How to Pull Each Metric

## The Fast Way — Use the Summary Endpoint

One call gets you most of what you need:

```bash
curl -H "x-api-key: YOUR_API_KEY" \\
  "<https://customer-api.teamwalnut.com/demo-sessions/summary?start_date=2026-02-01&end_date=2026-02-28>"
```

**From the response, calculate:**

-   Bounce rate = `totals.bounced / totals.sessions`
-   Completion rate = `totals.completed / totals.sessions`
-   Internal ratio = `by_user_type.internal / totals.sessions`
-   Avg duration, interactions, screen views = directly in `averages`

## Lead Form Metrics — Use Field Selection

The summary doesn't include lead form data. Pull it separately:

```bash
curl -H "x-api-key: YOUR_API_KEY" \\
  "<https://customer-api.teamwalnut.com/demo-sessions?start_date=2026-02-01&end_date=2026-02-28&user_type=external&fields=lead_form_exists,lead_form_opened,lead_form_skipped,lead_form_submitted&limit=10000>"
```

Then count across the rows:

-   Form conversion = rows where `lead_form_submitted=true` / rows where `lead_form_opened=true`
-   Skip rate = rows where `lead_form_skipped=true` / rows where `lead_form_opened=true`

## Per-Demo Comparison — Find Your Best Performers

```bash
curl -H "x-api-key: YOUR_API_KEY" \\
  "<https://customer-api.teamwalnut.com/demo-sessions?start_date=2026-02-01&end_date=2026-02-28&user_type=external&group_by=demo_id>"
```

Then for each top demo, pull detail to calculate per-demo bounce rate, completion rate, and avg interactions.

---

# Diagnostic Playbook

When a metric is off, here's what to investigate and what to do.

## High Bounce Rate (> 60%)

| Possible Cause | How to Check | Action |
| --- | --- | --- |
| Opening screen isn't compelling | Review the first screen of high-bounce demos | Redesign the opener — lead with the "wow" moment, not a login screen |
| Lead form or gate appears too early | Check `lead_form_exists` and `email_gate_exists` on bounced sessions | Move the form later in the flow, or remove the gate for top-of-funnel demos |
| Wrong audience seeing the demo | Check `geo_country_name` and `origin_url` for unexpected traffic | Review where the demo link is shared — bots and irrelevant traffic inflate bounce rate |
| Slow load or broken embed | Compare `is_embed=true` bounce rate vs direct | Test the embed on the actual page — iframes can have CSP or sizing issues |

## Low Completion Rate (\< 15%)

  
| Possible Cause | How to Check | Action |
| --- | --- | --- |
| Demo is too long | Check `screen_views_count` — where do people drop off? | Shorten the demo. Best demos are 5–8 screens. Cut anything that doesn't drive the story. |
| Story doesn't match the buyer | Compare completion rates across demos (`group_by=demo_id`) | Create persona-specific demos instead of one generic demo |
| No clear next step | Check if completed viewers have low interaction — they might be passively clicking through | Add annotations and guides to create an engaging narrative |

## Low Lead Form Conversion (\< 20%)

| Possible Cause | How to Check | Action |
| --- | --- | --- |
| Form appears before value is shown | Check if bounce rate is high on demos with `lead_form_exists=true` | Move the form to after 3–4 screens — let them see value first |
| Form asks for too much | Review the form fields in the Walnut builder | Reduce to email only. Every extra field drops conversion ~10% |
| Skip option is too prominent | Check `lead_form_skipped` rate | Consider making the form required for high-intent demos (bottom of funnel) |

## High Internal Ratio (> 20%)

| Possible Cause | How to Check | Action |
| --- | --- | --- |
| Reps previewing but not sending | Filter `user_type=internal` and check `viewer_type` — are they owners or colleagues? | Check if demos are being shared externally. May indicate reps lack confidence in the demo. |
| Internal training or QA | Check if spikes align with demo creation or updates | Not necessarily bad — but exclude internal sessions when reporting on prospect engagement |

---

# Monthly Health Check Template

Run this once a month to stay on top of demo performance. Pull the summary for the last 30 days and fill in:

| Metric | This Month | Last Month | Trend | Status |
| --- | --- | --- | --- | --- |
| Total External Sessions |   |   |   |   |
| Bounce Rate |   |   |   |   |
| Completion Rate |   |   |   |   |
| Avg Interactions |   |   |   |   |
| Avg Duration (sec) |   |   |   |   |
| Lead Form Conversion |   |   |   |   |
| Internal Ratio |   |   |   |   |
| Top Demo |   |   |   |   |
| Top Country |   |   |   |   |

<aside>

💡

**Tip:** Automate this with the AI Weekly Digest recipe from the Integration Recipes page — let an LLM fill in and narrate the trends for you.

</aside>
