Skip to content
SlashClone

Activation funnel

@usagemetrics/activation-funnel

Measure an activation funnel from an events CSV: how many users or accounts reach each step within a time window, conversion step to step, median time between steps, the biggest drop, and splits by plan or any segment. Writes markdown, CSV, JSON, and a list of who got stuck.

SkillDatav1.0.0 (latest)Tested
Activity
New: be the first to try it

Real output from this kit

How this works

  1. It is a skill: written instructions Claude reads when your request matches what the skill is for. You do not call it by name; just ask for the task.
  2. While it works, it reads and changes files in the places it lists, nowhere else.
  3. It runs these commands on your computer: node scripts/funnel.mjs.
  4. Nothing runs until you choose to use it, and you can remove it any time.

SKILL.md

Activation funnel

Finds where new users stall between signing up and getting value. Steps are counted in order and inside a time window, and users who signed up too recently to finish are left out, so the funnel is not dragged down by people still in the middle of it.

Inputs

  1. An events CSV in data/ with timestamp, account_id, user_id, event.
  2. The steps, in order. Ask the user for 3 to 5 events from signup to the moment of value. A good funnel for most B2B tools: signed_up > a setup step (connected_source, invited_teammate) > first core action (created_report) > a habit or sharing signal (shared_dashboard). If they are unsure, list the 20 most common events in the file and propose a funnel.
  3. The window: how long a new user has to finish (default 14 days; 7 for self-serve tools, 30 for products with a sales-led setup).
  4. Optional segments: a CSV with account_id and a column such as plan, channel, or company_size.

Steps

  1. Confirm the step names exist in the file (exact spelling) and the date range.
  2. Run:

    node scripts/funnel.mjs data/events.csv --steps signed_up,connected_source,created_report,shared_dashboard --window-days 14 --segments data/accounts.csv --segment-column plan --out out/funnel

    Options: --entity account (an account counts when any of its users does the step), --any-order (steps can happen in any order inside the window), --from and --to (limit to signups in a date range, for before and after comparisons), --as-of, --include-recent.

  3. Read out/funnel.md and report: overall conversion, the biggest drop with its step-to-step rate, the slowest step (median time), and any segment that is 10+ points better or worse than the rest.
  4. Suggest two or three concrete experiments aimed at the biggest drop, tied to what the step is (for example: a drop into connected_source points at setup friction, so try sample data or a guided connector; a drop into shared_dashboard points at no reason to share yet, so try a share prompt right after the first report).
  5. out/funnel-stuck.csv lists the IDs that stalled at the biggest drop. Offer it to customer success for outreach; do not contact anyone yourself.
  6. For a before and after view (for example around an onboarding change), run twice with --from and --to and compare the two tables.

Output template

**Activation (users, 14 days): 28%** (44 of 158 signups reached shared_dashboard)
Biggest drop: created_report > shared_dashboard, 58% make it. Median 23 h between them.
Business plan converts 40%, free 23%.
| Step | Reached | % of start | % of previous | Median time |
...
Try next: <experiment 1>, <experiment 2>.

Guardrails

  • Do not change step definitions silently. If a step name is missing from the data, stop and ask.
  • Small segments (under 30 starters) are noisy; say so rather than ranking them.
  • The stuck list is personal data. Keep it in out/, share counts in chat, never the IDs.

README.md

Activation funnel

Shows where new users drop off between signup and the moment they get value: reach and conversion for each step inside a time window, median time between steps, the biggest drop, and splits by plan or any segment you have.

Who it is for: product managers, growth teams, and founders working on onboarding or trial conversion.

Example

Input: examples/events.csv (180 signups over three months) and examples/accounts.csv (plan per account).

--steps signed_up,connected_source,created_report,shared_dashboard --window-days 14

Output (out/funnel.md):

StepReached% of start% of previousDroppedMedian time from previous
signed_up158100%100%0
connected_source12277%77%364.0 h
created_report7648%62%4617.5 h
shared_dashboard4428%58%3222.7 h

Plus the same table per plan, out/funnel.csv, out/funnel.json, and out/funnel-stuck.csv (who stalled at the biggest drop).

What it can access

  • Runs node scripts/funnel.mjs (Node built-ins only).
  • Reads data/. Writes out/funnel*.
  • No network. It never contacts users.

Setup

None. Export events to data/events.csv and ask Claude where new users drop off.

Files

  • README.md
  • SKILL.md
  • examples/accounts.csv
  • examples/events.csv
  • kit.json
  • scripts/funnel.mjs
  • scripts/lib.mjs

Did it work?

0worked for them0did not work

Sign in to say whether it worked for you.

Nobody has said yet. Tried it? Tell the next person.