Appearance
Profile Attributes
Learn about the predefined and default attributes available in user profiles.
Default Device/App-Specific Attributes
The SDK automatically collects the following device and app-specific attributes:
System Information
- Device Model - The device model (e.g., iPhone 14, Samsung Galaxy S23)
- Device OS Version - Operating system version
- BuildVersion - App build version
- AppVersion - App version number
Location & Time
- TimeZone - Device timezone
- TimeZoneDaylight - Daylight saving time status
- TimeZoneAbbreviation - Timezone abbreviation (e.g., PST, EST)
- IP based location - Location derived from IP address
- Latitude - GPS latitude (if available and enabled)
- Longitude - GPS longitude (if available and enabled)
Network & Carrier
- Network Carrier - Mobile network carrier
- SystemLocaleCode - System locale code
Predefined User Attributes
Personal Information
Attribute | Type | Description |
---|---|---|
firstName | string | User's first name (max 64 characters) |
middleName | string | User's middle name (max 64 characters) |
lastName | string | User's last name (max 64 characters) |
userName | string | User's username (max 64 characters) |
email | string | User's email address |
phone | string | Phone number (must start with + and be numeric) |
language | string | User's preferred language |
localeCode | string | User's locale code |
occupation | string | User's occupation |
qualification | string | User's educational qualification |
Demographics
Attribute | Type | Description | Values |
---|---|---|---|
age | number | User's age | Numeric value |
gender | number | User's gender | 1=male, 2=female, 3=other, 4=reset |
maritalStatus | number | Marital status | 1=single, 2=engaged, 3=married, 4=widow, 5=divorced, 6=reset |
orientation | number | User orientation | Numeric value |
Date of Birth
Attribute | Type | Description | Validation |
---|---|---|---|
year | number | Birth year | Must be greater than 1900 |
month | number | Birth month | 1-12 |
day | number | Birth day | 1-31 |
Location Attributes
Attribute | Type | Description |
---|---|---|
latitude | number | User's latitude coordinate |
longitude | number | User's longitude coordinate |
carrier | string | Mobile carrier information |
Social Media Integration
Attribute | Type | Description |
---|---|---|
appuID | string | Application-specific user ID |
facebookID | string | Facebook profile ID |
twitterID | string | Twitter profile ID |
foursquareID | string | Foursquare profile ID |
linkedinID | string | LinkedIn profile ID |
googleplusID | string | Google+ profile ID |
enterpriseUID | string | Enterprise user ID |
advertisingID | string | Advertising identifier |
instagramID | string | Instagram profile ID |
pinterest | string | Pinterest profile ID |
Privacy & Opt-in Settings
Attribute | Type | Description | Values |
---|---|---|---|
email_opt | number | Email opt-in/out status | 0=opt-in, 1=opt-out |
sms_opt | number | SMS opt-in/out status | 0=opt-in, 1=opt-out |
push_opt | number | Push notification opt-in/out | 0=opt-in, 1=opt-out |
data_opt | number | Data collection opt-in/out | 0=opt-in, 1=opt-out |
ip_opt | number | IP tracking opt-in/out | 0=opt-in, 1=opt-out |
Usage Example
objective-c
@import Upshot;
// Create user profile dictionary
BKUserInfo *userInfo = [[BKUserInfo alloc] init];
userInfo.email = @"sample@gmail.com";
userInfo.userName = @"userName";
userInfo.phone = @"+919999999999";
userInfo.gender = BKGenderMale;
userInfo.maritalStatus = BKMaritalStatusSingle;
BKExternalId *externalId = [[BKExternalId alloc] init];
externalId.appuID = @"RegistrationId";
userInfo.externalId = externalId;
BKDob *dob = [[BKDob alloc] init];
dob.day = [NSNumber numberWithInteger:1];
dob.month = [NSNumber numberWithInteger:1];
dob.year = [NSNumber numberWithInteger:1990];
userInfo.dateOfBirth = dob;
[userInfo buildUserInfoWithCompletionBlock:^(BOOL success, NSError * _Nullable error) {
}];
swift
import Upshot
// Create user profile dictionary
let userInfo = BKUserInfo()
userInfo.email = "sample@gmail.com"
userInfo.userName = "userName"
userInfo.phone = "+919999999999"
userInfo.gender = .male
userInfo.maritalStatus = .single
let externalId = BKExternalId()
externalId.appuID = "RegistrationId"
userInfo.externalId = externalId
let dob = BKDob()
dob.day = 1
dob.month = 1
dob.year = 1990
userInfo.dateOfBirth = dob
userInfo.build { (status, error) in
}
Validation Rules
Important Validation Rules
- Phone Numbers: Must start with + followed by numeric values only
- String Length: Maximum 64 characters for string fields
- Birth Year: Must be greater than 1900
- Email Format: Must be a valid email format
- Gender Values: Only 1, 2, 3, or 4 are accepted
- Opt-in Values: Only 0 (opt-in) or 1 (opt-out) are accepted
Best Practices
- Data Quality: Always validate data before setting user attributes
- Privacy Compliance: Respect user privacy settings and local regulations
- Consistent Formatting: Use consistent formats for dates, phone numbers, etc.
- Regular Updates: Keep user profiles updated as information changes
- Meaningful Data: Only collect attributes that provide value to your application