Skip to content

Commit 681154f

Browse files
authored
Merge pull request #360 from segmentio/repo-sync
repo sync
2 parents ff4c037 + b642e7f commit 681154f

File tree

2 files changed

+31
-24
lines changed

2 files changed

+31
-24
lines changed

src/personas/audiences/index.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@ See [Account-level Audiences](/docs/personas/audiences/account-audiences) for mo
5353

5454
## Connecting your Audience to a Destination
5555

56+
> warning "Audience Keys"
57+
> Avoid using the same Audience key twice, even if you've deleted the original Audience.
58+
5659
Once you have previewed your audience, you can choose to connect a destination, or simply keep the audience in Segment and download a csv. If you already have destinations set up in Segment, you can import the configuration from one of your existing sources to Personas. Note that you can only connect one destination configuration per destination type.
5760

5861
![](/docs/personas/images/audience_select_destination_card.png)

src/personas/faqs.md

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ title: Personas Frequently Asked Questions
55

66

77
## Can I use the Profile API on the client-side?
8-
For security reasons, we require the Profile API only be used server-side. The Profile API allows you to look up data about any user given an identifier (e.g. email, `anonymousId`, or `userId`) and an authorized access secret. While this enables powerful personalization workflows, it could also let your customers' data fall into the wrong hands if the access secret were exposed on the client.
8+
For security reasons, Segment requires that the Profile API only be used server-side. The Profile API allows you to look up data about any user given an identifier (for example, email, `anonymousId`, or `userId`) and an authorized access secret. While this enables powerful personalization workflows, it could also let your customers' data fall into the wrong hands if the access secret were exposed on the client.
99

1010
Instead, by creating an authenticated personalization endpoint server-side backed by the Personas Profile API, you can serve up personalized data to your users without the risk of their information falling into the wrong hands.
1111

1212

1313
## Do you have an Audiences API?
1414

15-
Currently you can add, remove, and modify audiences only by using the Personas in-app audience builder.
15+
You can add, remove, and modify audiences only by using the Personas in-app audience builder.
1616

17-
However, you can programmatically query the Profile API in order to determine if a particular user is a member of a particular audience because Personas creates a trait with the same name as your audience. For example, to determine if the user with an email address of `[email protected]` is a member of your `high_value_users` audience, you could query the following profile API URL:
17+
However, you can programmatically query the Profile API to determine if a user belongs to a particular audience because Personas creates a trait with the same name as your audience. For example, to determine if the user with an email address of `[email protected]` is a member of your `high_value_users` audience, you could query the following profile API URL:
1818

1919
`https://profiles.segment.com/v1/namespaces/<namespace_id>/collections/users/profiles/email:[email protected]/traits?include=high_value_users`
2020

@@ -31,8 +31,11 @@ The following response indicates that Bob is indeed a high-value user:
3131
}
3232
```
3333

34-
To learn more about our profile API, you can head [here](https://segment.com/docs/personas/profile-api).
34+
For more information on profile queries, visit the [Profile API documentation](/docs/personas/profile-api).
3535

36+
## Can I reuse audience keys?
37+
38+
Avoid using the same audience key twice, even if you've deleted the key's original audience. Downstream tools and Destinations might have trouble distinguishing between different audiences that at any point shared the same key.
3639

3740
## Does your identity model support multiple external ID types?
3841

@@ -68,23 +71,23 @@ The trait and audience will automatically update going forward as historical eve
6871
## How does Personas handle identity merging?
6972
Each incoming event is analyzed and external IDs are extracted (`user_id`, `anonymous_id`, `email`). The simplified algorithm works as follows:
7073

71-
- We first search the Identity Graph for incoming external IDs.
72-
- If we find no users, we'll create one.
74+
- Segment first searches the Identity Graph for incoming external IDs.
75+
- If Segment find no users, it creates one.
7376
- If one user is returned, then that user is chosen.
74-
- If multiple users are returned, our merge protection kicks in and checks the validity of all of the provided external IDs.
75-
- If the merge protection checks pass, we'll create a new merge connection between those two users. The first user profile ever created becomes the parent profile, and all merged users become child profiles.
76-
- If the merge protection checks fail, we'll discard the lowest precedence external ID and re-run the algorithm.
77+
- If multiple users are returned, merge protection kicks in and checks the validity of all of the provided external IDs.
78+
- If the merge protection checks pass, Segment creates a new merge connection between those two users. The first user profile ever created becomes the parent profile, and all merged users become child profiles.
79+
- If the merge protection checks fail, Segment discards the lowest precedence external ID and re-run the algorithm.
7780

78-
![](images/merging_1.png)
81+
![Identity graph merging](images/merging_1.png "Flowchart of Segment receiving an incoming event")
7982

80-
![](images/merging_2.png)
83+
![Identity graph merging](images/merging_2.png "Flowchart of Segment searching for profiles by external ID")
8184

82-
![](images/merging_3.png)
85+
![Identity graph merging](images/merging_3.png "Flowchart of Segment merging profiles")
8386

8487
## Is all matching deterministic, or is there any support for probabilistic matching?
8588
All Profile matching is deterministic and based on first-party data that you've collected.
8689

87-
We do not support probabilistic matching. We've found that most marketing automation use cases require 100% confidence that a user is who you think they are (sending an email, delivering a recommendation, etc). We've found the best way to support this is through a deterministic identity algorithm.
90+
Segment doesn't support probabilistic matching. Most marketing automation use cases require 100% confidence that a user is who you think they are (sending an email, delivering a recommendation, and so on). The best way to support this is through a deterministic identity algorithm.
8891

8992
## Should I use Personas if I already have a marketing automation tool?
9093
Personas pairs well with marketing automation tools on the Segment platform.
@@ -95,7 +98,7 @@ From there, your marketing, product, sales, and success teams have channels on w
9598

9699
They can contact you using livechat, email, push notification, or text. Success can better prioritize their support ticket in Zendesk, or hone in on the customer's problem faster. On the sales side, they can focus on the products a prospect is most engaged with, or focus on getting the customer on the right plan. Your product team can serve specific recommendations, based on that user's specific needs next time they visit your site.
97100

98-
Today, most businesses are forced to think about each channel as individual siloes. With Personas, all channels — including your marketing automation tool — can be powered by the same, singular understanding of your users.
101+
Today, most businesses are forced to think about each channel as individual silos. With Personas, all channels — including your marketing automation tool — can be powered by the same, singular understanding of your users.
99102

100103
## What are Funnel Audiences?
101104
Funnel Audiences allow you to use **strict, relative ordering** for your audience conditions. Common use cases for these audiences are Cart Abandonment (users that triggered the Product Added event but did not trigger the Order Completed event after the Product Added event occurred) and onboarding steps (users that Added Credit Card but did not Subscribe afterward).
@@ -108,32 +111,33 @@ The funnel condition will now be relative to the parent condition.
108111

109112
The audience in the image below includes all users that have Product Added in the last week, but not Order Completed within a day of doing so.
110113

111-
![](images/funnel_audience.png)
114+
![Funnel condition](images/funnel_audience.png "A screenshot of using funnel conditions in the Personas Audience builder")
112115

113116
**Important:** Funnel Audiences compute based on all instances of the parent event within the lookback period. This means that if you have a user that Product Added ⟶ Order Completed ⟶ Product Added, this user would be entered into the Abandoned Cart state despite having previously completed an order.
114117

115118
## What happens to conflicting and non-conflicting profile attributes?
116-
If two merged user profiles contain conflicting profile attributes, we'll select the newest, or last updated, attributes when querying the profile. In the future, we'll let the conflict resolution policies be configurable.
119+
If two merged user profiles contain conflicting profile attributes, Segment selects the newest, or last updated, attributes when querying the profile.
117120

118121
## What is Personas Merge Protection?
119122
Personas merge protection algorithm protects your identity graph from unnecessary merges by finding and removing untrusted external IDs. Here's an example:
120123

121-
![](images/merge_protection.png)
124+
![Merge protection](images/merge_protection.png "An image representing the merge protection flow")
122125

123-
In this example, `anonymous_id: a1` is not reset during a `User Logout`. Without merge protection, we'd merge `user_id u1` and `user_id u2`. Instead, our Merge Protection algorithm detects that such a merge would break user_id uniqueness and prevents the merge.
126+
In this example, `anonymous_id: a1` is not reset during a `User Logout`. Without merge protection, Segment would merge `user_id u1` and `user_id u2`. Instead, the Merge Protection algorithm detects that such a merge would break user_id uniqueness and prevents the merge.
124127

125128
This is especially helpful for preventing "blob users" that are merged together by non-unique anonymous IDs or by common group emails like `[email protected]`.
126129

127130
## Which destinations support syncing the identity graph?
128131
Most destinations on the Segment Platform are built up around a user model. They assume that a user will have a single userId. Further, most Destinations are not built to handle anonymous traffic.
129132

130-
By default, we do not sync the output of the Identity Graph to Destinations. However, Segment computed traits and audiences are based on the entire user profile, including anonymous and merged data. We sync the value of these computations (e.g. `blog_posts_ready_30_days: 10`) using all `userIds` on the profile.
133+
By default, Segment doesn't sync the output of the Identity Graph to Destinations. However, Segment computed traits and audiences are based on the entire user profile, including anonymous and merged data. We sync the value of these computations (e.g. `blog_posts_ready_30_days: 10`) using all `userIds` on the profile.
131134

132-
For Destinations that support an `alias` call (for example, Mixpanel), we have the option to emit an alias call on merge.
135+
For Destinations that support an `alias` call (for example, Mixpanel), you can emit an `alias` call on merge.
133136

134137
## What Sources can I sync to Personas?
135138

136-
You can sync data from your…
139+
The following list shows just some data sources you can sync to Personas:
140+
137141
- Website ([analytics.js](/docs/connections/sources/catalog/libraries/website/javascript/))
138142
- Mobile SDKs ([ios](/docs/connections/sources/catalog/libraries/mobile/ios), [android](/docs/connections/sources/catalog/libraries/mobile/android), [amp](/docs/connections/sources/catalog/libraries/mobile/amp))
139143
- Serverside libraries ([go](/docs/connections/sources/catalog/libraries/server/go), [node](/docs/connections/sources/catalog/libraries/server/node/), [java](/docs/connections/sources/catalog/libraries/server/java), [PHP](/docs/connections/sources/catalog/libraries/server/php/), [python](/docs/connections/sources/catalog/libraries/server/python), [ruby](/docs/connections/sources/catalog/libraries/server/ruby), [.NET](/docs/connections/sources/catalog/libraries/server/net))
@@ -157,11 +161,11 @@ You can sync data from your…
157161

158162
## Can I send audiences to multiple destination accounts?
159163

160-
Yes, Personas now supports the ability to send an audience or computed trait to two or more accounts of the same partner. The most common use case is multiple Facebook, or Adwords ad accounts.
164+
Yes, Personas supports the ability to send an audience or computed trait to two or more accounts of the same partner. The most common use case is multiple Facebook, or Adwords ad accounts.
161165

162-
![](images/multi-facebook.png)
166+
![Multiple Destination sends](images/multi-facebook.png "Sending Personas audience traits to two Facebook accounts")
163167

164168

165169
### What identifiers can the merged profile be queried/updated with?
166170

167-
Any of the external IDs can be used to query a profile. When a profile is requested, we will traverse the merge graph and resolve all merged profiles. The result is a single profile, with the latest state of all traits, events, and identifiers.
171+
Any of the external IDs can be used to query a profile. When a profile is requested, Segment traverses the merge graph and resolves all merged profiles. The result is a single profile, with the latest state of all traits, events, and identifiers.

0 commit comments

Comments
 (0)