Measure a verified three-step signup funnel

Map three ordered lifecycle events to live project signals, run the canonical funnel blueprint, and explain drop-offs without inventing causes or benchmarks.

Updated · published

markdown for agents →

difficulty beginner · time to value 5 minutes · execution on demand

Start from this

Measure our signup-to-activation funnel for the last 30 days. Map three distinct ordered events from the saved signal map and observed event names, verify they have real traffic, run funnel_3_step, calculate drop-offs from its returned counts, and state which causes are still hypotheses.

Why this matters

A funnel is only as trustworthy as its event mapping and identity continuity. Running a plausible query against guessed event names can turn missing instrumentation into a false product conclusion.

Agentry’s funnel_3_step blueprint answers a deliberately narrow question: how many distinct identities completed step 1, then step 2 after step 1, then step 3 after step 2 during the selected lookback. It returns three counts. The agent calculates drop-off percentages and labels explanations as hypotheses.

What you get

  • Three approved, observed events mapped to the product’s actual lifecycle
  • Canonical ordered-funnel counts for a disclosed lookback window
  • Step-to-step and overall conversion calculated from those counts
  • Instrumentation gaps, identity caveats, and hypotheses kept separate from evidence

Walk through it

You

Where do users drop between signup and first value?

Agent

I will use the saved lifecycle definition and observed event names, not the example names from this page.

GET /v1/projects/:project_id/signal-map
GET /v1/projects/:project_id/onboarding
# Require status: "verified"; use live event/property reads for the selected signals.
GET /v1/projects/:project_id/event-names
{
  "server_emitted": [],
  "analytics_events": [
    { "event": "signup_started", "count": 1840, "last_seen": 1783651200 },
    { "event": "signup_email_verified", "count": 1240, "last_seen": 1783651210 },
    { "event": "first_project_created", "count": 720, "last_seen": 1783651250 }
  ],
  "wildcards": []
}

After confirming these events match the approved lifecycle and have real traffic, fetch and run the current blueprint:

GET /v1/query-blueprints/funnel_3_step
POST /v1/projects/:project_id/query-blueprints/funnel_3_step/run
Params:
  step1: signup_started
  step2: signup_email_verified
  step3: first_project_created
  days: 30
{
  "rows": [
    {
      "step1_count": 1840,
      "step2_count": 1240,
      "step3_count": 720
    }
  ]
}

From these counts, step 1→2 conversion is 67.4%, step 2→3 is 58.1%, and step 1→3 is 39.1%. The data identifies where measured loss is largest; it does not explain why.

The output

Signup funnel — last 30 days

signup_started             1,840  100.0%
  ↳ drop to step 2           600   32.6%
signup_email_verified      1,240   67.4%
  ↳ drop to step 3           520   41.9%
first_project_created        720   39.1% of entry

Evidence caveats
- <identity transition, sampling, delayed ingestion, or missing event>

Hypotheses to investigate
- <possible explanation, explicitly labelled>

If a public view is explicitly requested, publish only the same approved funnel_3_step blueprint with the same params and use the returned public_url. Publication is a separate reviewed action, not an automatic end of funnel analysis.

Setting it up

Send the lifecycle events through POST /v1/analytics/ using the public browser or trusted server credential appropriate to the event source. Use one stable distinct_id across all steps. If signup changes an anonymous identifier into a known user identifier, implement and verify the product’s identity-linking strategy before trusting the funnel.

Do not add events merely to satisfy this page. Start from the business question, define what completed signup and first value mean in this product, then verify those signals through the install plan and live proof gates.

Variations

  • “Compare the same three-step funnel across two exact adjacent periods.”
  • “Segment the funnel by an observed plan or acquisition property.”
  • “Tell me which step is not answerable and the exact telemetry needed.”
  • “Render [email protected] with these approved events in exact order, but leave it disabled.”

Adapt this workflow in your own agent.

Ask your agent to map the starter prompt to your saved signal map, live events, and the current HTTP API before answering.

Agentry gives coding agents production context from errors, product analytics, and deploys through one HTTP API. Fetch and read https://agentry.sh/install.md completely, then install Agentry's full first-time telemetry baseline in this repository. I authorize device-code login, saving the owner key only to ~/.agentry/credentials.json, creating one Agentry project for this repository, and read-only inspection of shipped source plus hidden CI/provider configuration. Deeply analyze the product's business logic and complete value flow before choosing telemetry. Save the complete source-backed plan and show me its exact contents and hash. Until I explicitly approve that plan or request a replacement, do not edit app/CI source, place runtime/CI credentials, commit, exercise product traffic, start proof, push, or deploy. After approval, I authorize only the reviewed targets: place the required scoped browser/server/CI credentials through the established environment or secret mechanism, preserve existing telemetry, implement and test the baseline, commit it, push that reviewed commit when the shipped CI/provider path requires it, exercise safe proof paths with test/non-customer data, and perform one deployment through the reviewed shipped CI/provider path. Ask first if proof would charge money, contact a third party, change real customer data, or require new external access. After the plan is saved, immediately before every onboarding state-changing POST, GET current onboarding state, perform only its single returned next_action, then read state again; do not batch or infer later stages. Continue until status is verified, installation_complete is true, and next_action is null. Keep all secrets, source snapshots, proof markers, and scratch files outside the repository.

+ Full access
5.5 Extra High
  1. 1. Open your repo in Codex, Claude Code, Cursor etc.
  2. 2. Paste the install prompt.
  3. 3. Your agent reads the install doc and shows you an implementation plan for approval.