diff --git a/_docs/_api/api_limits.md b/_docs/_api/api_limits.md index 1b7ee724789..22c848cf3f1 100644 --- a/_docs/_api/api_limits.md +++ b/_docs/_api/api_limits.md @@ -85,12 +85,12 @@ If you have questions about API limits, contact your customer success manager or ### Optimal delay between endpoints {% alert note %} -We recommend that you allow for a 5-minute delay between consecutive endpoint calls to minimize errors. +We recommend that you allow for a 5-minute delay between consecutive endpoint calls to multiple endpoints to minimize errors. {% endalert %} Understanding the optimal delay between endpoints is crucial when making consecutive calls to the Braze API. Problems arise when endpoints depend on the successful processing of other endpoints, and if called too soon, could raise errors. For example, if you're assigning users an alias via our `/user/alias/new` endpoint, and then hitting that alias to send a custom event via our `/users/track` endpoint, how long should you wait? -Under normal conditions, the time for our data eventual consistency to occur is 10–100ms (1/10 of a second). However, there can be some cases where it takes longer for that consistency to occur. Therefore, we recommend that you allow for a 5-minute delay between making subsequent calls to minimize the probability of error. +Under normal conditions, the time for our data eventual consistency to occur is 10–100ms (1/10 of a second). However, there can be some cases where it takes longer for that consistency to occur. Therefore, we recommend that you allow for a 5-minute delay between making subsequent calls to multiple endpoints to minimize the probability of error. This recommendation does not apply to consecutive endpoint calls to the same endpoint. [1]: {{site.baseurl}}/api/endpoints/messaging/ [2]: {{site.baseurl}}/api/objects_filters/connected_audience/ diff --git a/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/delete_catalog_items_bulk.md b/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/delete_catalog_items_bulk.md index 76188bdc61f..6715a1d3b99 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/delete_catalog_items_bulk.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/delete_catalog_items_bulk.md @@ -17,12 +17,6 @@ description: "This article outlines details about the Delete Multiple Catalog It Use this endpoint to delete multiple items in your catalog. Each request can support up to 50 items. This endpoint is asynchronous. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 100 requests per minute between all asynchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/patch_catalog_items_bulk.md b/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/patch_catalog_items_bulk.md index 6d0c951b2a0..757f8187bca 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/patch_catalog_items_bulk.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/patch_catalog_items_bulk.md @@ -18,12 +18,6 @@ description: "This article outlines details about the Edit Multiple Catalog Item Use this endpoint to edit multiple items in your catalog. Each request can support up to 50 items. This endpoint is asynchronous. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 100 requests per minute between all asynchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/post_create_catalog_items_bulk.md b/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/post_create_catalog_items_bulk.md index 367ca81475c..357b13297f3 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/post_create_catalog_items_bulk.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/asynchronous/post_create_catalog_items_bulk.md @@ -17,12 +17,6 @@ description: "This article outlines details about the Create Multiple Catalog It Use this endpoint to create multiple items in your catalog. Each request can support up to 50 items. This endpoint is asynchronous. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 100 requests per minute between all asynchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/delete_catalog_item.md b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/delete_catalog_item.md index 0b836364518..9099aa3af55 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/delete_catalog_item.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/delete_catalog_item.md @@ -17,12 +17,6 @@ description: "This article outlines details about the Delete Catalog Item Braze Use this endpoint to delete an item in your catalog. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 50 requests per minute between all synchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_item_details.md b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_item_details.md index cd3a09989b2..270535cc488 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_item_details.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_item_details.md @@ -17,12 +17,6 @@ description: "This article outlines details about the List Catalog Item Details Use this endpoint to return a catalog item and its content. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 50 requests per minute between all synchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_items_details_bulk.md b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_items_details_bulk.md index 9adaccc0293..9e4b62a5b31 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_items_details_bulk.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/get_catalog_items_details_bulk.md @@ -17,12 +17,6 @@ description: "This article outlines details about the List Multiple Catalog Item Use this endpoint to return multiple catalog items and their content. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 50 requests per minute between all synchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/patch_catalog_item.md b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/patch_catalog_item.md index 56d66a291fc..f20bef3e198 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/patch_catalog_item.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/patch_catalog_item.md @@ -17,12 +17,6 @@ description: "This article outlines details about the Edit Catalog Item Braze en Use this endpoint to edit an item in your catalog. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate Limit This endpoint has a shared rate limit of 50 requests per minute between all synchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/post_create_catalog_item.md b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/post_create_catalog_item.md index 9328be0b5f1..7b9888d3017 100644 --- a/_docs/_api/endpoints/catalogs/catalog_items/synchronous/post_create_catalog_item.md +++ b/_docs/_api/endpoints/catalogs/catalog_items/synchronous/post_create_catalog_item.md @@ -17,12 +17,6 @@ description: "This article outlines details about the Create Catalog Item Braze Use this endpoint to create an item in your catalog. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 50 requests per minute between all synchronous catalog item endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_management/synchronous/delete_catalog.md b/_docs/_api/endpoints/catalogs/catalog_management/synchronous/delete_catalog.md index 5ce36214614..5224f10568d 100644 --- a/_docs/_api/endpoints/catalogs/catalog_management/synchronous/delete_catalog.md +++ b/_docs/_api/endpoints/catalogs/catalog_management/synchronous/delete_catalog.md @@ -17,12 +17,6 @@ description: "This article outlines details about the Delete Catalog Braze endpo Use this endpoint to delete a catalog. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 5 requests per minute between all synchronous catalog endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_management/synchronous/get_list_catalogs.md b/_docs/_api/endpoints/catalogs/catalog_management/synchronous/get_list_catalogs.md index e443c6fdf8f..c279b2025de 100644 --- a/_docs/_api/endpoints/catalogs/catalog_management/synchronous/get_list_catalogs.md +++ b/_docs/_api/endpoints/catalogs/catalog_management/synchronous/get_list_catalogs.md @@ -17,12 +17,6 @@ description: "This article outlines details about the List Catalogs Braze endpoi Use this endpoint to return a list of catalogs in an app group. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 5 requests per minute between all synchronous catalog endpoints. diff --git a/_docs/_api/endpoints/catalogs/catalog_management/synchronous/post_create_catalog.md b/_docs/_api/endpoints/catalogs/catalog_management/synchronous/post_create_catalog.md index 569578a3bf2..32162ff408c 100644 --- a/_docs/_api/endpoints/catalogs/catalog_management/synchronous/post_create_catalog.md +++ b/_docs/_api/endpoints/catalogs/catalog_management/synchronous/post_create_catalog.md @@ -17,12 +17,6 @@ description: "This article outlines details about the Create Catalog Braze endpo Use this endpoint to create a catalog. -{% alert important %} -Support for this endpoint is currently in early access. Contact your Braze account manager if you are interested in participating in the early access. -{% endalert %} - -If you'd like to share your feedback on this endpoint or make a request, contact the Braze Catalogs team at [catalogs-product@braze.com](mailto:catalogs-product@braze.com) - ## Rate limit This endpoint has a shared rate limit of 5 requests per minute between all synchronous catalog endpoints. diff --git a/_docs/_api/endpoints/preference_center/get_view_details_preference_center.md b/_docs/_api/endpoints/preference_center/get_view_details_preference_center.md index f1cf6ad573d..1d3e8a28573 100644 --- a/_docs/_api/endpoints/preference_center/get_view_details_preference_center.md +++ b/_docs/_api/endpoints/preference_center/get_view_details_preference_center.md @@ -38,10 +38,11 @@ curl --location -g --request GET https://rest.iad-01.braze.com/preference_center "preference_center_api_id": "preference_center_api_id", "created_at": "example_time_created", "updated_at": "example_time_updated", + "preference_center_title": "Example preference center title", "preference_center_page_html": "HTML for preference center here", "confirmation_page_html": "HTML for confirmation page here", "redirect_page_html": null } ``` -{% endapi %} \ No newline at end of file +{% endapi %} diff --git a/_docs/_api/endpoints/preference_center/post_create_preference_center.md b/_docs/_api/endpoints/preference_center/post_create_preference_center.md index 29a0ab4c8ee..a10588f5718 100644 --- a/_docs/_api/endpoints/preference_center/post_create_preference_center.md +++ b/_docs/_api/endpoints/preference_center/post_create_preference_center.md @@ -34,6 +34,7 @@ Authorization: Bearer YOUR-REST-API-KEY ```json { "name": "string", + "preference_center_title": "string", "preference_center_page_html": "string", "confirmation_page_html": "string" } @@ -44,6 +45,7 @@ Authorization: Bearer YOUR-REST-API-KEY | Parameter | Required | Data Type | Description | | --------- | ---------| --------- | ----------- | |`name`| Required | String | The name of the preference center that meets the following requirements:
- Only contains letters, numbers, hyphens, and underscores
- Does not have spaces | +|`preference_center_title`| Optional | String | The title for the preference center and confirmation pages. If a title is not specified, the title of the pages will default to "Preference Center". | |`preference_center_page_html`| Required | String | The HTML for the preference center page. | |`confirmation_page_html`| Required | String | The HTML for the confirmation page. | {: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4} @@ -89,4 +91,4 @@ Refer to the following Liquid tags that can be included in your HTML to generate ``` {% endraw %} -{% endapi %} \ No newline at end of file +{% endapi %} diff --git a/_docs/_api/endpoints/preference_center/put_update_preference_center.md b/_docs/_api/endpoints/preference_center/put_update_preference_center.md index c97191999b6..319172fec7b 100644 --- a/_docs/_api/endpoints/preference_center/put_update_preference_center.md +++ b/_docs/_api/endpoints/preference_center/put_update_preference_center.md @@ -34,6 +34,7 @@ Authorization: Bearer YOUR-REST-API-KEY ``` { "name": "preference_center_name", + "preference_center_title": "string", "preference_center_page_html": "string", "confirmation_page_html": "string" } @@ -44,6 +45,7 @@ Authorization: Bearer YOUR-REST-API-KEY | Parameter | Required | Data Type | Description | | --------- | ---------| --------- | ----------- | |`preference_center_page_html`| Required | String | The HTML for the preference center page. | +|`preference_center_title`| Optional | String | The title for the preference center and confirmation pages. If a title is not specified, the title of the pages will default to "Preference Center". | |`confirmation_page_html`| Required | String | The HTML for the confirmation page. | {: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4} @@ -55,6 +57,7 @@ curl --location --request POST 'https://rest.iad-01.braze.com/preference_center/ --header 'Authorization: Bearer YOUR-API-KEY-HERE' \ --data-raw '{ "name": "Example", + "preference_center_title": "Example Preference Center Title", "preference_center_page_html": "HTML for preference center here" "confirmation_page_html": "HTML here with a message to users here" @@ -73,4 +76,4 @@ curl --location --request POST 'https://rest.iad-01.braze.com/preference_center/ ``` {% endraw %} -{% endapi %} \ No newline at end of file +{% endapi %} diff --git a/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status.md b/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status.md index 9638cc675d5..b3cfb3262b5 100644 --- a/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status.md +++ b/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status.md @@ -70,8 +70,8 @@ Authorization: Bearer YOUR-REST-API-KEY This property should not be used for updating a user's profile information. Use the [/users/track]({{site.baseurl}}/api/endpoints/user_data/post_user_track/) property instead. -{% alert important %} -When creating new users via the [/users/track]({{site.baseurl}}/api/endpoints/user_data/post_user_track/) endpoint, you should leave a delay of around 2 minutes before adding users to the relevant Subscription Group to allow Braze time to fully create the user profile. +{% alert tip %} +When creating new users via the [/users/track]({{site.baseurl}}/api/endpoints/user_data/post_user_track/) endpoint, you can set subscription groups within the user attributes object, which allows you to create a user and set the subscription group state in one API call. {% endalert %} ## Request parameters diff --git a/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status_v2.md b/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status_v2.md index 2cd077f763b..f957a2f3a52 100644 --- a/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status_v2.md +++ b/_docs/_api/endpoints/subscription_groups/post_update_user_subscription_group_status_v2.md @@ -51,11 +51,10 @@ Authorization: Bearer YOUR-REST-API-KEY } ``` -{% alert important %} -When creating new users via the [/users/track]({{site.baseurl}}/api/endpoints/user_data/post_user_track/) endpoint, you should leave a delay of around 2 minutes before adding users to the relevant Subscription Group to allow Braze time to fully create the user profile. +{% alert tip %} +When creating new users via the [/users/track]({{site.baseurl}}/api/endpoints/user_data/post_user_track/) endpoint, you can set subscription groups within the user attributes object, which allows you to create a user and set the subscription group state in one API call.

Note that using the [/users/track]({{site.baseurl}}/api/endpoints/user_data/post_user_track/) endpoint to create a new user and update their subscription groups is currently in early access. Contact your Braze customer success manager if you're interested in participating in the early access. {% endalert %} - ## Request parameters | Parameter | Required | Data Type | Description | diff --git a/_docs/_api/endpoints/user_data/post_user_track.md b/_docs/_api/endpoints/user_data/post_user_track.md index 4ca48a71dde..13f002a12d1 100644 --- a/_docs/_api/endpoints/user_data/post_user_track.md +++ b/_docs/_api/endpoints/user_data/post_user_track.md @@ -145,6 +145,42 @@ curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \ }` ``` +## Example request to set subscription groups + +This example shows how you can create a user and set their subscription group within the user attributes object. + +{% alert important %} +Using endpoint to create a new user and update their subscription groups is currently in early access. Contact your Braze customer success manager if you're interested in participating in the early access. +{% endalert %} + +``` +curl --location --request POST 'https://rest.iad-01.braze.com/users/track' \ +--header 'Content-Type: application/json' \ +--header 'Authorization: Bearer YOUR-API-KEY-HERE' \ +--data-raw '{ + "attributes": [ + { + "external_id": "user_identifier", + "email": "example@email.com", + "email_subscribe": "subscribed", + "subscription_groups" : [{ + "subscription_group_id": "subscription_group_identifier_1", + "subscription_state": "unsubscribed" + }, + { + "subscription_group_id": "subscription_group_identifier_2", + "subscription_state": "subscribed" + }, + { + "subscription_group_id": "subscription_group_identifier_3", + "subscription_state": "subscribed" + } + ] + } + ] +}' +``` + ## Responses When using any of the aforementioned API requests, you should receive one of the following three general responses: diff --git a/_docs/_api/objects_filters/user_attributes_object.md b/_docs/_api/objects_filters/user_attributes_object.md index 0fa6a73a7a8..6eb629a58ae 100644 --- a/_docs/_api/objects_filters/user_attributes_object.md +++ b/_docs/_api/objects_filters/user_attributes_object.md @@ -115,6 +115,7 @@ The following user profile fields are case sensitive, so be sure to reference th | phone | (string) | | push_subscribe | (string) Available values are "opted_in" (explicitly registered to receive push messages), "unsubscribed" (explicitly opted out of push messages), and "subscribed" (neither opted in nor out). | | push_tokens | Array of objects with `app_id` and `token` string. You may optionally provide a `device_id` for the device this token is associated with, e.g., `[{"app_id": App Identifier, "token": "abcd", "device_id": "optional_field_value"}]`. If a `device_id` is not provided, one will be randomly generated. | +| subscription_groups| Array of objects with `subscription_group_id` and `subscription_state` string. | | time_zone | (string) Of time zone name from [IANA Time Zone Database][26] (e.g., "America/New_York" or "Eastern Time (US & Canada)"). Only valid time zone values will be set. | | twitter | Hash containing any of `id` (integer), `screen_name` (string, Twitter handle), `followers_count` (integer), `friends_count` (integer), `statuses_count` (integer). | {: .reset-td-br-1 .reset-td-br-2} @@ -123,6 +124,8 @@ Language values that are explicitly set via this API will take precedence over t #### User attribute example request +This example contains two user attribute objects with the allowed 75 requests per API call. + ```json POST https://YOUR_REST_API_URL/users/track Content-Type: application/json @@ -147,14 +150,11 @@ Authorization: Bearer YOUR-REST-API-KEY "user_alias" : { "alias_name" : "device123", "alias_label" : "my_device_identifier"}, "first_name" : "Alice", "has_profile_picture" : false, - } + }, ] } ``` -This example contains two User Attribute objects of the allowed 75 per API call. - - [2]: {{site.baseurl}}/user_guide/data_and_analytics/user_data_collection/language_codes/ [3]: {{site.baseurl}}/help/help_articles/push/push_token_migration/ [6]: {{site.baseurl}}/developer_guide/platform_wide/analytics_overview/#arrays diff --git a/_docs/_developer_guide/platform_integration_guides/android/in-app_messaging/integration.md b/_docs/_developer_guide/platform_integration_guides/android/in-app_messaging/integration.md index e954b917e40..6a2ed09ac6e 100644 --- a/_docs/_developer_guide/platform_integration_guides/android/in-app_messaging/integration.md +++ b/_docs/_developer_guide/platform_integration_guides/android/in-app_messaging/integration.md @@ -207,7 +207,6 @@ class MyApplication : Application() { {% endtab %} {% endtabs %} -See the [`BrazeActivityLifecycleCallbackListener`][83] constructor KDocs for more information. [34]: https://appboy.github.io/appboy-android-sdk/kdoc/braze-android-sdk/com.braze.ui.inappmessage/-braze-in-app-message-manager/index.html [69]: https://appboy.github.io/appboy-android-sdk/kdoc/braze-android-sdk/com.braze.ui.inappmessage/-braze-in-app-message-manager/ensure-subscribed-to-in-app-message-events.html @@ -225,7 +224,6 @@ See the [`BrazeActivityLifecycleCallbackListener`][83] constructor KDocs for mor [50]: https://appboy.github.io/appboy-android-sdk/kdoc/braze-android-sdk/com.braze.models.inappmessage/-message-button/index.html [51]: https://appboy.github.io/appboy-android-sdk/kdoc/braze-android-sdk/com.braze.models.inappmessage/-in-app-message-html-full/index.html [52]: https://appboy.github.io/appboy-android-sdk/kdoc/braze-android-sdk/com.braze.models.inappmessage/-i-in-app-message-html/index.html -[83]: https://www.braze.com/customers [84]: {{site.baseurl}}/user_guide/message_building_by_channel/push/best_practices/ [90]: https://appboy.github.io/appboy-android-sdk/kdoc/braze-android-sdk/com.braze.models.inappmessage/-in-app-message-modal/index.html [91]: https://appboy.github.io/appboy-android-sdk/kdoc/braze-android-sdk/com.braze.models.inappmessage/-in-app-message-slideup/index.html diff --git a/_docs/_developer_guide/platform_integration_guides/ios/initial_sdk_setup/other_sdk_customizations/swift_idfv.md b/_docs/_developer_guide/platform_integration_guides/ios/initial_sdk_setup/other_sdk_customizations/swift_idfv.md index eb90ab22550..b50fa101545 100644 --- a/_docs/_developer_guide/platform_integration_guides/ios/initial_sdk_setup/other_sdk_customizations/swift_idfv.md +++ b/_docs/_developer_guide/platform_integration_guides/ios/initial_sdk_setup/other_sdk_customizations/swift_idfv.md @@ -11,15 +11,15 @@ description: "This reference article describes how to collect the optional IDFV ## Background -In previous versions of the Braze iOS Swift SDK, the IDFV (Identifier for Vendor) field was automatically collected as the user's device ID. Beginning in Swift SDK v5.7.0, the IDFV field can optionally be disabled, and instead, Braze will set a random UUID as the device ID. +In previous versions of the Braze iOS SDK, the IDFV (Identifier for Vendor) field was automatically collected as the user's device ID. Beginning in Swift SDK v5.7.0, the IDFV field can optionally be disabled, and instead, Braze will set a random UUID as the device ID. -The optional `useUUIDAsDeviceId` feature configures the Swift SDK to set the device ID as a UUID. Traditionally, the iOS SDK would assign the device ID equal to the Apple-generated IDFV value. With this feature enabled on your iOS app, all new users created via the SDK would be assigned a device ID equal to a UUID. +The optional `useUUIDAsDeviceId` feature configures the [Swift SDK](https://github.com/braze-inc/braze-swift-sdk) to set the device ID as a UUID. Traditionally, the iOS SDK would assign the device ID equal to the Apple-generated IDFV value. With this feature enabled on your iOS app, all new users created via the SDK would be assigned a device ID equal to a UUID. -## Collect IDFV with the UUID option enabled +If you still wish to collect IDFV, along with the UUID option enabled, you can still do so via the Swift SDK as outlined [here](https://braze-inc.github.io/braze-swift-sdk/documentation/brazekit/braze/set(identifierforvendor:)). -If you still wish to collect IDFV with the UUID option enabled, you can still do so as outlined below: +## Getting Started -In the `Braze.Configuration` instance of your iOS application, set `useUUIDAsDeviceId` to `true`. +To set the device ID as a UUID instead of the IDFV, in the `Braze.Configuration` instance of your iOS application, set `useUUIDAsDeviceId` to `true`. ## Considerations diff --git a/_docs/_developer_guide/platform_integration_guides/react_native/content_cards.md b/_docs/_developer_guide/platform_integration_guides/react_native/content_cards.md index a677756796d..effe3e157c9 100644 --- a/_docs/_developer_guide/platform_integration_guides/react_native/content_cards.md +++ b/_docs/_developer_guide/platform_integration_guides/react_native/content_cards.md @@ -50,7 +50,7 @@ You can use these additional methods to build a custom Content Cards Feed within Follow these steps to test a sample Content Card. -1. Set an active user in the React application by calling `Braze.changeUserId('your-user-id')` method. +1. Set an active user in the React application by calling the [`Braze.changeUser('your-user-id')`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser) method. 2. Head to **Campaigns** and follow [this guide][4] to create a new Content Card campaign. 3. Compose your test Content Card campaign and head over to the **Test** tab. Add the same `user-id` as the test user and click **Send Test**. You should be able to launch a Content Card on your device shortly. @@ -58,11 +58,10 @@ Follow these steps to test a sample Content Card. For more integrations, follow the [Android integration instructions][2] or the [iOS integration instructions][3], depending on your platform. -A sample implementation of this can be found in AppboyProject, within the [React SDK][1]. +A sample implementation of this can be found in AppboyProject within the [React SDK][1]. [1]: https://github.com/Appboy/appboy-react-sdk [2]: {{site.baseurl}}/developer_guide/platform_integration_guides/android/content_cards/data_models/ [3]: {{site.baseurl}}/developer_guide/platform_integration_guides/ios/content_cards/data_model/ [4]: {{site.baseurl}}/user_guide/message_building_by_channel/content_cards/create - -[5]: {% image_buster /assets/img/react-native/content-card-test.png %} "Content Card Campaign Test" +[5]: {% image_buster /assets/img/react-native/content-card-test.png %} "Content Card Campaign Test" \ No newline at end of file diff --git a/_docs/_developer_guide/platform_integration_guides/react_native/react_sdk_setup.md b/_docs/_developer_guide/platform_integration_guides/react_native/react_sdk_setup.md index fbaab7bb00a..a788f8761cd 100644 --- a/_docs/_developer_guide/platform_integration_guides/react_native/react_sdk_setup.md +++ b/_docs/_developer_guide/platform_integration_guides/react_native/react_sdk_setup.md @@ -21,13 +21,18 @@ To complete the installation, you will need the [App Identifier API key]({{site. Braze React Native SDK v1.38.0+ requires at least React Native v0.64+. {% endalert %} -Add the Braze React Native SDK package. - +{% tabs local %} +{% tab bash %} ```bash npm install react-native-appboy-sdk -# or using yarn -# yarn add react-native-appboy-sdk ``` +{% endtab %} +{% tab yarn %} +```bash +yarn add react-native-appboy-sdk +``` +{% endtab %} +{% endtabs %} ## Step 2: Complete native setup @@ -222,7 +227,7 @@ In the same file, add the following snippet within the `application:didFinishLau withLaunchOptions:launchOptions]; ``` -Then, add your SDK Endpoint in the `Info.plist` file. It is located in the `ios` project folder. If you're working in Xcode: +Then, add your SDK Endpoint in the `Info.plist` file. It is located in the `ios` project folder. If you're working in XCode: 1. Add a row with the name `Braze` and type of `Dictionary`. 2. To that Dictionary, add a row with the name `Endpoint`, type `String` and as a value, input your [SDK endpoint]({{site.baseurl}}/api/basics/#endpoints). @@ -255,7 +260,7 @@ At this point, you can verify that the SDK is integrated by checking session sta You can start a session for a particular user by calling the following code in your app. ```javascript -Braze.changeUser("user-id"); +Braze.changeUser("userId"); ``` For example, you can assign the user ID at the startup of the app: diff --git a/_docs/_developer_guide/platform_integration_guides/web/content_cards/customization/custom_ui.md b/_docs/_developer_guide/platform_integration_guides/web/content_cards/customization/custom_ui.md index 5b30ac6ce8c..458dbcd7434 100644 --- a/_docs/_developer_guide/platform_integration_guides/web/content_cards/customization/custom_ui.md +++ b/_docs/_developer_guide/platform_integration_guides/web/content_cards/customization/custom_ui.md @@ -59,41 +59,3 @@ import * as braze from "@braze/web-sdk"; braze.logCardClick(card, true); ``` -## Handling changes in users - -Handling `changeUser()` and fetching the latest content cards for the new user. - -```javascript -import * as braze from "@braze/web-sdk"; - - -braze.initialize("YOUR_SDK_API_KEY", { - baseUrl: "YOUR_SDK_URL", - enableLogging: true, - doNotLoadFontAwesome: true, -}); - -braze.subscribeToContentCardsUpdates(({ cards }) => { - console.log("Braze - subscribeToContentCardsUpdates: ", cards); - //This will be invoked every time the feed is successfully refreshed following a requestContentCardsRefresh request - //Here you can render the cards to the UI as well as logging impressions. -}); - -braze.changeUser("test-user-1"); - -braze.openSession(); - - -braze.requestContentCardsRefresh( - () => {console.log("Feed Refresh Request successfully submitted");}, - () => {console.log("Feed Refresh Request Failed");} -); - - -//Wait to run this next block until after the the content cards have been logged to the console following the above content card refresh -braze.changeUser("test-user-2"); -braze.requestContentCardsRefresh( - () => {console.log("Feed Refresh Request successfully submitted");}, - () => {console.log("Feed Refresh Request Failed");} -); -``` diff --git a/_docs/_developer_guide/platform_integration_guides/web/content_cards/integration.md b/_docs/_developer_guide/platform_integration_guides/web/content_cards/integration.md index a2e347dfa1c..9e97a1591c6 100644 --- a/_docs/_developer_guide/platform_integration_guides/web/content_cards/integration.md +++ b/_docs/_developer_guide/platform_integration_guides/web/content_cards/integration.md @@ -30,6 +30,7 @@ The Braze Web SDK offers three Content Card types: [Banner](https://js.appboycdn | `pinned` | This property reflects if the card was set up as "pinned" in the dashboard.| | `updated` | The UNIX timestamp of when this card was last modified. | | `viewed` | This property reflects whether the user viewed the card or not.| +| `isControl` | This property is `true` when a card is a "control" group within an A/B test.| {: .reset-td-br-1 .reset-td-br-2} ### Banner Content Card properties - Banner @@ -151,15 +152,9 @@ When using the `toggleContentCards(parentNode, filterFunction)` and `showContent If you use Braze's default Content Cards feed, impressions and clicks will be automatically tracked. -If you use a custom integration for Content Cards, your integration needs to log impressions when a Control Card would have been seen. +If you use a custom integration for Content Cards, your integration needs to log impressions when a Control Card would have been seen - even for "control" cards within an A/B test. -Here is an example of how to determine if a Content Card is a "Control" card: - -```javascript -function isControlCard(card) { - return card instanceof braze.ControlCard; -} -``` +To determine if a Content Card is in the "control" group for an A/B test, you can check the `card.isControl` property (Web SDK v4.5.0+) or check if the card is a ControlCard instance (`card instanceof braze.ControlCard`). {% alert note %} Visit the following customization articles for documentation on adding [custom UI]({{site.baseurl}}/developer_guide/platform_integration_guides/web/content_cards/customization/custom_ui/), [custom styling]({{site.baseurl}}/developer_guide/platform_integration_guides/web/content_cards/customization/custom_styling), [key-value pairs]({{site.baseurl}}/developer_guide/platform_integration_guides/web/content_cards/customization/key_value_pairs), [read and unread indicators]({{site.baseurl}}/developer_guide/platform_integration_guides/web/content_cards/customization/read_and_unread/), and [requesting unviewed Content Card counts]({{site.baseurl}}/developer_guide/platform_integration_guides/web/content_cards/customization/badges). diff --git a/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/customization/logging_impressions_and_clicks.md b/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/customization/logging_impressions_and_clicks.md index 2d0ea79631a..9133031f6da 100644 --- a/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/customization/logging_impressions_and_clicks.md +++ b/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/customization/logging_impressions_and_clicks.md @@ -11,15 +11,19 @@ description: "This article covers logging in-app message impressions and clicks # Logging impressions and clicks -Logging in-app message [impressions](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#loginappmessageimpression) and [clicks](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#loginappmessagebuttonclick) is performed automatically when you use the `automaticallyDisplayInAppMessages` or `showInAppMessage`. +Logging in-app message [impressions](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#loginappmessageimpression) and [clicks](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#loginappmessagebuttonclick) is performed automatically when you use the `showInAppMessage` or `automaticallyShowInAppMessage` method. -If you do not use either method and manually display the message using your own UI code then use the following methods to log analytics: +If you do not use either method and opt to manually display the message using your own UI code, use the following methods to log analytics: ```javascript // Registers that a user has viewed an in-app message with the Braze server. -braze.logInAppMessageImpression(message); -// Registers that a user has clicked on an in-app message with the Braze server. -braze.logInAppMessageButtonClick(button, message); +braze.logInAppMessageImpression(inAppMessage); +// Registers that a user has clicked on the specified in-app message with the Braze server. +braze.logInAppMessageClick(inAppMessage); +// Registers that a user has clicked a specified in-app message button with the Braze server. +braze.logInAppMessageButtonClick(button, inAppMessage); +// Registers that a user has clicked on a link in an HTML in-app message with the Braze server. +braze.logInAppMessageHtmlClick(inAppMessage, buttonId?, url?) ``` diff --git a/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/in-app_message_delivery.md b/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/in-app_message_delivery.md index 3a30ee1e74e..5cf98810fcb 100644 --- a/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/in-app_message_delivery.md +++ b/_docs/_developer_guide/platform_integration_guides/web/in-app_messaging/in-app_message_delivery.md @@ -42,7 +42,8 @@ First, find and remove the call to `braze.automaticallyShowInAppMessages()` from braze.subscribeToInAppMessage(function(inAppMessage) { // control group messages should always be "shown" // this will log an impression and not show a visible message - if (inAppMessage instanceof braze.ControlMessage) { + + if (inAppMessage.isControl) { // v4.5.0+, otherwise use `inAppMessage instanceof braze.ControlMessage` return braze.showInAppMessage(inAppMessage); } diff --git a/_docs/_developer_guide/platform_wide/sdk_authentication.md b/_docs/_developer_guide/platform_wide/sdk_authentication.md index 2d3ceb2b4cb..da2695c7ec2 100644 --- a/_docs/_developer_guide/platform_wide/sdk_authentication.md +++ b/_docs/_developer_guide/platform_wide/sdk_authentication.md @@ -149,13 +149,12 @@ Currently, SDK Authentication must be enabled as part of initializing the SDK in ### Set the current user's JWT token -Whenever your app calls the Braze [`changeUser`][11] method, also supply the JWT token that was [generated server-side][4]. +Whenever your app calls the Braze `changeUser` method, also supply the JWT token that was [generated server-side][4]. You can also configure the token to refresh mid-session for the current user. {% alert note %} -Keep in mind that [`changeUser`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser -) should only be called when the User ID has _actually changed_. You should not use this method as a way to update the signature if the user ID has not changed. +Keep in mind that `changeUser` should only be called when the User ID has _actually changed_. You should not use this method as a way to update the signature if the user ID has not changed. {% endalert %} {% tabs %} @@ -177,8 +176,7 @@ braze.setSdkAuthenticationSignature("NEW-JWT-TOKEN-FROM-SERVER"); {% endtab %} {% tab Java %} -Supply the JWT Token when calling [`appboy.changeUser`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser -): +Supply the JWT Token when calling [`appboy.changeUser`](https://appboy.github.io/appboy-android-sdk/javadocs/com/appboy/Appboy.html#changeUser-java.lang.String-): ```java Braze.getInstance(this).changeUser("NEW-USER-ID", "JWT-TOKEN-FROM-SERVER"); @@ -192,8 +190,7 @@ Braze.getInstance(this).setSdkAuthenticationSignature("NEW-JWT-TOKEN-FROM-SERVER {% endtab %} {% tab KOTLIN %} -Supply the JWT Token when calling [`appboy.changeUser`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser -): +Supply the JWT Token when calling [`appboy.changeUser`](https://appboy.github.io/appboy-android-sdk/javadocs/com/appboy/Appboy.html#changeUser-java.lang.String-): ```kotlin Braze.getInstance(this).changeUser("NEW-USER-ID", "JWT-TOKEN-FROM-SERVER") @@ -207,8 +204,7 @@ Braze.getInstance(this).setSdkAuthenticationSignature("NEW-JWT-TOKEN-FROM-SERVER {% endtab %} {% tab Objective-C %} -Supply the JWT Token when calling [`changeUser`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser -): +Supply the JWT Token when calling [`changeUser`](https://appboy.github.io/appboy-ios-sdk/docs/interface_appboy.html#ac8b369b40e15860b0ec18c0f4b46ac69): ```objc [[Appboy sharedInstance] changeUser:@"userId" sdkAuthSignature:@"signature"]; @@ -222,8 +218,7 @@ Or, when you have refreshed the user's token mid-session: {% endtab %} {% tab Swift %} -Supply the JWT Token when calling [`changeUser`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser -): +Supply the JWT Token when calling [`changeUser`](https://appboy.github.io/appboy-ios-sdk/docs/interface_appboy.html#ac8b369b40e15860b0ec18c0f4b46ac69): ```swift Appboy.sharedInstance()?.changeUser("userId", sdkAuthSignature: "signature") @@ -236,8 +231,7 @@ Appboy.sharedInstance()?.setSdkAuthenticationSignature("signature") {% endtab %} {% tab Dart %} -Supply the JWT Token when calling [`changeUser`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser -): +Supply the JWT Token when calling [`changeUser`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#changeuser): ```dart braze.changeUser("userId", sdkAuthSignature: "signature") @@ -253,12 +247,12 @@ braze.setSdkAuthenticationSignature("signature") ### Register a callback function for invalid tokens {#sdk-callback} -When this feature is set as ["Required"](#enforcement-options), the following scenarios will cause SDK requests to be rejected by Braze: +When this feature is set as [Required](#enforcement-options), the following scenarios will cause SDK requests to be rejected by Braze: - JWT was expired by the time is was received by the Braze API - JWT was empty or missing - JWT failed to verify for the public keys you uploaded to the Braze dashboard -You can use [`subscribeToSdkAuthenticationFailures`](https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#subscribetosdkauthenticationfailures) to subscribe to be notified when the SDK requests fail for one of these reasons. A callback function contains an object with the relevant [`errorCode`][9], `reason` for the error, the `userId` of the request (if the user is not anonymous), and the authentication `signature` that caused the error. +You can use `subscribeToSdkAuthenticationFailures` to subscribe to be notified when the SDK requests fail for one of these reasons. A callback function contains an object with the relevant [`errorCode`][9], `reason` for the error, the `userId` of the request (if the user is not anonymous), and the authentication `signature` that caused the error. Failed requests will periodically be retried until your app supplies a new valid JWT. If that user is still logged in, you can use this callback as an opportunity to request a new JWT from your server and supply Braze's SDK with this new valid token. @@ -358,7 +352,7 @@ Once your [Server-side Integration][1] and [SDK Integration][2] are complete, yo Keep in mind that SDK requests will continue to flow as usual without authentication unless the app's SDK Authentication setting is set to **Required** in the Braze dashboard. -Should anything go wrong with your integration (i.e., your app is incorrectly passing tokens to the SDK, or your server is generating invalid tokens), disable this feature in the Braze dashboard, and data will resume to flow as usual without verification. +Should anything go wrong with your integration (e.g., your app is incorrectly passing tokens to the SDK, or your server is generating invalid tokens), disable this feature in the Braze dashboard, and data will resume to flow as usual without verification. ### Enforcement options {#enforcement-options} @@ -411,11 +405,11 @@ No, this feature can be enabled for specific apps and doesn't need to be used on When you begin to enforce this feature, requests made by older app versions will be rejected by Braze and retried by the SDK. Once users upgrade their app to a supported version, those enqueued requests will begin to be accepted again. -If possible, you should push users to upgrade as you would for any other mandatory upgrade. Alternatively, you can keep the feature ["optional"][6] until you see that an acceptable percentage of users have upgraded. +If possible, you should push users to upgrade as you would for any other mandatory upgrade. Alternatively, you can keep the feature [Optional][6] until you see that an acceptable percentage of users have upgraded. #### What expiration should I use when generating JWT tokens? {#faq-expiration} -We recommend using the higher value of: average session duration, session cookie/token expiration, or the frequency at which your application would otherwise refresh the current user's profile. +We recommend using the higher value of average session duration, session cookie/token expiration, or the frequency at which your application would otherwise refresh the current user's profile. #### What happens if a JWT expires in the middle of a user's session? {#faq-jwt-expiration} @@ -427,11 +421,11 @@ If your server is not able to provide JWT tokens or you notice some integration Once disabled, any pending failed SDK requests will eventually be retried by the SDK and accepted by Braze. -#### Why does this feature use public/private keys instead of Shared Secrets? {#faq-shared-secrets} +#### Why does this feature use public/private keys instead of shared secrets? {#faq-shared-secrets} -When using Shared Secrets, anyone with access to that shared secret (i.e., the Braze dashboard page) would be able to generate tokens and impersonate your end-users. +When using shared secrets, anyone with access to that shared secret (i.e., the Braze dashboard page) would be able to generate tokens and impersonate your end-users. -Instead, we use Public/Private Keys so that not even Braze Employees (let alone your dashboard users) have access to your Private Keys. +Instead, we use public/private keys so that not even Braze Employees (let alone your dashboard users) have access to your private keys. #### How will rejected requests be retried? {#faq-retry-logic} diff --git a/_docs/_help/release_notes.md b/_docs/_help/release_notes.md index 274867d8b74..fd8f6fa1c79 100644 --- a/_docs/_help/release_notes.md +++ b/_docs/_help/release_notes.md @@ -10,6 +10,9 @@ description: "This landing page is home to Braze Release Notes. This is where yo guide_featured_title: "Release Notes" guide_featured_list: + - name: 2023 + link: /docs/help/release_notes/2023/ + fa_icon: fas fa-calendar-alt - name: 2022 link: /docs/help/release_notes/2022/ fa_icon: fas fa-calendar-alt @@ -47,6 +50,98 @@ guide_featured_list: >
> For more information on any of the updates listed in this section, reach out to your account manager or [open a support ticket][support]. You can also check out [our SDK Changelogs]({{site.baseurl}}/developer_guide/platform_integration_guides/sdk_changelogs/) to see more information on our monthly SDK releases, updates, and improvements. +## December 13, 2022 release + +### News Feed is deprecated +News Feed is being deprecated. Braze recommends that customers who use our News Feed tool move over to our Content Cards messaging channel—it’s more flexible, customizable, and reliable. Check out the [migration guide]({{site.baseurl}}/user_guide/message_building_by_channel/content_cards/migrating_from_news_feed/) for more. + +### New API endpoints: Catalogs +Use the [Braze API Catalogs endpoints]({{site.baseurl}}/api/endpoints/catalogs) to add, edit, and manage your [catalogs]({{site.baseurl}}/user_guide/personalization_and_dynamic_content/catalogs) and catalog item details. You can use the asynchronous catalog endpoints to make bulk changes to your catalog. + +### HTML attributes for links in the Drag & Drop Editor for Email +You can now [add HTML attributes]({{site.baseurl}}/user_guide/message_building_by_channel/email/drag_and_drop/overview/#creative-details/) to any URL within the `Image`, `Button`, or `Text` editor blocks in the Drag & Drop Editor for Email. With custom attributes, you can easily append additional information to HTML tags in emails. This can be especially useful for message personalization, segmentation, and styling. + +### Show Heatmap toggle +You can now use the [Show Heatmap toggle]({{site.baseurl}}/user_guide/message_building_by_channel/email/reporting_and_analytics/email_reporting#heatmaps) to bring up a visual view of your **Message Analytics** that shows the overall frequency and location of clicks within the lifespan of the email campaign. You can also download a copy of your heatmaps for future reference. + +### Updated email settings +The previous **General Email Settings** section has been split into two new sections: **Sending Configuration** and **Subscription Pages and Footers.** For more information about the individual settings, check out [Email settings]({{site.baseurl}}/user_guide/administrative/app_settings/manage_app_group/email_settings/#sending-configuration). + +### Generate AI images for your Media Library +You can generate images for your Media Library using DALL·E 2, an AI system from OpenAI that can create realistic images and art from a description in natural language. Read more about [Generating an image using AI]({{site.baseurl}}/user_guide/engagement_tools/templates_and_media/media_library/#generate-ai). + +### Enhancements to nested custom attributes +You can use nested custom attributes to send objects as a new data type for custom attributes. +- You can [trigger when a nested custom attribute object changes]({{site.baseurl}}/user_guide/data_and_analytics/custom_data/custom_attributes/nested_custom_attribute_support/#trigger-nested-custom-attribute-changes). +- You can also now [personalize your messages using a custom attribute object and Liquid]({{site.baseurl}}/user_guide/data_and_analytics/custom_data/custom_attributes/nested_custom_attribute_support/#personalization). + +### New Video block +A new content block for [Video]({{site.baseurl}}/user_guide/message_building_by_channel/email/drag_and_drop/dnd_editor_blocks/#video) has been added to the Drag & Drop Editor for Email. + +### Optional Identifier for Vendor collection - Swift +In previous versions of the Braze iOS Swift SDK, the IDFV (Identifier for Vendor) field was automatically collected as the user's device ID. Beginning in Swift SDK v5.7.0, the IDFV field can optionally be disabled, and instead, Braze will set a random UUID as the device ID. For more information, refer to [Collecting IDFV]({{site.baseurl}}/developer_guide/platform_integration_guides/ios/initial_sdk_setup/other_sdk_customizations/swift_idfv/). + +### Snowflake Reader Accounts +Snowflake Reader Accounts offer users access to the same data and functionality as [Snowflake Data Sharing]({{site.baseurl}}/partners/snowflake/), all without requiring a Snowflake account or customer relationship with Snowflake. With Reader Accounts, Braze will create and share your data into an account and provide you credentials to log in and access your data. This will result in all data sharing and usage billing being handled entirely by Braze. + +To learn more, reach out to your customer success manager. + +### Updated Shopify integration +The [Shopify integration]({{site.baseurl}}/partners/message_orchestration/channel_extensions/ecommerce/shopify/shopify/) now allows you to collect email and SMS opt-ins from your Shopify store and assign them to a subscription group in Braze. + + + +### New Braze partnerships + +#### Ada - Surveys +The [Ada]({{site.baseurl}}/partners/message_orchestration/channel_extensions/surveys/ada/) and Braze integration allows you to augment user profiles with data collected from your automated Ada conversations. You can set custom user attributes based on the information you collect during an Ada chat and record custom events in Braze at specified points in an Ada conversation. By connecting your Ada chatbot to Braze, you can learn more about your consumers based on what questions they ask about your brand or by proactively starting conversations with them, asking them questions that allow you to learn more about their interests and preferences. + +#### B.Layer - Message templates +The [B.Layer]({{site.baseurl}}/partners/message_orchestration/channel_extensions/email_templates/blayer) and Braze integration allows you to leverage the B.Layer in-app message builder to help you build on-brand in-app messages that can be exported as a zip file or inline HTML to Braze. This integration does not require additional developer resources, saving you time and budget. + +#### Contentsquare - Analytics +The [Contentsquare]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/contentsquare/) and Braze integration allows you to send Live Signals (fraud, frustration signals, etc.) as custom events in Braze. Leverage Contentsquare experience insights to improve your campaigns' relevance and conversion rates by targeting messages based on your customers' digital experience and body language. + +#### Dynamic Yield - Dynamic content +The [Dynamic Yield]({{site.baseurl}}/partners/message_personalization/dynamic_content/dynamic_yield/) and Braze partnership allows you to leverage Dynamic Yield's recommendation and segmentation engine to create Experience Blocks that can be embedded into Braze messages. Experience blocks can be made of: +- **Recommendations blocks**: Set algorithms and filtering to source users' personalized content that propagates when the email is opened. +- **Dynamic Content blocks**: Target different promotions and messages to different users. Targeting can be based on either affinity or audience. Dynamic Yield determines which personalized experience to serve when the email is opened. + +#### Octolis - Analytics +The [Octolis]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/contentsquare/) and Braze integration acts as middleware between your raw data sources and Braze, enabling you to retrieve and unify data from various sources, both online and offline. + +#### Phrasee - AB testing +[Phrasee React]({{site.baseurl}}/partners/data_and_infrastructure_agility/ab_testing/phrasee/phrasee_react/), powered by Phrasee X, leverages Braze Currents and Connected Content to collect click tracking information from your subscribers via webhooks. Phrasee then ties those events back to your language variants for real-time language optimization. + +#### Sheetlabs - Dynamic content +The [Sheetlabs]({{site.baseurl}}/partners/message_personalization/dynamic_content/sheetlabs/) and Braze integration allows you to leverage [Connected Content](https://www.braze.com/docs/user_guide/personalization_and_dynamic_content/connected_content/about_connected_content/) to include Sheetlabs APIs inside your Braze marketing campaigns. This is commonly used to provide a bridge between a Google Spreadsheet (which is updated directly by the marketing team) and Braze's templates. This allows you to achieve more with Braze templates, such as translations or larger sets of custom attributes. + +#### Tellius - Analytics +The [Tellius]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/tellius/) and Braze integration and Braze integration empowers users to leverage data, without relying on BI engineers, to build dashboards and generate insights to make better marketing decisions. + +#### ThoughtSpot - Analytics +The [ThoughtSpot]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/thoughtspot/) and Braze integration leverages ThoughtSpot TML Blocks that allows Braze users to accelerate their user behavior analytics with prebuilt templates of worksheets and models. This integration enables users to limitlessly search across their Braze interaction data and uncover actionable insights. + +#### Wunderkind - Analytics +The [Wunderkind]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/wunderkind/) and Braze integration allows you to analyze the performance lift and identify more anonymous users, significantly scaling one-to-one messages sent via Braze and contacts added directly to Braze. + + +### SDK updates +The following SDK updates have been released. Breaking changes are listed below; all other updates can be found by checking the corresponding SDK changelogs. + +- [iOS Swift SDK 5.6.3-5.7.0](https://github.com/braze-inc/braze-swift-sdk/blob/main/CHANGELOG.md) +- [Flutter SDK 3.0.0](https://pub.dev/packages/braze_plugin/changelog) + - The native iOS bridge now uses the [new Braze Swift SDK, version 5.6.4](https://github.com/braze-inc/braze-swift-sdk).The minimum iOS deployment target is 10.0. + - During migration, update your project with the following changes: + - To initialize Braze, [follow these integration steps to create a configuration object](https://braze-inc.github.io/braze-swift-sdk/tutorials/braze/a2-configure-braze). Then, add this code to complete the setup: `let braze = BrazePlugin.initBraze(configuration)` + - To continue using `SDWebImage` as a dependency, add this line to your project's `/ios/Podfile`: `pod 'SDWebImage', :modular_headers => true`. Then, follow [these setup instructions](https://braze-inc.github.io/braze-swift-sdk/tutorials/braze/c3-gif-support). + - For guidance around other changes such as receiving in-app message and content card data, reference our sample [`AppDelegate.swift`](https://github.com/braze-inc/braze-flutter-sdk/blob/master/example/ios/Runner/AppDelegate.swift). +- [React Native SDK v1.41.0](https://github.com/Appboy/appboy-react-sdk/blob/master/CHANGELOG.md) +- [Web SDK 4.5.0](https://github.com/braze-inc/braze-web-sdk/blob/master/CHANGELOG.md) + +#### New SDK library: Segment Kotlin SDK +Segment has updated their library with a new Kotlin-first approach called Segment Kotlin. Braze has just released a new library of our own to work with this new library paradigm. Check out the [initial release on GitHub.](https://github.com/braze-inc/braze-segment-kotlin) + ## November 15, 2022 release ### New Drag & Drop Editor for in-app messages @@ -320,67 +415,6 @@ Campaign, Canvas, and Canvas Step names and IDs are all available in Liquid, our ![Braze learning logo in the custom attributes article, which takes you to the Braze Learning course for custom attributes]({% image_buster /assets/img_archive/release_notes_brazelearning.png %}) -## May 31, 2022 release - -### Inbox Vision - -With Inbox Vision, you can check that your drag & drop email campaigns are aligned across all your email clients and mobile platforms before sending. To learn more, check out [Inbox Vision]({{site.baseurl}}/user_guide/message_building_by_channel/email/inbox_vision/). - -### Updated HTML engine - -The underlying engine that produces HTML from the Drag & Drop Editor has been optimized and updated, resulting in benefits related to HTML file compression and rendering. For more details on the updates, check out [Updated HTML engine]({{site.baseurl}}/user_guide/message_building_by_channel/email/drag_and_drop/overview/#updated-html-engine/). - -### Updated keyword category-specific retargeting - -You can create up to 25 of your own SMS keyword categories, allowing you to identify arbitrary keywords and responses to be used for filtering and retargeting. To read more about SMS keyword categories and how to set them up, check out [SMS retargeting]({{site.baseurl}}/user_guide/message_building_by_channel/sms/campaign/retargeting/). - -### Event property segmentation - -[Event property segmentation]({{site.baseurl}}/user_guide/data_and_analytics/custom_data/purchase_events/#event-property-segmentation/) allows you to target users based on custom events taken and the properties associated with those events. This feature adds additional filtering options when segmenting purchase and custom events. - -### Audience sync to Google - -The Braze Audience Sync to Google implementation process has been simplified allowing you to grant Braze access to multiple Google Ads accounts. For more information, see [Audience Sync to Google]({{site.baseurl}}/partners/canvas_steps/google_audience_sync/). - -### New Braze partnerships - -#### Amperity - Customer data platform - -The Braze and [Amperity]({{site.baseurl}}/partners/data_and_infrastructure_agility/customer_data_platform/amperity/) integration offers a unified view of your customers across the two platforms. With this integration, you can sync user lists to map Amperity user data to Braze user accounts by creating an Amperity user list. - -#### Dynamic 365 Customer Insights - Customer data platform - -The Braze and [Dynamics 365 Customer Insights]({{site.baseurl}}/partners/data_and_infrastructure_agility/customer_data_platform/dynamics_365_customer_insights/) integration allows you to export customer segments to Braze to use in campaigns or Canvases. - -#### Extole - Loyalty - -With the Braze and [Extole]({{site.baseurl}}/partners/message_orchestration/channel_extensions/loyalty/extole/) integration, you can pull customer events and attributes from Extole refer-a-friend and growth programs into Braze, empowering you to create more personalized marketing campaigns that boost customer acquisition, engagement, and loyalty. You can also dynamically pull Extole content attributes, such as personalized share codes and links, into Braze communications. - -#### Heap - Cohort import - -The Braze and [Heap]({{site.baseurl}}/partners/data_and_infrastructure_agility/cohort_import/heap/) integration enables you to import Heap data to Braze, create user cohorts, as well as export Braze data to Heap to create segments. - -#### Hightouch - Workflow automation - -The Braze and [Hightough]({{site.baseurl}}/partners/data_and_infrastructure_agility/workflow_automation/hightouch/) integration allows you to import user cohorts to Braze, sending targeted campaigns based on data that may only exist in your warehouse. - -#### Peak - Dynamic content - -The Braze and [Peak]({{site.baseurl}}/partners/message_personalization/dynamic_content/peak/) integration allows you to take predicted churn probability and attributes based on customer behaviors and interactions, and import them into Braze to use in customer segmentation and targeting. - -#### Shopify - eCommerce - -The Braze and [Shopify]({{site.baseurl}}/partners/message_orchestration/channel_extensions/ecommerce/shopify/shopify/) integration has been expanded to offer abandoned checkout delay, setting a preferred product identifier, and several new Shopify events including `shopify_paid_order`, `shopify_partially_fulfilled_order`, `shopify_fulfilled_order`, `shopify_cancelled_order`, and `shopify_created_refund`. - -#### Survicate - Surveys - -The Braze and [Survicate]({{site.baseurl}}/partners/message_orchestration/channel_extensions/surveys/survicate/) integration allows you to include survey links in your emails or directly embed survey snippets to increase the response rate. After surveys have been completed, return to Survicate to identify and analyze the attributes and responses of your survey responders. - -#### Viralsweep - Loyalty - -The Braze and [ViralSweep]({{site.baseurl}}/partners/message_orchestration/channel_extensions/loyalty/viralsweep/) integration allows you to hold sweepstakes and contests on the ViralSweep platform (growing your email and SMS lists) and then send sweepstakes or contest entry information into Braze to use in campaigns or Canvases. - - [support]: {{site.baseurl}}/support_contact/ -

\ No newline at end of file +

diff --git a/_docs/_help/release_notes/2016.md b/_docs/_help/release_notes/2016.md index 46af359dd17..5df277fb393 100644 --- a/_docs/_help/release_notes/2016.md +++ b/_docs/_help/release_notes/2016.md @@ -1,5 +1,5 @@ --- -page_order: 7 +page_order: 8 nav_title: 2016 layout: dev_guide noindex: true diff --git a/_docs/_help/release_notes/2017.md b/_docs/_help/release_notes/2017.md index 43ac47a1a94..f5df5f094d7 100644 --- a/_docs/_help/release_notes/2017.md +++ b/_docs/_help/release_notes/2017.md @@ -1,5 +1,5 @@ --- -page_order: 6 +page_order: 7 nav_title: 2017 layout: dev_guide noindex: true diff --git a/_docs/_help/release_notes/2018.md b/_docs/_help/release_notes/2018.md index e610190dbe5..e011c4676af 100644 --- a/_docs/_help/release_notes/2018.md +++ b/_docs/_help/release_notes/2018.md @@ -1,5 +1,5 @@ --- -page_order: 5 +page_order: 6 nav_title: 2018 layout: dev_guide noindex: true diff --git a/_docs/_help/release_notes/2019.md b/_docs/_help/release_notes/2019.md index 788f66f5b11..4f3c72262e9 100644 --- a/_docs/_help/release_notes/2019.md +++ b/_docs/_help/release_notes/2019.md @@ -1,5 +1,5 @@ --- -page_order: 4 +page_order: 5 nav_title: 2019 layout: dev_guide noindex: true diff --git a/_docs/_help/release_notes/2020.md b/_docs/_help/release_notes/2020.md index b7092646c81..d30b9b924a3 100644 --- a/_docs/_help/release_notes/2020.md +++ b/_docs/_help/release_notes/2020.md @@ -1,5 +1,5 @@ --- -page_order: 3 +page_order: 4 nav_title: 2020 layout: dev_guide noindex: true diff --git a/_docs/_help/release_notes/2021.md b/_docs/_help/release_notes/2021.md index 9f21d1c6bee..ff5e911cdb9 100644 --- a/_docs/_help/release_notes/2021.md +++ b/_docs/_help/release_notes/2021.md @@ -1,5 +1,5 @@ --- -page_order: 2 +page_order: 3 nav_title: 2021 layout: dev_guide noindex: true diff --git a/_docs/_help/release_notes/2022.md b/_docs/_help/release_notes/2022.md index 27e7965af51..138d0f8b747 100644 --- a/_docs/_help/release_notes/2022.md +++ b/_docs/_help/release_notes/2022.md @@ -1,5 +1,5 @@ --- -page_order: 1 +page_order: 2 nav_title: 2022 layout: dev_guide noindex: true diff --git a/_docs/_help/release_notes/2023.md b/_docs/_help/release_notes/2023.md new file mode 100644 index 00000000000..3e576294f6e --- /dev/null +++ b/_docs/_help/release_notes/2023.md @@ -0,0 +1,16 @@ +--- +page_order: 1 +nav_title: 2023 +layout: dev_guide +noindex: true +guide_top_header: "2023 Release Notes" + +page_type: landing +description: "This section is home to release notes for 2023." + +guide_menu_title: "" +guide_menu_list: + - name: December 13, 2022 + link: /docs/help/release_notes/2023/12_13_22/ + fa_icon: fas fa-snowflake +--- \ No newline at end of file diff --git a/_docs/_help/release_notes/2023/12_13_22.md b/_docs/_help/release_notes/2023/12_13_22.md new file mode 100644 index 00000000000..0cdb8f635cf --- /dev/null +++ b/_docs/_help/release_notes/2023/12_13_22.md @@ -0,0 +1,98 @@ +--- +nav_title: December 13, 2022 +page_order: 1 +noindex: true +page_type: update +description: "This article contains release notes for 12/13/2022." +--- + +# December 13, 2022 release + +## News Feed is deprecated +News Feed is being deprecated. Braze recommends that customers who use our News Feed tool move over to our Content Cards messaging channel—it’s more flexible, customizable, and reliable. Check out the [migration guide]({{site.baseurl}}/user_guide/message_building_by_channel/content_cards/migrating_from_news_feed/) for more. + +## New API endpoints: Catalogs +Use the [Braze API Catalogs endpoints]({{site.baseurl}}/api/endpoints/catalogs) to add, edit, and manage your [catalogs]({{site.baseurl}}/user_guide/personalization_and_dynamic_content/catalogs) and catalog item details. You can use the asynchronous catalog endpoints to make bulk changes to your catalog. + +## HTML attributes for links in the Drag & Drop Editor for Email +You can now [add HTML attributes]({{site.baseurl}}/user_guide/message_building_by_channel/email/drag_and_drop/overview/#creative-details/) to any URL within the `Image`, `Button`, or `Text` editor blocks in the Drag & Drop Editor for Email. With custom attributes, you can easily append additional information to HTML tags in emails. This can be especially useful for message personalization, segmentation, and styling. + +## Show Heatmap toggle +You can now use the [Show Heatmap toggle]({{site.baseurl}}/user_guide/message_building_by_channel/email/reporting_and_analytics/email_reporting#heatmaps) to bring up a visual view of your **Message Analytics** that shows the overall frequency and location of clicks within the lifespan of the email campaign. You can also download a copy of your heatmaps for future reference. + +## Updated email settings +The previous **General Email Settings** section has been split into two new sections: **Sending Configuration** and **Subscription Pages and Footers.** For more information about the individual settings, check out [Email settings]({{site.baseurl}}/user_guide/administrative/app_settings/manage_app_group/email_settings/#sending-configuration). + +## Generate AI images for your Media Library +You can generate images for your Media Library using DALL·E 2, an AI system from OpenAI that can create realistic images and art from a description in natural language. Read more about [Generating an image using AI]({{site.baseurl}}/user_guide/engagement_tools/templates_and_media/media_library/#generate-ai). + +## Enhancements to nested custom attributes +You can use nested custom attributes to send objects as a new data type for custom attributes. +- You can [trigger when a nested custom attribute object changes]({{site.baseurl}}/user_guide/data_and_analytics/custom_data/custom_attributes/nested_custom_attribute_support/#trigger-nested-custom-attribute-changes). +- You can also now [personalize your messages using a custom attribute object and Liquid]({{site.baseurl}}/user_guide/data_and_analytics/custom_data/custom_attributes/nested_custom_attribute_support/#personalization). + +## New Video block +A new content block for [Video]({{site.baseurl}}/user_guide/message_building_by_channel/email/drag_and_drop/dnd_editor_blocks/#video) has been added to the Drag & Drop Editor for Email. + +## Optional Identifier for Vendor collection - Swift +In previous versions of the Braze iOS Swift SDK, the IDFV (Identifier for Vendor) field was automatically collected as the user's device ID. Beginning in Swift SDK v5.7.0, the IDFV field can optionally be disabled, and instead, Braze will set a random UUID as the device ID. For more information, refer to [Collecting IDFV]({{site.baseurl}}/developer_guide/platform_integration_guides/ios/initial_sdk_setup/other_sdk_customizations/swift_idfv/). + +## Snowflake Reader Accounts +Snowflake Reader Accounts offer users access to the same data and functionality as [Snowflake Data Sharing]({{site.baseurl}}/partners/snowflake/), all without requiring a Snowflake account or customer relationship with Snowflake. With Reader Accounts, Braze will create and share your data into an account and provide you credentials to log in and access your data. This will result in all data sharing and usage billing being handled entirely by Braze. + +To learn more, reach out to your customer success manager. + +## Updated Shopify integration +The [Shopify integration]({{site.baseurl}}/partners/message_orchestration/channel_extensions/ecommerce/shopify/shopify/) now allows you to collect email and SMS opt-ins from your Shopify store and assign them to a subscription group in Braze. + + +## New Braze partnerships + +### Ada - Surveys +The [Ada]({{site.baseurl}}/partners/message_orchestration/channel_extensions/surveys/ada/) and Braze integration allows you to augment user profiles with data collected from your automated Ada conversations. You can set custom user attributes based on the information you collect during an Ada chat and record custom events in Braze at specified points in an Ada conversation. By connecting your Ada chatbot to Braze, you can learn more about your consumers based on what questions they ask about your brand or by proactively starting conversations with them, asking them questions that allow you to learn more about their interests and preferences. + +### B.Layer - Message templates +The [B.Layer]({{site.baseurl}}/partners/message_orchestration/channel_extensions/email_templates/blayer) and Braze integration allows you to leverage the B.Layer in-app message builder to help you build on-brand in-app messages that can be exported as a zip file or inline HTML to Braze. This integration does not require additional developer resources, saving you time and budget. + +### Contentsquare - Analytics +The [Contentsquare]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/contentsquare/) and Braze integration allows you to send Live Signals (fraud, frustration signals, etc.) as custom events in Braze. Leverage Contentsquare experience insights to improve your campaigns' relevance and conversion rates by targeting messages based on your customers' digital experience and body language. + +### Dynamic Yield - Dynamic content +The [Dynamic Yield]({{site.baseurl}}/partners/message_personalization/dynamic_content/dynamic_yield/) and Braze partnership allows you to leverage Dynamic Yield's recommendation and segmentation engine to create Experience Blocks that can be embedded into Braze messages. Experience blocks can be made of: +- **Recommendations blocks**: Set algorithms and filtering to source users' personalized content that propagates when the email is opened. +- **Dynamic Content blocks**: Target different promotions and messages to different users. Targeting can be based on either affinity or audience. Dynamic Yield determines which personalized experience to serve when the email is opened. + +### Octolis - Analytics +The [Octolis]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/contentsquare/) and Braze integration acts as middleware between your raw data sources and Braze, enabling you to retrieve and unify data from various sources, both online and offline. + +### Phrasee - AB testing +[Phrasee React]({{site.baseurl}}/partners/data_and_infrastructure_agility/ab_testing/phrasee/phrasee_react/), powered by Phrasee X, leverages Braze Currents and Connected Content to collect click tracking information from your subscribers via webhooks. Phrasee then ties those events back to your language variants for real-time language optimization. + +### Sheetlabs - Dynamic content +The [Sheetlabs]({{site.baseurl}}/partners/message_personalization/dynamic_content/sheetlabs/) and Braze integration allows you to leverage [Connected Content](https://www.braze.com/docs/user_guide/personalization_and_dynamic_content/connected_content/about_connected_content/) to include Sheetlabs APIs inside your Braze marketing campaigns. This is commonly used to provide a bridge between a Google Spreadsheet (which is updated directly by the marketing team) and Braze's templates. This allows you to achieve more with Braze templates, such as translations or larger sets of custom attributes. + +### Tellius - Analytics +The [Tellius]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/tellius/) and Braze integration and Braze integration empowers users to leverage data, without relying on BI engineers, to build dashboards and generate insights to make better marketing decisions. + +### ThoughtSpot - Analytics +The [ThoughtSpot]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/thoughtspot/) and Braze integration leverages ThoughtSpot TML Blocks that allows Braze users to accelerate their user behavior analytics with prebuilt templates of worksheets and models. This integration enables users to limitlessly search across their Braze interaction data and uncover actionable insights. + +### Wunderkind - Analytics +The [Wunderkind]({{site.baseurl}}/partners/data_and_infrastructure_agility/analytics/wunderkind/) and Braze integration allows you to analyze the performance lift and identify more anonymous users, significantly scaling one-to-one messages sent via Braze and contacts added directly to Braze. + + +## SDK updates +The following SDK updates have been released. Breaking changes are listed below; all other updates can be found by checking the corresponding SDK changelogs. + +- [iOS Swift SDK 5.6.3-5.7.0](https://github.com/braze-inc/braze-swift-sdk/blob/main/CHANGELOG.md) +- [Flutter SDK 3.0.0](https://pub.dev/packages/braze_plugin/changelog) + - The native iOS bridge now uses the [new Braze Swift SDK, version 5.6.4](https://github.com/braze-inc/braze-swift-sdk).The minimum iOS deployment target is 10.0. + - During migration, update your project with the following changes: + - To initialize Braze, [follow these integration steps to create a configuration object](https://braze-inc.github.io/braze-swift-sdk/tutorials/braze/a2-configure-braze). Then, add this code to complete the setup: `let braze = BrazePlugin.initBraze(configuration)` + - To continue using `SDWebImage` as a dependency, add this line to your project's `/ios/Podfile`: `pod 'SDWebImage', :modular_headers => true`. Then, follow [these setup instructions](https://braze-inc.github.io/braze-swift-sdk/tutorials/braze/c3-gif-support). + - For guidance around other changes such as receiving in-app message and content card data, reference our sample [`AppDelegate.swift`](https://github.com/braze-inc/braze-flutter-sdk/blob/master/example/ios/Runner/AppDelegate.swift). +- [React Native SDK v1.41.0](https://github.com/Appboy/appboy-react-sdk/blob/master/CHANGELOG.md) +- [Web SDK 4.5.0](https://github.com/braze-inc/braze-web-sdk/blob/master/CHANGELOG.md) + +### New SDK library: Segment Kotlin SDK +Segment has updated their library with a new Kotlin-first approach called Segment Kotlin. Braze has just released a new library of our own to work with this new library paradigm. Check out the [initial release on GitHub.](https://github.com/braze-inc/braze-segment-kotlin) \ No newline at end of file diff --git a/_docs/_hidden/other/handbooks.md b/_docs/_hidden/other/handbooks.md index 6ac9f1f6487..8c57680908a 100644 --- a/_docs/_hidden/other/handbooks.md +++ b/_docs/_hidden/other/handbooks.md @@ -11,6 +11,6 @@ permalink: /handbooks/ - [Support & Success Services Handbook FY'21 PDF][1] -[3]: {{site.baseurl}}/assets/download_file/Braze_Success_and_Support_Services_Handbook_23v16.pdf +[3]: {{site.baseurl}}/assets/download_file/Braze_Success_and_Support_Services_Handbook_23v17.pdf [2]: {{site.baseurl}}/assets/download_file/Braze_Success_and_Support_Services_Handbook_22.pdf [1]: {{site.baseurl}}/assets/download_file/Braze_Success_and_Support_Services_Handbook_21.pdf diff --git a/_docs/_hidden/private_betas/link_shortening.md b/_docs/_hidden/private_betas/link_shortening.md index 5af5af04ed6..4831e4804f7 100644 --- a/_docs/_hidden/private_betas/link_shortening.md +++ b/_docs/_hidden/private_betas/link_shortening.md @@ -20,10 +20,10 @@ permalink: /link_shortening/ Link shortening and click tracking can be enabled at the [message variant-level]({{site.baseurl}}/user_guide/engagement_tools/testing/multivariant_testing/#step-1-create-your-campaign) in both campaigns and Canvases. The length of the URL will be determined by the type of tracking that is enabled: -- **Basic tracking** enables campaign-level click tracking. -- **Advanced tracking** enables campaign-level and user-level click tracking. Links with advanced tracking are longer by up to 7 characters and allow you to create segments of users who have clicked on URLs. +- **Basic tracking** enables campaign-level click tracking. Basic links will have a length of between 20-21 characters. +- **Advanced tracking** enables campaign-level and user-level click tracking. Links with advanced tracking are longer by up to 7 characters and allow you to create segments of users who have clicked on URLs. Advanced links will have a length of between 27-28 characters. -Links will be shortened using Braze’s shared short domain ([brz.ai](http://brz.ai)) with a length of between 20-21 characters for basic links and 27-28 characters for advanced links. An example URL may look something like this: `https://brz.ai/8jshX` (basic) or `https://brz.ai/8jshX/2dj8d` (advanced). Refer to the [Testing](#testing) for more information. +Links will be shortened using Braze’s shared short domain ([brz.ai](http://brz.ai)). An example URL may look something like this: `https://brz.ai/8jshX` (basic) or `https://brz.ai/8jshX/2dj8d` (advanced). Refer to the [Testing](#testing) for more information. Shortened URLs will be valid for one year from the date they were created. @@ -80,14 +80,6 @@ Only campaigns that have advanced tracking enabled will appear in the following ## Frequently asked questions -#### How long are the shortened URLs? - -Shortened URLs will be between 20 and 21 characters long. - -#### Does link shortening work with URLs that contain Liquid? - -No. Currently, only static URLs are shortened. - #### Are the links I receive when test sending real URLs? If the campaign has been saved as a draft before test sending, yes! Otherwise, it is a placeholder link. Note that the exact URL sent in a launched Campaign may differ from the one sent via a Test Send. @@ -100,10 +92,6 @@ No, link shortening will work without any SDK integration. Not yet, though we plan to provide more customization options in the future. -#### Do I know which individual users are clicking on a URL? - -Not yet. This will be part of a future user-level click-tracking release. - #### Can I add UTM parameters to a URL before it is shortened? Yes! Any static URL parameters can be added. @@ -112,9 +100,13 @@ Yes! Any static URL parameters can be added. One year. +#### Does link shortening work with URLs that contain Liquid? + +No. Currently, only static URLs are shortened. + #### Will link shortening work with deep links or universal links? -Link shortening will only shorten static URLs that start with _http://_ or _https://_. It is not advised to further shorten generated universal links (from providers such as Branch or Firebase) as this may break the attribution or redirect of those tools. +Link shortening will shorten any static URLs that start with _http://_ or _https://_. However, it is not advised to further shorten generated universal links (from providers such as Branch or Appsflyer) as this may break the attribution or redirect of those tools. [1]: {% image_buster /assets/img/sms/link_shortening10.png %} [2]: {% image_buster /assets/img/link_shortening/shortening2.png %} diff --git a/_docs/_partners/data_and_infrastructure_agility/ab_testing/phrasee/phrasee_react.md b/_docs/_partners/data_and_infrastructure_agility/ab_testing/phrasee/phrasee_react.md index fc0fcf62eed..9566bba85b7 100644 --- a/_docs/_partners/data_and_infrastructure_agility/ab_testing/phrasee/phrasee_react.md +++ b/_docs/_partners/data_and_infrastructure_agility/ab_testing/phrasee/phrasee_react.md @@ -42,7 +42,7 @@ You'll need Phrasee to set up a dedicated Amazon S3 bucket to receive your click Next, reach out to your Braze account team to ensure no personally identifiable information is transmitted to Phrasee. -By default, the Current will include certain PII attributes like email and address. Phrasee cannot and will not receive PII, so it's critical you make this [request]({{site.baseurl}}/user_guide/administrative/company_settings/security_settings/#view-pii) of your Braze account team to turn this off for any event data passed along to Phrasee. +By default, the Current will include certain PII attributes like email and address. Phrasee cannot and will not receive PII, so it's critical you make a request to your Braze account team to turn this off for any event data passed along to Phrasee. ### Step 4: Phrasee X code snippets diff --git a/_docs/_partners/data_and_infrastructure_agility/data_warehouses/snowflake/sample_queries.md b/_docs/_partners/data_and_infrastructure_agility/data_warehouses/snowflake/sample_queries.md index ae89ad5d839..55d7195ebea 100644 --- a/_docs/_partners/data_and_infrastructure_agility/data_warehouses/snowflake/sample_queries.md +++ b/_docs/_partners/data_and_infrastructure_agility/data_warehouses/snowflake/sample_queries.md @@ -17,7 +17,7 @@ search_tag: Partner A common query might be to filter events by time. -You can filter them by the time of occurrence. Event tables are clustered by `time` which makes filtering by `time` performant: +You can filter them by the time of occurrence. Event tables are clustered by `time` which makes filtering by `time` optimal: ```sql -- find custom events that occurred after 04/15/2019 @ 7:02pm (UTC) i.e., timestamp=1555354920 SELECT * diff --git a/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/scripttag_web_sdk_integration.md b/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/scripttag_web_sdk_integration.md index 47ec8a75dbe..a94b3962567 100644 --- a/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/scripttag_web_sdk_integration.md +++ b/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/scripttag_web_sdk_integration.md @@ -21,6 +21,7 @@ Ensure with your development team that the following is supported within your Sh | [Shopify Ajax API](https://shopify.dev/api/ajax) | Possible use of the Ajax API includes:
- Add products to the cart and update the cart item counter.
- Display related product recommendations.
- Suggest products and collections to visitors as they type in a search field.

Braze requires the Ajax API as we will fetch product information for your product events. | | [Cart token management by Shopify](https://shopify.dev/api/examples/cart) | A cart contains merchandise that a customer intends to purchase and the estimated cost associated with the cart. You can use the [Storefront API](https://shopify.dev/api/storefront) to interact with a cart during a customer's session.

Braze requires cart token management through Shopify directly and not a 3rd party system to fetch the cart token ID for abandoned cart events. | | URL management by Shopify | Your store will need to follow the structured Shopify URL pathing, where each of the paths for collections or products follows one of the following:
- /collections/collectionA
- /collections/collectionA/products/productA
- /products/productB | +| Fetch API calls | Stores should be using Shopify's recommended and newer method of calling the API (Fetch). Stores making calls using the older method (XHR) will result in abandoned cart events not registering at all and user reconciliation not properly working. | {: .reset-td-br-1 .reset-td-br-2} ## What is the Web SDK? diff --git a/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/setting_up_shopify.md b/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/setting_up_shopify.md index 09fe0998089..99920dc508d 100644 --- a/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/setting_up_shopify.md +++ b/_docs/_partners/message_orchestration/channel_extensions/ecommerce/shopify/setting_up_shopify.md @@ -92,5 +92,5 @@ If you use the ScriptTag integration, and your Shopify store offers a "Buy Now" [2]: {% image_buster /assets/img/Shopify/shopify_integration2.png %} [3]: {% image_buster /assets/img/Shopify/scriptag.gif %} -[77]: {% image_buster /assets/img/Shopify/shopify_integration77.png %} +[77]: {% image_buster /assets/img/Shopify/shopify_integration77.jpg %} [4]: {% image_buster /assets/img/Shopify/shopify_integration3-6.gif %} diff --git a/_docs/_partners/message_personalization/dynamic_content/dynamic_yield.md b/_docs/_partners/message_personalization/dynamic_content/dynamic_yield.md index 686ae0f2a36..f60b8b354dc 100644 --- a/_docs/_partners/message_personalization/dynamic_content/dynamic_yield.md +++ b/_docs/_partners/message_personalization/dynamic_content/dynamic_yield.md @@ -12,7 +12,7 @@ search_tag: Partner > [Dynamic Yield](https://www.dynamicyield.com/), a Mastercard company, helps businesses across industries deliver digital customer experiences that are personalized, optimized, and synchronized. With Dynamic Yield's [Experience OS](http://www.dynamicyield.com/experience-os), marketers, product managers, developers, and digital teams can algorithmically match content, products, and offers to each customer for the acceleration of revenue and customer loyalty. -The Braze and Dynamic yield partnership allows you to leverage Dynamic Yield's recommendation and segmentation engine to create Experience Blocks that can be embedded into Braze messages. Experience blocks can be made of: +The Braze and Dynamic Yield partnership allows you to leverage Dynamic Yield's recommendation and segmentation engine to create Experience Blocks that can be embedded into Braze messages. Experience blocks can be made of: - **Recommendations blocks**: Set algorithms and filtering to source users' personalized content that propagates when the email is opened. - **Dynamic Content blocks**: Target different promotions and messages to different users. Targeting can be based on either affinity or audience. Dynamic Yield determines which personalized experience to serve when the email is opened. diff --git a/_docs/_user_guide/administrative/company_settings/notification_preferences.md b/_docs/_user_guide/administrative/company_settings/notification_preferences.md index 60054e44a32..19570e070b6 100644 --- a/_docs/_user_guide/administrative/company_settings/notification_preferences.md +++ b/_docs/_user_guide/administrative/company_settings/notification_preferences.md @@ -14,12 +14,11 @@ If you would like to monitor the messaging and activity in your company account, | Notification | Notified When | Available Notification Channels | |---|---|---| | AWS Credential Errors | When Braze receives an error while attempting to use your Amazon Web Services credentials for a data export. | Email, Webhook | -|Campaign/Canvas Updated | Notifies recipients when an active campaign/canvas is updated or deactivated, as well as when an inactive campaign/canvas is reactivated or when drafts are launched. | Email | -|Newsfeed Card Published/Live | Notifies recipients when News Feed cards are scheduled or published.

**Note:** News Feed is being deprecated. Braze recommends that customers who use our News Feed tool move over to our Content Cards messaging channel—it's more flexible, customizable, and reliable. Check out the [migration guide]({{site.baseurl}}/user_guide/message_building_by_channel/content_cards/migrating_from_news_feed/) for more. | Email, Webhook | -|Push Credential Errors | Notifies recipients when an app's push credentials are invalid and when an app's push credentials are expiring soon. | Email, Webhook | -|Scheduled Campaign Sent/Not Sent | Notifies recipients when scheduled campaigns begin sending or when scheduled campaigns attempted to send, but had no eligible users to send to. | Email, Webhook | -|Scheduled Campaign Limit Met | Notifies recipients when the limit for a recurring scheduled campaign has been reached. | Email, Webhook | +| Campaign/Canvas Updated | Notifies recipients when an active campaign/canvas is updated or deactivated, as well as when an inactive campaign/canvas is reactivated or when drafts are launched. | Email | +| Newsfeed Card Published/Live | Notifies recipients when News Feed cards are scheduled or published.

**Note:** News Feed is being deprecated. Braze recommends that customers who use our News Feed tool move over to our Content Cards messaging channel—it's more flexible, customizable, and reliable. Check out the [migration guide]({{site.baseurl}}/user_guide/message_building_by_channel/content_cards/migrating_from_news_feed/) for more. | Email, Webhook | +| Push Credential Errors | Notifies recipients when an app's push credentials are invalid and when an app's push credentials are expiring soon. | Email, Webhook | +| Scheduled Campaign Sent/Not Sent | Notifies recipients when scheduled campaigns begin sending or when scheduled campaigns attempted to send, but had no eligible users to send to. | Email, Webhook | +| Scheduled Campaign Limit Met | Notifies recipients when the limit for a recurring scheduled campaign has been reached. | Email, Webhook | |Scheduled Campaign Finished Sending | Notifies recipients when a scheduled campaign has finished sending. | Email, Webhook | -|Webhook Timeouts | Notifies recipients when a webhook URL times out more than 300 times in 5 minutes. This notification sends no more than once every two hours. | Email, Webhook. | -|Weekly Analytics Report | Sends a summary of the past week's app group activity to recipients every Monday. Recipients receive a summary for each app group that they belong to. | Email | +| Weekly Analytics Report | Sends a summary of the past week's app group activity to recipients every Monday. Recipients receive a summary for each app group that they belong to. | Email | {: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3} diff --git a/_docs/_user_guide/data_and_analytics/cloud_ingestion.md b/_docs/_user_guide/data_and_analytics/cloud_ingestion.md index 92fff34ece2..485d76ad054 100644 --- a/_docs/_user_guide/data_and_analytics/cloud_ingestion.md +++ b/_docs/_user_guide/data_and_analytics/cloud_ingestion.md @@ -16,7 +16,7 @@ Braze Cloud Data Ingestion is currently in early access. Contact your Braze acco ## What is Braze Cloud Data Ingestion? -Braze Cloud Data Ingestion allows you to set up a direct connection from your Snowflake instance to Braze to sync relevant user data. Once synced to Braze, these attributes can be used for personalization or segmentation. +Braze Cloud Data Ingestion allows you to set up a direct connection from your Snowflake instance to Braze to sync relevant user attributes, events, and purchases. Once synced to Braze, this data can be leveraged for use cases such as personalization or segmentation. ### How it works @@ -86,6 +86,9 @@ We will sync all attributes in a given row, regardless of whether they are the s The `UPDATED_AT` column should be in UTC to prevent issues with daylight savings time. Prefer UTC-only functions, such as `SYSDATE()` instead of `CURRENT_DATE()` whenever possible. +#### Separate EXTERNAL_ID from PAYLOAD column +The PAYLOAD object should not include an external id or other id type. + #### Removing an attribute If you want to completely remove an attribute from a user’s profile, you can set it to `null`. If you want an attribute to remain unchanged, don't send it to Braze until it’s been updated. @@ -94,13 +97,24 @@ If you want to completely remove an attribute from a user’s profile, you can s If you prefer to store each attribute in its own column internally, you need to convert those columns to a JSON string to populate the sync with Braze. To do that, you can use a query like: ```json -CREATE TABLE "PURCHASE_DATA" - (purchase_date datetime, - purchase_amount number, - quantity number, - address string); - -SELECT TO_JSON(OBJECT_CONSTRUCT (*)) FROM "PURCHASE_DATA"; +CREATE TABLE "EXAMPLE_USER_DATA" + (attribute_1 string, + attribute_2 string, + attribute_3 number, + my_user_id string); + +SELECT + CURRENT_TIMESTAMP as UPDATED_AT, + my_user_id as EXTERNAL_ID, + TO_JSON( + OBJECT_CONSTRUCT ( + 'attribute_1', + attribute_1, + 'attribute_2', + attribute_2, + 'yet_another_attribute', + attribute_3) + )as PAYLOAD FROM "EXAMPLE_DATA"; ``` #### Using the UPDATED_AT timestamp @@ -200,10 +214,10 @@ Depending on the configuration of your Snowflake account, you may need to allow Navigate to the Snowflake page on Braze, under **Technology Partners**, and click **Create new import sync**. -1. Add Snowflake connection information and source table +1. **Add Snowflake connection information and source table**
Input the information for your Snowflake account and source table, then proceed to the next step.
![][1]

-2. Name sync and set frequency -Next, choose a name for your sync and input contact emails. We’ll use this contact information to notify you of any integration errors (e.g., access to the table was removed unexpectedly).
![][2]

You will also choose the sync frequency. Frequency can be anywhere in the range of every 15 minutes to once per month. We’ll use the time zone configured in your Braze dashboard to schedule the recurring sync. +2. **Configure sync details**
+Next, choose a name for your sync and input contact emails. We’ll use this contact information to notify you of any integration errors (e.g., access to the table was removed unexpectedly).
![][2]

You will also choose the data type and sync frequency. Frequency can be anywhere in the range of every 15 minutes to once per month. We’ll use the time zone configured in your Braze dashboard to schedule the recurring sync. Supported data types are Custom Attributes, Custom Events, and Purchase Events and the data type for a sync cannot be changed after creation. ### Add a public key to the Braze user At this point, you will need to go back to Snowflake to complete the setup. Add the public key displayed on the dashboard to the user you created for Braze to connect to Snowflake. @@ -243,7 +257,7 @@ Once activated, your sync will run on the schedule configured during setup. If y | Number of integrations | There is no limit on how many integrations you can set up. However, you will only be able to set up one integration per table or view. | Number of rows | There is no limit on the number of rows you can sync. Each row will only be synced once, based on the `UPDATED` column. | | Attributes per row | Each row should contain a single user ID and a JSON object with up to 50 attributes. Each key in the JSON object counts as one attribute (i.e., an array counts as one attribute). | -| Data type | You can sync user attributes through Cloud Data Ingestion. | +| Data type | You can sync user attributes, events, and purchases through Cloud Data Ingestion. | | Braze region | This product is available in all Braze regions. Any Braze region can connect to any Snowflake region | | Snowflake region | You can connect your Snowflake instance in any region or cloud to Braze using this product. | {: .reset-td-br-1 .reset-td-br-2} diff --git a/_docs/_user_guide/message_building_by_channel/email/drag_and_drop/overview.md b/_docs/_user_guide/message_building_by_channel/email/drag_and_drop/overview.md index 24c00c393cd..9f4b9a1633e 100644 --- a/_docs/_user_guide/message_building_by_channel/email/drag_and_drop/overview.md +++ b/_docs/_user_guide/message_building_by_channel/email/drag_and_drop/overview.md @@ -120,11 +120,11 @@ You can choose to include dynamic images into your email messaging by including Once you've finished designing and building your email message, go to **Sending Settings** to add the sending information. -#### Adding custom attributes to links +#### Adding HTML attributes to links ![][6]{: style="float:right;max-width:35%;margin-left:15px;"} -With custom attributes, you can easily append additional information to HTML tags in emails. These attributes can be applied to links, both in text blocks and buttons, and images. This can be especially useful for message personalization, segmentation, and styling. +With attributes, you can easily append additional information to HTML tags in emails. These attributes can be applied to links, both in text blocks and buttons, and images. This can be especially useful for message personalization, segmentation, and styling. A common use case is to insert an attribute into your anchor tag to disable click tracking when sending through Braze: diff --git a/_docs/_user_guide/message_building_by_channel/push/users_and_subscriptions.md b/_docs/_user_guide/message_building_by_channel/push/users_and_subscriptions.md index 8404eb76d9f..5a368a9cc66 100644 --- a/_docs/_user_guide/message_building_by_channel/push/users_and_subscriptions.md +++ b/_docs/_user_guide/message_building_by_channel/push/users_and_subscriptions.md @@ -125,6 +125,10 @@ An app or website can only have one push subscription per device. So when a user Because there isn't a way for push providers (APNs/FCM) to distinguish between multiple users on one device, we pass the push token to the last user who was logged in to determine which user to target on the device for push. +### Multiple devices and one user + +The push subscription state is user-based and is not specific to any individual app. The state of the push subscription is the value that was last set. So if a user has opted-in to push notifications, their push subscription state is `Opted-in` across all eligible devices. If a user later opts out of push notifications, their push subscription state is updated to `Unsubscribed` and no push-registered devices can receive push notifications. + ## Push Enabled filter {#push-enabled} `Push Enabled` is a segmentation filter in Braze that allows marketers to easily identify users that allow Braze to send push notifications and users that haven't expressed preferences to not receive push notifications. diff --git a/_docs/_user_guide/personalization_and_dynamic_content/catalogs/selections.md b/_docs/_user_guide/personalization_and_dynamic_content/catalogs/selections.md index 6dae9a60099..b606484d1e4 100644 --- a/_docs/_user_guide/personalization_and_dynamic_content/catalogs/selections.md +++ b/_docs/_user_guide/personalization_and_dynamic_content/catalogs/selections.md @@ -50,6 +50,6 @@ Using the same personalization, we can also send three meal recommendations for [1]: {% image_buster /assets/img_archive/catalog_selections1.png %} [2]: {% image_buster /assets/img_archive/catalog_selections2.png %} -[3]: {% image_buster /assets/img_archive/catalog_filtered_sets3.png %} +[3]: {% image_buster /assets/img_archive/catalog_selections3.png %} [4]: {% image_buster /assets/img_archive/catalog_selections4.png %} [5]: {% image_buster /assets/img_archive/catalog_selections5.png %} \ No newline at end of file diff --git a/assets/download_file/Braze_Success_and_Support_Services_Handbook_23v16.pdf b/assets/download_file/Braze_Success_and_Support_Services_Handbook_23v17.pdf similarity index 85% rename from assets/download_file/Braze_Success_and_Support_Services_Handbook_23v16.pdf rename to assets/download_file/Braze_Success_and_Support_Services_Handbook_23v17.pdf index 9b44ae39fb2..640e03c05e3 100644 Binary files a/assets/download_file/Braze_Success_and_Support_Services_Handbook_23v16.pdf and b/assets/download_file/Braze_Success_and_Support_Services_Handbook_23v17.pdf differ diff --git a/assets/img/Shopify/shopify_integration77.jpg b/assets/img/Shopify/shopify_integration77.jpg new file mode 100644 index 00000000000..83890f94a40 Binary files /dev/null and b/assets/img/Shopify/shopify_integration77.jpg differ diff --git a/assets/img/Shopify/shopify_integration77.png b/assets/img/Shopify/shopify_integration77.png deleted file mode 100644 index 7fe4148ea0b..00000000000 Binary files a/assets/img/Shopify/shopify_integration77.png and /dev/null differ diff --git a/assets/img/cloud_ingestion/ingestion_1.png b/assets/img/cloud_ingestion/ingestion_1.png index 795495e845e..e296413dced 100644 Binary files a/assets/img/cloud_ingestion/ingestion_1.png and b/assets/img/cloud_ingestion/ingestion_1.png differ diff --git a/assets/img/cloud_ingestion/ingestion_2.png b/assets/img/cloud_ingestion/ingestion_2.png index 958193e26de..2f0d266e6cc 100644 Binary files a/assets/img/cloud_ingestion/ingestion_2.png and b/assets/img/cloud_ingestion/ingestion_2.png differ diff --git a/assets/img_archive/catalog_filtered_sets3.png b/assets/img_archive/catalog_filtered_sets3.png deleted file mode 100644 index e8837e3015f..00000000000 Binary files a/assets/img_archive/catalog_filtered_sets3.png and /dev/null differ diff --git a/assets/img_archive/catalog_selections3.png b/assets/img_archive/catalog_selections3.png new file mode 100644 index 00000000000..7e6d7ac9a58 Binary files /dev/null and b/assets/img_archive/catalog_selections3.png differ diff --git a/assets/js/broken_redirect_list.js b/assets/js/broken_redirect_list.js index 5235b8cea21..b8da4e21443 100644 --- a/assets/js/broken_redirect_list.js +++ b/assets/js/broken_redirect_list.js @@ -323,7 +323,7 @@ validurls['/docs/hidden/private_betas/decision_split/'] = '/docs/decision_split/ validurls['/docs/hidden/private_betas/delay_step/'] = '/docs/delay_step/'; validurls['/docs/hidden/private_betas/promotion_codes/'] = '/docs/promotion_codes/'; validurls['/docs/hidden/private_betas/funnel_report/'] = '/docs/funnel_report/'; -validurls['/docs/hidden/private_betas/frequency_capping_tag/'] = '/docs/frequency_capping_tag/'; +validurls['/docs/hidden/private_betas/frequency_capping_tag/'] = '/docs/user_guide/engagement_tools/campaigns/testing_and_more/rate-limiting/#frequency-capping'; validurls['/docs/hidden/private_betas/audience_sync_facebook/'] = '/docs/audience_sync_facebook/'; validurls['/docs/hidden/private_betas/blacklist/'] = '/docs/blacklist/'; validurls['/docs/hidden/private_betas/fb_app_review/'] = '/docs/fb_app_review/'; @@ -569,4 +569,3 @@ validurls['/docs/api/endpoints/catalogs/catalogs/synchronous/get_list_catalogs/' validurls['/docs/api/endpoints/catalogs/catalogs/synchronous/post_create_catalog/'] = '/docs/api/endpoints/catalogs/catalog_management/synchronous/post_create_catalog/'; validurls['/docs/user_guide/personalization_and_dynamic_content/catalogs/filtered_sets/'] = '/docs/user_guide/personalization_and_dynamic_content/catalogs/selections/'; -validurls['/docs/frequency_capping_tag/'] = '/docs/user_guide/engagement_tools/campaigns/building_campaigns/rate-limiting/#sending-at-large-scales';