User Properties

Attach custom or system-reserved attributes to users via the Apphud SDK, then use them in audiences and analytics.

User Properties (also called User Attributes) are custom or system-reserved key-value attributes attached to each user through the Apphud SDK. Once set, they appear on the user's profile page in Apphud, can be used to define Audiences, and (on Expert and Enterprise plans) can be used as segmentations and filters in analytics reports.

Apphud - Custom User Properties Settings

Features

  • Set a user property using a system-reserved key ($email, $phone, $name, $cohort, $age, $gender) or a custom key of your choice.
  • Increment a numeric property by an integer or float — useful for counters and progress trackers.
  • Set once — when set with setOnce: true, the value is written only the first time and never overwritten.

Usage examples

Apphud.setUserProperty(key: .email, value: "[email protected]", setOnce: true)
Apphud.setUserProperty(key: .age, value: 31)
Apphud.setUserProperty(key: .init("custom_test_property_1"), value: true)
Apphud.setUserProperty(key: .gender, value: "male")
Apphud.setUserProperty(key: .init("custom_email"), value: "[email protected]", setOnce: true)
Apphud.incrementUserProperty(key: .age, by: 1)
Apphud.incrementUserProperty(key: .init("progress"), by: 0.5)
Apphud.setUserProperty(ApphudUserPropertyKey.Email, "[email protected]", true)
Apphud.setUserProperty(ApphudUserPropertyKey.CustomProperty("custom_increment_value_1"), 2.1f)
Apphud.setUserProperty(ApphudUserPropertyKey.Age, 29)
Apphud.incrementUserProperty(ApphudUserPropertyKey.CustomProperty("custom_increment_value_2"), 0.01f)
await AppHud.setUserProperty(key: ApphudUserPropertyKey.email, value:'[email protected]' , setOnce:true);
await AppHud.setUserProperty(key: ApphudUserPropertyKey.age, value:31);
await AppHud.setUserProperty(key:ApphudUserPropertyKey.customProperty('custom_test_property_1'), value:true);
await AppHud.setUserProperty(key:ApphudUserPropertyKey.gender, value:'male');
await AppHud.setUserProperty(key:ApphudUserPropertyKey.customProperty('custom_email'), value:'[email protected]',setOnce:true);
await AppHud.incrementUserProperty(key: ApphudUserPropertyKey.age, by: 1);
await AppHud.incrementUserProperty(key:ApphudUserPropertyKey.customProperty('progress'), by: 0.5);

System Reserved User Properties

KeyValue
$emailString
$phoneString
$nameString
$cohortString
$ageInt
$genderMust be one of male, female, other

Limitations

  • Value must be one of: Int, Float, Double, Bool, String, NSNumber, NSString, NSNull, nil, or null.
  • Key must be 50 characters maximum.
  • An app may have a maximum of 60 active attributes. If you overflow the limit, new properties are not saved.

Manage User Properties

You can manage your current User Properties in App Settings → Custom User Properties in Project section. If you no longer use a property, disable it — it won't count toward the active limit and will be ignored in API calls. It will be hidden from the Active properties tab on the next opening.

To re-enable a disabled property, navigate to All Properties tab, find the property and toggle the active switch again.

Apphud - managing user properties

Where User Properties are used in Apphud

Analytics

Custom properties expand the range of insights available in charts and reports. Pass meaningful attributes to analyze users in ways that go beyond standard filters and segments — for example, analyze revenue trends across different age groups, or use answers from onboarding quizzes to see if initial preferences influence users' LTV.

📘

Note

Custom User Properties are available in Analytics Reports as Segmentations and Filters parameters on Expert and Enterprise plans.

Audiences

Custom properties can define Audiences, which can then be targeted in Placements, Experiments, and Rules.

Tips for the User Properties filter in the Audience editor:

  • Start typing a custom property name to find and select it quickly.
  • To set a condition, start typing the first few characters of the value. Matching options appear in the dropdown. The full list of received values is not preloaded for performance reasons.
  • You can create an audience using a property that has not yet arrived in Apphud — just type the expected value in the …is equal to field.
Apphud - Search by custom user property

Targetings, A/B tests & Rules

Once an audience based on custom user properties is defined, it can power:

  • Dynamic paywall delivery via a Targeting in Mission Control — bind a paywall per placement to the audience.
  • A/B tests on those Targetings — compare paywalls or full monetization schemes for users in the audience. A/B tests run on a Targeting, not directly on the audience.
  • Engagement campaigns via Apphud Rules — push notifications, screens, or messages for users in the audience.
❗️

Important Note — A/B tests on Targetings that use custom user properties

When you run an A/B test on a Targeting whose audience is defined by custom user properties, set and flush the properties back-to-back: call Apphud.setUserProperty(...) immediately followed by Apphud.forceFlushUserProperties.

Audience matching happens server-side using the latest stored user properties. If more than ~2 seconds elapse between setting and flushing, the user may not be included in the intended audience on time, and the A/B-test variation distribution won't happen as expected.

See Audience Based on User Properties for details.


Manage active properties

To control which user properties are active for an app — limited to 60 active per app — open App settings → Custom user properties. System-reserved properties ($gender, $email, $name, $age, $cohort, $phone) and any custom properties you've sent via the SDK appear here with an Active toggle.