Skip to content

Commit

Permalink
Merge pull request #7355 from braze-inc/lx/fixes
Browse files Browse the repository at this point in the history
Revert changes from undoing config change PR
  • Loading branch information
josh-mccrowell-braze authored May 16, 2024
2 parents bff3bb2 + 3e2f9a8 commit 659219d
Show file tree
Hide file tree
Showing 15 changed files with 175 additions and 75 deletions.
2 changes: 1 addition & 1 deletion _docs/_hidden/redirects/okta.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
nav_title: Okta Single Sign-On
permalink: /okta_single_sign_on/
layout: redirect
redirect_to: /docs/user_guide/administrative/logging_in_and_security/single_sign_on/okta_single_sign_on/#okta-single-sign-on
redirect_to: /docs/user_guide/administrative/access_braze/single_sign_on/okta/
---
2 changes: 2 additions & 0 deletions _docs/_partners/message_personalization.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,7 @@ valid_partner_list:
url: /docs/partners/message_personalization/location/tangerine/
- name: Stylitics
url: /docs/partners/message_personalization/dynamic_content/stylitics/
- name: NiftyImages
url: /docs/partners/message_personalization/dynamic_content/niftyimages/

---
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,11 @@ To access the nested data in your custom event, generate a schema for each event

After generating a schema, you can reference the nested data during segmentation and personalization. Refer to the following sections for usage examples:

- API request body
- Liquid templating
- Message triggering
- Segmentation
- Personalization
- Event property segmentation
- [API request body](#api-request-body)
- [Liquid templating](#liquid-templating)
- [Message triggering](#message-triggering)
- [Segmentation](#segmentation)
- [Personalization](#personalization)

### API request body

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Braze Data Transformation may not yet support external platforms that require sp

## Step 4: Write transformation code

If you have little to no experience with JavaScript code or prefer more detailed instructions, follow the **Beginner - POST: Track users** or **Beginner - PUT: Update catalog item** tab for writing your transformation code.
If you have little to no experience with JavaScript code or prefer more detailed instructions, follow the **Beginner - POST: Track users** or **Beginner - PUT: Update multiple catalog items** tab for writing your transformation code.

If you're a developer or have significant experience with JavaScript code, follow the **Advanced - POST: Track users** tab for high-level instructions on writing your transformation code.

Expand Down Expand Up @@ -120,7 +120,7 @@ Here, you will write transformation code to define how you’d like to map vario
Your webhook integration is now complete!
{% endtab %}
{% tab Beginner - PUT: Update catalog item %}
{% tab Beginner - PUT: Update multiple catalog items %}
Here, you will write transformation code to define how you’d like to map various webhook values to Braze catalog item updates.
Expand All @@ -130,19 +130,42 @@ Here, you will write transformation code to define how you’d like to map vario
// Feel free to delete this entirely to start from scratch, or to edit specific components
// First, this code defines a variable, "brazecall", to build a PUT /catalogs/{catlalog_name}/items/{item_id} request
// First, this code defines a variable, "brazecall", to build a PUT /catalogs/{catalog_name}/items request
// Everything from the incoming webhook is accessible via the special variable "payload"
// As such, you can template in desired values in your request with JS dot notation, such as payload.x.y.z
let brazecall = {
// For Braze Data Transformations to update Catalog items, the special variables "catalog_name" and "item_id" are required
// These variables are used to specify the catalog name and item ID which would otherwise go in the request URL
// For Braze Data Transformation to update Catalog items, the special variable "catalog_name" is required
// This variable is used to specify the catalog name which would otherwise go in the request URL
"catalog_name": "catalog_name",
"item_id": payload.item_id,
// After the special variables, construct the Catalogs update request as usual below
// After defining "catalog name", construct the Update Multiple Catalog Items request as usual below
// Documentation for the destination endpoint: https://www.braze.com/docs/api/endpoints/catalogs/catalog_items/asynchronous/put_update_catalog_items/
"items": [
{
"id": payload.item_id_1,
"catalog_column1": "string",
"catalog_column2": 1,
"catalog_column3": true,
"catalog_column4": "2021-09-03T09:03:19.967+00:00",
"catalog_column5": {
"Latitude": 33.6112,
"Longitude": -117.8711
}
},
{
"id": payload.item_id_2,
"catalog_column1": "string",
"catalog_column2": 1,
"catalog_column3": true,
"catalog_column4": "2021-09-03T09:03:19.967+00:00",
"catalog_column5": {
"Latitude": 33.6112,
"Longitude": -117.8711
}
},
{
"id": payload.item_id_3,
"catalog_column1": "string",
"catalog_column2": 1,
"catalog_column3": true,
Expand All @@ -159,9 +182,9 @@ Here, you will write transformation code to define how you’d like to map vario
return brazecall;
```
2. Transformations for `/catalogs` destinations require a `catalog_name` and `item_id` to define the specific catalog and item that you’d like to update. You can hard code these values, or template in the value with a webhook value via a payload line. Use dot notation to access payload object properties.<br><br>
3. Define how to update the `item_id` (from Step 2 of this section) by modifying the items array. Again, you can hard code these values or template in a webhook value via a payload line. <br><br> If you're looking at the Braze catalog as a table, the `item_id` is a row in your catalog, and item objects (starting with “catalog_column1”) are column values for that row. Note that “catalog_column1” is a placeholder, so your catalog may not have this field. The item objects should only contain fields that exist in the catalog.<br><br>
4. Click Validate to return a preview of your code’s output and to check if it is an acceptable request for the Update catalog item endpoint.<br><br>
2. Transformations for `/catalogs` destinations require a `catalog_name` to define the specific catalog that you’d like to update. You can hard code this field, or template the field with a webhook field via a payload line. Use dot notation to access payload object properties.<br><br>
3. Define which items you’d like to update in the catalog with the `id` field(s) in the items array. You can hard code these fields, or template in a webhook field via a payload line. <br><br> Keep in mind, “catalog_column” is a placeholder value. Be sure item objects only contain fields that exist in the catalog.<br><br>
4. Click Validate to return a preview of your code’s output and to check if it is an acceptable request for the Update multiple catalog items endpoint.<br><br>
5. Activate your transformation. For additional help with your code before activating it, contact your Braze account manager.<br><br>
6. Make sure to check if your source platform has a setting to start sending webhooks. Your transformation code will run for each incoming webhook, and the catalog items will begin updating.
Expand Down
31 changes: 2 additions & 29 deletions _docs/_user_guide/data_and_analytics/query_builder.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ tool: Reports

# Query Builder

> With the Query Builder, you can generate reports using Braze data in Snowflake. The Query Builder comes with pre-built SQL [query templates](#query-templates) to get you started, or you can write your own custom SQL queries to unlock even more insights.
> With the Query Builder, you can generate reports using Braze data in Snowflake. The Query Builder comes with pre-built SQL [query templates]({{site.baseurl}}/user_guide/data_and_analytics/query_builder/query_templates/) to get you started, or you can write your own custom SQL queries to unlock even more insights.
## Who has access

Expand Down Expand Up @@ -73,34 +73,7 @@ If a report times out or runs into errors even after retrying, please contact su

All templates surface data from the last 60 days. You can access query templates by selecting **Create SQL Query** > **Query Template** when first creating a report.

<style>
table th:nth-child(1) {
width: 10%;
}
table th:nth-child(2) {
width: 25%;
}
table th:nth-child(3) {
width: 20%;
}
table th:nth-child(4) {
width: 45%;
}
table td {
word-break: break-word;
}
</style>

| Query name | Description | Metrics | Preview |
| --- | --- | --- | --- |
| Channel engagement and revenue | For each channel, you'll see all engagement metrics for that channel (opens, clicks, etc), revenue, number of transactions, and average price. | {::nomarkdown} <ul> <li> <b>Number of transactions:</b> number of purchase events </li> <li> <b>Average price:</b> revenue divided by transactions </li> </ul> {:/} | ![]({% image_buster /assets/img_archive/query_builder_q1.png %}) |
| Email bounces per domain | Number of bounces per email domain | | ![]({% image_buster /assets/img_archive/query_builder_q4.png %}) |
| Email performance by country | For each country, you'll see the following metrics: sends, indirect open rate, and direct open rate. Country is the country of the user at the time of push send. | | ![]({% image_buster /assets/img_archive/query_builder_q3.png %}) |
| Email subscription group opt-ins and opt-outs | For each week, you'll see the number of unique user opt-ins and opt-outs of any email subscription groups. | | ![]({% image_buster /assets/img_archive/query_builder_q2.png %}) |
| Email URLs clicked | This report shows the number of clicks each link in an email had. To run this report, you'll need to specify the API identifier for a campaign or Canvas. You can find a campaign's API identifier at the bottom of that campaign's details page, and you can find the Canvas API identifier under **Analyze Variants**. <br><br>For each de-personalized link, you'll see a count of clicks. Your CSV download will include the user IDs of all users that clicked, the link they clicked on, and a timestamp of when they clicked. | **De-personalized URLs:** URLs that are stripped of any Liquid tags | ![]({% image_buster /assets/img_archive/query_builder_q5.png %}) |
| Revenue by country | This report provides revenue per country for a specific campaign/Canvas. To run this report, you'll need to specify the API identifier for a campaign or Canvas. You can find a campaign's API identifier at the bottom of that campaign's details page, and you can find the Canvas API identifier under **Analyze Variants**.<br><br>For each country, you'll see the amount of revenue generated, number of orders, number of returns, net revenue, and gross revenue. | {::nomarkdown} <ul> <li> <b>Number of orders:</b> number of purchase events </li> <li> <b>Number of returns:</b> number of purchase events with negative revenue values </li> <li> <b>Net revenue:</b> revenue of all non-returns </li> <li> <b>Gross revenue:</b> revenue that includes the value of returns </li> </ul> {:/} | ![]({% image_buster /assets/img_archive/query_builder_q6.png %}) |
| Push performance by country | For each country, you'll see the following metrics: deliveries, open rate, and click rate. Country is the country of the user at the time of email send. | | ![]({% image_buster /assets/img_archive/query_builder_q7.png %}) |
{: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4}
See [Query templates]({{site.baseurl}}/user_guide/data_and_analytics/query_builder/query_templates/) for a list of available templates.

## Custom SQL

Expand Down
Loading

0 comments on commit 659219d

Please sign in to comment.