Remote evaluation

Remote evaluation involves making a request to Amplitude Experiment's evaluation servers to fetch variants for a user. Remote evaluation is the default way to evaluate users on client-side apps, but may also be used from a server-side environment.

Client-side

Server-side

Targeting capabilities

Remote evaluation targeting and identity resolution both use Amplitude Analytics' historical user data. Remote evaluation enables advanced features such as Amplitude ID resolution, IP geolocation, property canonicalization, targeting behavioral cohorts, and historical user properties.

Feature
Remote Evaluation Local Evaluation
Consistent bucketing
Individual inclusions
Targeting segments
Amplitude ID resolution
User enrichment
Sticky bucketing

Implementation

Remote evaluation resolves the user within Amplitude and appends additional information to the user before passing the enriched user to the evaluation implementation.

Amplitude ID resolution

Amplitude ID resolution happens before additional user enrichment, and is required if bucketing by Amplitude ID.

Learn more about Amplitude's advanced identity resolution.

User enrichment

Geolocation

If you use location based targeting in your flags, remote evaluation resolves location based on the client's IP and use a canonical Country user property to make targeting consistent and easy.

The following fields resolve with IP geolocation:

  • Country
  • City
  • Region
  • DMA

Canonicalization

Remote evaluation canonicalizes inputs to make it easier to segment users by platform, OS, language, country, etc, even if the devices report slightly different values. Canonicalization transforms various known device, language, and country inputs into canonical values which remain consistent even if the client reports different values.

The following fields are canonicalized on remote evaluation:

  • Platform
  • Device Family
  • Device Type
  • Language
  • Country

User properties

Race conditions

Targeting a recently set user property may cause a race between Amplitude Analytics ingesting and applying the user property, and Experiment accessing the user property. To avoid any races between a user property being set, and a remote evaluation accessing the user's properties, explicitly set the user property in the remote fetch request.

When you pass user properties to the remote fetch request, those user properties don't update on associated analytics events.

The resolved Amplitude ID is used to access the user's current user properties based on historical analytics data. These user properties are merged with any user properties sent explicitly in the fetch request and which are then passed in for evaluation.

User property merge priority

Amplitude prioritizes user properties sent explicitly in a remote fetch request over user properties accessed from analytics.

Cohort membership

Remote evaluation gets the user's cohort membership from analytics which enables targeting by cohorts in targeting segments.

Hourly cohort sync

Dynamic cohorts are synced hourly. Therefore, only use cohort targeting if the bucketing isn't time sensitive. Time sensitive user targeting should use user properties passed explicitly to the remote fetch request.

Was this page helpful?

Thanks for your feedback!

June 3rd, 2024

Need help? Contact Support

Visit Amplitude.com

Have a look at the Amplitude Blog

Learn more at Amplitude Academy

© 2024 Amplitude, Inc. All rights reserved. Amplitude is a registered trademark of Amplitude, Inc.