Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Leftover deploy - February 6, 2025 #8939

Merged
merged 127 commits into from
Feb 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
88d2333
Final additions
rachel-feinberg Jan 8, 2025
288f90e
Update AI copywriting assistant docs
rachel-feinberg Jan 8, 2025
4b32594
Update _docs/_user_guide/administrative/app_settings/brand_guidelines.md
rachel-feinberg Jan 9, 2025
f0fa964
Create includes for HTTP event postback and new user guide article
bre-fitzgerald Jan 24, 2025
c169dcd
Minor word nit
bre-fitzgerald Jan 24, 2025
95f594a
Apostrophe fix
bre-fitzgerald Jan 24, 2025
94108de
BD-3852: Create segments based on event properties
lydia-xie Jan 31, 2025
3ae3a9e
edit
lydia-xie Jan 31, 2025
e092a6a
Update integration.md
mark-at-braze Feb 4, 2025
3a736b2
Update integration.md
mark-at-braze Feb 4, 2025
21eb614
Update _docs/_developer_guide/banner_cards/integration.md
lydia-xie Feb 4, 2025
2b325ac
Apply suggestions from code review
lydia-xie Feb 4, 2025
51047e6
Update _docs/_developer_guide/banner_cards/integration.md
lydia-xie Feb 4, 2025
f299c27
Update integration.md
mark-at-braze Feb 4, 2025
401f0f7
Update _docs/_developer_guide/banner_cards/integration.md
lydia-xie Feb 4, 2025
ddd0ba8
Update _docs/_developer_guide/banner_cards/integration.md
lydia-xie Feb 4, 2025
bfe03c1
Update _docs/_developer_guide/banner_cards/integration.md
lydia-xie Feb 4, 2025
18ff008
Merge pull request #8917 from braze-inc/mark-at-braze-patch-1
lydia-xie Feb 4, 2025
c19eaa4
Peer review
bre-fitzgerald Feb 5, 2025
8606fef
Merge pull request #8867 from braze-inc/bf/tracking_transactional_emails
bre-fitzgerald Feb 5, 2025
3004928
Update ecommerce to eCommerce
bre-fitzgerald Feb 5, 2025
e280ce2
Merge pull request #8921 from braze-inc/bf/ecommerce_casing_fix
internetisaiah Feb 5, 2025
208afb7
BD-3864: Add notification for campaign and Canvas volume limit
lydia-xie Feb 5, 2025
5e8a680
Update _docs/_user_guide/administrative/app_settings/company_settings…
lydia-xie Feb 5, 2025
2bb1c6a
Merge pull request #8923 from braze-inc/bd-3864
bre-fitzgerald Feb 5, 2025
6ac32e0
bd-3900: update per workspace
lydia-xie Feb 5, 2025
fdb0b63
Add open source software disclosure for Braze PDFs
rachel-feinberg Feb 5, 2025
66f3b3c
edit
lydia-xie Feb 5, 2025
eaa4a85
Update open_source_software_disclosure.md
josh-mccrowell-braze Feb 5, 2025
a3995d0
Merge pull request #8925 from braze-inc/bd-3900
rachel-feinberg Feb 5, 2025
221ad26
Update content_cards.md
davidbielik Feb 5, 2025
01a619b
Merge pull request #8927 from braze-inc/davidbielik-patch-2
internetisaiah Feb 5, 2025
b0dded6
Merge pull request #8926 from braze-inc/softwaredisc
josh-mccrowell-braze Feb 5, 2025
cfa929d
BD-3906 and BD-3839: Clarifying prioritization array for email as ide…
lydia-xie Feb 5, 2025
fbe47ec
Update _docs/_api/endpoints/messaging/send_messages/post_send_trigger…
lydia-xie Feb 5, 2025
abfa0c8
Add missing ';' in broken_redirect_list.js
internetisaiah Feb 5, 2025
33ac503
Merge pull request #8928 from braze-inc/bd-3906
lydia-xie Feb 5, 2025
507ea74
Merge pull request #8930 from braze-inc/internetisaiah-patch-1
lydia-xie Feb 5, 2025
a4ea2c6
File create.md committed.
Translationmanagement Feb 6, 2025
ea35877
File create.md committed.
Translationmanagement Feb 6, 2025
ecb0dc4
File security_settings.md committed.
Translationmanagement Feb 6, 2025
8073f89
File terms_to_know.md committed.
Translationmanagement Feb 6, 2025
1e10bf7
File campaigns_canvases.md committed.
Translationmanagement Feb 6, 2025
e6c9253
File security_settings.md committed.
Translationmanagement Feb 6, 2025
5b9be32
File message_activity_log_tab.md committed.
Translationmanagement Feb 6, 2025
7b12a4d
File event_user_log_tab.md committed.
Translationmanagement Feb 6, 2025
c35594d
File internal_groups_tab.md committed.
Translationmanagement Feb 6, 2025
cd846e1
File sms_laws_and_regulations.md committed.
Translationmanagement Feb 6, 2025
d022683
File portal.md committed.
Translationmanagement Feb 6, 2025
ec41463
File multi_language_settings.md committed.
Translationmanagement Feb 6, 2025
6925548
File company_settings.md committed.
Translationmanagement Feb 6, 2025
f24cfb9
File report_metrics.md committed.
Translationmanagement Feb 6, 2025
38b1f75
File report_metrics.md committed.
Translationmanagement Feb 6, 2025
3c3a0dd
File query_builder.md committed.
Translationmanagement Feb 6, 2025
379e280
File query_builder.md committed.
Translationmanagement Feb 6, 2025
e677950
File custom_attributes.md committed.
Translationmanagement Feb 6, 2025
1355db5
File custom_attributes.md committed.
Translationmanagement Feb 6, 2025
67c01cc
File managing_custom_data.md committed.
Translationmanagement Feb 6, 2025
c8f2b9e
File managing_custom_data.md committed.
Translationmanagement Feb 6, 2025
624c9a2
File setting_up_currents.md committed.
Translationmanagement Feb 6, 2025
cace11e
File setting_up_currents.md committed.
Translationmanagement Feb 6, 2025
a838e3d
File transferring_data_to_redshift.md committed.
Translationmanagement Feb 6, 2025
5903b0c
File transferring_data_to_redshift.md committed.
Translationmanagement Feb 6, 2025
37c2b46
File email_performance_dashboard.md committed.
Translationmanagement Feb 6, 2025
07cc8fc
File email_performance_dashboard.md committed.
Translationmanagement Feb 6, 2025
7865407
File segments.md committed.
Translationmanagement Feb 6, 2025
8554cde
File creating_a_push_message.md committed.
Translationmanagement Feb 6, 2025
aa2a9f5
File create.md committed.
Translationmanagement Feb 6, 2025
55aa829
File faq.md committed.
Translationmanagement Feb 6, 2025
f37f50c
File segmentation_filters.md committed.
Translationmanagement Feb 6, 2025
e1331d4
File user_profiles.md committed.
Translationmanagement Feb 6, 2025
4c00b85
File regex.md committed.
Translationmanagement Feb 6, 2025
5fb7fa8
File conversion_events.md committed.
Translationmanagement Feb 6, 2025
f71979b
File rate-limiting.md committed.
Translationmanagement Feb 6, 2025
7cd2461
File custom_attributes.md committed.
Translationmanagement Feb 6, 2025
c6f49a1
File sending_test_messages.md committed.
Translationmanagement Feb 6, 2025
1bafe45
File about.md committed.
Translationmanagement Feb 6, 2025
ad5903d
File about.md committed.
Translationmanagement Feb 6, 2025
631ed06
File sending_test_messages.md committed.
Translationmanagement Feb 6, 2025
431f179
File sms_channel.md committed.
Translationmanagement Feb 6, 2025
c4235d3
File sms_channel.md committed.
Translationmanagement Feb 6, 2025
966d407
File sms_channel.md committed.
Translationmanagement Feb 6, 2025
5b40721
File sms_channel.md committed.
Translationmanagement Feb 6, 2025
37cffd9
File user_archival.md committed.
Translationmanagement Feb 6, 2025
d839727
File user_archival.md committed.
Translationmanagement Feb 6, 2025
faa0cc7
File home.md committed.
Translationmanagement Feb 6, 2025
763d2f0
File user_archival.md committed.
Translationmanagement Feb 6, 2025
8ef9223
File home.md committed.
Translationmanagement Feb 6, 2025
799033d
File user_archival.md committed.
Translationmanagement Feb 6, 2025
a5034f2
File home.md committed.
Translationmanagement Feb 6, 2025
0b9056f
File home.md committed.
Translationmanagement Feb 6, 2025
b181091
File gifs.md committed.
Translationmanagement Feb 6, 2025
8d21b65
File metrics.md committed.
Translationmanagement Feb 6, 2025
980dbcc
File metrics.md committed.
Translationmanagement Feb 6, 2025
15b8802
File metrics.md committed.
Translationmanagement Feb 6, 2025
a6e3c9d
File metrics.md committed.
Translationmanagement Feb 6, 2025
d54bdfc
File gifs.md committed.
Translationmanagement Feb 6, 2025
365d9fc
File metrics.md committed.
Translationmanagement Feb 6, 2025
8341541
File gifs.md committed.
Translationmanagement Feb 6, 2025
0f1eb6a
File appboyBridge.md committed.
Translationmanagement Feb 6, 2025
3d39260
File gifs.md committed.
Translationmanagement Feb 6, 2025
cd9d2b1
File gifs.md committed.
Translationmanagement Feb 6, 2025
d610f86
File campaign_analytics.md committed.
Translationmanagement Feb 6, 2025
3e7572a
File campaign_analytics.md committed.
Translationmanagement Feb 6, 2025
f1c7aaa
File appboyBridge.md committed.
Translationmanagement Feb 6, 2025
9c10aa2
File campaign_analytics.md committed.
Translationmanagement Feb 6, 2025
6e348c5
File appboyBridge.md committed.
Translationmanagement Feb 6, 2025
f96633d
File appboyBridge.md committed.
Translationmanagement Feb 6, 2025
cdf302f
File appboyBridge.md committed.
Translationmanagement Feb 6, 2025
9bcffb4
File campaign_analytics.md committed.
Translationmanagement Feb 6, 2025
4af96ea
File campaign_analytics.md committed.
Translationmanagement Feb 6, 2025
c86f2a4
File gifs.md committed.
Translationmanagement Feb 6, 2025
90500eb
File appboyBridge.md committed.
Translationmanagement Feb 6, 2025
eec6cd3
File metrics.md committed.
Translationmanagement Feb 6, 2025
4a08889
File campaign_analytics.md committed.
Translationmanagement Feb 6, 2025
e148ec6
Merge pull request #8936 from braze-inc/i18n_phrase-ko-20250206
josh-mccrowell-braze Feb 6, 2025
2fa4417
File appboyBridge.md committed.
Translationmanagement Feb 6, 2025
2fbc376
File gifs.md committed.
Translationmanagement Feb 6, 2025
16a2fa7
File metrics.md committed.
Translationmanagement Feb 6, 2025
3d94c13
File campaign_analytics.md committed.
Translationmanagement Feb 6, 2025
c0a7619
Merge pull request #8935 from braze-inc/i18n_phrase-pt_br-20250206
josh-mccrowell-braze Feb 6, 2025
da0efff
Merge pull request #8938 from braze-inc/i18n_phrase-es-20250206
josh-mccrowell-braze Feb 6, 2025
a571774
Merge pull request #8937 from braze-inc/i18n_phrase-fr_fr-20250206
josh-mccrowell-braze Feb 6, 2025
b0f8ea1
Merge pull request #8934 from braze-inc/i18n_phrase-ja-20250206
josh-mccrowell-braze Feb 6, 2025
af06c2b
Apply suggestions from code review
rachel-feinberg Feb 6, 2025
bd13f3c
Merge pull request #8726 from braze-inc/bd-3800
rachel-feinberg Feb 6, 2025
9dfadbb
Merge pull request #8903 from braze-inc/bd-3852
rachel-feinberg Feb 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -126,116 +126,6 @@ Most endpoints at Braze have a rate limit implementation that will return a 429

## Transactional HTTP event postback

All transactional emails are complemented with event status postbacks sent as an HTTP request back to your specified URL. This will allow you to evaluate the message status in real-time and take action to reach the user on another channel if the message goes undelivered, or fallback to an internal system if Braze is experiencing latency.

In order to associate the incoming events to a particular instance of send, you can choose to either capture and store the Braze `dispatch_id` returned in the [API response](#example-response), or pass your own identifier to the `external_send_id` field. An example of a value you may choose to pass to that field may be an order ID, where after completing order 1234, an order confirmation message is triggered to the user through Braze, and `external_send_id : 1234` is included in the request. All following event postbacks such as `Sent` and `Delivered` will include `external_send_id : 1234` in the payload allowing you to confirm that user successfully received their order confirmation email.

To get started using the Transactional HTTP Event Postback, navigate to **Settings** > **Email Preferences** in your Braze dashboard and locate the section **Transactional Event Status Postback**. Input your desired URL to receive postbacks.

{% alert note %}
If you are using the [older navigation]({{site.baseurl}}/navigation), this page is located at **Manage Settings** > **Email Settings**.
{% endalert %}

![]({% image_buster /assets/img/transactional_webhook_url.png %})

### Postback body

```json
{
"dispatch_id": (string, a randomly-generated unique ID of the instance of this send),
"status": (string, Current status of message from the following message status table,
"metadata" : (object, additional information relating to the execution of an event)
{
"external_send_id" : (string, If provided at the time of the request, Braze will pass your internal identifier for this send for all postbacks),
"campaign_api_id" : (string, API identifier of this transactional campaign),
"received_at": (ISO 8601 DateTime string, Timestamp of when the request was received by Braze, only included for events with "sent" status),
"enqueued_at": (ISO 8601 DateTime string, Timestamp of when the request was enqueued by Braze, only included for events with "sent" status),
"executed_at": (ISO 8601 DateTime string, Timestamp of when the request was processed by Braze, only included for events with "sent" status),
"sent_at": (ISO 8601 DateTime string, Timestamp of when the request was sent to the ESP by Braze, only included for events with "sent" status),
"processed_at" : (ISO 8601 DateTime string, Timestamp the event was processed by the ESP, only included for events with "processed" status),
"delivered_at" : (ISO 8601 DateTime string, Timestamp the event was delivered to the user's inbox provider, only included for events with "processed" status),
"bounced_at" : (ISO 8601 DateTime string, Timestamp the event was bounced by the user's inbox provider, only included for events with "bounced" status),
"aborted_at" : (ISO 8601 DateTime string, Timestamp the event was Aborted by Braze, only included for events with "aborted" status),
"reason" : (string, The reason Braze or the Inbox provider was unable to process this message to the user, only included for events with "aborted" or "bounced" status),
}
}
```

#### Message status

| Status | Description |
| ------------ | ----------- |
| `sent` | Message successfully dispatched to a Braze email sending partner |
| `processed` | Email sending partner has successfully received and prepared the message for sending to the user's inbox provider |
| `aborted` | Braze was unable to successfully dispatch the message due to the user not having an emailable address, or Liquid abort logic was called in the message body. All aborted events include a `reason` field within the metadata object indicating why the message was aborted |
|`delivered`| Message was accepted by the user's email inbox provider |
|`bounced`| Message was rejected by the user's email inbox provider. All bounced events include a `reason` field within the metadata object reflecting the bounce error code provided by the inbox provider |
{: .reset-td-br-1 .reset-td-br-2 role="presentation" }

### Example postback
```json

// Sent Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "sent",
"metadata": {
"received_at": "2020-08-31T18:58:41.000+00:00",
"enqueued_at": "2020-08-31T18:58:41.000+00:00",
"executed_at": "2020-08-31T18:58:41.000+00:00",
"sent_at": "2020-08-31T18:58:42.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}

// Processed Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "processed",
"metadata": {
"processed_at": "2020-08-31T18:58:42.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}

// Aborted
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "aborted",
"metadata": {
"reason": "User not emailable",
"aborted_at": "2020-08-31T19:04:51.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}

// Delivered Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "delivered",
"metadata": {
"delivered_at": "2020-08-31T18:27:32.000+00:00",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}

// Bounced Event
{
"dispatch_id": "acf471119f7449d579e8089032003ded",
"status": "bounced",
"metadata": {
"bounced_at": "2020-08-31T18:58:43.000+00:00",
"reason": "550 5.1.1 The email account that you tried to reach does not exist",
"campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
"external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
}
}

```

{% multi_lang_include http_event_postback.md %}

{% endapi %}
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ Authorization: Bearer YOUR-REST-API-KEY
|`trigger_properties`| Optional | Object | See [trigger properties]({{site.baseurl}}/api/objects_filters/trigger_properties_object/). Personalization key-value pairs that will apply to all users in this request. |
|`broadcast`| Optional | Boolean | You must set `broadcast` to true when sending a message to an entire segment that a campaign or Canvas targets. This parameter defaults to false (as of August 31, 2017). <br><br> If `broadcast` is set to true, a `recipients` list cannot be included. However, use caution when setting `broadcast: true`, as unintentionally setting this flag may cause you to send your message to a larger than expected audience. |
|`audience`| Optional | Connected audience object| See [connected audience]({{site.baseurl}}/api/objects_filters/connected_audience/). |
|`recipients`| Optional | Array | See [recipients object]({{site.baseurl}}/api/objects_filters/recipient_object/).<br><br>If `send_to_existing_only` is `false`, an attribute object must be included.<br><br>If `recipients` is not provided and `broadcast` is set to true, the message will be sent to the entire segment targeted by the campaign. |
|`recipients`| Optional | Array | See [recipients object]({{site.baseurl}}/api/objects_filters/recipient_object/).<br><br>If `send_to_existing_only` is `false`, an attribute object must be included.<br><br>If `recipients` is not provided and `broadcast` is set to true, the message will be sent to the entire segment targeted by the campaign. <br><br> If `email` is the identifier, you must include [`prioritization`]({{site.baseurl}}/api/endpoints/user_data/post_user_identify#identifying-users-by-email) in the recipients object. |
|`attachments`| Optional | Array | If `broadcast` is set to true, then the `attachments` list cannot be included. |
{: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4 role="presentation" }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Authorization: Bearer YOUR-REST-API-KEY
|`canvas_entry_properties`| Optional | Object | See [Canvas entry properties]({{site.baseurl}}/api/objects_filters/canvas_entry_properties_object/). Personalization key-value pairs will apply to all users in this request. The Canvas entry properties object has a maximum size limit of 50 KB. |
|`broadcast`| Optional | Boolean | You must set `broadcast` to true when sending a message to an entire segment that a campaign or Canvas targets. This parameter defaults to false (as of August 31, 2017). <br><br> If `broadcast` is set to true, a `recipients` list cannot be included. However, use caution when setting `broadcast: true`, as unintentionally setting this flag may cause you to send your message to a larger-than-expected audience. |
|`audience`| Optional| Connected audience object | See [Connected audience]({{site.baseurl}}/api/objects_filters/connected_audience/). |
|`recipients`| Optional | Array | See [Recipients object]({{site.baseurl}}/api/objects_filters/recipient_object/). If not provided and `broadcast` is set to true, the message will be sent to the entire segment targeted by the Canvas.<br><br> The `recipients` array may contain up to 50 objects, with each object containing a single `external_user_id` string and a `canvas_entry_properties` object. Either `external_user_id` or `user_alias` is required for this call. Requests must specify only one. <br><br> When `send_to_existing_only` is `true`, Braze will only send the message to existing users—however, this flag can't be used with user aliases. When `send_to_existing_only` is `false` and a user with the given `id` does not exist, Braze will create a user with that ID and attributes before sending the message.|
|`recipients`| Optional | Array | See [Recipients object]({{site.baseurl}}/api/objects_filters/recipient_object/). If not provided and `broadcast` is set to true, the message will be sent to the entire segment targeted by the Canvas.<br><br> The `recipients` array may contain up to 50 objects, with each object containing a single `external_user_id` string and a `canvas_entry_properties` object. This call requires an `external_user_id`, `user_alias`, or `email`. Requests must specify only one. <br><br> When `send_to_existing_only` is `true`, Braze will only send the message to existing users—however, this flag can't be used with user aliases. When `send_to_existing_only` is `false` and a user with the given `id` does not exist, Braze will create a user with that ID and attributes before sending the message. <br><br> If `email` is the identifier, you must include [`prioritization`]({{site.baseurl}}/api/endpoints/user_data/post_user_identify#identifying-users-by-email) in the recipients object. |
{: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4 role="presentation" }

Customers using the API for server-to-server calls may need to allowlist the appropriate API URL if they're behind a firewall.
Expand Down
8 changes: 8 additions & 0 deletions _docs/_developer_guide/banner_cards/integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,14 @@ This feature is not currently supported on Roku.

{% enddetails %}

## Handling test sends

Use test sends to verify Banner Card integrations before launching a campaign. Test Banner Cards are stored in a separate in-memory cache and do not persist across app restarts. While no extra setup is needed, the device must be able to receive foreground push notifications to display test Banner Cards.

{% alert important %}
A test banner is treated like any other banner except it's removed at the next app session. You must have its placement set up in your app for the test banner to display.
{% endalert %}

## Dimensions and sizing

Here's some things to know about Banner Card dimensions and sizing:
Expand Down
Loading