Homeโ€บQuery Libraryโ€บSnowflake

Which features are your newest users adopting โ€” and which are they ignoring?

Feature adoption by signup cohort reveals whether your onboarding is improving and which features are resonating with new users versus established ones. This query calculates adoption rates per feature per cohort month.

๐Ÿ“Š Snowflake๐Ÿ‘ฅ Product and growth teams๐Ÿ”ค Plain-English โ†’ SQL

This is part of the Taptic Data Snowflake query library. Explore related queries: SQL query for monthly revenue trend, SQL query for top customers by revenue, SQL query for revenue by region, and more.

Show me feature adoption percentage by signup cohort for the last 6 months
โ†“
Snowflake Feature Adoption by Cohort โ€” generated by Taptic Data AI
WITH user_cohorts AS (
  SELECT
    user_id,
    DATE_TRUNC('month', created_at)::date AS cohort_month
  FROM users
),
feature_usage AS (
  SELECT DISTINCT
    uc.cohort_month,
    ue.feature_name,
    ue.user_id
  FROM user_events ue
  JOIN user_cohorts uc ON uc.user_id = ue.user_id
  WHERE ue.event_type = 'feature_used'
    AND ue.event_date >= DATEADD('month', -6, CURRENT_DATE)
),
cohort_sizes AS (
  SELECT cohort_month, COUNT(DISTINCT user_id) AS cohort_size
  FROM user_cohorts
  WHERE cohort_month >= DATEADD('month', -6, CURRENT_DATE)
  GROUP BY cohort_month
)
SELECT
  TO_CHAR(fu.cohort_month, 'YYYY-MM')                 AS cohort,
  fu.feature_name,
  COUNT(DISTINCT fu.user_id)                           AS users_adopted,
  cs.cohort_size,
  ROUND(COUNT(DISTINCT fu.user_id) * 100.0
    / NULLIF(cs.cohort_size, 0), 1)                    AS adoption_pct
FROM feature_usage fu
JOIN cohort_sizes cs USING (cohort_month)
GROUP BY fu.cohort_month, fu.feature_name, cs.cohort_size
ORDER BY fu.cohort_month DESC, adoption_pct DESC
Schema-aware SQL generated from plain English33 lines

This query was generated by Taptic Data from plain English against a real Snowflake schema. In Taptic, you type the question โ€” the AI writes the SQL, runs it, and returns the result. You can edit the SQL, ask for explanations, and save it as a refreshable report.

Breaking it down line by line

  1. CTE "user_cohorts" assigns each user to their signup month
  2. CTE "feature_usage" gets distinct user-feature pairs from the events table
  3. CTE "cohort_sizes" counts total users per cohort for the denominator
  4. Adoption percentage = users who used the feature / total users in that cohort
  5. Ordered by cohort (newest first) then adoption rate descending to surface trending features

Result description

A matrix of cohort months ร— features showing adoption percentage, users adopted, and cohort size.

The business impact

If your newest cohort is adopting Feature X at 60% vs 30% for the cohort from 3 months ago, your recent UX changes are working. If a critical feature has declining adoption across cohorts, your onboarding or feature discovery is regressing.

Common questions

How do I generate a "Snowflake Feature Adoption by Cohort" query automatically?
In Taptic Data, type "Show me feature adoption percentage by signup cohort for the last 6 months" and the AI generates schema-aware SQL against your real Snowflake data โ€” no manual writing required.
What database does this query work with?
This query is designed for Snowflake. Taptic reads your live schema so the generated SQL always matches your actual table and column names.
Can I edit the generated SQL?
Yes. Taptic shows you the exact SQL it generated. You can edit it directly, ask the AI to explain any line, or request a revision in plain English.
Can I save this as a scheduled report?
Yes. Once you run this query in Taptic, you can save it as a report, add charts and KPIs, and schedule it to email your team on any cadence โ€” daily, weekly, or monthly.

Skip the SQL. Ask the question.

In Taptic Data, you type "Show me feature adoption percentage by signup cohort for the..." and this SQL runs automatically against your real Snowflake data.

Try Taptic Free โ€” $29.99/mo

No credit card required. Connect your data source in under 5 minutes.