Dev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunitySumbit a ticketLog In
GitHubNuGetDev CommunitySumbit a ticket
These docs are for v2.0. Click to read the latest docs for v3.0.


To measure the effects of an experiment, Optimizely tracks which users were exposed to each variation. The SDK tracks each exposure by sending an **impression** event back to Optimizely's servers, triggering a network request with the [event dispatcher](πŸ”—ο»Ώ) and a notification listener for any integrations.

Impressions are sent any time the `Activate` method returns a variation. They are _not_ sent if the method returns null, because the user didn't qualify for any experiment.

Impressions are also sent when the user is bucketed into a [feature test](πŸ”—ο»Ώ) with the `Is Feature Enabled` or `Get Enabled Features` method, regardless of whether the feature is enabled or disabled in the feature test variation. Impressions are _not_ sent if the user is only exposed to a feature rollout, or if neither a test nor rollout is running.

Impressions are used to generate the visitor counts on the [Results](πŸ”—ο»Ώ) page, which serve as the denominator for measuring conversion rates.

Billing Update

Starting September 2020, Optimizely has introduced a simplified usage billing component: [Monthly Active Users (MAUs)](πŸ”—ο»Ώ), which replaces impressions.

## Get variations without sending an impression

In some cases, you may want to evaluate an experiment without triggering an impression event. For example, in an isomorphic React app, you may want to activate experiments on the server-side but not trigger a second impression when the same code runs client-side.

You can use the `Get Variation` method to see which variation key a user _would_ get if you were to call `Activate`. `Get Variation` has the exact same behavior as Activate, except that it will not send a network request. This means that if you only use Get Variation, you will not see any results for your experiment.

The table list common scenarios and the appropriate method to use for a scenario.

ScenarioMethod
- You want to retrieve a variation assignment and also have results to display in Optimizely's reporting interface.`Activate`
- You want to retrieve an experiment decision to pass to another service for later activation. - You want to perform unit, functional, integration, and other QA tests.`Get Variation`