6 min read

How to Calculate Feature Adoption in Amplitude

Feature adoption is what separates successful product launches from features that quietly collect dust. Without clear visibility into how many of your users are actually using a new feature, you're flying blind on product decisions. Amplitude makes it straightforward to measure adoption by analyzing event data.

Set Up Event Tracking for Your Feature

The foundation of adoption measurement is accurate event tracking. You need to emit an event every time a user interacts with your feature.

Define your feature event

Pick a clear event name that represents the core action—something like feature_used or export_completed. Avoid generic names like button_clicked. Include relevant properties that will help you segment later, like feature version or user plan tier.

javascript
amplitude.logEvent('csv_export_completed', {
  feature_name: 'bulk_export',
  feature_version: 'v2',
  user_plan: 'pro',
  export_size: 1500
});
Log a feature event with useful context

Verify events are flowing

Go to Analytics > Events and search for your event name. Click on it to view the event details, properties, and a sample of recent occurrences. Make sure the properties are being captured correctly before building adoption calculations on top.

javascript
// Validate events via REST API
fetch('https://api.amplitude.com/2/events', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
}).then(res => res.json())
  .then(data => console.log(`Event count: ${data.data.length}`));
Check event volume using the Amplitude API
Watch out: Events take 1-2 minutes to appear in the Events tab. Don't assume tracking is broken if you don't see them immediately.

Calculate Adoption Rate Using SQL

Once events are flowing, use SQL to compute the exact adoption percentage. This gives you precise control over the calculation and time windows.

Write a basic adoption query

Query the events table to count distinct users who triggered your feature event. Divide by total active users to get the adoption rate. Use DATE_TRUNC to specify a time window (last 30 days, last quarter, etc.).

javascript
SELECT
  COUNT(DISTINCT user_id) as feature_users,
  (SELECT COUNT(DISTINCT user_id) FROM events 
   WHERE event_time >= DATE_TRUNC('day', NOW() - INTERVAL '30 days')) 
    as total_users,
  ROUND(100.0 * COUNT(DISTINCT user_id) / 
    (SELECT COUNT(DISTINCT user_id) FROM events 
     WHERE event_time >= DATE_TRUNC('day', NOW() - INTERVAL '30 days')), 2) 
    as adoption_rate_percent
FROM events
WHERE event_type = 'csv_export_completed'
  AND event_time >= DATE_TRUNC('day', NOW() - INTERVAL '30 days');
Calculate 30-day feature adoption rate

Track adoption trends over time

Add time-based grouping to see if adoption is climbing, plateauing, or declining. This is critical for understanding whether your feature is gaining momentum or losing interest.

javascript
SELECT
  DATE_TRUNC('week', FROM_UNIXTIME(event_time/1000)) as week,
  COUNT(DISTINCT user_id) as adopters_this_week,
  ROUND(100.0 * COUNT(DISTINCT user_id) / 
    (SELECT COUNT(DISTINCT user_id) FROM events 
     WHERE DATE_TRUNC('week', FROM_UNIXTIME(event_time/1000)) = 
     DATE_TRUNC('week', FROM_UNIXTIME(event_time/1000))), 2) 
    as weekly_adoption_rate
FROM events
WHERE event_type = 'csv_export_completed'
GROUP BY DATE_TRUNC('week', FROM_UNIXTIME(event_time/1000))
ORDER BY week DESC;
Track adoption rate week-over-week
Tip: Save frequently-run queries in Amplitude by clicking Save Query after execution. This saves you from rewriting them each time.

Segment Adoption by User Cohorts

Raw adoption numbers don't tell you everything. Break down adoption by user segment—pricing tier, signup date, region—to identify where traction is strongest.

Create a cohort of feature adopters

Go to Cohorts and click Create new cohort. Add a rule: Event = csv_export_completed. Set the time window (e.g., last 30 days). Name it clearly, like CSV Export Adopters - 30d. This creates a dynamic list of users who completed the action.

javascript
// Query cohort membership via API
fetch('https://api.amplitude.com/api/3/cohort/YOUR_COHORT_ID/members', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  }
}).then(res => res.json())
  .then(data => console.log(`Cohort size: ${data.results.length} users`));
Fetch cohort members to measure adoption size

Compare adoption across segments

In Analytics > Segmentation, add your feature event. Use Add property to break down adoption by user properties like plan tier, signup cohort, or country. Create side-by-side cohorts for each segment to compare adoption rates directly.

javascript
SELECT
  user_properties['plan_tier'] as plan,
  COUNT(DISTINCT user_id) as total_users_in_plan,
  COUNT(DISTINCT CASE WHEN event_type = 'csv_export_completed' 
    THEN user_id END) as adopters,
  ROUND(100.0 * COUNT(DISTINCT CASE WHEN event_type = 'csv_export_completed' 
    THEN user_id END) / COUNT(DISTINCT user_id), 2) as adoption_rate
FROM events
WHERE event_time >= DATE_TRUNC('day', NOW() - INTERVAL '30 days')
GROUP BY user_properties['plan_tier']
ORDER BY adoption_rate DESC;
Compare adoption across pricing tiers
Watch out: Cohort membership updates once daily. If you need real-time adoption metrics, use SQL queries instead—they run on live data.

Common Pitfalls

  • Using vague event names like clicked or viewed that overlap across multiple features. Namespace them clearly (e.g., csv_export_completed, bulk_delete_initiated) so you measure the right action.
  • Conflating 'viewed' with 'adopted.' Users might see your feature in the UI but never actually use it. Define adoption as completing a meaningful action, not just exposure.
  • Forgetting to filter out internal users, test accounts, or QA activity from adoption calculations. Add filters like user_id NOT IN ('test_user_1', 'test_user_2') or user_properties['is_internal'] = false.
  • Checking adoption metrics too early. Features take 2-4 weeks to build momentum. Measuring adoption in week one can give you false negatives and lead to premature kills.

Wrapping Up

You now have multiple ways to measure feature adoption in Amplitude: track it with events, calculate rates with SQL queries, and break down adoption by user cohorts. The key is defining adoption clearly from the start (viewed vs. used vs. loved) and checking trends regularly to catch momentum shifts early. If you want to track this automatically across tools, Product Analyst can help.

Track these metrics automatically

Product Analyst connects to your stack and surfaces the insights that matter.

Try Product Analyst — Free