Skip to content

Release 25.16.01 #7577

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 44 commits into from
Apr 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
ff35758
Update destination functions - including variable scoping.md
sade-wusi Mar 21, 2025
6cb7e33
Update insert functions - include variable scoping.md
sade-wusi Mar 21, 2025
4fb3423
Update src/connections/functions/destination-functions.md
sade-wusi Mar 28, 2025
f0d1a42
Update src/connections/functions/destination-functions.md
sade-wusi Mar 28, 2025
9015fb2
Deprecation Banner
marinhero Apr 10, 2025
672826e
Added permissions prerequisite info
sade-wusi Apr 11, 2025
169b0ec
add private beta tag
forstisabella Apr 14, 2025
60a46df
rm Source-Level Archive Retention Periods
forstisabella Apr 14, 2025
28c2ee5
Update data-retention-policy.md
forstisabella Apr 14, 2025
d932775
[netlify-build]
forstisabella Apr 14, 2025
312397e
Update src/connections/destinations/catalog/actions-tiktok-audiences/…
sade-wusi Apr 14, 2025
a150dfd
Update src/connections/destinations/catalog/actions-tiktok-audiences/…
sade-wusi Apr 14, 2025
7607ec5
improve RETL setup instructions
prayansh Apr 14, 2025
d1ba6b7
info note on junction table joins
stayseesong Apr 14, 2025
87aba65
Update src/connections/reverse-etl/reverse-etl-source-setup-guides/da…
prayansh Apr 15, 2025
e0c3cd5
Merge pull request #7512 from sade-wusi/patch-7
sade-wusi Apr 15, 2025
3b8dbc2
Update src/privacy/data-retention-policy.md
forstisabella Apr 15, 2025
ab27669
edits
stayseesong Apr 16, 2025
5ab7a05
delete materialized views alert
pwseg Apr 16, 2025
7cd354d
delete premier section
pwseg Apr 16, 2025
c588c9c
rewording
pwseg Apr 16, 2025
6da3a55
added whitespace (testing netlify-build)
sade-wusi Apr 16, 2025
1f6d71e
deleted whitespace [netlify-build]
sade-wusi Apr 16, 2025
bdd3a23
quick fix
rchinn1 Apr 16, 2025
fe59363
Merge pull request #7570 from segmentio/delete-premier-section
pwseg Apr 16, 2025
fbb7f57
Merge pull request #7564 from segmentio/private-beta-bidirectional-sync
forstisabella Apr 16, 2025
10c21c6
Merge pull request #7565 from segmentio/remove-source-level-retention
forstisabella Apr 16, 2025
2ce6b74
Merge pull request #7566 from segmentio/retl-instructions
forstisabella Apr 16, 2025
3310fe6
style changes
pwseg Apr 16, 2025
4204e8e
Merge pull request #7514 from sade-wusi/patch-9
pwseg Apr 16, 2025
c52aa4c
fix broken anchor link
pwseg Apr 16, 2025
f7772be
re-write
stayseesong Apr 16, 2025
450d09a
Merge pull request #7560 from segmentio/fb-offline
pwseg Apr 16, 2025
6e514ef
Merge pull request #7562 from segmentio/tiktok-audiences-permissions
pwseg Apr 16, 2025
10ceb70
Linked Events syncs clarification
stayseesong Apr 16, 2025
33de2fa
removed faq from actions-klaviyo
stayseesong Apr 16, 2025
a6b108a
20250416 make catalog
stayseesong Apr 16, 2025
e910f34
Merge pull request #7575 from segmentio/DOC-1098
stayseesong Apr 16, 2025
6b9bac6
Merge pull request #7574 from segmentio/DOC-1097
stayseesong Apr 16, 2025
ce78b4c
Merge pull request #7573 from segmentio/7543-content-broken-link-abou…
pwseg Apr 16, 2025
08fcb40
Merge pull request #7569 from segmentio/delete-materialized-tables-ca…
pwseg Apr 16, 2025
7c8ef46
Merge pull request #7572 from rchinn1/Facebook-Pixel-quick-fix
pwseg Apr 16, 2025
31f56ce
Merge pull request #7576 from segmentio/20250416_makecatalog
stayseesong Apr 16, 2025
6ce4b1b
Merge pull request #7567 from segmentio/DOC-1090
stayseesong Apr 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/_data/catalog/destination_categories.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# destination categories last updated 2025-04-10
# destination categories last updated 2025-04-16
items:
- display_name: A/B Testing
slug: a-b-testing
Expand Down
2 changes: 1 addition & 1 deletion src/_data/catalog/destinations.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# destination data last updated 2025-04-10
# destination data last updated 2025-04-16
items:
- id: 637e8d185e2dec264895ea89
display_name: 1Flow
Expand Down
2 changes: 1 addition & 1 deletion src/_data/catalog/destinations_private.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# destination data last updated 2025-04-10
# destination data last updated 2025-04-16
items:
- id: 54521fd925e721e32a72eee1
display_name: Pardot
Expand Down
2 changes: 1 addition & 1 deletion src/_data/catalog/source_categories.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# source categories last updated 2025-04-10
# source categories last updated 2025-04-16
items:
- display_name: A/B Testing
slug: a-b-testing
Expand Down
2 changes: 1 addition & 1 deletion src/_data/catalog/sources.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# AUTOGENERATED FROM PUBLIC API. DO NOT EDIT
# sources last updated 2025-04-10
# sources last updated 2025-04-16
items:
- id: 8HWbgPTt3k
display_name: .NET
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,10 +107,6 @@ Some customers experience 403 errors when sending audience data to Klaviyo throu

To reduce the number of `403` errors that you encounter, enable [IP Allowlisting](/docs/connections/destinations/#ip-allowlisting) for your workspace. For more information the range of IP addresses Klaviyo uses for integration traffic, see Klaviyo's [How to allowlist Klaviyo integration traffic IP addresses](https://help.klaviyo.com/hc/en-us/articles/19143781289115){:target="_blank”} documentation.

#### Can I send Engage Audiences to a pre-created Klaviyo List?

No. Engage audiences are designed to initiate the creation of new lists in Klaviyo when you use the "Add Profile to List - Engage" mapping. You cannot link Engage lists to existing Klaviyo lists and cannot edit the List ID for Engage audiences.

#### How can I unsuppress a profile when adding it to a list?

When adding a user to a list, our action make use of the [Bulk Profile Import](https://developers.klaviyo.com/en/reference/spawn_bulk_profile_import_job){:target="_blank”} endpoint (when batching is enabled), and the [Add Profile To List](https://developers.klaviyo.com/en/reference/create_list_relationships){:target="_blank”} endpoint for non-batched requests. Both of which will not update a users suppression status if they were previously suppressed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ By using Segment's TikTok Audiences destination, you can increase traffic and dr

### Prerequisites

Before connecting to the TikTok Audiences destination, you must have a [TikTok Ads Manager](https://www.tiktok.com/business/en-US/solutions/ads-manager){:target="_blank"} account.
Before connecting to the TikTok Audiences destination, you must have a [TikTok Ads Manager](https://www.tiktok.com/business/en-US/solutions/ads-manager){:target="_blank"} account, with either Admin or Operator permissions to create and manage campaigns in TikTok.

For more details on account and access level permissions, refer to [TikTok's documentation](https://ads.tiktok.com/help/article/how-to-assign-asset-level-permissions?lang=en){:target="_blank"}.

### TikTok Audience Segments

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ id: 58ae54dc70a3e552b95415f6
---
[Facebook Offline Conversions](https://www.facebook.com/business/help/1782327938668950?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} enables offline event tracking, so marketers can run campaigns, upload transaction data, and compare in-store transactions.

> info "Offline Conversions API deprecation"
> Meta will [discontinue the Offline Conversions API](https://developers.facebook.com/docs/graph-api/changelog/version17.0#offline-conversions-api){:target="_blank"} in May 2025. As a result, this destination will stop accepting data at that time and will no longer be available for use. To continue sending offline conversion events to Meta, migrate to the [Facebook Conversions API (Actions)](/docs/connections/destinations/catalog/actions-facebook-conversions-api/#purchase) destination, which supports offline event tracking.

> info "Customer Information Parameters Requirements"
> As of Facebook Marketing API v13.0+, Facebook began enforcing new requirements for customer information parameters (match keys). To ensure your events don't throw an error, Segment recommends that you review [Facebook’s new requirements](https://developers.facebook.com/docs/graph-api/changelog/version13.0#conversions-api){:target="_blank"}.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ In addition, Segment sends the following event types as Standard events:
- `Products Searched`, which Segment sends as `Search`
- `Checkout Started`, which Segment sends as `InitiateCheckout`

Facebook requires a currency for `Purchase` events. If you leave it out a currency, Segment will set a default value of `USD`.
Facebook requires a currency for `Purchase` events. If you leave out a currency, Segment will set a default value of `USD`.

You can set custom properties for the events listed above. Use the setting "Standard Events custom properties" to list all the properties you want to send.

Expand Down Expand Up @@ -193,7 +193,7 @@ If you're using real estate, travel, or automotive [Dynamic Ads](https://www.fac

For most implementations, Segment recommends leaving these mappings blank. By default, Segment sets `content_type` to "product".

The same mapping can be used to change the `content_id` from the default value (product_id or the sku) to anything specific for Meta Pixel. For more information about required Meta Pixel events, see Meta's [Required Meta Pixel events and parameters for Advantage+ catalog ads](https://www.facebook.com/business/help/606577526529702?id=1205376682832142){:target="_blank”} documentation.
The same mapping can be used to change the `content_ids` from the default value (product_id or the sku) to anything specific for Meta Pixel. For more information about required Meta Pixel events, see Meta's [Required Meta Pixel events and parameters for Advantage+ catalog ads](https://www.facebook.com/business/help/606577526529702?id=1205376682832142){:target="_blank”} documentation.

## Troubleshooting

Expand Down
6 changes: 6 additions & 0 deletions src/connections/functions/destination-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ To change which event type the handler listens to, you can rename it to the name
> 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.

### Variable scoping

When declaring settings variables, declare them in the function handler rather than globally in your function. This prevents you from leaking the settings values across other function instances.

The handler for destination functions is event-specific. For example, you might have an `onTrack()`or `onIdentify()` function handler.

### Errors and error handling

{% include content/functions/errors-and-error-handling.md %}
Expand Down
9 changes: 7 additions & 2 deletions src/connections/functions/insert-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,12 @@ To ensure the Destination processes an event payload modified by the function, r
> 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.

### Variable scoping

When declaring settings variables, make sure to declare them in the function handler rather than globally in your function. This prevents you leaking the settings values across other function instances.

The handler for insert functions is event-specific, for example, `onTrack()`, `onIdentify()`, and so on.

### Errors and error handling

Segment considers a function's execution successful if it finishes without error. You can `throw` an error to create a failure on purpose. Use these errors to validate event data before processing it to ensure the function works as expected.
Expand Down Expand Up @@ -176,8 +182,7 @@ async function onIdentify(event) {
```
If you don't supply a function for an event type, Segment throws an `EventNotSupported` error by default.


You can read more about [error handling](#destination-insert-functions-logs-and-errors) below.
See [errors and error handling](#errors-and-error-handling) for more information on supported error types and how to troubleshoot them.

## Runtime and dependencies

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,26 @@ At a high level, when you set up Databricks for Reverse ETL, the configured serv
## Required permissions
* Make sure the service principal you use to connect to Segment has permissions to use that warehouse. In the Databricks console go to **SQL warehouses** and select the warehouse you're using. Navigate to **Overview > Permissions** and make sure the service principal you use to connect to Segment has *can use* permissions.

Note the Service Principal UUID from the [User Management Page](https://accounts.cloud.databricks.com/user-management/serviceprincipals/){:target="_blank”} (under Service Principals) for the following SQL operations.

* To grant access to read data from the tables used in the model query, run:

```
GRANT USAGE ON SCHEMA <schema_name> TO `<service principal you are using to connect to Segment>`;
GRANT SELECT, READ_METADATA ON SCHEMA <schema_name> TO `<service principal you are using to connect to Segment>`;
GRANT USAGE ON SCHEMA <schema_name> TO `<service principal ID you are using to connect to Segment>`;
GRANT SELECT, READ_METADATA ON SCHEMA <schema_name> TO `<service principal ID you are using to connect to Segment>`;
```

* To grant Segment access to create a schema to keep track of the running syncs, run:

```
GRANT CREATE on catalog <name of the catalog, usually hive_metastore or main if using unity-catalog> TO `<service principal you are using to connect to Segment>`;
GRANT CREATE on catalog <name of the catalog, usually hive_metastore or main if using unity-catalog> TO `<service principal ID you are using to connect to Segment>`;
```

* If you want to create the schema yourself instead and then give Segment access to it, run:

```
CREATE SCHEMA IF NOT EXISTS __segment_reverse_etl;
GRANT ALL PRIVILEGES ON SCHEMA __segment_reverse_etl TO `<service principal you are using to connect to Segment>`;
GRANT ALL PRIVILEGES ON SCHEMA __segment_reverse_etl TO `<service principal ID you are using to connect to Segment>`;
```

## Set up guide
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,15 @@ To set up Postgres with Reverse ETL:

-- allows the "segment" user to create new schemas on the specified database. (this is the name you chose when provisioning your cluster)
GRANT CREATE ON DATABASE "<enter database name here>" TO "segment";

-- create Segment schema
CREATE SCHEMA __segment_reverse_etl;

-- Allow user to use the Segment schema
GRANT USAGE ON SCHEMA __segment_reverse_etl TO segment;

-- Grant all privileges on all existing tables in the Segment schema
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA __segment_reverse_etl TO segment;
```
4. Make sure the user has correct access permissions to the database.
5. Follow the steps listed in the [Add a source](/docs/connections/reverse-etl/setup/#step-1-add-a-source) section to finish adding Postgres as a source.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,21 @@ To set up Redshift with Reverse ETL:
2. Follow the [networking instructions](/docs/connections/storage/catalog/redshift/#networking) to configure the correct network and security settings.
3. Run the SQL commands below to create a user named `segment`.

```ts
```sql
-- create a user named "segment" that Segment will use when connecting to your Redshift cluster.
CREATE USER segment PASSWORD '<enter password here>';

-- allows the "segment" user to create new schemas on the specified database. (this is the name you chose when provisioning your cluster)
GRANT CREATE ON DATABASE "<enter database name here>" TO "segment";

-- create Segment schema
CREATE SCHEMA __segment_reverse_etl;

-- Allow user to use the Segment schema
GRANT USAGE ON SCHEMA __segment_reverse_etl TO segment;

-- Grant all privileges on all current tables in the Segment schema
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA __segment_reverse_etl TO segment;
```
4. Follow the steps listed in the [Add a source](/docs/connections/reverse-etl/setup/#step-1-add-a-source) section to finish adding Redshift as your source.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ Follow the instructions below to set up the Segment Snowflake connector. Segment
-- database access
GRANT USAGE ON DATABASE segment_reverse_etl TO ROLE segment_reverse_etl;
GRANT CREATE SCHEMA ON DATABASE segment_reverse_etl TO ROLE segment_reverse_etl;
GRANT CREATE TABLE ON SCHEMA __segment_reverse_etl TO ROLE segment_reverse_etl;
```
6. Enter and run one of the following code snippets below to create the user Segment uses to run queries. For added security, Segment recommends creating a user that authenticates using a key pair.

Expand Down
51 changes: 2 additions & 49 deletions src/engage/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,56 +22,9 @@ Add detail to user profiles with new traits and use them to power personalized m
- [**Predictions**:](/docs/unify/traits/predictions/) Predict the likelihood that users will perform custom events tracked in Segment, like LTV, churn, and purchase.

#### Build Audiences
Create lists of users or accounts that match specific criteria. For example, after creating an `inactive accounts` audience that lists paid accounts with no logins in 60 days, you can push the audience to your analytics tools or send an SMS, email, or WhatsApp campaign with Engage Channels. Learn more about [Engage audiences](/docs/engage/audiences/).
Create lists of users or accounts that match specific criteria. For example, after creating an `inactive accounts` audience that lists paid accounts with no logins in 60 days, you can push the audience to your analytics tools or send an SMS, email, or WhatsApp campaign with Engage Channels. Learn more about [Engage audiences](/docs/engage/audiences/).

#### Sync audiences to downstream tools
Once you create your Computed Traits and Audiences, Engage sends them to your Segment Destinations in just a few clicks. You can use these Traits and Audiences to personalize messages across channels, optimize ad spend, and improve targeting. You can also use the [Profile API](/docs/unify/profile-api) to build in-app and onsite personalization. Learn more about [using Engage data](/docs/engage/using-engage-data/) and the [Profile API](/docs/unify/profile-api).

{% include components/reference-button.html href="https://segment.com/customers/drift/" icon="personas.svg" title="Personalizing marketing campaigns" description="Marketing teams use Engage to run real-time multi-channel marketing campaigns based off specific user attributes they've computed in Engage. Read about how Drift used Engage to increase prospect engagement by 150% in two months." %}

## Market to customers with Engage Premier and Channels

To send email, SMS, and WhatsApp campaigns with Engage Channels, you'll connect a [Twilio messaging service](https://support.twilio.com/hc/en-us/articles/223181308-Getting-started-with-Messaging-Services){:target="blank"}, [SendGrid subuser account](https://docs.sendgrid.com/ui/account-and-settings/subusers#create-a-subuser){:target="blank"}, and [WhatsApp messaging service](https://www.twilio.com/docs/whatsapp/self-sign-up){:target="blank"} to your Segment Engage space. Use existing accounts, or create new ones.

View the [onboarding steps](/docs/engage/onboarding/) for more on how to connect Twilio and SendGrid accounts.

#### Send email, SMS, and WhatsApp messages in Journeys

Use Engage to build email, SMS, and WhatsApp campaigns within [Journeys](/docs/engage/journeys/). Send campaigns to [subscribed users](#user-subscriptions) based on event behavior and profile traits. With [message analytics](#message-analytics), you can track the performance of your campaigns.

- **Send Email**: [Build email campaigns](/docs/engage/campaigns/email-campaigns/) with existing templates, or create a new email template within Journeys. Before you send the email, test the template and set [conversion goals](#conversion-goals).

- **Send SMS messages**: [Build SMS campaigns](/docs/engage/campaigns/sms-campaigns/) to message users in real-time as a step in a Journey. For example, create an abandoned cart campaign that texts users a reminder to complete their purchase, along with a promo code. Add [merge tags](#personalize-with-merge-tags) and set conversion goals.

- **Send WhatsApp messages**: [Build WhatsApp campaigns](/docs/engage/campaigns/whatsapp-campaigns) that deliver messages to your customers on the world's most used messaging app.

To learn more, visit the [CSV Uploader](/docs/engage/profiles/csv-upload/) documentation.

#### Build Email, SMS, and WhatsApp message templates

Build personalized [email](/docs/engage/content/email/template/), [SMS](/docs/engage/content/sms/template), and [WhatsApp](/docs/engage/content/whatsapp) templates in Twilio Engage for use in your campaigns. Design email templates with a WYSIWYG [Drag and Drop Editor](/docs/engage/content/email/editor/) or the [HTML Editor](/docs/engage/content/email/html-editor/). Engage saves the templates for you to preview, edit, and reuse throughout Journeys.

#### Personalize with merge tags
Insert real-time user profile traits from merge tags to personalize each message. For example, address recipients by name or highlight new products from a user's favorite brand.

#### CSV Uploader
Use the CSV uploader to add or update user profiles and [subscription states](/docs/engage/user-subscriptions/). To learn more, visit the [CSV Uploader](/docs/engage/profiles/csv-upload/) documentation.

#### User subscriptions

Set user subscription states in two ways:
- [Upload a CSV file](/docs/engage/profiles/csv-upload/) with lists of users along with their phone, email, and WhatsApp subscription states.
- Programmatically with Segment's [Public API](https://api.segmentapis.com/docs/spaces/#replace-messaging-subscriptions-in-spaces){:target="blank"}

Use Engage to add subscription states to user email addresses and phone numbers. Subscription states help determine which users you can send campaigns to in Engage. You can set user subscription states with a [CSV file upload](/docs/engage/profiles/csv-upload/), or programmatically with Segment's [Public API](https://api.segmentapis.com/docs/spaces/#replace-messaging-subscriptions-in-spaces){:target="blank"}.

#### Message Analytics
With analytics in Engage, you can monitor real-time conversion data. Track message performance and customer interaction beyond clicks and opens. Use campaign dashboards to view events such as `Email Delivered`, `Unsubscribed`, `Spam Reported`, and more.

#### Conversion Goals

For each message step in a Journey, you can set conversion conditions with events and properties in your Segment space. Then, define a duration after message delivery to track goals.

For example, track users who perform the event **Order Completed** with a promo code that you send them.

Visit [Message Analytics](/docs/engage/analytics/) to learn more.
{% include components/reference-button.html href="https://segment.com/customers/drift/" icon="personas.svg" title="Personalizing marketing campaigns" description="Marketing teams use Engage to run real-time multi-channel marketing campaigns based off specific user attributes they've computed in Engage. Read about how Drift used Engage to increase prospect engagement by 150% in two months." %}
Loading
Loading