You ship a feature and need to know: who's using it, how often, and where they drop off. Amplitude's event tracking and cohort tools let you build adoption metrics without waiting for a data team. This guide covers the exact setup you need.
Step 1: Send Feature Events from Your App
Start by instrumenting your feature to send events to Amplitude whenever a user interacts with it.
Initialize the Amplitude SDK
Add the Amplitude JavaScript SDK to your app. Initialize it with your API key from Settings > API Keys. Set up user IDs so you can track individuals across sessions.
import * as amplitude from '@amplitude/analytics-browser';
amplitude.init('YOUR_API_KEY', {
userId: 'user_id',
sessionId: 'session_id'
});Track feature usage events
Send an event whenever a user interacts with your feature. Include properties that help you segment adoption: which feature, which cohort they're in, what plan they're on.
amplitude.track('Feature Viewed', {
featureName: 'advanced_reporting',
featureVersion: 'v2',
userPlan: 'pro'
});
amplitude.track('Feature Used', {
featureName: 'advanced_reporting',
action: 'generated_report',
reportType: 'cohort_analysis'
});Step 2: Build Adoption Cohorts
Once you're collecting feature events, use cohorts to segment users by adoption status.
Create an adopters cohort
Go to Cohorts > Create Cohort and define who counts as an adopter. Use the event you just instrumented as the criteria—users who triggered your feature event in the last 30 days.
fetch('https://api.amplitude.com/api/2/cohorts', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Advanced Reporting Adopters',
definition: {
event: 'Feature Used',
eventProperties: {
featureName: 'advanced_reporting'
},
timeWindow: '30d'
}
})
});Build a non-adopters cohort
Create a second cohort of users who have NOT triggered your feature event. Use NOT IN logic to find users with access but zero adoption. This helps you measure the adoption gap.
// In Amplitude UI: Cohorts > Create > toggle "NOT" > select your event
// This cohort = users who did NOT trigger 'Feature Used' in last 30 days
const nonAdopters = {
"name": "Advanced Reporting Non-Adopters",
"definition": {
"match": "any",
"conditions": [
{
"op": "NOT",
"event": "Feature Used",
"eventProperties": { "featureName": "advanced_reporting" }
}
]
}
};Segment by product behavior
Combine cohorts with other user properties. Create a cohort like [Pro Plan] AND [Feature Used in last 7 days] to measure adoption specifically among your highest-value users. This reveals whether adoption barriers exist for specific segments.
Step 3: Visualize Adoption Trends and Funnels
Build dashboards to track adoption over time and identify where users drop off.
Create a segmentation chart
Go to Events > Segmentation, select your feature event, and segment by user or property. Set a 30-90 day date range to spot trends. Break down by plan tier, company, or cohort to compare adoption rates across groups.
// Query adoption metrics via the Events API
const adoptionData = {
event: 'Feature Used',
start: '2024-01-01',
end: '2024-03-31',
granularity: 'day',
group_by: [
{ type: 'event_property', value: 'userPlan' }
]
};
fetch('https://api.amplitude.com/api/2/events', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify(adoptionData)
});Set up conversion funnels
Go to Funnels and build a multi-step funnel: Feature Viewed → Feature Used → Feature Completed (or your equivalent). This shows exactly where users drop off. Compare funnels across cohorts (Pro vs Free) to spot adoption barriers.
// Instrument the funnel steps in your app
amplitude.track('Feature Viewed', { featureName: 'advanced_reporting' });
amplitude.track('Feature Used', { featureName: 'advanced_reporting', action: 'started' });
amplitude.track('Feature Completed', { featureName: 'advanced_reporting', reportGenerated: true });
// In Amplitude: Funnels > Create > Add these three events in orderCommon Pitfalls
- Not tracking feature exposure separately from usage—you need both to calculate true adoption rates. Track when a user *sees* the feature (exposure) and when they *use* it (adoption). Otherwise you're measuring engagement only among people who already adopted.
- Naming events inconsistently across your codebase (e.g.,
Feature_Usedin one place,feature usedin another)—Amplitude treats them as different events, fragmenting your adoption data across multiple event names. - Forgetting to add user properties at login—if you don't track plan tier, company, cohort, or signup date as user properties, you can't segment adoption in Amplitude. You'll see overall adoption but not adoption *by segment*.
- Setting too short a time window for adoption analysis—adoption trends need 14-30 days of data to become clear. If you check after 3 days, you're looking at noise. Also, Amplitude's free tier samples data above 1M events/month, which reduces precision.
Wrapping Up
You now have a data flow: instrumented feature events feeding into adopter and non-adopter cohorts, visualized through segmentation charts and conversion funnels. Use this to prioritize onboarding, documentation, or unblocking features. If you want to track feature adoption automatically across all your tools and surface adoption blockers without manual dashboards, Product Analyst can help.