Skip to content

Commit fe270ae

Browse files
authored
Merge pull request #3252 from segmentio/Identity-Resolution-Minor-Edits
Personas Identity Resolution Edits
2 parents 5535400 + 321261f commit fe270ae

File tree

7 files changed

+74
-74
lines changed

7 files changed

+74
-74
lines changed

src/personas/identity-resolution/ecommerce-example.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ The Personas Identity Resolution feature helps to create a unified view of the u
99

1010
Let's take the example of a sneaker company called SegmentKicks which has an eCommerce app called SegKicks as well as a running app called SegRuns. We'll follow Jane Doe throughout her entire customer journey from an anonymous user to a registered buyer on one app, SegKicks, to her use of the same app on a different device, and finally to her use of a different app belonging to the same company, SegRuns.
1111

12-
## Anonymous to Known Identification
12+
## Anonymous to known identification
1313
Identity Resolution can connect a user's anonymous behaviors to a user's post-account registration activity.
1414

1515
Let's take the following example using the eCommerce app, SegKicks:
16-
1. Jane Doe downloads the app on her iPhone but does not yet register for an account.
16+
1. Jane Doe downloads the app on her iPhone but doesn't yet register for an account.
1717
``` js
1818
{
1919
"anonymousId": "anon_123",
@@ -29,7 +29,7 @@ Let's take the following example using the eCommerce app, SegKicks:
2929
}
3030
```
3131

32-
2. She then clicks on a few different types of shoes, ShoeA, ShoeB and ShoeC but does not add to them cart. Because she has not yet registered for an account, all of these events will be sent through with an anonymousID and an ios deviceID.
32+
2. She then clicks on a few different types of shoes, ShoeA, ShoeB, and ShoeC but doesn't add them to a cart. Because she hasn't yet registered for an account, all of these events will be sent through with an anonymousID and an ios deviceID.
3333
``` js
3434
{
3535
"anonymousId": "anon_123",
@@ -61,13 +61,13 @@ Let's take the following example using the eCommerce app, SegKicks:
6161
"type": "identify"
6262
}
6363
```
64-
By linking the original anonymous events to the her logged-in activity, the app's marketing team can now begin to map out her customer journey on a single app, understand her preferences and retarget her with highly personalized emails about the shoes she didn't complete purchasing.
64+
By linking the original anonymous events to Jane's logged-in activity, the app's marketing team can now begin to map out her customer journey on a single app, understand her preferences, and retarget her with highly personalized emails about the shoes she didn't complete purchasing.
6565

66-
Her identifiers will now contain the original anonymous_id, her email and her user_id:
67-
![](images/jane_doe_new_identities.png)
66+
Her identifiers will now contain the original anonymous_id, her email, and her user_id:
67+
![Jane Doe's identifiers, which now include anonymous_id, email, and user_id](images/jane_doe_new_identities.png)
6868

69-
## Cross-Device Identification
70-
Users can have multiple touch points with an app ecosystem through more than one device. For example, users might interact with an eCommerce app through both a native app, a mobile browser and a web browser.
69+
## Cross-device identification
70+
Users can have multiple touch points with an app ecosystem through more than one device. For example, users might interact with an eCommerce app through both a native app, a mobile browser, and a web browser.
7171

7272
Let's continue with the example of Jane Doe. She now views the same mobile app SegKicks on her Android phone as well.
7373

@@ -89,9 +89,9 @@ Jane Doe logs into the Android phone with the same email [email protected].
8989
```
9090

9191
Her new User Profile identities will now also contain android.id:
92-
![](images/jane_doe_new_android_identities.png)
92+
![Jane Doe's android identifier](images/jane_doe_new_android_identities.png)
9393

94-
## Cross-App Identification
94+
## Cross-app identification
9595
A company's product ecosystem may also spread out across multiple apps. For example, SegmentKicks also has a running app SegRuns.
9696

9797
Now let's view what happens when Jane Doe downloads the Android app SegRuns and views a workout:
@@ -112,10 +112,10 @@ Now let's view what happens when Jane Doe downloads the Android app SegRuns and
112112
```
113113

114114
Her final identifiers now have a new anonymous_id from the SegRuns app:
115-
![](images/jane_doe_final_new_identities.png)
115+
![An additional anonymous_id added to Jane Doe's identifiers](images/jane_doe_final_new_identities.png)
116116

117117
## Conclusion
118-
By combining the events throughout Jane's entire customer journey from anonymous to known user, cross-device and cross-app identification, SegKicks and SegRuns can now work together to understand how to give Jane the best customer experience possible while increasing her LTV across the entire SegmentKicks ecosystem.
118+
By combining the events throughout Jane's entire customer journey from anonymous to known user, cross-device, and cross-app identification, SegKicks and SegRuns can now work together to understand how to give Jane the best customer experience possible while increasing her LTV across the entire SegmentKicks ecosystem.
119119

120120
For example, if Jane looked at ShoeC on her iPhone and completed checkout for ShoeC on her Android, SegKicks will now know to exclude her from a cart abandonment email for ShoeC. This wouldn't be possible if SegKicks had only looked at her activity on the iPhone.
121121

src/personas/identity-resolution/externalids.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ title: Identity Resolution ExternalIDs
55
> note ""
66
> **NOTE:** The steps in this guide pertain to spaces created before September 27th, 2020. For spaces created after September 27th, 2020, please refer to the onboarding guide [here](/docs/personas/identity-resolution/identity-resolution-onboarding/).
77
8-
## Default ExternalIDs
8+
## Default externalIDs
99

1010
The Identity Graph creates or merges profiles based on externalIDs. ExternalIDs will become the Identities attached to a User Profile in the User Explorer:
1111

12-
![](images/jane_doe_new_identities.png)
12+
![Example of external identities in the User Explorer](images/jane_doe_new_identities.png)
1313

1414
Segment automatically promotes the following traits and IDs in track and identify calls to externalIDs:
1515

@@ -29,16 +29,16 @@ Segment automatically promotes the following traits and IDs in track and identif
2929
| ios.push_token | context.device.token when context.device.type = 'ios' |
3030

3131

32-
## Custom ExternalIDs
32+
## Custom externalIDs
3333

34-
Personas will automatically resolve identity for any other externalIDs that you bind to users - such as a phone number or any custom identifier that you support. As seen in the below example, you can send custom `externalIds` in the `context` object of any call to our API.
34+
Personas will automatically resolve identity for any other externalIDs that you bind to users - such as a phone number or any custom identifier that you support. As seen in the below example, you can send custom `externalIds` in the `context` object of any call to Segment's API.
3535

3636
The four fields below (id, type, collection, encoding) are all required:
3737

3838
| Key | Value |
3939
| ---------- | ---------------------------------------------------------------------------- |
4040
| id | value of the externalID |
41-
| type | name of externalID type (`app_id`, `ecommerce_id`, `shopify_id`, etc) |
41+
| type | name of externalID type (`app_id`, `ecommerce_id`, `shopify_id`, and more) |
4242
| collection | `users` if a user-level identifier or `accounts` if a group-level identifier |
4343
| encoding | `none` |
4444

@@ -62,13 +62,13 @@ analytics.track('Subscription Upgraded', {
6262

6363
Personas will automatically create a user (user_id: `use_123`) with the custom externalId (phone: `123-456-7890`). Then, you query the users phone record by using the external id (phone: `123-456-7890`), or update this profile using that externalId going forward. (Note: externalIDs must be lower-case.)
6464

65-
## Viewing Promoted ExternalIDs
65+
## Viewing promoted externalIDs
6666

6767
Users can view which externalIDs are promoted on each event by viewing the raw payload on Events in the User Profile in the "external_ids" object.
6868

6969
For example, the following user had anonymous_id and user_id promoted as identifiers from the Course Clicked track call:
7070

71-
![](images/external_id_payload.png)
71+
![An example raw payload for an Event in the User Profile](images/external_id_payload.png)
7272

7373
## Example
7474

@@ -85,7 +85,7 @@ analytics.page('Pricing', {
8585

8686
At this point, the Identity Graph will create a new user with external id (anonymous_id: `anon_123`) and a persistent and globally unique segment_id, in this case: `use_4paotyretuj4Ta2bEYQ0vKOq1e7`.
8787

88-
![](images/identity_resolution_2.png)
88+
![An anonymous user associated to an external id in the Identity Graph](images/identity_resolution_2.png)
8989

9090
Any new events received with the same external id (anonymous_id: `anon_123`) are appended to same user `use_4paotyretuj4Ta2bEYQ0vKOq1e7`.
9191

@@ -99,4 +99,4 @@ analytics.track('User Signup', {
9999
```
100100

101101
At this point, the Identity Graph associates external ID (user_id: `use_123`) with the same user `use_4paotyretuj4Ta2bEYQ0vKOq1e7`.
102-
![](images/identity_resolution_3.png)
102+
![Identities associated to a user in the Identity Graph](images/identity_resolution_3.png)

src/personas/identity-resolution/identity-resolution-onboarding.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ title: Identity Resolution Onboarding
1111
> note ""
1212
> **NOTE:** Workspace owners, Personas administrators, and users with the Identity Admin role can edit Identity Resolution Settings.
1313
14-
Segment creates and merges user profiles based on a space's Identity Resolution configuration. Segment searches for identifiers such as `userId`, `anonymousId` and `email` on incoming events and matches them to existing profiles or creates new profiles. These identifiers display in the Identities tab of a User Profile in the User Explorer:
14+
Segment creates and merges user profiles based on a space's Identity Resolution configuration. Segment searches for identifiers such as `userId`, `anonymousId`, and `email` on incoming events and matches them to existing profiles or creates new profiles. These identifiers display in the Identities tab of a User Profile in the User Explorer:
1515

16-
![](images/jane_doe_new_identities.png)
16+
![Identities tab of a profile in the User Explorer](images/jane_doe_new_identities.png)
1717

1818
### Flat matching logic
1919

@@ -25,7 +25,7 @@ Based on the existence of a match, one of three actions can occur:
2525
When there are no pre-existing profiles that have matching identifiers to the event, Segment creates a new user profile.
2626

2727
**2: Add to existing profile**
28-
When there is one profile that matches all identifiers in an event, Segment attempts to map the traits, identifiers and events on the call to that existing profile. If there is an excess of any identifier on the final profile, Segment defers to the Identity Resolution rules outlined below.
28+
When there is one profile that matches all identifiers in an event, Segment attempts to map the traits, identifiers, and events on the call to that existing profile. If there is an excess of any identifier on the final profile, Segment defers to the Identity Resolution rules outlined below.
2929

3030
**3: Merge existing profiles**
3131
When there are multiple profiles that match the identifiers in an event, Segment checks the Identity Resolution rules outlined below, and attempts to merge profiles.
@@ -36,17 +36,17 @@ Identity Admins should first configure Identity Resolution Settings to protect t
3636

3737
During the space creation process, the first step is to choose an Identity Resolution configuration. If this is your first space, you have the option to choose a Segment-suggested Out-of-the-Box configuration or a custom Identity Resolution setup. All other spaces have a third option of importing settings from a different space.
3838

39-
![](images/first_screen.png)
39+
![Choose an Identity Resolution configuration](images/first_screen.png)
4040

4141
### Out-of-the-Box
4242

4343
For most first-time Personas users, Segment recommends that you use the out-of-the-box configuration and answer a short series of questions for a best-fit setup for your use-case.
4444

45-
If you have custom unique identifiers or do not have a canonical `user_id`, you are automatically redirected to the Identity Resolution Settings page to complete your setup.
45+
If you have custom unique identifiers or don't have a canonical `user_id`, you're automatically redirected to the Identity Resolution Settings page to complete your setup.
4646

4747
### Custom rules
4848

49-
If you are familiar with identity or have custom identifiers, Segment recommends that you select Custom Rules.
49+
If you're familiar with identity or have custom identifiers, Segment recommends that you select Custom Rules.
5050

5151
Segment redirects you to the Identity Resolution Settings page where you can add Default Identifiers or Custom Identifiers.
5252

@@ -66,9 +66,9 @@ Segment's 11 default are:
6666
| `ios.idfa` | context.device.advertisingId when context.device.type = 'ios' AND context.device.adTrackingEnabled = true |
6767
| `ios.push_token` | context.device.token when context.device.type = 'ios' |
6868

69-
You can also provide a trait or property key to match on to add custom identifiers. You can preview the locations where Segment looks for the identifier. Segment accepts both camelCase and snake_case for context.traits, traits and properties, but accepts lowercase types for identifiers only in the context.externalIds object.
69+
You can also provide a trait or property key to match on to add custom identifiers. You can preview the locations where Segment looks for the identifier. Segment accepts both camelCase and snake_case for context.traits, traits, and properties, but accepts lowercase types for identifiers only in the context.externalIds object.
7070

71-
![](images/custom_identifiers.png)
71+
![Provide a trait or property key to match on](images/custom_identifiers.png)
7272

7373
#### Blocked values
7474

@@ -80,19 +80,19 @@ In the past, Segment has seen certain default values that cause large amounts of
8080

8181
| Value | Type |
8282
| ----------------------------- | --------------- |
83-
| Zeroes and Dashes (^[0-]*$) | Pattern (REGEX) |
83+
| Zeroes and Dashes (^[0-]*$) | Pattern (REGEX) |
8484
| -1 | Exact Match |
8585
| null | Exact Match |
8686
| anonymous | Exact Match |
8787

88-
![](images/blocked-values.png)
88+
![Add blocked values for the identity algorithm to ignore](images/blocked-values.png)
8989

9090
Before sending data through, Segment also recommends that you add any default hard-coded values that your team uses during the development process, such as `void` or `abc123`.
9191

9292
#### Limit
9393

9494
Identity Admins can specify the total number of values allowed per identifier type on a profile during a certain period. For example, in the image below, the `anonymous_id` field has a limit of **5 Weekly**.
95-
![](images/anonymous-id.png)
95+
![Add a value limit](images/anonymous-id.png)
9696

9797
This will vary depending on how companies define a user today. In most cases, companies rely on `user_id` to distinguish user profiles and Segment defaults to the following configurations:
9898

@@ -113,7 +113,7 @@ When you choose the limit on an identifier, ask the following questions about ea
113113

114114
1. Is it an immutable ID? An immutable ID, such as `user_id`, should have `1 ever` per user profile.
115115
2. Is it a constantly changing ID? A constantly changing ID, such as `anonymous_id` or `ga_client_id`, should have a short sliding window, such as **5 weekly** or **5 monthly**, depending on how often your application automatically logs out the user.
116-
3. Is it an ID that updates on a yearly basis? Most customers will have around 5 emails or devices at any one time, but can update these over time. For identifiers like `email`, `android.id` or `ios.id`, Segment recommends a longer limit like **5 annually**.
116+
3. Is it an ID that updates on a yearly basis? Most customers will have around five emails or devices at any one time, but can update these over time. For identifiers like `email`, `android.id`, or `ios.id`, Segment recommends a longer limit like **5 annually**.
117117

118118
#### Priority
119119

@@ -133,7 +133,7 @@ If this event maps to this profile, the resulting profile would then contain two
133133

134134
At this point, the event searches for any profiles that match just the identifier user_id `abc456`. Now there are no existing profiles with this identifier, so Segment creates a new profile with user_id `abc456`.
135135

136-
By default, Segment explicitly orders user_id and email as rank `1` and `2`, respectively. All other identifiers are in alphabetical order beginning from rank `3`. This means that if the identifiers sent with events flowing into personas are user_id, email, anonymous_id and ga_client_id, the rank would be as follows:
136+
By default, Segment explicitly orders user_id and email as rank `1` and `2`, respectively. All other identifiers are in alphabetical order beginning from rank `3`. This means that if the identifiers sent with events flowing into Personas are user_id, email, anonymous_id, and ga_client_id, the rank would be as follows:
137137

138138
| Identifier | Priority |
139139
| ------------ | -------- |
@@ -154,21 +154,21 @@ If a new android.id identifier appeared without first giving it explicit order,
154154

155155
If you require an explicit order for all identifiers, configure this in the Identity Resolution Settings page before sending in events.
156156

157-
![](images/edit-priority.png)
157+
![The Identity Resolution Configuration screen](images/edit-priority.png)
158158

159159
When choosing the priority of your identifier, ask the following questions about each of the identifiers you send to Segment:
160160

161161
1. Is it an immutable ID? Give immutable IDs, such as user_id, highest priority.
162162
2. Are they unique IDs? Give Unique IDs such as email higher priority than possibly shared identifiers like android.id or ios.id.
163-
3. Does it temporarily identify a user? Identifiers such as anonymous_id, ios.idfa, ga_client_id are constantly updated or expired for a user. Generally speaking, rank these lower than identifiers that permanently identify a user.
163+
3. Does it temporarily identify a user? Identifiers such as anonymous_id, ios.idfa, and ga_client_id are constantly updated or expired for a user. Generally speaking, rank these lower than identifiers that permanently identify a user.
164164

165165
### Importing from an existing space
166166

167167
This option is available to new spaces after you create an initial Dev space. Segment recommends this option when identity settings are validated as correct in the initial Dev space and should be copied into the Production space.
168168

169169
You can review the identifiers, priorities, limits, and blocked values before you complete the import.
170170

171-
![](images/import.png)
171+
![Review identifiers, priorities, limits, and blocked values before import](images/import.png)
172172

173173
## Connect a source
174174

@@ -178,10 +178,10 @@ After you configure Identity Resolution settings, the next step is to connect a
178178

179179
After you connect a source, Personas creates user profiles based off of replayed and newly incoming data.
180180

181-
![](images/create_audience.png)
181+
![Create an Audience](images/create_audience.png)
182182

183183
The next step, which is important in the Dev space, is to create an audience to ensure that user profiles have populated correctly and that the Identity Resolution settings follow expected business logic.
184184

185185
For example, if there should be 100,000 distinct users who have a `user_id`, this would be a great way to validate that the Identity Resolution settings have calculated profiles correctly.
186186

187-
For more information about how to create audiences and traits, see [Audiences](/docs/personas/audiences/).
187+
For more information about how to create audiences and traits, see Segment's [Audiences docs](/docs/personas/audiences/).

0 commit comments

Comments
 (0)