diff --git a/src/api/config-api/index.md b/src/api/config-api/index.md
index 42623261e2..3e03b97ec6 100644
--- a/src/api/config-api/index.md
+++ b/src/api/config-api/index.md
@@ -6,72 +6,63 @@ redirect_from:
{% include content/papi-ga.html %}
-The Config API enables you to programmatically manage Segment workspaces, sources, destinations and more. With the API you can:
+The Config API lets you programmatically manage Segment workspaces, sources, destinations, and more.
-* List all your workspace Sources and Destinations to see how data flows through Segment
-* Create new Destinations - or delete them - with a few lines of code
-* Create new users and assign them to scoped roles
-* Configure, disable, or view Sources and manage connected Destinations
-* Get a complete view of all the Sources and Destinations available in Segment's catalog
-* Configure a Tracking Plan to see how data conforms to your expected schema
-* Query Event Delivery metrics to build custom dashboards and alerts to monitor delivery of your events to destinations
-* Filter entire events or individual fields from reaching specific destinations
+With the Config API, you can:
+
+- List all your workspace sources and destinations to see how data flows through Segment.
+- Create new destinations - or delete them - with a few lines of code.
+- Create new users and assign them to scoped roles.
+- Configure, disable, or view sources and manage connected destinations.
+- Get a complete view of all the sources and destinations available in Segment's catalog.
+- Configure a Tracking Plan to see how data conforms to your expected schema.
+- Query Event Delivery metrics to build custom dashboards and alerts to monitor delivery of your events to destinations.
+- Filter entire events or individual fields from reaching specific destinations.
The Config API is a set of REST services under segmentapis.com:
| Service | Description |
| --------------------------- | ------------------------------------------------------ |
-| [Access Tokens][1] | Manage access tokens |
-| [Source Catalog][2] | Get info about all event and cloud sources |
-| [Destination Catalog][3] | Get info about all destinations |
-| [Workspaces][4] | Get info about workspaces |
-| [Sources][5] | Manage workspace sources |
-| [Destinations][6] | Manage workspace destinations |
-| [Tracking Plans][7] | Manage workspace tracking plans |
-| [Event Delivery Metrics][8] | Get event delivery metrics for cloud-mode destinations |
-| [Destination Filters][9] | Manage destination filters |
-| [IAM][10] | Manage workspace users and roles |
-| [Functions][11] | Manage Functions |
-
-[1]: https://reference.segmentapis.com/#cd642f96-0fca-42a1-a727-e16fd33c7e8f
-[2]: https://reference.segmentapis.com/#7a63ac88-43af-43db-a987-7ed7d677a8c8
-[3]: https://reference.segmentapis.com/#361ed478-5e53-4835-ab7e-7dbff736524f
-[4]: https://reference.segmentapis.com/#7ed2968b-c4a5-4cfb-b4bf-7d28c7b38bd2
-[5]: https://reference.segmentapis.com/#5a852761-54d5-46da-8437-6e14e63449f3
-[6]: https://reference.segmentapis.com/#39ce0439-0969-48c3-ba49-b22a46c41060
-[7]: https://reference.segmentapis.com/#c4647e3c-fe1b-4e2f-88b9-6634841eb4e5
-[8]: https://reference.segmentapis.com/#51d89077-efd7-429b-85d4-155ac2cd07aa
-[9]: https://reference.segmentapis.com/#6c12fbe8-9f84-4a6c-848e-76a2325cb3c5
-[10]: https://reference.segmentapis.com/?version=latest#c4b14304-9112-4803-aa26-c08678cbe26a
-[11]: https://reference.segmentapis.com/?version=latest#c0866f35-2f39-4dfd-9fd3-26a0003ae74c
-
-To see all the API methods and models see the [Segment Config API Reference](https://reference.segmentapis.com/).
-
-At this time there are no language-specific clients. However the [API Reference](https://reference.segmentapis.com/) also contains example code snippets for cURL, Go, Node, Python and more.
-
-## Quick Start
-
-You can interact with the API from the command line. First install the `curl` tool.
+| [Access Tokens](https://reference.segmentapis.com/#cd642f96-0fca-42a1-a727-e16fd33c7e8f){:target="_blank"} | Manage access tokens |
+| [Source Catalog](https://reference.segmentapis.com/#7a63ac88-43af-43db-a987-7ed7d677a8c8){:target="_blank"} | Get info about all event and cloud sources |
+| [Destination Catalog](https://reference.segmentapis.com/#361ed478-5e53-4835-ab7e-7dbff736524f){:target="_blank"} | Get info about all destinations |
+| [Workspaces](https://reference.segmentapis.com/#7ed2968b-c4a5-4cfb-b4bf-7d28c7b38bd2){:target="_blank"} | Get info about workspaces |
+| [Sources](https://reference.segmentapis.com/#5a852761-54d5-46da-8437-6e14e63449f3){:target="_blank"} | Manage workspace sources |
+| [Destinations](https://reference.segmentapis.com/#39ce0439-0969-48c3-ba49-b22a46c41060){:target="_blank"} | Manage workspace destinations |
+| [Tracking Plans](https://reference.segmentapis.com/#c4647e3c-fe1b-4e2f-88b9-6634841eb4e5){:target="_blank"} | Manage workspace tracking plans |
+| [Event Delivery Metrics](https://reference.segmentapis.com/#51d89077-efd7-429b-85d4-155ac2cd07aa){:target="_blank"} | Get event delivery metrics for cloud-mode destinations |
+| [Destination Filters](https://reference.segmentapis.com/#6c12fbe8-9f84-4a6c-848e-76a2325cb3c5){:target="_blank"} | Manage destination filters |
+| [IAM](https://reference.segmentapis.com/?version=latest#c4b14304-9112-4803-aa26-c08678cbe26a){:target="_blank"} | Manage workspace users and roles |
+| [Functions](https://reference.segmentapis.com/?version=latest#c0866f35-2f39-4dfd-9fd3-26a0003ae74c){:target="_blank"} | Manage Functions |
+
+
+To see all the API methods and models see the [Segment Config API Reference](https://reference.segmentapis.com/){:target="_blank"}.
+
+At this time there are no language-specific clients. However the [API Reference](https://reference.segmentapis.com/){:target="_blank"} also contains example code snippets for cURL, Go, Node, Python, and more.
+
+## Quick start
+
+You can call the API from the command line. First, install `curl`:
```shell
$ brew install curl
```
-### Access Tokens
+### Access tokens
-You can use the Config API with an access token to programmatically access Segment resources that the token can access. Access tokens are created by workspace owners using the Access Management page, and can only access resources that the token has permission to.
+You can use the Config API with an access token to programmatically access Segment resources that the token can access. Access tokens are created by workspace owners using the **Access Management** page, and can only access resources that the token has permission to.
These are currently only suitable for first party, trusted applications, such as your personal local scripts and server side programs. Partners should not prompt Segment users for their username and password and save an access token as a way to delegate access. See the [Authentication](/docs/api/config-api/authentication/) doc for more information.
When you create an access token, you'll give it a description, a workspace, and determine whether it has workspace owner or member access.
-> warning "Secret Token"
+> warning "Secret token"
> You can not retrieve the plain-text `token` later, so you should save it in a secret manager. If you lose the `token` you can generate a new one.
-> info
-> As of February 1, 2024, new Config API tokens cannot be created in the app as Segment moves toward exclusive support for the [Public API](/docs/api/public-api/). [Migrate your implementation to the Public API](https://docs.segmentapis.com/tag/Migration){:target="_blank”} to access the latest features and available endpoints. To create a new Config API token, reach out to friends@segment.com for support.
+> info ""
+> As of February 1, 2024, new Config API tokens cannot be created in the app as Segment moves toward exclusive support for the [Public API](/docs/api/public-api/). [Migrate your implementation to the Public API](https://docs.segmentapis.com/tag/Migration){:target="_blank”} to access the latest features and available endpoints. To create a new Config API token, [contact Segment](mailto:friends@segment.com) for support.
-### API Requests
+### API requests
Now that you have an access token, you can use this token to access the rest of the Config API by setting it in the `Authorization` header of your requests, for example:
diff --git a/src/connections/destinations/catalog/actions-batch/index.md b/src/connections/destinations/catalog/actions-batch/index.md
index e556073b22..b75b9e1772 100644
--- a/src/connections/destinations/catalog/actions-batch/index.md
+++ b/src/connections/destinations/catalog/actions-batch/index.md
@@ -18,7 +18,7 @@ This destination is maintained by Batch. For any issues, [contact Batch Support]
5. Paste the **Project Key** and **REST API Key** into the Batch destination settings in Segment.
6. Toggle **Enable Destination**. Segment will start sending data to Batch according to your **Mappings**.
-
+
{% include components/actions-fields.html %}
@@ -100,9 +100,9 @@ To map additional traits into Batch profile attributes:
1. Open your destination → **Mappings** → **Edit Mapping**.
2. Go to **Profile attributes** → **Add Mapping Field**.
3. Choose a **source** (for example, `traits.plan`) and set a **target** under `attributes` (for example, `attributes.plan`).
-
+
4. In **Step 4 – Send test record**, you can test your mapping before saving.
-
+
5. **Save** and enable the mapping.
> info "Supported types"
@@ -171,7 +171,7 @@ analytics.track("User Registered", {
Events are sent to Batch in near real time according to your destination mappings, and all event `properties` are included under `event.attributes`.
-
+
## Validation checklist
diff --git a/src/connections/functions/destination-functions.md b/src/connections/functions/destination-functions.md
index 3b276a62df..ade7ef095b 100644
--- a/src/connections/functions/destination-functions.md
+++ b/src/connections/functions/destination-functions.md
@@ -28,7 +28,7 @@ All functions are scoped to your workspace, so members of other workspaces can't
After you click **Next: Build Function**, a code editor appears. Use the editor to write the code for your function, configure settings, and test the function's behavior.
> success ""
-> **Tip:** Want to see some example functions? Check out the templates available in the Functions UI, or in the open-source [Segment Functions Library](https://github.com/segmentio/functions-library){:target="_blank"}.
+> Want to see some example functions? Check out the templates available in the Functions UI, or in the open-source [Segment Functions Library](https://github.com/segmentio/functions-library){:target="_blank"}.
## Code the destination function
@@ -53,10 +53,10 @@ Destination functions can define handlers for each message type in the [Segment
Each of the functions above accepts two arguments:
-- **event** - Segment event object, where fields and values depend on the event type. For example, in "Identify" events, Segment formats the object to match the [Identify spec](/docs/connections/spec/identify/).
-- **settings** - Set of [settings](#create-settings-and-secrets) for this function.
+- **event**: Segment event object, where fields and values depend on the event type. For example, in Identify events, Segment formats the object to match the [Identify spec](/docs/connections/spec/identify/).
+- **settings**: Set of [settings](#create-settings-and-secrets) for this function.
-The example below shows a destination function that listens for "Track" events, and sends some details about them to an external service.
+The example below shows a destination function that listens for Track events, and sends some details about them to an external service.
```js
async function onTrack(event) {
@@ -74,7 +74,7 @@ async function onTrack(event) {
}
```
-To change which event type the handler listens to, you can rename it to the name of the message type. For example, if you rename this function `onIdentify`, it listens for "Identify" events instead.
+To change which event type the handler listens to, you can rename it to the name of the message type. For example, if you rename this function `onIdentify`, it listens for Identify events instead.
> info ""
> Functions' runtime includes a `fetch()` polyfill using a `node-fetch` package. Check out the [node-fetch documentation](https://www.npmjs.com/package/node-fetch){:target="_blank"} for usage examples.
@@ -89,9 +89,9 @@ The handler for destination functions is event-specific. For example, you might
{% include content/functions/errors-and-error-handling.md %}
-You can incorporate a a `try-catch` block to ensure smooth operation of functions even when fetch calls fail. This allows for the interception of any errors during the API call, enabling the application of specific error handling procedures, such as error logging for future debugging, or the assignment of fallback values when the API call is unsuccessful. By positioning the continuation logic either outside the `try-catch` block or within a `finally` block, the function is guaranteed to proceed with its execution, maintaining its workflow irrespective of the outcome of the API call.
+You can incorporate a `try-catch` block to ensure smooth operation of functions even when fetch calls fail. This allows for the interception of any errors during the API call, enabling the application of specific error handling procedures, such as error logging for future debugging, or the assignment of fallback values when the API call is unsuccessful. By positioning the continuation logic either outside the `try-catch` block or within a `finally` block, the function is guaranteed to proceed with its execution, maintaining its workflow irrespective of the outcome of the API call.
-You can read more about [error handling](#destination-functions-logs-and-errors) below.
+See [error handling](#destination-functions-logs-and-errors) for additional details.
### Runtime and dependencies
@@ -140,8 +140,8 @@ You can also manually include your own JSON payload of a Segment event, instead
If your function fails, you can check the error details and logs in the **Output** section.
-- **Error Message** - This shows the error surfaced from your function.
-- **Logs** - This section displays any messages to `console.log()` from the function.
+- **Error Message**: The error surfaced from your function.
+- **Logs**: Messages to `console.log()` from the function.
## Batching the destination function
@@ -152,7 +152,7 @@ Batch handlers are an extension of destination functions. When you define an `on
### When to use batching
-Consider creating a batch handler if:
+Create a batch handler when:
- **Your function sends data to a service that has a batch endpoint.** Batch endpoints may allow you both to send more data downstream and stay within the rate limits imposed by the service. Batch handlers that use one or more batch endpoints improve the efficiency of the function, and enable it to scale more easily. Specifically, you can use batch handlers to build [list-based](/docs/engage/using-engage-data/#personas-destination-types-event-vs-list) Engage destinations.
- **You have a high-throughput function and want to reduce cost.** When you define a batch handler, Segment invokes the function once per *batch*, rather than once per event. As long as the function's execution time isn't adversely affected, the reduction in invocations should lead to a reduction in cost.
@@ -165,7 +165,7 @@ Consider creating a batch handler if:
Segment collects the events over a short period of time and combines them into a batch. The system flushes them when the batch reaches a certain number of events, or when the batch has been waiting for a specified wait time.
To create a batch handler, define an `onBatch` function within your destination function.
-You can also use the "Default Batch" template found in the Functions editor to get started quickly.
+You can also use the "Default Batch" template found in the functions editor to get started quickly.
```js
async function onBatch(events, settings){
@@ -316,7 +316,7 @@ Standard [function error types](/docs/connections/functions/destination-function
For example, after receiving the responses above from the `onBatch` handler, Segment only retries **event_4** and **event_5**.
-| Error Type | Result |
+| Error type | Result |
| ---------------------- | ------- |
| Bad Request | Discard |
| Invalid Settings | Discard |
@@ -334,14 +334,14 @@ Once you do that, the destination function appears on the **Functions** page in
If you're editing an existing function, you can **Save** changes without updating instances of the function that are already deployed and running.
-You can also choose to **Save & Deploy** to save the changes, and then choose which of the already-deployed functions to update with your changes. [You might need additional permissions](#functions-permissions) to update existing functions.
+You can click **Save & Deploy** to save the changes, and then choose which of the already-deployed functions to update with your changes. [You might need additional permissions](#functions-permissions) to update existing functions.
## Destination functions logs and errors
{% include content/functions/logs.md %}
> warning ""
-> **Warning:** Do not log sensitive data, such as personally-identifying information (PII), authentication tokens, or other secrets. Avoid logging entire request/response payloads. The **Function Logs** tab may be visible to other workspace members if they have the necessary permissions.
+> Do not log sensitive data, such as personally-identifying information (PII), authentication tokens, or other secrets. Avoid logging entire request/response payloads. The **Function Logs** tab may be visible to other workspace members if they have the necessary permissions.
## Caching in destination functions
@@ -381,7 +381,7 @@ If you are a **Workspace Owner** or **Functions Admin**, you can manage your fun
### Monitoring destination functions
-You can use [Destination Event Delivery](/docs/connections/event-delivery/) to understand if Segment encounters any issues delivering your source data to destinations. Errors that the Function throws appear here.
+Use [Destination Event Delivery](/docs/connections/event-delivery/) to understand if Segment encounters any issues delivering your source data to destinations. Errors that the Function throws appear here.
If any of your deployed function instances are failing consistently, they will also appear in [Connection Health](/docs/segment-app/#health).
@@ -444,10 +444,10 @@ If you're sending your batch to an external service, the execution time of the f
##### Can I use a Destination Function to send data to another Segment source?
Yes, to do so, remove the `messageId` and the `writeKey` from the payload in your Function code. Leaving either field on your payload will cause unexpected behavior that may cause your event to be delivered to the wrong source or to not be delivered at all.
-##### Can I view console.log() outputs in Destination Functions?
+##### Can I view console.log() outputs in destination functions?
-Incorporating console.log() statements in your Destination Function code aids in debugging. However, logs generated by these statements will only be accessible in the [Event Delivery](/docs/connections/event-delivery/) view if the payloads encounter errors during processing. Logs from successfully processed payloads are not displayed.
+Incorporating console.log() statements in your destination function code aids in debugging. However, logs generated by these statements will only be accessible in the [Event Delivery](/docs/connections/event-delivery/) view if the payloads encounter errors during processing. Logs from successfully processed payloads are not displayed.
##### What is the maximum data size that can be displayed in console.logs() when testing a Function?
-The test function interface has a 4KB console logging limit. Outputs larger than this limit are not visible in the user interface.
+The test function interface has a 4 KB console logging limit. Outputs larger than this limit are not visible in the user interface.
diff --git a/src/connections/functions/index.md b/src/connections/functions/index.md
index 637420393f..8401508a2f 100644
--- a/src/connections/functions/index.md
+++ b/src/connections/functions/index.md
@@ -16,9 +16,9 @@ Functions can help you bring external data into Segment ([Source functions](/doc
Source functions receive external data from a webhook and can create Segment events, objects, or both. Source functions have access to the full power of JavaScript so you can validate and transform the incoming data and even make external API requests to annotate your data.
Use cases:
-- Ingest data into Segment from a source that's unavailable in the catalog
-- Transform or reject data before it's received by Segment
-- Enrich incoming data using external APIs
+- Ingest data into Segment from a source that's unavailable in the catalog.
+- Transform or reject data before it's received by Segment.
+- Enrich incoming data using external APIs.
Learn more about [source functions](/docs/connections/functions/source-functions).
@@ -26,9 +26,9 @@ Learn more about [source functions](/docs/connections/functions/source-functions
Destination functions can take events from a Segment source, transform the events, and deliver them to external APIs. Destination functions can make arbitrary requests to annotate data, as well.
Use cases:
-- Send data from Segment to a service that's unavailable in the catalog
-- Transform data before sending it downstream
-- Enrich outgoing data using external APIs
+- Send data from Segment to a service that's unavailable in the catalog.
+- Transform data before sending it downstream.
+- Enrich outgoing data using external APIs.
Learn more about [destination functions](/docs/connections/functions/destination-functions).
@@ -36,9 +36,9 @@ Learn more about [destination functions](/docs/connections/functions/destination
Destination insert functions help you enrich your data with code before you send it to downstream destinations.
Use cases:
-- Implement custom logic and enrich data with third party sources
-- Transform outgoing data with advanced filtration and computation
-- Ensure data compliance by performing tokenisation, encryption, or decryption before sending data downstream
+- Implement custom logic and enrich data with third party sources.
+- Transform outgoing data with advanced filtration and computation.
+- Ensure data compliance by performing tokenization, encryption, or decryption before sending data downstream.
To learn more, visit [destination insert functions](/docs/connections/functions/insert-functions).
@@ -54,4 +54,4 @@ IP Allowlisting uses a NAT gateway to route outbound Functions traffic from Segm
IP Allowlisting is available for customers on Business Tier plans.
-To learn more, visit [Segment's IP Allowlisting documentation](/docs/connections/destinations/#ip-allowlisting).
\ No newline at end of file
+To learn more, visit [Segment's IP Allowlisting documentation](/docs/connections/destinations/#ip-allowlisting).
diff --git a/src/connections/reverse-etl/system.md b/src/connections/reverse-etl/system.md
index ea5676b20d..2b4ff49a71 100644
--- a/src/connections/reverse-etl/system.md
+++ b/src/connections/reverse-etl/system.md
@@ -50,20 +50,15 @@ State management: The `__segment_reverse_etl` schema and its associated tables (
## Limits
To provide consistent performance and reliability at scale, Segment enforces default use and rate limits for Reverse ETL.
-### Usage limits
-Reverse ETL usage limits are measured based on the number of records processed to each destination – this includes both successful and failed records. For example, if you processed 50K records to Braze and 50K records to Mixpanel, then your total Reverse ETL usage is 100K records.
+### Usage
+Segment measures Reverse ETL usage measured based on the number of records processed to each destination – this includes only successful records. For example, if you processed 50K records to Braze and 50K records to Mixpanel, then your total Reverse ETL usage is 100K records.
Processed records represents the number of records Segment attempts to send to each destination. Keep in mind that not all processed records are successfully delivered, for example, such as when the destination experiences an issue.
-Your plan determines how many Reverse ETL records you can process in one monthly billing cycle. If you've reached your Reverse ETL limit, contact your sales representative to discuss an add-on that increases your Reverse ETL record allotment. To see how many records you’ve processed using Reverse ETL, navigate to **Settings > Usage & billing** and select the **Reverse ETL** tab.
+Segment doesn't limit how many Reverse ETL records you can process in one monthly billing cycle.
-Plan | Number of Reverse ETL records you can process to destinations per month | How to increase your number of Reverse ETL records
----- | --------------------------------------------------------------------------- | ---------------------------------------------------
-Free | 500K | Upgrade to the Teams plan in the Segment app by navigating to **Settings > Usage & billing**.
-Teams | 1 million | Contact your sales representative to upgrade your plan to Business.
-Business | 50 x the number of [MTUs](/docs/guides/usage-and-billing/mtus-and-throughput/#what-is-an-mtu) or .25 x the number of monthly API calls | Contact your sales rep to upgrade your plan.
+To track how many records you've processed using Reverse ETL, navigate to **Settings > Usage & billing** and select the **Reverse ETL** tab. For questions about Reverse ETL usage, contact your account team or reach out to [Segment support](segment.com/help/contact){:target="_blank”}.
-If you have a non-standard or high volume usage plan, you may have unique Reverse ETL limits or custom pricing. To see your Reverse ETL limits in the Segment app, select **Settings > Usage & Billing**.
### Configuration limits
diff --git a/src/connections/sources/catalog/cloud-apps/zigpoll/index.md b/src/connections/sources/catalog/cloud-apps/zigpoll/index.md
new file mode 100644
index 0000000000..61cf0b259d
--- /dev/null
+++ b/src/connections/sources/catalog/cloud-apps/zigpoll/index.md
@@ -0,0 +1,53 @@
+---
+title: Zigpoll Source
+id: h00x3Ep5el
+---
+
+[Zigpoll](https://www.zigpoll.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} provides merchants with powerful post-purchase surveys, AI-powered insights, and zero-party data collection tools. With Zigpoll, you can capture customer feedback directly at the point of conversion and send it seamlessly into your marketing and analytics stack.
+
+This source is maintained by Zigpoll. For any issues with the source, [contact the Zigpoll Support team](mailto:support@zigpoll.com).
+
+## Getting started
+
+1. From your workspace's [Sources catalog page](https://app.segment.com/goto-my-workspace/sources/catalog){:target="_blank”} click **Add Source**.
+2. Search for "Zigpoll" in the Sources Catalog, select Zigpoll, and click **Add Source**.
+3. On the next screen, give the Source a name and configure any other settings.
+
+ - The name is used as a label in the Segment app, and Segment creates a related schema name in your warehouse. The name can be anything, but Segment recommends using something that reflects the source itself and distinguishes amongst your environments (for example, Zigpoll_Prod, Zigpoll_Staging, or Zigpoll_Dev).
+
+4. Click **Add Source** to save your settings.
+5. Copy the Write key from the Segment UI.
+6. Log in to your Zigpoll account, navigate to **Settings > Integrations > Segment Integration**, and paste the key to connect.
+
+## Stream
+
+Zigpoll uses Segment’s stream Source component to send event data. It uses the Track and Identify methods to send data to Segment. These events are then available in any destination that accepts server-side events and as a schema in your data warehouse that you can query using SQL.
+
+The default behavior is for Zigpoll to pass the survey participant’s unique ID as the `userId`. If a participant’s email is available, Zigpoll also passes it as an identifier. If no `userId` is available, Zigpoll passes the email as the `anonymousId`.
+
+## Events
+
+The table below lists events that Zigpoll sends to Segment. These events appear as tables in your warehouse, and as regular events in other Destinations. Zigpoll includes the `userId` if available.
+
+| Event Name | Description |
+| ----------------- | ------------------------------------------------ |
+| Survey Completed | A customer submitted their responses |
+
+## Event Properties
+
+The table below lists the properties included in the events listed above.
+
+| Property Name | Description |
+| --------------------- | ---------------------------------------------------- |
+| `poll_id` | ID of the survey/poll |
+| `participant_id` | ID of the participant |
+| `email` | Email of the participant (if available) |
+| `metadata` | Additional metadata such as order_id, referrer, etc. |
+
+## Adding Destinations
+
+Now that your Source is set up, you can connect it with Destinations.
+
+Log into your downstream tools and check to see that your events appear as expected, and that they contain all of the properties you expect. If your events and properties don’t appear, check the [Event Delivery](/docs/connections/event-delivery/) tool, and refer to the Destination docs for each tool for troubleshooting.
+
+If there are any issues with how the events are arriving to Segment, [contact the Zigpoll support team](mailto:support@zigpoll.com).
\ No newline at end of file
diff --git a/src/connections/sources/catalog/libraries/mobile/apple/index.md b/src/connections/sources/catalog/libraries/mobile/apple/index.md
index d94f599408..3321345add 100644
--- a/src/connections/sources/catalog/libraries/mobile/apple/index.md
+++ b/src/connections/sources/catalog/libraries/mobile/apple/index.md
@@ -1,5 +1,5 @@
---
-title: 'Analytics-Swift for iOS & Apple'
+title: 'Analytics-Swift for iOS and Apple'
strat: swift
redirect_from:
- '/connections/sources/catalog/cloud-apps/swift/'
@@ -11,7 +11,7 @@ tags:
- swift
- ios
---
-With Analytics-Swift, you can send data from iOS, tvOS, iPadOS, WatchOS, macOS and Linux applications to any analytics or marketing tool without having to learn, test, or implement a new API every time. Analytics-Swift is compatible with both Swift and Objective-C applications.
+With Analytics-Swift, you can send data from iOS, tvOS, iPadOS, WatchOS, macOS, and Linux applications to any analytics or marketing tool without having to learn, test, or implement a new API every time. Analytics-Swift is compatible with both Swift and Objective-C applications.
> warning ""
> If you're migrating to **Analytics-Swift** from Analytics iOS (Classic), you can skip to the [migration guide](/docs/connections/sources/catalog/libraries/mobile/apple/migration/).
@@ -19,14 +19,15 @@ With Analytics-Swift, you can send data from iOS, tvOS, iPadOS, WatchOS, macOS a
## Benefits of Analytics-Swift
Analytics-Swift provides several key benefits including improvements in stability, performance, and developer experience when compared to Analytics iOS (Classic).
+
### Performance
Analytics-Swift offers improved performance when compared to Analytics iOS:
- Faster event processing and delivery
- Significantly lower CPU usage
-- Small memory & disk usage footprint
+- Small memory and disk usage footprint
-### Developer Experience
+### Developer experience
Analytics-Swift adds several improvements to the overall experience of using the core SDK, as well as improvements to the overall [Plugin Architecture](/docs/connections/sources/catalog/libraries/mobile/swift/swift-plugin-architecture).
@@ -34,10 +35,10 @@ Analytics-Swift adds several improvements to the overall experience of using the
- Simpler syntax and more developer friendly overall.
- More customization options than ever before.
-### Device Mode Transformations & Filtering
-For the first time ever, developers can filter and transform their users’ events even before the events leave the mobile device. What’s more, these Filters & transformations can be applied dynamically (either through the Segment Dashboard, or Javascript uploaded to the workspace) and do not require any app updates.
+### Device Mode Transformations and Filtering
+For the first time ever, developers can filter and transform their users’ events even before the events leave the mobile device. What’s more, these Filters & transformations can be applied dynamically (either through the Segment Dashboard, or JavaScript uploaded to the workspace) and do not require any app updates.
-Learn more about [Destination Filters](https://github.com/segmentio/DestinationFilters-swift) on Mobile, and [Edge Functions](https://github.com/segmentio/EdgeFn-Swift) on Mobile.
+Learn more about [Destination Filters](https://github.com/segmentio/DestinationFilters-swift){:target="_blank"} on Mobile, and [Edge Functions](https://github.com/segmentio/EdgeFn-Swift){:target="_blank"} on Mobile.
## Getting started
> info "Multiple Instances"
@@ -50,7 +51,7 @@ To get started with the Analytics-Swift mobile library:
2. Search for **Apple** and click **Add source**.
2. Add the Analytics dependency to your application.
- Add the Swift package, `git@github.com:segmentio/analytics-swift.git` as a dependency through either of these 2 options:
+ Add the Swift package, `git@github.com:segmentio/analytics-swift.git` as a dependency through either of these two options:
1. Your package.swift file
2. Xcode
1. Xcode 12: **File > Swift Packages > Add Package Dependency**
@@ -99,10 +100,10 @@ To get started with the Analytics-Swift mobile library:
These are the options you can apply to configure the client:
- Option Name | Description
+ Option name | Description
----------- | ------------
`writeKey` *required* | This is your Segment write key.
-`apiHost` | The default is set to `api.segment.io/v1`. This sets a default API Host to which Segment sends event.
+`apiHost` | The default is set to `api.segment.io/v1`. This sets a default API Host to which Segment sends events.
`autoAddSegmentDestination` | The default is set to `true`. This automatically adds the Segment Destination plugin. Set to `false` if you want to add plugins to the Segment Destination.
`cdnHost` | The default is set to `cdn-settings.segment.com/v1`. This sets a default CDN Host from which Segment retrieves settings.
`defaultSettings`| The default is set to `{}`. This is the settings object used as fallback in case of network failure.
@@ -111,7 +112,7 @@ These are the options you can apply to configure the client:
`trackApplicationLifecycleEvents`| The default is set to `true`. This automatically tracks lifecycle events. Set to `false` to stop tracking lifecycle events.
> info "AppClip Tracking"
-> If you are tracking App Clips using iOS or Swift libraries, you may encounter zeros in your device ID. Segment recommends that you set your own device ID in these instances to avoid this issue.
+> If you are tracking App Clips using iOS or Swift libraries, you may encounter zeros in your device ID. We recommend that you set your own device ID in these instances to avoid this issue.
### Core tracking methods
Once you've installed the Analytics-Swift library, you can start collecting data through Segment's tracking methods:
@@ -162,7 +163,7 @@ Analytics-Swift is built with extensibility in mind. Use the tools list below to
If you proxy your events through the `apiHost` config option, you must forward the batched events to `https://api.segment.io/v1/b`. The `https://api.segment.io/v1/batch` endpoint is reserved for events arriving from server-side sending, and proxying to that endpoint for your mobile events may result in unexpected behavior.
> warning ""
-> If you are using the Analytics iOS (Classic) SDK, you can find [the documentation here](/docs/connections/sources/catalog/libraries/mobile/ios). Many of the features available in the Analytics-Swift SDK are not available in the Analytics iOS (Classic) SDK.
+> If you're using the Analytics iOS (Classic) SDK, you can find [the documentation here](/docs/connections/sources/catalog/libraries/mobile/ios). Many of the features available in the Analytics-Swift SDK aren't available in the Analytics iOS (Classic) SDK.
## Telemetry
The Analytics-Swift SDK collects telemetry data on configuration and usage by default. This includes basic information on SDK setup, plugins and event types used, and basic error details. Segment downsamples the data to minimize traffic and doesn't collect any personally identifiable information (PII) or event data.
diff --git a/src/connections/sources/catalog/libraries/server/node/index.md b/src/connections/sources/catalog/libraries/server/node/index.md
index 1ffa34f579..b5dddea028 100644
--- a/src/connections/sources/catalog/libraries/server/node/index.md
+++ b/src/connections/sources/catalog/libraries/server/node/index.md
@@ -12,7 +12,7 @@ The [Segment Analytics Node.js Next library is open-source](https://github.com/s
All of Segment's server-side libraries are built for high-performance, so you can use them in your web server controller code. This library uses an internal queue to make Identify and Track calls non-blocking and fast. It also batches messages and flushes asynchronously to Segment's servers.
-## Getting Started
+## Getting started
> warning ""
> Make sure you're using a version of Node that's 18 or higher.
@@ -28,7 +28,7 @@ All of Segment's server-side libraries are built for high-performance, so you ca
pnpm add @segment/analytics-node
```
-2. Initialize the `Analytics` constructor the module exposes with your Segment source **Write Key**, like so:
+2. Initialize the `Analytics` constructor the module exposes with your Segment source **Write Key**:
```javascript
import { Analytics } from '@segment/analytics-node'
@@ -39,7 +39,7 @@ All of Segment's server-side libraries are built for high-performance, so you ca
const analytics = new Analytics({ writeKey: '' })
```
- Be sure to replace `YOUR_WRITE_KEY` with your actual **Write Key** which you can find in Segment by navigating to: **Connections > Sources** and selecting your source and going to the **Settings** tab.
+ Replace `YOUR_WRITE_KEY` with your actual **Write Key** which you can find in Segment by navigating to: **Connections > Sources** and selecting your source and going to the **Settings** tab.
This creates an instance of `Analytics` that you can use to send data to Segment for your project. The default initialization settings are production-ready and queue 20 messages before sending any requests.
@@ -52,7 +52,7 @@ These methods correspond with those used in the [Segment Spec](/docs/connections
### Identify
-> info "Good to know"
+> info ""
> For any of the different methods described on this page, you can replace the properties and traits in the code samples with variables that represent the data collected.
Identify lets you tie a user to their actions and record traits about them. It includes a unique User ID and/or anonymous ID, and any optional traits you know about them.
@@ -85,27 +85,27 @@ analytics.identify({
}
});
```
-The call above identifies Michael by his unique User ID (the one you know him by in your database), and labels him with the `name`, `email`, `plan` and `friends` traits.
+The call above identifies Michael by his unique User ID (the one you know him by in your database), and labels him with the `name`, `email`, `plan`, and `friends` traits.
An Identify call has the following fields:
Field | Details
----- | -------
-`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any identify call._
-`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are (for example, [the anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id)). _Note: You must include at least one of `userId` or `anonymousId` in all identify calls._
-`traits` _Object, optional_ | A dictionary of [traits](/docs/connections/spec/identify#traits) you know about the user. Things like: `email`, `name` or `friends`.
+`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any Identify call._
+`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are (for example, [the anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id)). _Note: You must include at least one of `userId` or `anonymousId` in all Identify calls._
+`traits` _Object, optional_ | A dictionary of [traits](/docs/connections/spec/identify#traits) you know about the user. Things like: `email`, `name`, or `friends`.
`timestamp` _Date, optional_ | A JavaScript date object representing when the identify took place. If the identify just happened, leave it out as Segment uses the server's time. If you're importing data from the past make sure to send a `timestamp`.
`context` _Object, optional_ | A dictionary of extra [context](/docs/connections/spec/common/#context) to attach to the call. _Note: `context` differs from `traits` because it is not attributes of the user itself._
-Find details on the **identify method payload** in Segment's [Spec](/docs/connections/spec/identify/).
+Find details on the **Identify method payload** in Segment's [Spec](/docs/connections/spec/identify/).
### Track
Track lets you record the actions your users perform. Every action triggers what Segment calls an "event", which can also have associated properties.
-You'll want to track events that are indicators of success for your site, like **Signed Up**, **Item Purchased** or **Article Bookmarked**.
+You'll want to track events that are indicators of success for your site, like **Signed Up**, **Item Purchased**, or **Article Bookmarked**.
-To get started, Segment recommends tracking just a few important events. You can always add more later.
+To get started, we recommend tracking just a few important events. You can always add more later.
Example anonymous Track call:
@@ -141,8 +141,8 @@ The Track call has the following fields:
Field | Details
----- | --------
-`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any track call.
-`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are (for example, [the anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id)). _Note: You must include at least one of `userId` or `anonymousId` in all track calls._
+`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any Track call.
+`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are (for example, [the anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id)). _Note: You must include at least one of `userId` or `anonymousId` in all Track calls._
`event` _String_ | The name of the event you're tracking. We recommend human-readable names like `Song Played` or `Status Updated`.
`properties` _Object, optional_ | A dictionary of properties for the event. If the event was `Product Added`, it might have properties like `price` or `product`.
`timestamp` _Date, optional_ | A JavaScript date object representing when the track took place. If the track just happened, leave it out and we'll use the server's time. If you're importing data from the past make sure you to send a `timestamp`.
@@ -154,7 +154,7 @@ Find details on **best practices in event naming** as well as the **Track method
The [Page](/docs/connections/spec/page/) method lets you record page views on your website, along with optional extra information about the page being viewed.
-If you're using Segment's client-side set up in combination with the Node.js library, page calls are **already tracked for you** by default. However, if you want to record your own page views manually and aren't using the client-side library, read on.
+If you're using Segment's client-side set up in combination with the Node.js library, Page calls are **already tracked for you** by default. However, if you want to record your own page views manually and aren't using the client-side library, read on.
Example Page call:
@@ -176,11 +176,11 @@ A Page call has the following fields:
Field | Details
----- | --------
-`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any page call.
-`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are (for example, [the anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id)). _Note: at least one of `userId` or `anonymousId` must be included in any page call._
+`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any Page call.
+`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are (for example, [the anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id)). _Note: at least one of `userId` or `anonymousId` must be included in any Page call._
`category` _String, optional_ | The category of the page. Useful for industries, like ecommerce, where many pages often live under a larger category.
`name` _String, optional_ | The name of the page, for example **Signup** or **Home**.
-`properties` _Object, optional_ | A dictionary of properties of the page. A few properties specially recognized and automatically translated: `url`, `title`, `referrer` and `path`, but you can add your own too.
+`properties` _Object, optional_ | A dictionary of properties of the page. A few properties specially recognized and automatically translated: `url`, `title`, `referrer`, and `path`, but you can add your own too.
`timestamp` _Date, optional_ | A JavaScript date object representing when the Page took place. If the Page just happened, leave it out and Segment will use the server's time. If you're importing data from the past make sure you to send a `timestamp`.
`context` _Object, optional_ | A dictionary of extra [context](docs/connections/spec/common/#context) to attach to the call. _Note: `context` differs from `traits` because it is not attributes of the user itself._
@@ -190,7 +190,7 @@ Find details on the **Page payload** in the [Segment Spec](/docs/connections/spe
Group lets you associate an [identified user](/docs/connections/sources/catalog/libraries/server/node/#identify) with a group. A group could be a company, organization, account, project or team. It also lets you record custom traits about the group, like industry or number of employees.
-This is useful for tools like [Intercom](/docs/connections/destinations/catalog/intercom/), [Preact](/docs/connections/destinations/catalog/preact/) and [Totango](/docs/connections/destinations/catalog/totango/), as it ties the user to a **group** of other users.
+This is useful for tools like [Intercom](/docs/connections/destinations/catalog/intercom/), [Preact](/docs/connections/destinations/catalog/preact/), and [Totango](/docs/connections/destinations/catalog/totango/), as it ties the user to a **group** of other users.
Example Group call:
@@ -209,21 +209,21 @@ The Group call has the following fields:
Field | Details
----- | --------
-`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any group call.
-`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are (for example), [the anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id). _Note: at least one of `userId` or `anonymousId` must be included in any group call._
+`userId` _String, optional_ | The ID for this user in your database. _Note: at least one of `userId` or `anonymousId` must be included in any Group call.
+`anonymousId` _String, optional_ | An ID associated with the user when you don't know who they are. For example, the [anonymousId generated by `analytics.js`](/docs/connections/sources/catalog/libraries/website/javascript/#anonymous-id). _Note: at least one of `userId` or `anonymousId` must be included in any Group call._
`groupId` _string | The ID of the group.
`traits` _dict, optional_ | A dict of traits you know about the group. For a company, they might be things like `name`, `address`, or `phone`. [Learn more about traits](/docs/connections/spec/group/#traits).
-`context` _dict, optional_ | A dict containing any context about the request. To see the full reference of supported keys, check them out in the [context reference](/docs/connections/spec/common/#context)
-`timestamp` _datetime, optional_ | A `datetime` object representing when the Group took place. If the Group just happened, leave it out and Segment will use the server's time. If you're importing data from the past make sure you send `timestamp`.
+`context` _dict, optional_ | A dict containing any context about the request. To see the full reference of supported keys, check them out in the [context reference](/docs/connections/spec/common/#context).
+`timestamp` _datetime, optional_ | A `datetime` object representing when the Group call took place. If the Group call just happened, leave it out and Segment will use the server's time. If you're importing data from the past make sure you send `timestamp`.
`integrations` _dict, optional_ | A dictionary of destinations to enable or disable.
Find more details about Group, including the **Group payload**, in the [Segment Spec](/docs/connections/spec/group/).
### Alias
-The Alias call allows you to associate one identity with another. This is an advanced method and should not be widely used, but is required to manage user identities in _some_ destinations. Other destinations do not support the alias call.
+The Alias call allows you to associate one identity with another. This is an advanced method and should not be widely used, but is required to manage user identities in _some_ destinations. Other destinations do not support the Alias call.
-In [Mixpanel](/docs/connections/destinations/catalog/mixpanel/#alias) it's used to associate an anonymous user with an identified user once they sign up. For [Kissmetrics](/docs/connections/destinations/catalog/kissmetrics/#alias), if your user switches IDs, you can use 'alias' to rename the 'userId'.
+In [Mixpanel](/docs/connections/destinations/catalog/mixpanel/#alias) it's used to associate an anonymous user with an identified user once they sign up. For [Kissmetrics](/docs/connections/destinations/catalog/kissmetrics/#alias), if your user switches IDs, you can use the Alias call to rename the `userId`.
Example Alias call:
@@ -464,11 +464,11 @@ analytics.on('http_request', (event) => console.log(event))
}
```
- ### Emitter Types
+ ### Emitter types
The following table documents all the emitter types available in the Analytics Node.js library:
- | Emitter Type | Description |
+ | Emitter type | Description |
|-------------------|-----------------------------------------------------------------------------|
| `error` | Emitted when there is an error after SDK initialization. |
| `identify` | Emitted when an Identify call is made.
@@ -534,7 +534,7 @@ Deregister a plugin by using:
await analytics.deregister("pluginNameA", "pluginNameB") // takes strings
```
-## Selecting Destinations
+## Selecting destinations
The Alias, Group, Identify, Page, and Track calls can all be passed an object of `integrations` that lets you turn certain destinations on or off. By default all destinations are enabled.
@@ -556,19 +556,19 @@ In this case, Segment specifies that they want this Track event to only go to Ve
Destination flags are **case sensitive** and match [the destination's name in the docs](/docs/connections/destinations/) (for example, "AdLearn Open Platform", "awe.sm", or "MailChimp"). In some cases, there may be several names for a destination; if that happens you'll see a "Adding (destination name) to the Integrations Object" section in the destination's doc page with a list of valid names.
-**Note:**
+Keep in mind:
-- Business Tier users can filter Track calls right from the Segment UI on your source schema page. Segment recommends using the UI if possible since it's a much simpler way of managing your filters and can be updated with no code changes on your side.
+- Business Tier users can filter Track calls right from the Segment UI on your source schema page. We recommend using the UI if possible since it's a much simpler way of managing your filters and can be updated with no code changes on your side.
- If you are on a grandfathered plan, events sent server-side that are filtered through the Segment dashboard still count towards your API usage.
-## Historical Import
+## Historical import
You can import historical data by adding the `timestamp` argument to any of your method calls. This can be helpful if you've just switched to Segment.
-Historical imports can only be done into destinations that can accept historical timestamped data. Most analytics tools like Mixpanel, Amplitude, Kissmetrics, etc. can handle that type of data just fine. One common destination that does not accept historical data is Google Analytics since their API cannot accept historical data.
+Historical imports can only be done into destinations that can accept historical timestamped data. Most analytics tools like Mixpanel, Amplitude, and Kissmetrics can handle that type of data just fine. One common destination that does not accept historical data is Google Analytics since their API cannot accept historical data.
-**Note:** If you're tracking things that are happening right now, leave out the `timestamp` and Segment's servers will timestamp the requests for you.
+**Note**: If you're tracking things that are happening right now, leave out the `timestamp` and Segment's servers will timestamp the requests for you.
## Batching
@@ -582,7 +582,7 @@ By default, Segment's library will flush:
- Every 15 messages (controlled by `settings.flushAt`).
- If 10 seconds has passed since the last flush (controlled by `settings.flushInterval`)
-There is a maximum of `500KB` per batch request and `32KB` per call.
+There is a maximum of `500 KB` per batch request and `32 KB` per call.
If you don't want to batch messages, you can turn batching off by setting the `flushAt` setting to `1`, like so:
@@ -606,7 +606,7 @@ analytics.track({
)
```
-## Multiple Clients
+## Multiple clients
Different parts of your application may require different types of batching, or even sending to multiple Segment sources. In that case, you can initialize multiple instances of `Analytics` with different settings:
@@ -618,7 +618,7 @@ const appAnalytics = new Analytics({ writeKey: 'APP_WRITE_KEY' });
Segment attempts to use the global `fetch` implementation if available in order to support several diverse environments. Some special cases (for example, http proxy) may require a different implementation for http communication. You can provide a customized wrapper in the Analytics configuration to support this. Here are a few approaches:
-Use a custom fetch-like implementation with proxy (simple, recommended)
+Use a custom fetch-like implementation with proxy (Recommended)
```javascript
import { HTTPFetchFn } from '../lib/http-client'
import axios from 'axios'
diff --git a/src/connections/sources/custom-domain.md b/src/connections/sources/custom-domain.md
index a73533ebe6..c4fed158cf 100644
--- a/src/connections/sources/custom-domain.md
+++ b/src/connections/sources/custom-domain.md
@@ -54,8 +54,8 @@ To configure Custom Domain:
- **Additional Domain Name**: (*Optional*) If applicable, you can add an additional subdomain. You can have multiple domains within the same workspace; however, each source can only be associated with one domain. A single domain can be associated with multiple sources.
- **Source names**: Select the sources you would like to use for Custom Domain. Segment recommends starting with a stage or dev source. For initial setup, an [Analytics.js](/docs/connections/sources/catalog/libraries/website/javascript/) source is required. For a list of all sources that support Custom Domain, see [Supported sources](#supported-sources).
- **Is the domain name enabled for Content Policy**: Select either Yes or No. You are not required to create a Content Policy prior to requesting Custom Domain. If you've enabled a Content Security Policy (CSP), you must add the new subdomains provided by Segment to your CSP once you've enabled the Custom Domain feature. This ensures that the CSP does not block the subdomains when you load Segment.
-
- **Description**: Enter an optional description for your service request. If you are requesting Custom Domain for multiple workspaces, enter any additional workspace slugs and source names into this field.
+
4. Segment provides you with a list of nameservers you should add to your DNS. Once you receive the nameservers from Segment, update your DNS.
5. After you've updated your DNS, Segment verifies that you've made all required updates and then provides you with two custom domains, one for the Tracking API and a second for your CDN.
6. Once Custom Domain is enabled for your workspace, the Segment app generates a new JavaScript source code snippet for your Analytics.js sources. Copy and paste this snippet into the header of your website. You can also use the subdomain provided for the Tracking API as the new endpoint for your server library sources.
diff --git a/src/connections/sources/index.md b/src/connections/sources/index.md
index e49f710b92..f928f80328 100644
--- a/src/connections/sources/index.md
+++ b/src/connections/sources/index.md
@@ -48,8 +48,8 @@ analytics.identify('user_123', {
{% endcodeexample %}
{% endcomment %}
-> info "If you don't see the source you're looking for in our catalog"
-> If a tool is not listed as a supported source in Segment's [catalog](https://segment.com/catalog/){:target='_blank’}, then it is not possible to incorporate the integration out-of-the-box within a Segment workspace. However, as an alternative, you can use the [HTTP API](/docs/connections/sources/catalog/libraries/server/http-api/) source to collect data from the tool's API. You can also use [Functions](/docs/connections/functions/) to send or receive data from other tools.
+> info "If you don't see the source you're looking for in the catalog"
+> If a tool isn't listed as a supported source in Segment's [catalog](https://segment.com/catalog/){:target='_blank’}, it's not possible to incorporate the integration out-of-the-box within a Segment workspace. As an alternative, you can use the [HTTP API](/docs/connections/sources/catalog/libraries/server/http-api/) source to collect data from the tool's API. You can also use [Functions](/docs/connections/functions/) to send or receive data from other tools.
## Types of sources
@@ -75,11 +75,16 @@ Web, Mobile, and Server sources send first-party data from your digital properti
## Event streams sources
-Event streams sources collect data from your website or app to monitor user actions. These sources include [website libraries](#website-libraries), [mobile](#mobile), and [server sources](#server).
+Event streams sources collect data from your website or app to monitor user actions. These sources include [website libraries](#website-libraries), [mobile](#mobile) and [server sources](#server).
### Source Overview
-The Source Overview page for an event stream source shows you a [pipeline view](#pipeline-view) of all events Segment receives from your source, events that failed on ingest, events that are filtered at the source level, and "eligible events", which are the events that will flow into your destinations. If you select one of the steps in the pipeline view, you can see a line chart that reflects the fluctuations in volume alongside a [breakdown table](#breakdown-table) that has more details about the events impacted by the selected step.
+The Source Overview page for an event stream source shows you:
+* A [pipeline view](#pipeline-view) of all events Segment receives from your source,
+* Events that failed on ingest,
+* Events that are filtered at the source level,
+* "Eligible events", which are the events that will flow into your destinations.
+If you select one of the steps in the pipeline view, you can see a line chart that reflects the fluctuations in volume alongside a [breakdown table](#breakdown-table) that has more details about the events impacted by the selected step.
#### Pipeline view
@@ -97,10 +102,10 @@ The pipeline view shows each of the four steps Segment encounters when processin
#### Breakdown table
-The breakdown table displays three tabs, **Event type**, **Event name**, and **App version**.
-* **Event type**: The Segment Spec event type (Track call vs. Identify call, for example). _This tab also contains a "% change" metric, which displays how the event counts differ from the last comparable time range, represented as a percentage._
+The breakdown table displays these 3 tabs:
+* **Event type**: The Segment Spec event type (for example, Track call vs. Identify call). _This tab also contains a "% change" metric, which displays how the event counts differ from the last comparable time range, represented as a percentage._
* **Event name**: The event name, provided by you or the source.
-* **App version**: The app/release version, provided by you or the source.
+* **App version**: The app or release version, provided by you or the source.
Each of these tabs displays an event count, which is the total number of events that Segment received in a particular step.
@@ -115,7 +120,7 @@ Each of these tabs displays an event count, which is the total number of events
href="https://segment.com/academy/intro/"
icon="symbols/squares-arrow.svg"
title="The Analytics Quickstart Guide"
- description="Analytics and data collection is a very broad topic and it can be quite overwhelming. How do you get started?"
+ description="Get started with analytics and data collection."
%}
### Mobile
@@ -152,7 +157,7 @@ Segment's server-side sources let you send analytics data directly from your ser
## Cloud app sources
-Cloud app sources empower you to pull together data from all of your different third-party tools into a Segment warehouse or to your other enabled integrated tools. They send data about your users from your connected web apps. There are two types of Cloud Apps: [Object cloud sources](#object-cloud-sources) and [Event cloud sources](#event-cloud-sources).
+Cloud app sources empower you to pull together data from all of your different third-party tools into a Segment warehouse or to your other enabled integrated tools. They send data about your users from your connected web apps. There are 2 types of Cloud Apps: [Object cloud sources](#object-cloud-sources) and [Event cloud sources](#event-cloud-sources).
{% include components/reference-button.html href="/docs/connections/sources/sources-compare/" icon="guides.svg" title="Comparing Cloud Sources" description="Wondering which cloud-apps send which types of data? Check out the Cloud Sources comparison." %}
@@ -189,8 +194,8 @@ Segment's [Pixel Tracking API](/docs/connections/sources/catalog/libraries/serve
| Email Opened | The recipient has opened the HTML message. You need to enable Open Tracking for getting this type of event. |
| Email Link Clicked | The recipient clicked on a link within the message. You need to enable Click Tracking for getting this type of event. |
| Email Bounced | The receiving server could not or would not accept message. |
-| Email Marked as Spam | The recipient marked message as spam. |
-| Unsubscribe | The recipient clicked on message's subscription management link. |
+| Email Marked as Spam | The recipient marked the message as spam. |
+| Unsubscribe | The recipient clicked on the message's subscription management link. |
## Reverse ETL sources
Reverse ETL sources are data warehouses that enable you to use [Reverse ETL](/docs/connections/reverse-etl) to send data from your warehouse source to your destinations.
@@ -207,12 +212,12 @@ Segment is actively working on adding more sources. If you'd like to request Seg
## Create a source
To create a source:
1. Navigate to **Connections** and click **Add Source**.
-2. Click the Source you’d like to add. *Note:* More than 80% of workspaces start by adding their JavaScript website.
+2. Click the Source you’d like to add. **Note**: More than 80% of workspaces start by adding their JavaScript website.
3. Click **Add Source**.
4. Enter a name for your source as well as any information on the setup page.
5. Click **Add Source**.
-Once you've created a source, the source is automatically enabled and can immediately receive events. You can review your new events in that source's [Debugger](/docs/connections/sources/debugger/) tab.
+Once you've created a source, the source is automatically activated and can immediately receive events. You can review your new events in that source's [Debugger](/docs/connections/sources/debugger/) tab.
> warning "Sources not connected to an enabled destination are disabled after 14 days"
@@ -221,16 +226,15 @@ Once you've created a source, the source is automatically enabled and can immedi
> Workspace members receive an email notification before Segment disables your source so that your team has time to take action.
> If you would like to prevent this behavior in your workspace, fill out [this Airtable form](https://airtable.com/appADTobzkv0FYLbi/shr7V9LFDZh31cYWW).
-> info "One source or multiple sources?"
-> Segment suggests that you create one source for each type of data you want to collect. For example, you might have one source for all of your website tracking and a different source for any mobile tracking. Creating one source per data type provides the following benefits:
-> - Debugger ease of use - mixing libraries/sources on a single API key means you’re heavily reliant on filtering to actually test events
-> - Flexibility sending data to different projects - if you want to have different warehouse schemas, analytics projects, etc, having multiple sources would create this separation
-> - More control - as your account grows with the number of destinations you enable, having separate sources allows you to have more control
-> - A source type cannot be changed after it is created. You must create a new source if you would like to use a different source type.
+ Segment suggests that you create one source for each type of data you want to collect. For example, you might have one source for all of your website tracking and a different source for any mobile tracking. Creating one source per data type provides the following benefits:
+ - Debugger ease of use - mixing libraries or sources on a single API key means you’re heavily reliant on filtering to actually test events
+ - Flexibility sending data to different projects - if you want to have different warehouse schemas, analytics projects, having multiple sources creates this separation
+ - More control - as your account grows with the number of destinations you enable, having separate sources allows you to have more control
+ - A source type can't be changed after it is created. You must create a new source if you would like to use a different source type.
## Library tiers
-Segment has defined three tiers for libraries: Flagship, Maintenance, and Community. These tiers indicate the level of support, enhancements, and maintenance each library receives from Segment.
+Segment defined 3 tiers for libraries: Flagship, Maintenance, and Community. These tiers indicate the level of support, enhancements, and maintenance each library receives from Segment.
The criteria for assigning a library to a tier include its overall usage by customers and the availability of newer versions. Here's how Segment defines each tier:
diff --git a/src/connections/spec/ecommerce/v2.md b/src/connections/spec/ecommerce/v2.md
index 202380da79..21ce943b00 100644
--- a/src/connections/spec/ecommerce/v2.md
+++ b/src/connections/spec/ecommerce/v2.md
@@ -4,7 +4,7 @@ title: 'Spec: V2 Ecommerce Events'
Segment's e-commerce spec helps define the journey for a customer as they browse your store, click on promotions, view products, add those products to a cart, and complete a purchase.
-> info "Note"
+> info ""
> Not all destinations support every event listed here and accept arrays as properties. Refer to individual destination documentation for more information on supported events and properties.
## Event lifecycles
@@ -14,7 +14,7 @@ Here is a list of supported events for our various categories within the custome
### Browsing overview
-| **Action** | **Description** |
+| Action | Description |
| --- | --- |
| Products Searched | User searched for products |
| Product List Viewed | User viewed a product list or category |
@@ -23,7 +23,7 @@ Here is a list of supported events for our various categories within the custome
### Promotions overview
-| **Action** | **Description** |
+| Action | Description |
| --- | --- |
| Promotion Viewed | User viewed promotion |
| Promotion Clicked | User clicked on promotion |
@@ -32,10 +32,10 @@ Here is a list of supported events for our various categories within the custome
### Core ordering overview
-| **Action** | **Description** |
+| Action | Description |
| --- | --- |
| Product Clicked | User clicked on a product |
-| Product Viewed | User viewed a product details |
+| Product Viewed | User viewed product details |
| Product Added | User added a product to their shopping cart |
| Product Removed | User removed a product from their shopping cart |
| Cart Viewed | User viewed their shopping cart |
@@ -50,7 +50,7 @@ Here is a list of supported events for our various categories within the custome
### Coupons overview
-| **Action** | **Description** |
+| Action | Description |
| -------------- | ------------------------------------------------------ |
| Coupon Entered | User entered a coupon on a shopping cart or order |
| Coupon Applied | Coupon was applied on a user's shopping cart or order |
@@ -60,7 +60,7 @@ Here is a list of supported events for our various categories within the custome
### Wishlisting overview
-| **Action** | **Description** |
+| Action | Description |
| ------------------------------ | ----------------------------------------- |
| Product Added to Wishlist | User added a product to the wish list |
| Product Removed from Wishlist | User removed a product from the wish list |
@@ -68,7 +68,7 @@ Here is a list of supported events for our various categories within the custome
### Sharing overview
-| **Action** | **Description** |
+| Action | Description |
| -------------- | ----------------------------------------- |
| Product Shared | Shared a product with one or more friends |
| Cart Shared | Shared the cart with one or more friends |
@@ -76,7 +76,7 @@ Here is a list of supported events for our various categories within the custome
### Reviewing overview
-| **Action** | **Description** |
+| Action | Description |
| ---------------- | ----------------------- |
| Product Reviewed | User reviewed a product |
@@ -93,7 +93,7 @@ Fire this event when a visitor searches for products.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|-----------------|------------------------------|
| query | String \| Object | Query the user searched with |
@@ -109,12 +109,12 @@ analytics.track('Products Searched', {
Fire this event when a visitor views a product list or category.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination documentation for more information on supported events and properties.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|---------------------------------------------------------|
| list_id | String | Product list being viewed |
| category | String | Product category being viewed |
@@ -163,7 +163,7 @@ analytics.track('Product List Viewed', {
```
-> info "Note"
+> info ""
> The `Product List Viewed` event is aliased to the `Viewed Product Category` event (from e-commerce v1 spec).
@@ -171,12 +171,12 @@ analytics.track('Product List Viewed', {
Send this event when a visitor filters a product list or category.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination docs for more information on supported events and properties.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|----------------------------------------------------------------------------|
| list_id | String | Product list being viewed |
| category | String | Product category being viewed |
@@ -256,7 +256,7 @@ Fire this event when a user views a promotion.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** | **Example** |
+| Property | Type | Description | Example |
|--------------|----------|----------------------|--------------------------|
| promotion_id | String | Promotion's ID | promo_1 |
| creative | String | Promotion's creative | top_banner_2 |
@@ -274,7 +274,7 @@ analytics.track('Promotion Viewed', {
});
```
-> info "Note"
+> info ""
> The `Promotion Viewed` event is aliased to the [`Viewed Promotion` event](/docs/connections/destinations/catalog/google-analytics/#measuring-promotions).
@@ -284,7 +284,7 @@ Fire this event when a visitor clicks an internal offer promotion.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** | **Example** |
+| Property | Type | Description | Example |
|--------------|----------|----------------------|--------------------------|
| promotion_id | String | Promotion's ID | promo_1 |
| creative | String | Promotion's creative | top_banner_2 |
@@ -303,7 +303,7 @@ analytics.track('Promotion Clicked', {
});
```
-> info "Note"
+> info ""
> The `Promotion Clicked` event is aliased to the [`Clicked Promotion` event](/docs/connections/destinations/catalog/google-analytics/#measuring-promotions).
## Core Ordering
@@ -316,7 +316,7 @@ Fire this event when a visitor clicks a product.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|---------------------------------------------------------|
| product_id | String | Database id of the product being viewed |
| sku | String | Sku of the product being viewed |
@@ -351,7 +351,7 @@ analytics.track('Product Clicked', {
});
```
-> info "Note"
+> info ""
> - The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
> - The `Product Clicked` event is aliased to the `Clicked Product` event from [e-commerce v1 spec](/docs/connections/spec/ecommerce/).
@@ -361,7 +361,7 @@ Fire this event when a visitor views a product. That view might happen on a page
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|---------------------------------------------------------|
| product_id | String | Database id of the product being viewed |
| sku | String | Sku of the product being viewed |
@@ -400,7 +400,7 @@ analytics.track('Product Viewed', {
});
```
-> info "Note"
+> info ""
> - The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
> - The `Product Viewed` event is aliased to the `Viewed Product` event from [e-commerce v1 spec](/docs/connections/spec/ecommerce/).
@@ -410,7 +410,7 @@ Fire this event when a visitor adds a product to their shopping cart.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|---------------------------------------------------------|
| cart_id | String | Cart ID to which the product was added to |
| product_id | String | Database id of the product being viewed |
@@ -447,7 +447,7 @@ analytics.track('Product Added', {
});
```
-> info "Note"
+> info ""
> - The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
> - The `Product Added` event is aliased to the `Added Product` event from [e-commerce v1 spec](/docs/connections/spec/ecommerce/).
@@ -457,10 +457,10 @@ Fire this event when a visitor removes a product from their shopping cart.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|---------------------------------------------------------|
| cart_id | String | Cart ID to which the product was removed from |
-| product_id | String | Database id of the product being viewed |
+| product_id | String | Database ID of the product being viewed |
| sku | String | Sku of the product being viewed |
| category | String | Product category being viewed |
| name | String | Name of the product being viewed |
@@ -493,7 +493,7 @@ analytics.track('Product Removed', {
});
```
-> info "Note"
+> info ""
> - The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
> - The `Product Removed` event is aliased to the `Removed Product` event from [e-commerce v1 spec](/docs/connections/spec/ecommerce/#added---removed-product).
@@ -501,12 +501,12 @@ analytics.track('Product Removed', {
Fire this event when a visitor views a shopping cart.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination documentation for more information on supported events and properties.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|---------------------------------------------------------|
| cart_id | String | Shopping cart ID |
| products | Array | Products displayed in the product list |
@@ -555,14 +555,14 @@ analytics.track('Cart Viewed', {
Fire this event whenever an order/transaction was started. Fire on the page that the customer lands on after they press the checkout button.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination documentation for more information on supported events and properties.
Be sure to **include all items in the cart as event properties**, with the same properties from the previous calls, like so:
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| order_id | String | Order/transaction ID |
| affiliation | String | Store or affiliation from which this transaction occurred (for example, Google Store) |
@@ -574,7 +574,7 @@ This event supports the following semantic properties:
| coupon | String | Transaction coupon redeemed with the transaction |
| currency | String | [Currency code](https://support.google.com/analytics/answer/6205902#supported-currencies){:target="_blank"} associated with the transaction |
| products | Array | Products in the order |
-| products.$.product_id | String | Database id of the product being viewed |
+| products.$.product_id | String | Database ID of the product being viewed |
| products.$.sku | String | Sku of the product being viewed |
| products.$.category | String | Product category being viewed |
| products.$.name | String | Name of the product being viewed |
@@ -624,7 +624,7 @@ analytics.track('Checkout Started', {
});
```
-> info "Note"
+> info ""
> - The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
> - The `Checkout Started` event is aliased to the `Started Order` event from [Segment's GA Enhanced E-Commerce destinations](/docs/connections/destinations/catalog/google-analytics/#measuring-checkout-steps).
@@ -634,7 +634,7 @@ Fire this event whenever a checkout step is viewed.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------|----------|----------------------------------------------------|
| checkout_id | String | Checkout transaction ID |
| step | Number | Number representing a step in the checkout process |
@@ -652,12 +652,12 @@ analytics.track('Checkout Step Viewed', {
});
```
-> info "Note"
+> info ""
> `shipping_method` and `payment_method` are semantic properties. If you want to send that information, do so in this exact spelling.
You can have as many or as few steps in the checkout funnel as you'd like. Note that you'll still need to track the `Order Completed` event per Segment's standard [e-commerce tracking API](/docs/connections/spec/ecommerce/v2/#order-completed) after you've tracked the checkout steps.
-> info "Note"
+> info ""
> The `Checkout Step Viewed` event is aliased to the `Viewed Checkout Step` event from [Segment's GA Enhanced E-Commerce destinations](/docs/connections/destinations/catalog/google-analytics/#measuring-checkout-steps).
### Checkout Step Completed
@@ -666,7 +666,7 @@ Fire this event whenever a checkout step is completed.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------|----------|----------------------------------------------------|
| checkout_id | String | Checkout transaction ID |
| step | Number | Number representing a step in the checkout process |
@@ -685,12 +685,12 @@ analytics.track('Checkout Step Completed', {
});
```
-> info "Note"
+> info ""
> `shipping_method` and `payment_method` are semantic properties. If you want to send that information, do so in this exact spelling.
You can have as many or as few steps in the checkout funnel as you'd like. Note that you'll still need to track the `Order Completed` event per Segment's standard [e-commerce tracking API](/docs/connections/spec/ecommerce/v2/#order-completed) after you've tracked the checkout steps.
-> info "Note"
+> info ""
> The `Checkout Step Completed` event is aliased to the `Completed Checkout Step` event from [Segment's GA Enhanced E-Commerce destinations](/docs/connections/destinations/catalog/google-analytics/#measuring-checkout-steps).
@@ -700,7 +700,7 @@ Fire this event whenever payment information has been successfully entered.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------|----------|----------------------------------------------------|
| checkout_id | String | Checkout transaction ID |
| order_id | String | Order ID (optional) |
@@ -717,7 +717,7 @@ analytics.track('Payment Info Entered', {
});
```
-> info "Note"
+> info ""
> `shipping_method` and `payment_method` are semantic properties. If you want to send that information, do so in this exact spelling.
You can have as many or as few steps in the checkout funnel as you'd like. Note that you'll still need to track the `Order Completed` event per Segment's standard [e-commerce tracking API](/docs/connections/spec/ecommerce/v2/#order-completed) after you've tracked the checkout steps.
@@ -726,14 +726,14 @@ You can have as many or as few steps in the checkout funnel as you'd like. Note
Fire this event whenever an order/transaction was updated.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination documentation for more information on supported events and properties.
Be sure to **include all items in the cart as event properties**, with the same properties from the previous calls, like so:
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| order_id | String | Order/transaction ID |
| affiliation | String | Store or affiliation from which this transaction occurred (for example, Google Store) |
@@ -743,9 +743,9 @@ This event supports the following semantic properties:
| tax | Number | Total tax associated with the transaction |
| discount | Number | Total discount associated with the transaction |
| coupon | String | Transaction coupon redeemed with the transaction |
-| currency | String | [Currency code](https://support.google.com/analytics/answer/6205902#supported-currencies) associated with the transaction |
+| currency | String | [Currency code](https://support.google.com/analytics/answer/6205902#supported-currencies){:target="_blank"} associated with the transaction |
| products | Array | Products in the order |
-| products.$.product_id | String | Database id of the product being viewed |
+| products.$.product_id | String | Database ID of the product being viewed |
| products.$.sku | String | Sku of the product being viewed |
| products.$.category | String | Product category being viewed |
| products.$.name | String | Name of the product being viewed |
@@ -794,7 +794,7 @@ analytics.track('Order Updated', {
});
```
-> info "Note"
+> info ""
> - The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
> - The `Order Updated` event is aliased to the `Updated Order` event from [Segment's GA Enhanced E-Commerce destinations](/docs/connections/destinations/catalog/google-analytics/#measuring-checkout-steps).
@@ -803,14 +803,14 @@ analytics.track('Order Updated', {
Fire this event whenever an order/transaction was successfully completed by the customer.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination documentation for more information on supported events and properties.
Be sure to **include all items in the cart as event properties**, with the same properties from the previous calls, like so:
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| checkout_id | String | Checkout ID |
| order_id | String | Order/transaction ID |
@@ -822,9 +822,9 @@ This event supports the following semantic properties:
| tax | Number | Total tax associated with the transaction |
| discount | Number | Total discount associated with the transaction |
| coupon | String | Transaction coupon redeemed with the transaction |
-| currency | String | [Currency code](https://support.google.com/analytics/answer/6205902#supported-currencies) associated with the transaction |
+| currency | String | [Currency code](https://support.google.com/analytics/answer/6205902#supported-currencies){:target="_blank"} associated with the transaction |
| products | Array | Products in the order |
-| products.$.product_id | String | Database id of the product being viewed |
+| products.$.product_id | String | Database ID of the product being viewed |
| products.$.sku | String | Sku of the product being viewed |
| products.$.category | String | Product category being viewed |
| products.$.name | String | Name of the product being viewed |
@@ -876,7 +876,7 @@ analytics.track('Order Completed', {
});
```
-> info "Note"
+> info ""
> - The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
> - The `Order Completed` event is aliased to the `Completed Order` event from [E-Commerce spec v1 - 5/11/16](/docs/connections/spec/ecommerce/).
@@ -888,7 +888,7 @@ Be sure to **include all items in the cart as event properties**, with the same
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|----------------------|
| order_id | String | Order/transaction ID |
@@ -923,7 +923,7 @@ analytics.track('Order Refunded', {
```
-> info "Note"
+> info ""
> The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
@@ -931,14 +931,14 @@ analytics.track('Order Refunded', {
Fire this event whenever an order/transaction was cancelled.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination documentation for more information on supported events and properties.
Be sure to **include all items in the cart as event properties**, with the same properties from the previous calls.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|---------------------------------------------------------------------------------------------------------------------------|
| order_id | String | Order/transaction ID |
| affiliation | String | Store or affiliation from which this transaction occurred (for example, Google Store) |
@@ -948,9 +948,9 @@ This event supports the following semantic properties:
| tax | Number | Total tax associated with the transaction |
| discount | Number | Total discount associated with the transaction |
| coupon | String | Transaction coupon redeemed with the transaction |
-| currency | String | [Currency code](https://support.google.com/analytics/answer/6205902#supported-currencies) associated with the transaction |
+| currency | String | [Currency code](https://support.google.com/analytics/answer/6205902#supported-currencies){:target="_blank"} associated with the transaction |
| products | Array | Products in the order |
-| products.$.product_id | String | Database id of the product being viewed |
+| products.$.product_id | String | Database ID of the product being viewed |
| products.$.sku | String | Sku of the product being viewed |
| products.$.category | String | Product category being viewed |
| products.$.name | String | Name of the product being viewed |
@@ -1000,7 +1000,7 @@ analytics.track('Order Cancelled', {
});
```
-> info "Note"
+> info ""
> The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
## Coupons
@@ -1013,7 +1013,7 @@ Fire this event whenever a coupon is entered either on a cart or on an order/tra
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|-------------------------------------|
| order_id | String | Order/transaction ID, if applicable |
| cart_id | String | Cart ID, if applicable |
@@ -1030,7 +1030,7 @@ analytics.track('Coupon Entered', {
});
```
-> info "Note"
+> info ""
> This has no effect in GA enhanced e-commerce, as that destination pulls from the `coupon` field on the order events. Refer to Segment's [Google Analytic documentation](/docs/connections/destinations/catalog/google-analytics/) for more information.
### Coupon Applied
@@ -1039,7 +1039,7 @@ Fire this event whenever a coupon is successfully applied to either a cart or an
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|----------------------------------------------|
| order_id | String | Order/transaction ID, if applicable |
| cart_id | String | Cart ID, if applicable |
@@ -1059,7 +1059,7 @@ analytics.track('Coupon Applied', {
});
```
-> info "Note"
+> info ""
> This has no effect in GA enhanced e-commerce, as that destination pulls from the `coupon` field on the order events. Refer to Segment's [Google Analytic documentation](/docs/connections/destinations/catalog/google-analytics/) for more information.
### Coupon Denied
@@ -1068,7 +1068,7 @@ Fire this event whenever a coupon is denied from either a cart or an order/trans
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|-------------------------------------|
| order_id | String | Order/transaction ID, if applicable |
| cart_id | String | Cart ID, if applicable |
@@ -1088,7 +1088,7 @@ analytics.track('Coupon Denied', {
});
```
-> info "Note"
+> info ""
> This has no effect in GA enhanced e-commerce, as that destination pulls from the `coupon` field on the order events. Refer to Segment's [Google Analytic documentation](/docs/connections/destinations/catalog/google-analytics/) for more information.
### Coupon Removed
@@ -1097,7 +1097,7 @@ Fire this event whenever a coupon is removed from either a cart or an order/tran
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|----------------------------------------------|
| order_id | String | Order/transaction ID, if applicable |
| cart_id | String | Cart ID, if applicable |
@@ -1117,7 +1117,7 @@ analytics.track('Coupon Removed', {
});
```
-> info "Note"
+> info ""
> This has no effect in GA enhanced e-commerce, as that destination pulls from the `coupon` field on the order events. Refer to Segment's [Google Analytic documentation](/docs/connections/destinations/catalog/google-analytics/) for more information.
## Wishlisting
@@ -1130,11 +1130,11 @@ Fire this event when a customer adds a product to their wish list.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|---------------|----------|---------------------------------------------------------|
| wishlist_id | String | Wishlist ID to which the product was added to |
| wishlist_name | String | Wishlist name to which the product was added to |
-| product_id | String | Database id of the product being viewed |
+| product_id | String | Database ID of the product being viewed |
| sku | String | Sku of the product being viewed |
| category | String | Product category being viewed |
| name | String | Name of the product being viewed |
@@ -1169,7 +1169,7 @@ analytics.track('Product Added to Wishlist', {
});
```
-> info "Note"
+> info ""
> The `sku` and `product_id` do not have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
### Product Removed from Wishlist
@@ -1178,11 +1178,11 @@ Fire this event when a customer removes a product from their wish list.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|---------------|----------|---------------------------------------------------------|
| wishlist_id | String | Wishlist ID to which the product was added to |
| wishlist_name | String | Wishlist name to which the product was added to |
-| product_id | String | Database id of the product being viewed |
+| product_id | String | Database ID of the product being viewed |
| sku | String | Sku of the product being viewed |
| category | String | Product category being viewed |
| name | String | Name of the product being viewed |
@@ -1216,7 +1216,7 @@ analytics.track('Product Removed from Wishlist', {
});
```
-> info "Note"
+> info ""
> The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
### Wishlist Product Added to Cart
@@ -1225,7 +1225,7 @@ Fire this event when a customer moves a product from their wish list to their ca
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|---------------|----------|---------------------------------------------------------|
| wishlist_id | String | Wishlist ID to which the product was added to |
| wishlist_name | String | Wishlist name to which the product was added to |
@@ -1266,7 +1266,7 @@ analytics.track('Wishlist Product Added to Cart', {
});
```
-> info "Note"
+> info ""
> The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
## Sharing
@@ -1279,7 +1279,7 @@ Fire this event when a customer shares a product.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|---------------|----------|-----------------------------------------|
| share_via | String | Method of sharing |
| share_message | String | Message that the sender sent |
@@ -1314,19 +1314,19 @@ analytics.track('Product Shared', {
});
```
-> info "Note"
+> info ""
> The `sku` and `product_id` don't have to be different. If they are different, typically the `product_id` is a database identifier, like `9714107479` and the `sku` is a public-facing identifier like `SEG-02`.
### Cart Shared
Fire this event when a customer shares a shopping cart.
-> info "Note"
+> info ""
> Not all destinations accept arrays as properties. Refer to individual destination docs for more information on supported events and properties.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|-----------------------|----------|----------------------------------------|
| share_via | String | Method of sharing |
| share_message | String | Message that the sender sent |
@@ -1360,7 +1360,7 @@ Fire this event when a customer reviews a product.
This event supports the following semantic properties:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|-----------------|
| product_id | String | Product's ID |
| review_id | String | Review ID |
diff --git a/src/connections/spec/mobile.md b/src/connections/spec/mobile.md
index 253c45d611..8ac2424a30 100644
--- a/src/connections/spec/mobile.md
+++ b/src/connections/spec/mobile.md
@@ -9,12 +9,12 @@ One of the core components of the Segment [Spec](/docs/connections/spec/) is the
By standardizing the events that comprise the core **mobile application lifecycle** and associated **mobile campaign and referral events**, Segment and its partners can, wherever possible, forward these events on your behalf and build downstream destinations that take full advantage of the semantic meaning associated with these events and their properties.
> info ""
-> If you're already collecting similar events, Segment recommends migrating to these event names so that you can take advantage of available features in Segment destinations that depend on the spec as they become available.
+> If you're already collecting similar events, Segment recommends migrating to these event names so that you can take advantage of available features in Segment destinations that depend on the spec as they become available.
-These events pair nicely with Segment's [ecommerce spec](/docs/connections/spec/ecommerce/v2/) for mobile marketplaces to take full advantage of features like dynamic ads in Facebook and the ability to take full advantage of server-side destinations with Mobile Attribution Platforms like [Tune](https://www.tune.com/){:target="_blank"} and [Kochava](https://www.kochava.com/){:target="_blank"}.
+These events also work with Segment's [ecommerce spec](/docs/connections/spec/ecommerce/v2/) for mobile marketplaces to take full advantage of features like dynamic ads in Facebook and the ability to take full advantage of server-side destinations with Mobile Attribution Platforms like [Tune](https://www.tune.com/){:target="_blank"} and [Kochava](https://www.kochava.com/){:target="_blank"}.
> info ""
-> Per the [Privacy Policy](https://segment.com/legal/privacy/#sensitive-personal-information){:target="_blank"} and applicable terms, don't send Segment sensitive personal information about your users. Certain features from Segment and its partners allow you to opt-in to automatically track data (for example: Application Installed or Deep Link Clicked). When working with these features and Segment in general, be cognizant of the data that is being tracked to ensure its matching both your obligations under your agreement with Segment and the privacy expectations of your users.
+> Per the [Privacy Policy](https://segment.com/legal/privacy/#sensitive-personal-information){:target="_blank"} and applicable terms, don't send Segment sensitive personal information about your users. Certain features from Segment and its partners allow you to opt-in to automatically track data (for example, **Application Installed** or **Deep Link Clicked**). When working with these features and Segment in general, be cognizant of the data that is being tracked to ensure its matching both your obligations under your agreement with Segment and the privacy expectations of your users.
## Overview of events
@@ -37,7 +37,7 @@ The Segment Native Mobile Spec includes the following semantic events:
- [Deep Link Opened](#deep-link-opened)
- [Deep Link Clicked](#deep-link-clicked)
-Segment recommends using the above event names if you're going to be integrating the events yourself. This will ensure that they can be mapped effectively in downstream tools.
+We recommend using the above event names if you're going to be integrating the events yourself. This will ensure that they can be mapped effectively in downstream tools.
## Lifecycle events
@@ -80,7 +80,7 @@ This event fires when a user **first** opens your mobile application. Note, if t
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ------------ | -------- | -------------------------------------- |
| `version` | String | The version installed. |
| `build` | String | The build number of the installed app. |
@@ -105,7 +105,7 @@ This event fires when a user launches or foregrounds your mobile application aft
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ----------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `from_background` | Boolean | If application [transitioned](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/#//apple_ref/doc/uid/TP40006786-CH3-SW52){:target="_blank"} from "Background" to "Inactive" state prior to foregrounding (as opposed to from "Not Running" state). |
| `url` | String | The value of `UIApplicationLaunchOptionsURLKey` from `launchOptions`. **Collected on iOS only**. |
@@ -164,7 +164,7 @@ This event fires when a user updates the application. Segment's SDK will automat
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ------------------ | -------- | -------------------------------- |
| `previous_version` | String | The previously recorded version. |
| `previous_build` | String | The previously recorded build. |
@@ -231,7 +231,7 @@ When Segment or an integrated partner can discern the source of an install, we'l
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ----------------------- | -------- | --------------------------------------- |
| `provider` | String | The attribution provider. |
| `campaign[source]` | String | Campaign source — attributed ad network.|
@@ -264,7 +264,7 @@ This event can be sent when a push notification is received in the app. It can b
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ------------------- | -------- | ---------------------------------------------------------- |
| `campaign[name]` | String | Campaign name. |
| `campaign[medium]` | String | Identifies what type of link was used (Push Notification). |
@@ -296,7 +296,7 @@ This event can be sent when a user taps on a push notification associated with y
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ------------------- | -------- | ----------------------------------------------------------------------------------- |
| `action` | String | If this notification is "actionable", the custom action tapped. **Default:** "Open" |
| `campaign[name]` | String | Campaign name. |
@@ -328,7 +328,7 @@ This event fires when a push notification from a provider bounces. If your push
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ------------------- | -------- | ----------------------------------------------------------------------------------- |
| `action` | String | If this notification is "actionable", the custom action tapped. **Default:** "Open" |
| `campaign[name]` | String | Campaign name. |
@@ -357,7 +357,7 @@ This event is fired *in addition* to the associated `Application Opened` event.
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ------------ | -------- | ----------------------- |
| `provider` | String | The deep link provider. |
| `url` | String | The App URL opened. |
@@ -381,7 +381,7 @@ This event may be provided by deep link providers postback mechanisms or an inte
}
```
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
| ------------ | -------- | -------------------------- |
| `provider` | String | The deep link provider. |
| `url` | String | The deep link URL clicked. |
diff --git a/src/connections/spec/screen.md b/src/connections/spec/screen.md
index ad6415505b..f06b0675f2 100644
--- a/src/connections/spec/screen.md
+++ b/src/connections/spec/screen.md
@@ -90,6 +90,6 @@ Segment has reserved some properties with semantic meanings and handles them in
Reserved properties that Segment has standardized:
-| **Property** | **Type** | **Description** |
+| Property | Type | Description |
|--------------|----------|-------------------------------------------------------------|
| `name` | String | Name of the screen. This is reserved for future use. |
diff --git a/src/connections/spec/semantic.md b/src/connections/spec/semantic.md
index 795c306f6a..21387cb394 100644
--- a/src/connections/spec/semantic.md
+++ b/src/connections/spec/semantic.md
@@ -4,7 +4,7 @@ title: 'Spec: Semantic Events'
One of the core components of the Segment [Spec](/docs/connections/spec) is the [Track](/docs/connections/spec/track) call. It describes any arbitrary event that the user has triggered. For some industry verticals and applications, Segment has standardized event names. For Ecommerce tracking, for example, there are **specific event names and properties** that we recognize semantically. This semantic meaning allows Segment to specially recognize and transform key events before sending them off to each different tool.
-There are a few places where Segment has standardized event names and properties already:
+Segment currently standardizes event names and properties in the following places:
- [Mobile](/docs/connections/spec/mobile)
- [A/B Testing](/docs/connections/spec/ab-testing)
@@ -12,5 +12,3 @@ There are a few places where Segment has standardized event names and properties
- [Email](/docs/connections/spec/email)
- [Live Chat](/docs/connections/spec/live-chat)
- [Video](/docs/connections/spec/video)
-
-In the future Segment plans to standardize event names from other data sources as well.
diff --git a/src/connections/storage/warehouses/index.md b/src/connections/storage/warehouses/index.md
index d4aeb540e7..0fee529f03 100644
--- a/src/connections/storage/warehouses/index.md
+++ b/src/connections/storage/warehouses/index.md
@@ -4,20 +4,20 @@ redirect_from: '/connections/warehouses/'
plan: warehouses
---
-## What's a Warehouse?
+## What's a warehouse?
{% include content/whats-a-warehouse.md %}
When selecting and building a data warehouse, consider three questions:
-1. What type of data will be collected?
-2. How many data sources will there be?
-3. How will the data be used?
+1. **What type of data will be collected?**
+2. **How many data sources will there be?**
+3. **How will the data be used?**
-Relational databases are great when you know and predefine the information collected and how it will be linked. This is usually the type of database used in the world of user analytics. For instance, a users table might be populated with the columns `name`, `email_address`, or `plan_name`.
+Relational databases are useful when you know in advance the information you want to collect and how you want to link that information. This is usually the type of database used in the world of user analytics. For instance, a users table might be populated with the columns `name`, `email_address`, or `plan_name`.
-Examples of data warehouses include Amazon Redshift, Google BigQuery, and Postgres.
+Examples of data warehouses include Amazon [Redshift](/docs/connections/storage/catalog/redshift/), Google [BigQuery](/docs/connections/storage/catalog/bigquery/), and [Postgres](/docs/connections/storage/catalog/postgres/).
{% include content/how-a-sync-works.md %}
@@ -27,7 +27,7 @@ Examples of data warehouses include Amazon Redshift, Google BigQuery, and Postgr
{% include components/reference-button.html href="https://segment.com/academy/intro/when-to-use-sql-for-analysis/?referrer=docs" icon="media/academy.svg" title="Analytics Academy: When to use SQL for analysis" description="When your existing analytics tools can't answer your questions, it's time to level-up and use SQL for analysis." %}
-### More Help
+### Learn more
[How do I send custom data to my warehouse?](/docs/connections/storage/warehouses/faq/#what-if-i-want-to-add-custom-data-to-my-warehouse)
@@ -75,4 +75,4 @@ Check out the [Frequently Asked Questions about Warehouses](/docs/connections/st
[How do I forecast LTV with SQL and Excel for e-commerce businesses?](/docs/guides/how-to-guides/forecast-with-sql/)
-[How do I measure the ROI of my Marketing Campaigns?](/docs/guides/how-to-guides/measure-marketing-roi/)
\ No newline at end of file
+[How do I measure the ROI of my Marketing Campaigns?](/docs/guides/how-to-guides/measure-marketing-roi/)
diff --git a/src/connections/test-connections.md b/src/connections/test-connections.md
index 3270536975..d013c1bfca 100644
--- a/src/connections/test-connections.md
+++ b/src/connections/test-connections.md
@@ -1,9 +1,9 @@
---
-title: Testing Connections
+title: Testing connections
---
-Segment provides these 2 testing tools to enable you to test your connections between Segment and your destination:
-* [Event Tester](#event-tester): Test all of your enabled mappings within a destination.
+Segment provides two tools for validating the connection between Segment and a destination:
+* [Event Tester](#event-tester): Test all enabled mappings within a destination.
* [Mappings Tester](#mappings-tester): Test a single mapping configuration for your destination.
Both testing tools share the same underlying testing infrastructure, which ensures consistent results across your testing workflows. The results from both testers display API requests, responses, and success/failure status to help you diagnose any issues.
@@ -36,7 +36,7 @@ The Event Tester sends a real event that appears in your end tool alongside your
To use the Event Tester:
1. Navigate to **Connections > Destinations** and select your destination.
2. Click the **Event Tester** tab.
-3. Select the type of test event. You can choose from: Track, Identify, Page, Screen, Group.
+3. Select the type of test event. You can choose from: Track, Identify, Page, Screen, and Group.
4. Enter your test event payload. You can type in your own event or choose from **Load event from source** or **Generate sample event**.
* **Load event from source**: Segment loads an event based on your source.
* **Generate sample event**: Segment generates a sample event for you.
@@ -77,7 +77,7 @@ To use the Mapppings Tester:
#### The Event Tester experienced an error when sending my event. Why did this happen?
-If you experience an error, [let Segment know](mailto:friends@segment.com) and the Segment team will help you troubleshoot the issue.
+If you experience an error, [contact Segment support](mailto:friends@segment.com) and we'll help you troubleshoot the issue.
#### Is this feature available for Data Lakes?
diff --git a/src/engage/analytics/index.md b/src/engage/analytics/index.md
index 0678e33186..bd4b8555a1 100644
--- a/src/engage/analytics/index.md
+++ b/src/engage/analytics/index.md
@@ -3,6 +3,9 @@ title: Analytics Overview
plan: engage-premier
---
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
+
Twilio Engage provides you with analytics that give you insight into the performance of your [email, SMS, and WhatsApp campaigns](/docs/engage/campaigns/).
On this page, you'll learn how Engage calculates campaign analytics and which messaging metrics you can view.
diff --git a/src/engage/audiences/linked-audiences.md b/src/engage/audiences/linked-audiences.md
index ded99e8ce7..726bae1d4e 100644
--- a/src/engage/audiences/linked-audiences.md
+++ b/src/engage/audiences/linked-audiences.md
@@ -13,7 +13,7 @@ With Linked Audiences, you can:
- Preserve rich relationships between all the data in your warehouse by creating connections with any entity data back to your audience profile.
- Build advanced audience segments that include the rich context needed for personalization downstream.
-- Use a low code builder, enabling marketers to activate warehouse data without having to wait for data pull requests before launching campaigns to targeted audiences.
+- Use a low code builder, enabling marketers to activate warehouse data without having to wait for data team requests before launching campaigns to targeted audiences.
To learn more about specific use cases you can set up with Linked Audiences, see [Linked Audiences Use Cases](/docs/engage/audiences/linked-audiences-use-cases/).
@@ -63,11 +63,11 @@ To build a Linked Audience:
Optionally, select a folder to add this audience.
8. Click **Create Audience**.
-After creating your Linked Audience, you will be brought to the Overview page with the Linked Audience in a disabled state.
+After creating your Linked Audience, you'll be brought to the Overview page with the Linked Audience in a disabled state.
### Linked Audience conditions
-The Linked Audiences builder sources profile trait and event keys from the data warehouse. This data must be synced to the data warehouse through [Profiles Sync](/docs/unify/profiles-sync/overview/) before you can reference it in the linked audience builder. If there is a profile trait that exists in the Segment Profile that hasn’t successfully synced to the data warehouse yet, it will be grayed out so that it can’t be selected.
+The Linked Audiences builder sources profile trait and event keys from the data warehouse. This data must be synced to the data warehouse through [Profiles Sync](/docs/unify/profiles-sync/overview/) before you can reference it in the Linked Audience builder. If there is a profile trait that exists in the Segment Profile that hasn’t successfully synced to the data warehouse yet, it will be grayed out so that it can’t be selected.
The Linked Audience builder also returns a subset of available entity property key values, event property and context key values, and profile trait key values that you can select in the input field drop-down. This eliminates the need to type in the exact value you want to filter on. If the value you’re looking for isn’t listed, you can manually enter it into the input field. Manually entered values are case-sensitive.
@@ -85,10 +85,10 @@ When building your Linked Audience, you can add multiple conditions to a single
|---------------------------|---------------------------------------|
| with entity | Creates a condition that filters profiles associated with entity relationships defined in the [Data Graph](/docs/unify/linked-profiles/data-graph/). With this condition, you can navigate the full, nested entity relationships, and filter your audience on entity column values. Each subsequent entity you select in an entity branch acts as a filter over the profiles that are available at the next depth of that specific branch. |
| without entity | Creates a condition that filters profiles that are not associated with entity relationships defined in the [Data Graph](/docs/unify/linked-profiles/data-graph/). With this condition, you can navigate the full, nested entity relationships, and filter your audience on entity column values. Each subsequent entity you select in an entity branch acts as a filter over the profiles that are available at the next depth of that specific branch.|
-| with [ trait](/docs/unify/#enrich-profiles-with-traits) | Creates a condition that filters profiles with a specific trait. |
-| without [ trait](/docs/unify/#enrich-profiles-with-traits)| Creates a condition that filters profiles without a specific trait.|
+| with [trait](/docs/unify/#enrich-profiles-with-traits) | Creates a condition that filters profiles with a specific trait. |
+| without [trait](/docs/unify/#enrich-profiles-with-traits)| Creates a condition that filters profiles without a specific trait.|
| part of [audience](/docs/glossary/#audience) | Creates a condition that filters profiles that are part of an existing audience. |
-| not part of [audience](/docs/glossary/#audience) | Creates a condition that filters profiles that are not part of an existing audience. |
+| not part of [audience](/docs/glossary/#audience) | Creates a condition that filters profiles that aren't part of an existing audience. |
| with [event](/docs/glossary/#event) | Creates a condition that filters profiles that have a specific event in their event history. You can also filter on event property values.|
| without [event](/docs/glossary/#event) | Creates a condition that filters profiles that do not have a specific event in their event history. You can also filter on event property values.|
@@ -97,7 +97,7 @@ at least: supports 1 or greater,
exactly: supports 0 or greater,
at most: supports 0 or greater.
-*When filtering by 0, you can’t filter on by entity properties or on additional nested entities.
+When filtering by 0, you can’t filter on by entity properties or on additional nested entities.
#### Operator selection
@@ -112,7 +112,7 @@ You can create audience definitions using either `AND` or `OR` operators across
If you have defined entity conditions in your audience definition, you will see a “Matched Entities” tab in the audience preview to help you understand what entities qualified a user to be a part of an audience.
-This information appears when you click the user profile generated from the audience preview. The contextual information encompasses entity relationships as well as entity column values that were used as filtering criteria in the audience definition. By default, Segment includes the entity ID. The data being returned is truncated - 10 entities at each level, 6 levels of depth. If you want to opt out of this functionality, contact Segment Support.
+This information appears when you click the user profile generated from the audience preview. The contextual information encompasses entity relationships as well as entity column values that were used as filtering criteria in the audience definition. By default, Segment includes the entity ID. The data being returned is truncated - ten entities at each level, six levels of depth. If you want to opt out of this functionality, contact Segment Support.

@@ -153,7 +153,7 @@ To activate your Linked Audience:
> info "Linked Audiences destinations"
> Linked Audiences only supports [Actions Destinations](/docs/connections/destinations/actions/#available-actions-based-destinations). List destinations aren't supported.
-**Note:** Ensure your [destination has been enabled](/connections/destinations/catalog/) in Segment before you begin the steps below.
+**Note:** Ensure you've [enabled your destination](/connections/destinations/catalog/) in Segment before you begin the steps below.
1. Navigate to **Engage > Audiences**.
2. Select the Linked Audience you set up in the previous step.
@@ -214,7 +214,7 @@ Send a test event to ensure that everything is connected properly and your desti
Enter the destination User id for the profile you want to use to test the event, then click **Send test event to destination**.
-The Event content drop-down shows you a preview of what the data sent to your destination might look like.
+The Event content dropdown shows you a preview of what the data sent to your destination might look like.
## Step 4: Enable your Linked Audience
@@ -239,7 +239,7 @@ You can maintain your run schedule at any time from the audience's **Settings**
You can also click **Run Now** on the Audience Overview page at any time (even if the run schedule is **Interval** Overview **Day and time**) to manually trigger a run on your warehouse and send data to enabled destinations.
-There may be up to a 5 minute delay from the configured start time for audiences that are configured with the **Interval** and **Day and time** run schedules. For example, if you configured an audience with the **Day and time** compute schedule to run on Mondays at 8am, it can compute as late as Monday at 8:05am. This is to help us better manage our system load.
+There may be up to a five minute delay from the configured start time for audiences that are configured with the **Interval** and **Day and time** run schedules. For example, if you configured an audience with the **Day and time** compute schedule to run on Mondays at 8am, it can compute as late as Monday at 8:05am. This is to help us better manage our system load.
## Step 5: Monitor your activation
@@ -269,16 +269,15 @@ Linked Audiences have the following steps in Delivery Overview's pipeline view:
You can create alerts related to the performance and throughput of Linked Audience syncs and receive in-app, email, and Slack notifications when event volume fluctuations occur.
-> info "Generate a Slack webhook to receive Slack notifications"
-> To receive an alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see Slack's [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation.
+> info "Slack and mailing list notification channels require additional setup"
+> Before sending an alert to Slack, you must first create a Slack webhook. For more information about Slack webhooks, see Slack's [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation.
+>
+> While you can only enter one email address per alert when signing up for email alerts, you can send the alert to multiple users by entering the email address of a mailing list. To create a mailing list, refer to the documentation for your email provider, like Google's [Create a group & choose group settings](https://support.google.com/groups/answer/2464926?hl=en){:target="_blank”} for Gmail or Microsoft's [Create and manage distribution groups](https://support.microsoft.com/en-us/office/distribution-groups-e8ba58a8-fab2-4aaf-8aa1-2a304052d2de#bkmk_create){:target="_blank”} for Outlook.
To access Linked Audience alerting, navigate to **Engage > Audiences**, select a Linked Audience, and click the **Alerts** tab.
On the **Alerts** tab, you can create new alerts and view all active alerts for this connection. You can only edit or delete the alerts that you create, unless you have the [Workspace Owner role](/docs/segment-app/iam/roles/).
-> info "Deleting alerts created by other users requires Workspace Owner role"
-> All users can delete alerts that they created, but only those with [Workspace Owner role](/docs/segment-app/iam/roles/) can delete alerts created by other users.
-
#### Activation event health spikes or drops
You can create an Activation event health spikes or drops alert that notifies you when events sent from your audience to a downstream destination have failures to a destination above a certain threshold. For example, if you set a change percentage of 4% and your destination received 100 events from your audience over the first 24 hours, Segment would notify you the following day if your destination ingested fewer than 96 or more than 104 events.
@@ -286,7 +285,7 @@ You can create an Activation event health spikes or drops alert that notifies yo
To create an Activation event health spikes or drops alert:
1. From your Segment workspace's home page, navigate to **Engage > Audiences**.
2. Select the Audience you want to create an alert for, select the Alerts tab, and click **Create alert**.
-3. On the Create alert sidesheet, select the **Activation event health spikes or drops** alert and pick a destination for which you'd like to monitor event health.
+3. On the Create alert side sheet, select the **Activation event health spikes or drops** alert and pick a destination for which you'd like to monitor event health.
4. Enter a percentage threshold to trigger activation event health notifications.
5. Select one or more of the following alert channels:
- **Email**: Select this to receive notifications at the provided email address.
@@ -294,10 +293,6 @@ To create an Activation event health spikes or drops alert:
- **In-app**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app.
6. Click **Save**.
-To make changes to an Activation event health spikes or drops alert, select the icon in the Actions column for the alert and click **Edit**.
-
-To delete a Activation event health spikes or drops alert, select the icon in the Actions column for the alert and click **Delete**.
-
#### Audience size change
You can create an Audience size change alert that notifies you when your audience increases or decreases by a certain threshold. For example, if you set a change percentage of 4% and your destination had 100 members over the first 24 hours, Segment would notify you the following day if your audience had fewer than 96 or more than 104 members.
@@ -308,7 +303,7 @@ You can create an Audience size change alert that notifies you when your audienc
To create an Audience size change alert:
1. From your Segment workspace's home page, navigate to **Engage > Audiences**.
2. Select the Linked Audience you want to create an alert for, select the Alerts tab, and click **Create alert**.
-3. On the Create alert sidesheet, select the **Audience size change alert** and pick a destination for which you'd like to monitor event health.
+3. On the Create alert side sheet, select the **Audience size change alert** and pick a destination for which you'd like to monitor event health.
4. Enter a percentage threshold to trigger audience size change notifications.
5. Select one or more of the following alert channels:
- **Email**: Select this to receive notifications at the provided email address.
@@ -316,10 +311,6 @@ To create an Audience size change alert:
- **In-app**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app.
6. Click **Save**.
-To make changes to an Audience size change alert, select the icon in the Actions column for the alert and click **Edit**.
-
-To delete a Audience size change alert, select the icon in the Actions column for the alert and click **Delete**.
-
## Maintaining Linked Audiences
You can maintain your Linked Audience by accessing these tabs on the main page of your Linked Audience:
diff --git a/src/engage/campaigns/broadcasts.md b/src/engage/campaigns/broadcasts.md
index 55365e2622..81fc89def3 100644
--- a/src/engage/campaigns/broadcasts.md
+++ b/src/engage/campaigns/broadcasts.md
@@ -2,8 +2,8 @@
title: Broadcasts
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers will continue to have access to and support for Engage Premier until Segment announces and end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
Broadcasts are one-time email or SMS campaigns that you can send with Twilio Engage. Use broadcasts for single, one-off occasions like the following:
diff --git a/src/engage/campaigns/email-campaigns.md b/src/engage/campaigns/email-campaigns.md
index 6cdf0bf4fa..14085eaa5b 100644
--- a/src/engage/campaigns/email-campaigns.md
+++ b/src/engage/campaigns/email-campaigns.md
@@ -2,8 +2,8 @@
title: Email Campaigns
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
With Twilio Engage, you can send email and SMS campaigns to users who have opted in to receive your marketing materials. On this page, you’ll learn how to create and send an email campaign.
diff --git a/src/engage/campaigns/index.md b/src/engage/campaigns/index.md
index 07d7c1703a..c1d2fec658 100644
--- a/src/engage/campaigns/index.md
+++ b/src/engage/campaigns/index.md
@@ -2,8 +2,8 @@
title: Campaigns Overview
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
With Engage, you can build email and SMS marketing campaigns within Journeys.
diff --git a/src/engage/campaigns/mobile-push/index.md b/src/engage/campaigns/mobile-push/index.md
index cb1417f437..67fed4416b 100644
--- a/src/engage/campaigns/mobile-push/index.md
+++ b/src/engage/campaigns/mobile-push/index.md
@@ -2,8 +2,8 @@
title: Mobile Push Onboarding
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
This page walks you through the process of setting up mobile push notifications using Segment, Twilio, and Firebase/Apple Developer.
diff --git a/src/engage/campaigns/mobile-push/push-campaigns.md b/src/engage/campaigns/mobile-push/push-campaigns.md
index ccf93dba56..e9288901a3 100644
--- a/src/engage/campaigns/mobile-push/push-campaigns.md
+++ b/src/engage/campaigns/mobile-push/push-campaigns.md
@@ -2,8 +2,8 @@
title: Mobile Push Campaigns
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
With Twilio Engage, you can send campaigns to users who have opted in to receive your marketing materials. On this page, you’ll learn how to create and send a mobile push campaign.
diff --git a/src/engage/campaigns/sms-campaigns.md b/src/engage/campaigns/sms-campaigns.md
index 7dd367fa70..f7bc22fa1f 100644
--- a/src/engage/campaigns/sms-campaigns.md
+++ b/src/engage/campaigns/sms-campaigns.md
@@ -2,8 +2,8 @@
title: SMS Campaigns
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
With Twilio Engage, you can send email and SMS campaigns to users who have opted in to receive your marketing materials. On this page, you’ll learn how to create and send an SMS campaign.
diff --git a/src/engage/campaigns/whatsapp-campaigns.md b/src/engage/campaigns/whatsapp-campaigns.md
index 51ac9cd2bd..91e8476cc0 100644
--- a/src/engage/campaigns/whatsapp-campaigns.md
+++ b/src/engage/campaigns/whatsapp-campaigns.md
@@ -2,9 +2,8 @@
title: WhatsApp Campaigns
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
-## How Engage campaigns work
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
Twilio Engage uses Journeys to send WhatsApp, email, and SMS campaigns. With Journeys, you add conditions and steps that trigger actions like sending a WhatsApp message.
diff --git a/src/engage/content/email/editor.md b/src/engage/content/email/editor.md
index 4d7d9f71e1..1d250b93a2 100644
--- a/src/engage/content/email/editor.md
+++ b/src/engage/content/email/editor.md
@@ -2,8 +2,8 @@
title: Drag and Drop Editor
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
Use Twilio Engage to build email templates with a *what you see is what you get* (WYSIWYG) Drag and Drop Editor. Use drag and drop tools to design the template layout and include user profile traits to personalize the message for each recipient.
diff --git a/src/engage/content/email/template.md b/src/engage/content/email/template.md
index da8d32b446..7cc49e9d51 100644
--- a/src/engage/content/email/template.md
+++ b/src/engage/content/email/template.md
@@ -2,8 +2,8 @@
title: Email Template
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
Use Twilio Engage to build personalized email templates to store and use throughout marketing campaigns.
diff --git a/src/engage/content/mobile-push.md b/src/engage/content/mobile-push.md
index 51ccb881b5..9b07ac80ac 100644
--- a/src/engage/content/mobile-push.md
+++ b/src/engage/content/mobile-push.md
@@ -2,8 +2,8 @@
title: Mobile Push Template
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
Use Twilio Engage to build mobile push templates to include throughout your marketing campaigns.
diff --git a/src/engage/content/organization.md b/src/engage/content/organization.md
index 0170c2efdc..48f7491a8b 100644
--- a/src/engage/content/organization.md
+++ b/src/engage/content/organization.md
@@ -1,11 +1,9 @@
---
title: Organizing Your Templates
plan: engage-premier
-
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
-
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
To add structure to your marketing content, you can organize templates into folders and duplicate them within your Segment space.
## Organize with folders
diff --git a/src/engage/content/sms/template.md b/src/engage/content/sms/template.md
index fb5b0c52c2..f4d9352f52 100644
--- a/src/engage/content/sms/template.md
+++ b/src/engage/content/sms/template.md
@@ -2,9 +2,8 @@
title: SMS Template
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
-
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
Use Twilio Engage to build SMS message templates to include throughout your marketing campaigns.
You can build an SMS template and include personalized content in messages based on user profile traits. Once you build the SMS, Twilio Engage saves the template for you to preview, maintain, and reuse.
diff --git a/src/engage/content/whatsapp.md b/src/engage/content/whatsapp.md
index f76212869f..53e2635173 100644
--- a/src/engage/content/whatsapp.md
+++ b/src/engage/content/whatsapp.md
@@ -2,8 +2,8 @@
title: WhatsApp Template
plan: engage-premier
---
-> info "Engage Premier End of Sale"
-> Engage Premier entered an End of Sale (EOS) period effective June 10, 2024 and is no longer available for new customers. Existing Segment customers have access to and support for Engage Premier until Segment announces an end-of-life (EOL) date. Segment recommends exploring [Twilio Marketing Campaigns](https://www.twilio.com/en-us/sendgrid/marketing-campaigns){:target="_blank"}, as well as Segment's preferred ISV partners, including [Airship](https://www.twilio.com/en-us/blog/airship-integrated-customer-experience){:target="_blank"}, [Braze](https://www.twilio.com/en-us/blog/braze-conversational-marketing-campaigns){:target="_blank"}, [Klaviyo](https://www.twilio.com/en-us/blog/klaviyo-powering-smarter-digital-relationships){:target="_blank"}, [Bloomreach](https://www.twilio.com/en-us/blog/bloomreach-ecommerce-personalization){:target="_blank"}, and [Insider](https://www.twilio.com/en-us/blog/insider-cross-channel-customer-experience){:target="_blank"}.
+> info "Engage Premier End of Life"
+> Engage Premier features, including Channels, Broadcasts, content templates, and Subscriptions, will no longer be available after December 15, 2025.
With Twilio Engage, you can build personalized WhatsApp templates to store and use throughout marketing campaigns.
diff --git a/src/engage/journeys/faq-best-practices.md b/src/engage/journeys/faq-best-practices.md
index 18cfd9fc0a..31a929dfc7 100644
--- a/src/engage/journeys/faq-best-practices.md
+++ b/src/engage/journeys/faq-best-practices.md
@@ -1,5 +1,5 @@
---
-title: Journeys Best Practices and FAQ
+title: Journeys Best Practices and FAQs
plan: engage-foundations
redirect_from:
- '/personas/journeys/faq-best-practices/'
@@ -13,11 +13,11 @@ When you create a multi-branch split, do not create overlapping conditions that
For example:
- In the case where a multi-branch split is based on the conditions `registration form submitted` and `webinar attended`, a user may satisfy both conditions, and therefore is eligible for both paths.
- - To set a priority, branch 2 should then be `who performed registration form submitted and did not perform webinar attended` to ensure mutual exclusivity
+ - To set a priority, branch 2 should then be `who performed registration form submitted and did not perform webinar attended` to ensure mutual exclusivity.
### Add time windows whenever possible
-Add time windows when defining conditions to enforce funnel constraints in a Journey, rather than using an unbounded event condition which operates on the entire history of the user profile. For example, to check if a user has completed an order since receiving an email triggered 7 days ago, use the condition “Order Completed at least 1 time within 7 days.”
+Add time windows when defining conditions to enforce funnel constraints in a journey, rather than using an unbounded event condition which operates on the entire history of the user profile. For example, to check if a user has completed an order since receiving an email triggered 7 days ago, use the condition “Order Completed at least 1 time within 7 days.”
### Suppress targeting with journey lists
@@ -26,17 +26,17 @@ Unlike lists associated with Engage Audiences, users who are added to a journey
2. Create additional journey steps to model the conditions where a user should be removed from targeting. Create a second send to destination step for the removal list.
3. When configuring targeting conditions in the destination interface, use boolean logic to include only those users who are in the initial list AND NOT in the removal list.
-### Review your Journey in drafts first
+### Review your journey in drafts first
-Save your Journey in a draft state so that you can review before you publish it. Once you publish a Journey, you cannot edit select portions of a Journey and Journeys sends data to destinations.
+Save your journey in a draft state so that you can review before you publish it. Once you publish a journey, you cannot edit select portions of the journey and Journeys sends data to destinations.
### Know how to incorporate historical data
-Aside from the entry condition, all Journey step conditions are triggered by future events and existing trait memberships. Event-based conditions only evaluate events that occur *after* the Journey is published.
+Aside from the entry condition, all journey step conditions are triggered by future events and existing trait memberships. Event-based conditions only evaluate events that occur *after* the journey is published.
-When you [include historical data](/docs/engage/journeys/build-journey/#using-historical-data-for-the-entry-step) in a Journey's entry condition, Unify identifies users who previously satisfied the entry condition and adds them to entry. For example, to evaluate if a user has ever used a discount code mid-Journey, create and configure a [Computed Trait](/docs/engage/audiences/computed-traits/#conditions) to select for `discount_used = true` to use in your Journey.
+When you [include historical data](/docs/engage/journeys/build-journey/#using-historical-data-for-the-entry-step) in a journey's entry condition, Unify identifies users who previously satisfied the entry condition and adds them to entry. For example, to evaluate if a user has ever used a discount code mid-journey, create and configure a [Computed Trait](/docs/engage/audiences/computed-traits/#conditions) to select for `discount_used = true` to use in your journey.
-Including historical data doesn't impact any additional Journey steps, however. To include historical data in post-entry conditions, use the following table to identify which conditions will automatically include historical data:
+Including historical data doesn't impact any additional journey steps, however. To include historical data in post-entry conditions, use the following table to identify which conditions will automatically include historical data:
| Condition Type | Automatic Historical Data Inclusion |
| ------------------ | ----------------------------------- |
@@ -46,13 +46,13 @@ Including historical data doesn't impact any additional Journey steps, however.
| Custom Trait | No |
-To include historical data based on custom traits or events that predate the Journey, first build an Audience that includes the targeted data by following these steps:
+To include historical data based on custom traits or events that predate the journey, first build an Audience that includes the targeted data by following these steps:
1. Create a standard Engage Audience **outside of the Journeys builder**.
-2. Add conditions that include the historical event or custom trait you want to include in the Journey.
+2. Add conditions that include the historical event or custom trait you want to include in the journey.
3. After you've created the Audience, return to Journeys and create a **Part of an Audience** condition that references the audience you created in Step 2.
-For example, to include `custom trait = ABC` in a Journey, create an Audience called `ABC` that includes that custom trait, then add the Journey condition **Part of Audience** `ABC`.
+For example, to include `custom trait = ABC` in a journey, create an Audience called `ABC` that includes that custom trait, then add the journey condition **Part of Audience** `ABC`.
Using the **Part of Audience** condition, Journeys then populates the custom trait as if it were using historical data.
@@ -63,17 +63,17 @@ Follow these best practices to test your journeys:
- While in the process of configuring a journey, use dev Spaces to model that journey without affecting production data.
- Connect a data warehouse to each step of the journey to test for success or failure of that step.
- For early version journeys, scaffold Send to Destination steps without connecting to your production advertising or messaging destinations.
-- Verify individual users' progress through the Journey in the Profile explorer view.
+- Verify individual users' progress through the journey in the Profile explorer view.
## FAQs
#### How often do Journeys run?
-Journeys run in real-time, like real-time Audiences in Engage. This means that users will progress through Journeys as Segment receives new events.
+Journeys run in real time, like real-time Audiences in Engage. This means that users will progress through Journeys as Segment receives new events.
-#### Can a user re-enter a Journey?
+#### Can a user re-enter a journey?
-Yes. Users must first exit a Journey, however, before entering it again. To learn more about Journey re-entry, read the [Journey re-entry section](/docs/engage/journeys/build-journey/#journey-re-entry) of the [Build a Journey](/docs/engage/journeys/build-journey/) page.
+Yes. Users must first exit a journey, however, before entering it again. To learn more about journey re-entry, read the [journey re-entry section](/docs/engage/journeys/build-journey/#journey-re-entry) of the [build a Journey](/docs/engage/journeys/build-journey/) page.
#### What destinations does Journeys support?
@@ -81,9 +81,9 @@ Journeys supports all Engage destinations, including Destination Functions. Read
#### What are the reporting capabilities of Journeys?
-When building a Journey, if you check **Use historical data**, you can see the estimated number of users in the initial cohort.
+When building a journey, if you check **Use historical data**, you can see the estimated number of users in the initial cohort.
-Once published, Journeys displays the number of users are in each step of the Journey at any given time.
+Once published, Journeys displays the number of users are in each step of the journey at any given time.
#### How are users sent to downstream destinations?
@@ -94,13 +94,13 @@ For Engage customers, users with either the Engage User or Engage Admin roles ca
#### Why am I seeing duplicate entry or exit events?
-Journeys triggers audience or trait-related events for each email `external_id` on a profile. If a profile has two email addresses, you'll see two Audience Entered and two Audience Exited events for each Journey step. Journeys sends both email addresses to downstream destinations.
+Journeys triggers audience or trait-related events for each email `external_id` on a profile. If a profile has two email addresses, you'll see two Audience Entered and two Audience Exited events for each journey step. Journeys sends both email addresses to downstream destinations.
#### How quickly do user profiles move through Journeys?
-It may take up to five minutes for a user profile to enter each step of a Journey, including the entry condition. For Journey steps that reference a batch audience or SQL trait, Journeys processes user profiles at the same rate as the audience or trait computation. Visit the Engage docs to [learn more about compute times](/docs/engage/audiences/#understanding-compute-times).
+It may take up to five minutes for a user profile to enter each step of a journey, including the entry condition. For journey steps that reference a batch audience or SQL trait, Journeys processes user profiles at the same rate as the audience or trait computation. Visit the Engage docs to [learn more about compute times](/docs/engage/audiences/#understanding-compute-times).
-#### How can I ensure consistent user evaluation in Journey entry conditions that use historical data?
+#### How can I ensure consistent user evaluation in journey entry conditions that use historical data?
When you publish a journey, the entry step begins evaluating users in real time while the historical data backfill runs separately. If a user's events or traits span both real-time and historical data, they might qualify for the journey immediately, even if their full historical data would have disqualified them.
diff --git a/src/engage/journeys/index.md b/src/engage/journeys/index.md
index 6162fa2340..34bacf2fda 100644
--- a/src/engage/journeys/index.md
+++ b/src/engage/journeys/index.md
@@ -5,36 +5,36 @@ redirect_from:
- "/personas/journeys"
---
+Journeys, a feature of [Engage](/docs/engage/), provides a way for marketers to personalize experiences through planning how and when to engage customers with the right campaigns and messages.
-Journeys, a feature of Engage, provides a way for marketers to personalize experiences through planning how and when to engage customers with the right campaigns and messages.
-
-