Feature engagement

See who's using a feature, how often, and where.

Feature engagement shows how often people use a feature from a specific story, based on real interactions like clicks, taps, or other tracked events. Each interaction is counted toward that story's total usage, giving you a clear measure of how the feature is performing.

When usage tracking is set up, Atono adds a usage graph to the story showing:

  • How many times the feature has been used
  • Which environments, customers, or countries the usage came from
  • How usage changes over time

This helps you confirm a feature is getting traction, compare usage before and after changes, and spot when it’s only being used in certain places or by certain customers. And because it’s built into Atono, the graph is visible to your entire product team—not just a select few with access to an external tool.

⚠️

To record usage data, a developer on your team needs to set up tracking in your application. Once tracking is in place, Atono records each interaction automatically—no manual updates required.



Show the usage graph

Click the Feature engagement (graph) icon in the story header.

The graph is available for any story that:

  • Is assigned to a team
  • Is in a workflow step categorized as 'In progress' or 'Done'

Showing or hiding the graph is a personal preference and doesn't affect other users.

Note: While a story is in progress, the feature engagement graph appears below the acceptance criteria and any attachments. Once the story is moved to a workflow step categorized as 'Done', the graph moves to the top of the story for easier reference.


Hide feature engagement

If you don't want to see the feature engagement section in a story, you can hide it. Hiding the graph only removes it from your own view—it doesn’t stop tracking or delete any usage data.

  1. In the Feature engagement section header, click Settings.
  2. In the Feature engagement dialog, click Hide feature engagement.



Interpret the feature engagement graph

The feature engagement graph shows how often users interact with a story’s feature over time. Each line represents a different environment (such as sandbox, test, or production), so you can compare usage patterns across deployment stages.

You can filter usage data by environment, customer, or location—individually or in combination—to focus on the segments that matter most.

When you first open the graph, it defaults to showing usage over the last 3 months.


View usage details

Hover over the graph to see usage counts for a specific point or range in time.

A vertical line will appear to highlight the selected period, along with a breakdown of usage counts by environment, customer, or location (depending on your filters).


Adjust the timeframe

Use the dropdown above the graph to show data for any period between 1 and 60 months. The graph’s resolution adjusts automatically based on the selected range:

  • For timeframes under 1 year, the graph shows daily usage counts
  • For timeframes over 1 year, the graph shows weekly usage counts

To keep the graph easy to read, Atono limits the total number of data points (up to ~400).


Filter by environment

Show or hide usage from specific environments by toggling them in the legend below the graph. You can select multiple environments to compare them. The default view shows the last environment listed on the Environments page.


Filter by customer

Filter usage by one or more customers. Enter values or pick from suggestions based on reported usage. For more information, see the Customer attribute operators table.

Operators:

  • is / is not — exact match to a single customer identifier
  • contains / does not contain — partial match to a customer identifier
  • is one of / is not one of — match against multiple identifiers


Filter by location

Filter usage by location. Enter or select continent, country, subregion, or state/province names. For more details, see the Location attribute operators table.

Operators:

  • is in — include selected locations
  • is not in — exclude selected locations




Clear usage data

Reset the graph when you want a fresh baseline—after a major change, refactor, or to clear out irrelevant data. Clearing usage data removes all past counts for everyone who can view the story. This action is permanent and can't be undone.

If tracking is still active, new usage will appear as soon as users interact with the feature again.

  1. In the Feature engagement section header, click Settings.
  2. Select Clear data.
  3. In the Clear usage data dialog, confirm by clicking Clear usage data, or click X to cancel.



Set up usage tracking

The usage graph only shows data if your app sends it to Atono. To make that happen, a developer on your team needs to set up tracking in your app with the Atono SDK.

Here’s how it works:

  1. A developer tags the feature in the code by adding record('STORY-ID') where the feature runs.
  2. A user interacts with the feature (clicks, taps, triggers it).
  3. The tag fires—the Atono SDK sends a usage event with the story ID, environment, customer/location (if available), and timestamp.
  4. Atono logs the event and adds it to the story’s usage graph.
  5. Over time, those events form the usage trends you see in the graph.

Usage is tracked at the story level using the story ID (for example, STORY-67). Hiding the graph doesn’t stop tracking—Atono continues recording usage in the background if tracking is active.


1. Install the SDK

Version 1.1.0 or later is required.

Run the following command in your project directory:

Client-side applications

npm install --save @atono-io/web-sdk

React applications

npm install --save @atono-io/react-sdk

2. Initialize the SDK

Connect the SDK to your Atono environment using your environment key.

You can optionally include customer context if you want to segment usage by that field in the graph. Location is detected automatically from the user's IP address and can represent a continent, country, subregion, or state/province.

Client-side example

import { Atono } from '@atono-io/web-sdk';

const atono = Atono.fromEnvironmentKey('<your-environment-key>');

// Optional: include 'customer' to enable segmentation by this field in the usage graph
await atono.setContext({
  customer: 'Virtual Vintage',
  // location is detected automatically from IP
});

React example

import { AtonoProvider } from '@atono-io/react-sdk';

<AtonoProvider
  environmentKey="<your-environment-key>"
  // Optional: include 'customer' to enable segmentation by this field in the graph
  evaluationContext={{
    customer: 'Virtual Vintage',
    // location is detected automatically from IP
  }}
>
  {children}
</AtonoProvider>
⚠️

Updating context

You can update context later (for example, when the active customer changes). Do this before calling record('STORY-ID') so the event includes the latest values.

Set the environment key once per user session—reinitializing the SDK can briefly clear context, which may cause missing data in usage events.


3. Tag the feature

This is the step that connects the feature to its story in Atono. Call record() when a user interacts with the feature. This logs a usage event tied to the current environment and story.

Once tracking is in place, each time the tagged feature is used, the SDK sends an event to Atono. The event is tagged with the environment (and customer/location if available) and timestamped. The story’s usage graph updates automatically.

Client-side example

const usage = atono.getUsageReporter();

button.addEventListener('click', () => {
  usage.record('STORY-67');
});

React example

import { useUsageReporter } from '@atono-io/react-sdk';

function TryButton() {
  const { record } = useUsageReporter();

  return (
    <button onClick={() => record('STORY-67')}>
      Try the feature
    </button>
  );
}



Troubleshooting

Customer not showing in the graph?
Make sure customer is in the SDK context before you call record(). In React, don’t change the environmentKey or re-mount <AtonoProvider> during renders—update context only.

Location not showing or seems wrong?
Location is detected automatically from the user’s IP (continent → country → region/state). If it’s missing or unexpected, check that events come from client-side code (not server-side), and be aware VPNs/proxies can map to a different region.

Context shows up intermittently?
This usually happens if the SDK is reinitialized. Keep the environment key fixed for the session and set the customer context before calling record().

No data at all?
Confirm SDK ≥ 1.1.0, a valid STORY-ID in record(), the correct environment key, the story is assigned to a team and in an 'In progress' or 'Done' step, your date range isn’t excluding recent activity, and filters aren’t hiding the data.