PlaybookPrompts

Draft a multi-step funnel SQL query from event data

Data & Analysis sqlfunnelproduct-analyticsconversion

Funnel queries are notoriously tricky to write from scratch—ordering events per user, handling repeated steps, and choosing the right window all introduce bugs. Use this prompt to get a solid draft with logic you can review and adapt.

Prompt
I want to build a funnel analysis query against an event table. Here is the context:

- Database dialect: {{SQL_DIALECT}} (e.g., BigQuery, PostgreSQL, Snowflake)
- Events table name and key columns: {{TABLE_SCHEMA}}
- Funnel steps in order: {{FUNNEL_STEPS}}
- Conversion window: {{CONVERSION_WINDOW}} (e.g., user must complete all steps within 7 days of step 1)
- Grain: I want results broken down by {{BREAKDOWN_DIMENSION}} (e.g., acquisition channel, country; write 'none' if no breakdown needed)

Please do the following:

1. Write a complete SQL query that counts users who reached each funnel step in order within the conversion window. Use a CTE-based structure so each step is readable.
2. Include a column for absolute users at each step and a column for step-over-step conversion rate.
3. Add inline comments on any non-obvious logic (especially window functions or self-joins).
4. Note which parts of the query would need to change if a user can repeat step 1 (re-entry funnels) vs. first-touch only.
5. Flag any assumptions you made about the schema that I should verify before running the query.
Variables to fill in
  • {{SQL_DIALECT}}
  • {{TABLE_SCHEMA}}
  • {{FUNNEL_STEPS}}
  • {{CONVERSION_WINDOW}}
  • {{BREAKDOWN_DIMENSION}}

How to use this prompt

  1. Copy the prompt above (Copy button on the top-right).
  2. Replace each {{VAR}} with your own value. Variables: {{SQL_DIALECT}}{{TABLE_SCHEMA}}{{FUNNEL_STEPS}}{{CONVERSION_WINDOW}}{{BREAKDOWN_DIMENSION}}.
  3. Paste it into one of the recommended tools below.
  4. Iterate: tighten constraints in the prompt if the output is generic.

Why this prompt is structured this way

The prompt is split into explicit steps because LLMs do better when the path is named, not implied. Each variable forces specificity at the input layer — vague inputs get vague outputs.

Heads up: some of the links on this page are affiliate links — meaning we may earn a commission if you sign up after clicking, at no extra cost to you. We only recommend tools we'd put on our own stack. You can see our full affiliate disclosure here.

Pair this prompt with a tool

The PlaybookPrompts weekly

One short email per week. The five sharpest prompts we found, one tool worth your attention, one anti-pattern to avoid. Unsubscribe in one click.

Newsletter signup is not configured. Set PUBLIC_NEWSLETTER_USERNAME in the build env.