diff --git a/src/personas/sql-traits.md b/src/personas/sql-traits.md index 6ebc30f5cb..b9a80ec0fb 100644 --- a/src/personas/sql-traits.md +++ b/src/personas/sql-traits.md @@ -5,24 +5,24 @@ title: Personas SQL Traits -SQL Traits allow you to import user or account traits from your data warehouse back into Personas to build audiences or to enhance Segment data that you send to other Destinations. +Use SQL Traits to import user or account traits from your data warehouse back into Personas to build audiences or to enhance Segment data that you send to other Destinations. SQL Traits are only limited by the data in your warehouse. Because anything you can write a query for can become a SQL Trait, you can add detail to your user and account profiles, resulting in more nuanced personalization. This unlocks some interesting possibilities to help you meet your business goals. -- To improve your support team's customer satisfaction score (CSAT), you can create a SQL Trait of the most common ticket requests for a customer's industry by joining data from cloud sources like Zendesk and Salesforce. The resulting SQL Trait helps you anticipate the user's problems and accelerate potential solutions. -- To determine if a user resides in a specific area, you can query address data in your warehouse and send it as a `true` or `false` Trait to a Personas audience. -- To fill gaps in your customer profiles to include information before you implemented Segment, you can import historical Traits from your warehouse. -- To predict a customer's lifetime value (LTV), you can generate a complex query based on demographic and customer data in your warehouse. You can then use that information in a Personas audience to send personalized offers or recommend specific products. -- To inform your outreach efforts, you can use complex queries to build churn or product adoption models. +- To improve your support team's customer satisfaction score (CSAT), create a SQL Trait of the most common ticket requests for a customer's industry by joining data from cloud sources like Zendesk and Salesforce. The resulting SQL Trait helps you anticipate the user's problems and accelerate potential solutions. +- To determine if a user resides in a specific area, query address data in your warehouse and send it as a `true` or `false` Trait to a Personas audience. +- To fill gaps in your customer profiles to include information before you implemented Segment, import historical Traits from your warehouse. +- To predict a customer's lifetime value (LTV), generate a complex query based on demographic and customer data in your warehouse. You can then use that information in a Personas audience to send personalized offers or recommend specific products. +- To inform your outreach efforts, use complex queries to build churn or product adoption models. Check out Segment's [SQL Traits blog post](https://segment.com/blog/sql-traits){:target="_blank"} for more customer case studies. ### Example: Cloud Sources Sync -SQL Traits allow you to import data from [object cloud sources](/docs/connections/sources/#object-cloud-sources) like Salesforce, Stripe, Zendesk, Hubspot, Marketo, Intercom, and more. For example, you can bring in Salesforce Leads or Accounts, Zendesk ticket behavior, or Stripe LTV calculations. +SQL Traits allow you to import data from [object cloud sources](/docs/connections/sources/#object-cloud-sources) like Salesforce, Stripe, Zendesk, Hubspot, Marketo, Intercom, and more. For example, bring in Salesforce Leads or Accounts, Zendesk ticket behavior, or Stripe LTV calculations. The two examples below show SQL queries you can use to retrieve cloud-source information from your warehouse. @@ -52,7 +52,7 @@ This query computes whether a user has an open ticket: ``` -## Setting up SQL traits +## Setting up SQL Traits To use SQL Traits, you need the following: @@ -65,9 +65,9 @@ To use SQL Traits, you need the following: Segment supports Redshift, Postgres, Snowflake, Azure SQL, and BigQuery as data warehouse sources for SQL Traits. Note that the BigQuery setup process _requires_ a service user. > info "Safeguard your data" -> For any warehouse, we recommend that you create a separate read-only user for building SQL Traits. +> For any warehouse, Segment recommends that you create a separate read-only user for building SQL Traits. -#### Redshift, Postgres, Snowflake, Azure SQL Setup +#### Redshift, Postgres, Snowflake, Azure SQL setup If you don't already have a data warehouse, use one of the following guides to get started: - [Redshift Getting Started](/docs/connections/storage/catalog/redshift/#getting-started) @@ -76,7 +76,7 @@ If you don't already have a data warehouse, use one of the following guides to g - [Azure SQL Getting Started](/docs/connections/storage/catalog/azuresqldw/#getting-started) -#### BigQuery Setup +#### BigQuery setup To connect BigQuery to Segment SQL Traits, follow these instructions to create a service account for Segment to use: @@ -84,37 +84,37 @@ To connect BigQuery to Segment SQL Traits, follow these instructions to create a 2. Click the drop down to the left of the search bar and select the project that you want to connect. - ![](images/bigquery_setup1.png) + ![Select a project to connect from the drop down menu](images/bigquery_setup1.png) > **Note**: If you don't see the project you want in the menu, click the account switcher in the upper right corner, and verify that you're logged in to the right Google account for the project. 3. Click the menu in the upper left and select **IAM & Admin**, then **Service accounts**. -5. Click **Create service account**. +5. Click **Create Service Account**. - ![](images/bigquery_setup2.png) + ![Click Create Service Account on the Service accounts screen](images/bigquery_setup2.png) 6. Give the service account a name like `segment-sqltraits`. 7. Under **Project Role**, add _only_ the `BigQuery Data Viewer` and `BigQuery Job User` roles. - ![](images/bigquery_setup3a.png) + ![Select a project role](images/bigquery_setup3a.png) - ![](images/bigquery_setup3b.png) + ![Add the BigQuery Data Viewer and BigQuery Job User roles](images/bigquery_setup3b.png) > IMPORTANT: Do not add any other roles to the service account. Adding other roles can prevent Segment from connecting to the account. 6. Click **Create Key**. - ![](images/bigquery_setup4.png) + ![Click Create Key](images/bigquery_setup4.png) 7. Select `JSON` and click **Create**. - ![](images/bigquery_setup5.png) + ![Select Json and click Create](images/bigquery_setup5.png) A file with the key is saved to your computer. Save this; you'll need it to set up the warehouse source in the next step. - ![](images/bigquery_setup6.png) + ![A file key saved to your computer](images/bigquery_setup6.png) You're now ready to create a new BigQuery warehouse source, upload the JSON key you just downloaded, and complete the BigQuery setup. @@ -124,15 +124,15 @@ Once your warehouse is up and running, follow these steps: 1. Navigate to the Personas settings (Personas > Settings tab > Warehouse Sources), and click **New Warehouse Source**. - ![](images/warehouse_source_setup1.png) + ![Click New Warehouse Source button on the Warehouse Sources screen](images/warehouse_source_setup1.png) 2. Select the type of warehouse you're connecting. - ![](images/warehouse_source_setup2A.png) + ![Select a warehouse to connect](images/warehouse_source_setup2A.png) 3. In the next screen, provide the connection credentials, and click **Save**. - ![](images/warehouse_source_setup3.png) + ![The Configure warehouse source screen](images/warehouse_source_setup3.png) If you're connecting a BigQuery warehouse, use the JSON key file that you downloaded as the last step. @@ -140,11 +140,11 @@ Once your warehouse is up and running, follow these steps: Before you create a SQL Trait, you must first preview it to validate your query. If you're new to SQL, try out one of the templates Segment offers. -### Preview the SQL trait +### Preview the SQL Trait From the Personas screen, go to the Computed Traits tab, and click **New Computed Trait**. Next, choose SQL, and click **Configure**. Select the data warehouse that contains the data you want to query. -If you are sending data from [object cloud sources](/docs/connections/sources/#cloud-apps) to your warehouse, the SQL Traits UI has some pre-made templates you can try out. +If you're sending data from [object cloud sources](/docs/connections/sources/#cloud-apps) to your warehouse, the SQL Traits UI has some pre-made templates you can try out. ![Example template: preview all users with an open Zendesk ticket](images/sql_traits_preview1.png) @@ -152,7 +152,7 @@ If you are sending data from [object cloud sources](/docs/connections/sources/#c When you're building your query, keep the following requirements in mind for the data your query returns. -- The query must return a column with a `user_id`, `email`, or `anonymous_id` (or `group_id` for account traits, if you have Personas for B2B enabled). The query _cannot_ include values for both `user_id` and `anonymous_id`. +- The query must return a column with a `user_id`, `email`, or `anonymous_id` (or `group_id` for account traits, if you have Personas for B2B enabled). The query _cannot_ include values for both `user_id` and `anonymous_id`. - The query must return at least one trait in addition to `user_id`/`anonymous_id`/`email`/`group_id`, and no more than 25 total columns. - The query must not return any `user_id`s, `anonymous_id`s, or `group_id`s with a `null` value. - The query must not return any records with duplicate `user_id`s. @@ -162,7 +162,7 @@ When you're building your query, keep the following requirements in mind for the A successful preview returns a sample of users and their traits. If Segment recognizes a user already in Personas, it displays a green checkmark on their profile. Clicking the checkmark displays the user's profile. If a user has a question mark, Segment hasn't detected this `user_id` in Personas before. -![Click on a user to check out their profile. If a user has a question mark, we haven't seen this user_id in Personas before](images/sql_traits_preview2.png) +![Click on a user to check out their profile. If a user has a question mark, Segment hasn't seen this user_id in Personas before](images/sql_traits_preview2.png) ### Configure SQL Trait options @@ -177,13 +177,13 @@ If you're building Personas audiences from this data, select "Compute without en Click **Create Computed Trait** to save the Trait. -![](images/sql_traits_connect3.png) +![The Review and Create screen for a new computed trait](images/sql_traits_connect3.png) Check **Compute without destinations** if you only want to send to Personas. When you create a SQL Trait, Segment runs the query on the warehouse twice a day by default. You can customize the time at which Segment queries the data warehouse and the frequency, up to once per hour, from the SQL Trait's settings. (If you're interested in a more frequent schedule, [contact Segment Support](https://segment.com/help/contact/){:target="_blank"}.) -For each row (user or account) in the query result, Personas sends an identify or group call with all the columns that were returned as Traits. For example, if you write a query that returns `user_id,has_open_ticket, num_tickets_90_days, avg_zendesk_rating_90days` we send an identify call with the following payload: +For each row (user or account) in the query result, Personas sends an identify or group call with all the columns that were returned as Traits. For example, if you write a query that returns `user_id, has_open_ticket, num_tickets_90_days, avg_zendesk_rating_90days` Segment sends an identify call with the following payload: ```sql { @@ -221,7 +221,7 @@ No. Personas only sends an identify/group call if the values in a row have chang ### I have a large (1M+) query of users to import, should I be worried? -If you're importing a large list of users and traits, you'll need to consider your API call usage as well as volume among the partners receiving your data. These vary depending on our partners, so [reach out to us](https://segment.com/help/contact/) for more information. +If you're importing a large list of users and traits, you'll need to consider your API call usage as well as volume among the partners receiving your data. These vary depending on our partners, so [reach out to Segment](https://segment.com/help/contact/){:target="_blank"} for more information. ### Is there a limit on the size of a SQL Trait's payload? @@ -232,9 +232,9 @@ Yes, Segment limits request sizes to a maximum of 16kb. Records larger than this ### I'm getting a permissions error. You might encounter a `permission denied for schema` error, like the following: -![](images/troubleshoot1.png) +![An example of a permission denied for schema error](images/troubleshoot1.png) -Segment usually displays this error because you're querying a schema and table that the current user cannot access. To check the table privileges for a specific grantee (user), go to [your warehouse source credentials in Personas](https://app.segment.com/goto-my-workspace/personas/settings/warehouse-sources/) to retrieve the user name. +Segment usually displays this error because you're querying a schema and table that the current user cannot access. To check the table privileges for a specific grantee (user), go to [your warehouse source credentials in Personas](https://app.segment.com/goto-my-workspace/personas/settings/warehouse-sources/){:target="_blank"} to retrieve the user name. To grant access to a table, an admin usually needs to grant access to both a schema and table through the following similar commands: @@ -249,13 +249,13 @@ Learn more about granting permissions using the following links: ### I'm seeing a maximum columns error. -![](images/troubleshoot2.png) +![An example of a maximum columns error](images/troubleshoot2.png) -Segment supports returning only 25 columns. [Contact us](https://segment.com/help/contact/) with a description of your use case if you need access to more than 25 columns. +Segment supports returning only 25 columns. [Contact Segment](https://segment.com/help/contact/){:target="_blank"} with a description of your use case if you need access to more than 25 columns. ### I'm seeing a duplicate `user_id` error. -![](images/troubleshoot3.png) +![An example of a duplicate user_id error](images/troubleshoot3.png) Each query row must correspond to a unique user. Segment displays this error if it detects multiple rows with the same `user_id`. Use a `distinct` or `group by` statement to ensure that each row has a unique user_id. @@ -265,10 +265,10 @@ Question marks in previews indicate one of two things: **1. Segment doesn't recognize this `user_id`/`group_id` in Personas.** -In this case, for [sources connected to Personas](https://app.segment.com/goto-my-workspace/personas/settings/sources), Segment has not received any event (identify, track, page etc) with this `user_id`. This could still be a legitimate `user_id` for a number of reasons, but before syncing, make sure you rule out option two (below), as sending a different identifier as the `user_id` can corrupt your identity graph. +In this case, for [sources connected to Personas](https://app.segment.com/goto-my-workspace/personas/settings/sources){:target="_blank"}, Segment hasn't received any event (for example, identify, track, or page) with this `user_id`. This could still be a legitimate `user_id` for a number of reasons, but before syncing, make sure you rule out option two (below), as sending a different identifier as the `user_id` can corrupt your identity graph. **2. You have the wrong `user_id` column.** -You might be returning a value for `user_id` that is inconsistent with how you track `user_id` elsewhere. Some customers want to return `email` as the `user_id`, or a partner's tool ID as the `user_id`. These conflict with Segment best practices and corrupt the identity graph if you then track `user_id` differently elsewhere in your apps. +You might be returning a value for `user_id` that's inconsistent with how you track `user_id` elsewhere. Some customers want to return `email` as the `user_id`, or a partner's tool ID as the `user_id`. These conflict with Segment best practices and corrupt the identity graph if you then track `user_id` differently elsewhere in your apps. -If you see only question marks in the preview, and have already tracked data historically with Segment, then you likely have the wrong column. If your cloud source doesn't have the database `user_id`, we recommend using a `JOIN` clause with an internal users table before sending the results back to Segment. +If you see only question marks in the preview, and have already tracked data historically with Segment, then you likely have the wrong column. If your cloud source doesn't have the database `user_id`, Segment recommends using a `JOIN` clause with an internal users table before sending the results back to Segment. diff --git a/src/personas/using-personas-data.md b/src/personas/using-personas-data.md index 148af4b233..42580dd74e 100644 --- a/src/personas/using-personas-data.md +++ b/src/personas/using-personas-data.md @@ -16,7 +16,7 @@ You can send your Personas Computed Traits and Audiences to your Segment Destina ## Compatible Personas Destinations -The table below includes the _most important_ Personas Destinations that we support today, and which we consider industry-standard tools that most businesses use for personalization and marketing. (This list does not include warehouses.) +The table below includes the _most important_ Personas Destinations that Segment supports today, and which we consider industry-standard tools that most businesses use for personalization and marketing. (This list doesn't include warehouses.) > info "" > Software changes quickly, and this list is subject to change. @@ -42,11 +42,11 @@ In addition to the most popular Personas Destinations, Segment supports addition - [Personas Destinations (List Type)](#personas-compatible-destinations-list-type) -## Personas Destination Types: Event vs. List +## Personas Destination types: Event vs. List There are two ways to send data to Personas Destinations: as **Events** and as **Lists**. -**Event Destinations** receive data on a one by one, on a streaming basis as *events*, which are behaviors or traits tied to a user and a point in time. Every time a piece of data (track event, identify call, etc) is received in Segment — for example, from your website or your mobile app — Segment then sends this piece of data to the Destination right away. +**Event Destinations** receive data one by one, on a streaming basis as *events*, which are behaviors or traits tied to a user and a point in time. Every time a piece of data (such as a track event or identify call) is received in Segment — for example, from your website or your mobile app — Segment then sends this piece of data to the Destination right away. **List Destinations** periodically receive data in batches, and these batches contain lists of users. In most cases, Segment sends data to a list destination every hour, and sends all data accumulated since the last batch was sent. @@ -88,14 +88,14 @@ List destinations can only receive Audiences, and cannot receive computed traits When syncing to a list destination Personas uploads lists of users directly to the destination. When you first create an audience, Segment uploads the entire list of audience users to the destination. Later syncs only upload the users that have been added or removed since the last sync. -User-list destinations can have individual limits on how often Segment can sync with them. For example, an AdWords audience is updated once every six hours or more, because that is what AdWords recommends. +User-list destinations can have individual limits on how often Segment can sync with them. For example, an AdWords audience is updated once every six hours or more, because that's what AdWords recommends. ## What do the payloads look like for Personas data? The payloads sent from your Personas space to your destinations will be different depending on if you configured the destination to receive identify or track calls, and whether the payload is coming from a computed trait or audience. As a reminder, identify calls usually update a trait on a user profile or table, whereas track calls send a point-in-time event that can be used as a campaign trigger or a detailed record of when a user's audience membership or computed trait value was calculated. -### Computed Trait Generated Events +### Computed Trait generated events `Identify` events generated by a computed trait have the trait name set to the computed trait value: @@ -123,9 +123,9 @@ The payloads sent from your Personas space to your destinations will be differen } ``` -Personas only sends events to the destination if the computed trait value has changed for the user. Personas does not send a payload for every user in your trait every time the trait computes. +Personas only sends events to the destination if the computed trait value has changed for the user. Personas doesn't send a payload for every user in your trait every time the trait computes. -### Audience Generated Events +### Audience generated events `Identify` events generated by an audience have the audience key set to `true` or `false` based on whether the user is entering or exiting the audience: @@ -157,10 +157,10 @@ Personas only sends events to the destination if the computed trait value has ch ## Additional identifiers -Personas has a flexible identity resolution layer that allows you to build user profiles based on multiple identifiers like `user_id`, `email`, `mobile advertisingId`, etc. However, different destinations may require different keys, so they can do their own matching and identification. For example, Zendesk requires that you include the `name` property. +Personas has a flexible identity resolution layer that allows you to build user profiles based on multiple identifiers like `user_id`, `email`, or `mobile advertisingId`. However, different destinations may require different keys, so they can do their own matching and identification. For example, Zendesk requires that you include the `name` property. Personas includes logic to automatically enrich payloads going to these destinations with the required keys. -If you send events to a destination that requires specific enrichment we do not already include, [contact us and let us know](https://segment.com/help/contact/), and we‘ll do our best to address it. +If you send events to a destination that requires specific enrichment Segment doesn't already include, [contact Segment](https://segment.com/help/contact/){:target="_blank"}, and we‘ll do our best to address it. > note "" > **Note**: Profiles with multiple identifiers (for example, `user_id` and `email`) will trigger one API call per identifier when the audience or computed trait is first synced to a destination. @@ -170,7 +170,7 @@ If you send events to a destination that requires specific enrichment we do not You might also see that profiles that have multiple values for the same `external_id` type, for example a profile might have multiple email addresses. When this happens, Personas sends one event per email for each audience or computed trait event. This ensures that all downstream email-based profiles receive the complete audience or computed trait. -We understand that in some situations this behavior might cause an unexpected volume of API calls. [Contact us](https://segment.com/help/contact/) if you have a use cases which calls for an exemption from this default behavior. +In some situations this behavior might cause an unexpected volume of API calls. [Contact Segment](https://segment.com/help/contact/){:target="_blank"} if you have a use case which calls for an exemption from this default behavior. ## New external identifiers added to a profile @@ -178,16 +178,16 @@ There are two situations when Personas sends an audience or computed trait to a The first is when the value of the trait or audience changes. -The second, less common case is that Personas re-syncs an audience or computed trait when a new `external_id` is added to a profile. For example, an ecommerce company has an anonymous visitor with a computed trait called `last_viewed_category = 'Shoes'`. That visitor then creates an account and an email address is added to that profile, even though the computed trait value has not changed. When that email address is added to the profile, Personas re-syncs the computed trait that includes an email to downstream tools. This allows the ecommerce company to start personalizaing the user's experience from a more complete profile. +The second, less common case is that Personas re-syncs an audience or computed trait when a new `external_id` is added to a profile. For example, an ecommerce company has an anonymous visitor with a computed trait called `last_viewed_category = 'Shoes'`. That visitor then creates an account and an email address is added to that profile, even though the computed trait value hasn't changed. When that email address is added to the profile, Personas re-syncs the computed trait that includes an email to downstream tools. This allows the ecommerce company to start personalizaing the user's experience from a more complete profile. -If this behavior, re-syncing a computed trait or audience when the underlying trait or audience value hasn't changed, is not the desired in your system, [contact us](https://segment.com/help/contact/). +If this behavior, re-syncing a computed trait or audience when the underlying trait or audience value hasn't changed, isn't desired in your system, [contact Segment](https://segment.com/help/contact/){:target="_blank"}. -## Rate Limits on Personas Event Destinations +## Rate limits on Personas Event Destinations Many Destinations have strict rate limits that prevent Segment (and other partners) from sending too much data to a Destination at one time. Personas caps the number of requests per second to certain Destinations to avoid triggering rate limits that would cause data to be dropped. The most common scenario when customers run into rate-limits is when Personas first tries to sync a large set of historical users. Once this initial sync is done, we rarely run into rate-limit issues. -For additional information on Destination-specific rate limits, check the documentation for that Destination. If you need a higher rate limit, [let us know](https://segment.com/contact) which Destination you need it for and why. +For additional information on Destination-specific rate limits, check the documentation for that Destination. If you need a higher rate limit, [let Segment know](https://segment.com/contact){:target="_blank"} which Destination you need it for and why. | **Destination** | **Requests Per Second** | | -------------------------------- | -------------------------------------- | @@ -222,7 +222,7 @@ When you create a new Computed Trait or Audience in Personas, you can choose to **Note**: The Personas Facebook Custom Audiences Website destination does not accept historical data, and so only uses data from after the moment you configure it. -## Personas Compatible Destinations: Event Type +## Personas compatible Destinations: Event type - [ActiveCampaign](/docs/connections/destinations/catalog/activecampaign/) - [Adjust](/docs/connections/destinations/catalog/adjust/) @@ -397,7 +397,7 @@ When you create a new Computed Trait or Audience in Personas, you can choose to - [Zendesk Connect](/docs/connections/destinations/catalog/outbound/) - [Zendesk](/docs/connections/destinations/catalog/zendesk/) -## Personas Compatible Destinations: List Type +## Personas compatible Destinations: List type - [Facebook Custom Audiences](/docs/connections/destinations/catalog/personas-facebook-custom-audiences/) - [AdWords Remarketing Lists (Customer Match)](/docs/connections/destinations/catalog/adwords-remarketing-lists/) diff --git a/src/personas/warehouses.md b/src/personas/warehouses.md index d5589728d3..f3c24395aa 100644 --- a/src/personas/warehouses.md +++ b/src/personas/warehouses.md @@ -12,7 +12,7 @@ Segment makes it easy to load your customer profile data into a clean schema, so When you build an audience or computed trait, you can configure it to send an identify call or a track call to your data warehouse, and additionally include mobile ids. -![](images/warehouse1.png) +![Configuring a data warehouse to receive identify and track calls](images/warehouse1.png) ## Identify calls for audiences @@ -69,7 +69,7 @@ The `personas_` schema name is specific to the Personas space and cannot be modi When you send _audiences_ using track calls, Personas sends an `Audience Entered` event when a user enters, and an `Audience Exited` event when the user exits, by default. These event names are configurable. -Personas also sends two event properties about the audience: the `audience_key`, which records the name of the audience that the event modifies, and the audience name and its value ,as a separate key and value pair. The value of the audience key is populated with a boolean value. +Personas also sends two event properties about the audience: the `audience_key`, which records the name of the audience that the event modifies, and the audience name and its value, as a separate key and value pair. The value of the audience key is populated with a boolean value. In the example below, you can see that the `audience_key` is set to record a modification to the `first_time_shopper` audience, and the `first_time_shopper` value is set to `true`. @@ -89,7 +89,7 @@ In the example below, you can see that the `audience_key` is set to record a mod When you send _computed traits_, Personas sends a `Trait Computed` event that records which computed trait it updates, then records the updated key and value. You can also customize this event name. -![](images/warehouse2.png) +![Configuring connection settings to send computed traits](images/warehouse2.png) In the example below, the Trait Computed event contains the `trait_key` which records which computed trait is being modified, and then includes the key `total_revenue_180_days` with the updated value of `450.00`. @@ -127,28 +127,28 @@ Similar to track calls in Connections, Personas track calls appear in your wareh | ------- | ---------------------- | ---------------------- | | u123 | 450.00 | total_revenue_180_days | -## Sync Frequency +## Sync frequency Although Personas can compute audiences and traits in real-time, these calculations are subject to the sync schedule allowed by your warehouses plan, which is usually hourly. You can check the warehouse sync history to see details about past and upcoming syncs. When you look at the sync schedule, sources with the `personas_` prefix sync data from Personas. -![](images/warehouse3.png) +![Warehouse sync history](images/warehouse3.png) -## Common Questions +## Common questions ### Can I prevent a table, a computed trait, or audience from syncing to my warehouse? -Yes! You can use [Warehouses Selective Sync](/docs/connections/storage/warehouses/faq/#can-i-control-what-data-is-sent-to-my-warehouse) to manage which traits, audiences, and tables get synced from Personas. +Yes. You can use [Warehouses Selective Sync](/docs/connections/storage/warehouses/faq/#can-i-control-what-data-is-sent-to-my-warehouse) to manage which traits, audiences, and tables get synced from Personas. ### Why are some users missing from the `users` table? -The users table is an aggregate view based on the `user_id` field. This means that anonymous profiles with just an `anonymous_id` identifier are not included in this view. You can still view identify calls for anonymous audiences and computed traits in the `identifies` table. +The users table is an aggregate view based on the `user_id` field. This means that anonymous profiles with just an `anonymous_id` identifier aren't included in this view. You can still view identify calls for anonymous audiences and computed traits in the `identifies` table. ### Can I sync the identities table to my warehouse? -Not yet. We're working on this feature, and if you're interested, let your CSM know or [contact us](https://segment.com/help/contact/). +Not yet. We're working on this feature, and if you're interested, let your CSM know or [contact Segment](https://segment.com/help/contact/){:target="_blank"}. ### Why are there multiple schemas prefixed with `personas_` in my warehouse when I only have one space? Segment currently can only connect a source to one instance of each destination, for example, one source cannot send to two different Amplitude instances. To get around this restriction, Personas creates multiple sources to send events to the destinations connected to your Personas space. -For example, if you have three webhook destinations in your Personas space, Personas creates three different sources to send events to them. This creates three different warehouse schemas, and is usually the reason you have more schemas than spaces! +For example, if you have three webhook destinations in your Personas space, Personas creates three different sources to send events to them. This creates three different warehouse schemas, and is usually the reason you have more schemas than spaces.