diff --git a/_docs/_user_guide/analytics/dashboard.md b/_docs/_user_guide/analytics/dashboard.md
index 209e728dff4..3de9bfa1f5a 100644
--- a/_docs/_user_guide/analytics/dashboard.md
+++ b/_docs/_user_guide/analytics/dashboard.md
@@ -27,5 +27,8 @@ guide_featured_list:
- name: API Usage Dashboard
link: /docs/user_guide/analytics/dashboard/api_usage_dashboard/
image: /assets/img/braze_icons/trend-up-01.svg
+ - name: eCommerce Revenue Dashboard
+ link: /docs/ecommerce_revenue_dashboard/
+ image: /assets/img/braze_icons/line-chart-up-04.svg
---
diff --git a/_docs/_user_guide/analytics/dashboard/ecommerce_revenue_dashboard.md b/_docs/_user_guide/analytics/dashboard/ecommerce_revenue_dashboard.md
new file mode 100644
index 00000000000..b32c8a83618
--- /dev/null
+++ b/_docs/_user_guide/analytics/dashboard/ecommerce_revenue_dashboard.md
@@ -0,0 +1,65 @@
+---
+nav_title: eCommerce revenue dashboard
+article_title: eCommerce revenue dashboard
+alias: "/ecommerce_revenue_dashboard/"
+page_order: 6
+description: "This article provides an overview of the eCommerce Revenue - Last Touch Attribution dashboard."
+---
+
+# eCommerce revenue dashboard
+
+> The **eCommerce Revenue - Last Touch Attribution** dashboard tracks last-touch attributed revenue for campaigns and Canvases using [eCommerce recommended events]({{site.baseurl}}/ecommerce_events/). Use this dashboard to understand which messages drive revenue and to monitor overall eCommerce performance over time.
+
+{% alert note %}
+eCommerce recommended events are currently in early access. Contact your Braze customer success manager if you’re interested in participating in this early access.
If you're using the new [Shopify connector]({{site.baseurl}}/partners/ecommerce/shopify/multiple_stores/?tab=shopify%20connector), these recommended events will be automatically available through the integration. Otherwise, these events must be implemented before data appears in this dashboard.
+{% endalert %}
+
+To view your eCommerce revenue dashboard, go to **Analytics** > **Dashboard Builder**, then select **eCommerce Revenue - Last Touch Attribution**. This dashboard reports on revenue attributed to the last campaign or Canvas a user interacted with before placing an order, within the selected conversion window.
+
+## Available metrics
+
+| Metric | Definition |
+| --- | --- |
+| eCommerce Revenue | Total last-touch attributed revenue based on the selected date range and conversion window. |
+| Daily Orders Placed | The average number of distinct orders placed per day. |
+| Average Daily eCommerce Revenue | Average attributed revenue per day for the selected time period. |
+| eCommerce Revenue Over Time | A time series of attributed revenue in the selected date range. |
+| eCommerce Revenue by Campaign | Attributed revenue broken down by campaign. |
+| eCommerce Revenue by Canvas | Attributed revenue broken down by Canvas. |
+{: .reset-td-br-1 .reset-td-br-2 role=“presentation”}
+
+## Attribution model
+
+The **eCommerce Revenue - Last Touch Attribution** dashboard uses last-touch attribution. This means revenue is attributed to the most recent Braze campaign or Canvas a user engaged with prior to placing an order.
+
+{% alert important %}
+Message interactions must have occurred within the selected conversion window. Orders without an eligible message interaction within the conversion window are not attributed.
+{% endalert %}
+
+## Included data
+
+The **eCommerce Revenue - Last Touch Attribution** dashboard pulls in data from eCommerce recommended events:
+
+- `ecommerce.product_viewed`
+- `ecommerce.cart_updated`
+- `ecommerce.checkout_started`
+- `ecommerce.order_placed`
+- `ecommerce.order_refunded`
+- `ecommerce.order_cancelled`
+
+Revenue and order counts use Braze standardized calculations.
+
+| Metric | Calculation |
+| --- | --- |
+| Total Revenue | Sum of order placed values − Sum of refunded values |
+| Total Orders | Distinct orders placed − Distinct orders cancelled |
+{: .reset-td-br-1 .reset-td-br-2 role=“presentation”}
+
+### Excluded data
+
+Purchases logged using the legacy purchase event are not included. The **eCommerce Revenue - Last Touch Attribution** dashboard currently does not support features tied to legacy purchase events, such as LTV or revenue reporting within campaigns or Canvases.
+
+
+## Currency handling
+
+All revenue is displayed in USD. Non-USD currencies are converted to USD using the exchange rate on the date the event is reported. To prevent conversion, hardcode the currency to `USD` when sending events.
diff --git a/_docs/_user_guide/brazeai/agents.md b/_docs/_user_guide/brazeai/agents.md
index 27066e2f733..9cde0685b8f 100644
--- a/_docs/_user_guide/brazeai/agents.md
+++ b/_docs/_user_guide/brazeai/agents.md
@@ -52,7 +52,8 @@ Agents are configured with instructions (system prompts) that define how they be
During the beta period, the following limitations apply:
- Each agent has a default daily execution limit of 50,000 runs, which can be increased up to a maximum of 100,000 runs per day.
-- Each run must complete within 30 seconds. After 30 seconds, the agent will return a null response where it is used.
+- By default, each run must complete within 15 seconds. After 15 seconds, the agent returns a `null` response where it is used.
+ - If your agents consistently time out, contact your Braze account manager to increase this limit.
- Input data is limited to 25 KB per request. Longer inputs are truncated.
## Next steps
diff --git a/_docs/_user_guide/brazeai/agents/creating_agents.md b/_docs/_user_guide/brazeai/agents/creating_agents.md
index c13922bf1f3..62d0ab48a22 100644
--- a/_docs/_user_guide/brazeai/agents/creating_agents.md
+++ b/_docs/_user_guide/brazeai/agents/creating_agents.md
@@ -156,7 +156,10 @@ For more details on prompting best practices, refer to guides from the following
### Output format
-Use the **Output Format** field to organize and define the agent's output by manually structuring fields or using JSON.
+Use the **Output Format** field to organize and define the agent's output by manually structuring fields or using JSON.
+
+- **Fields:** A no-code way to enforce an agent output that you can use consistently.
+- **JSON:** A code approach to creating a precise output format, where you can nest variables and objects within the JSON schema.
#### Fields
diff --git a/_docs/_user_guide/brazeai/agents/deploying_agents.md b/_docs/_user_guide/brazeai/agents/deploying_agents.md
index 96bb6e37681..5398a21824f 100644
--- a/_docs/_user_guide/brazeai/agents/deploying_agents.md
+++ b/_docs/_user_guide/brazeai/agents/deploying_agents.md
@@ -70,6 +70,11 @@ After launching, the agent runs and evaluates each row, taking the selected colu
You can refresh and edit the fields in your catalog that use agents. To remove an agent from a column, unselect **Apply AI agent**. This reverts the column to a non-agentic column, and the fields retain the latest values the agent applied the last time it ran on the catalog.
+Circular references in catalogs aren't supported, meaning the following scenario can't occur:
+
+- Agentic Column 1 uses Agentic Column 2 as an input
+- Agentic Column 2 uses Agentic Column 1 as an input
+
{: style="max-width:80%;"}
{% alert note %}
diff --git a/_docs/_user_guide/brazeai/predictive_events.md b/_docs/_user_guide/brazeai/predictive_events.md
index 15ca671148d..8e931729c23 100644
--- a/_docs/_user_guide/brazeai/predictive_events.md
+++ b/_docs/_user_guide/brazeai/predictive_events.md
@@ -13,7 +13,7 @@ search_rank: 1
## About Predictive Events
-After a prediction is built, users are assigned a [likelihood score]({{site.baseurl}}/user_guide/brazeai/predictive_events/prediction_analytics/#purchase_score) between 0 and 100 denoting how likely they are to perform your selected event. The higher the score, the more likely a user is to perform that event. Users are also sorted by low, medium, and high likelihood categories.
+After a prediction is built, users are assigned a [likelihood score]({{site.baseurl}}/user_guide/brazeai/predictive_events/analytics/#purchase_score) between 0 and 100 denoting how likely they are to perform your selected event. The higher the score, the more likely a user is to perform that event. Users are also sorted by low, medium, and high likelihood categories.
The real value of Predictive Events lies in using prediction results to create a segment or campaign. Marketers can build targeted campaigns directly on the **Prediction** page for immediate revenue-boosting results or save a segment for a future campaign or Canvas. Not sure who to target first? Read our [strategic considerations]({{site.baseurl}}/user_guide/brazeai/predictive_events/messaging_users/#strategy) for messaging users based on their likelihood score.
@@ -25,4 +25,4 @@ The **Predictions** page is located in the **Analytics** section. For full acces
Prior to purchasing this feature, it is available in preview mode. This will allow you to see a demo prediction with synthetic data as well as create one preview prediction model at a time. This prediction will be created based on your actual user data, but it will not allow you to target users for messaging according to their likelihood score. It will also not update regularly after creation.
-With the Preview, you can also edit and rebuild this one prediction or archive it and create others to test the expected [prediction quality]({{site.baseurl}}/user_guide/brazeai/predictive_events/prediction_analytics/#prediction_quality) of [different audiences]({{site.baseurl}}/user_guide/brazeai/predictive_events/creating_an_event_prediction/#audience) and become familiar with the analytics.
+With the Preview, you can also edit and rebuild this one prediction or archive it and create others to test the expected [prediction quality]({{site.baseurl}}/user_guide/brazeai/predictive_events/analytics/#prediction_quality) of [different audiences]({{site.baseurl}}/user_guide/brazeai/predictive_events/creating_an_event_prediction/#audience) and become familiar with the analytics.
diff --git a/_docs/_user_guide/data/braze_data_platform.md b/_docs/_user_guide/data/braze_data_platform.md
index 787393278f9..8029b17be13 100644
--- a/_docs/_user_guide/data/braze_data_platform.md
+++ b/_docs/_user_guide/data/braze_data_platform.md
@@ -14,7 +14,7 @@ By using a combination of features in the Braze Data Platform, you can leverage
## Unify your data
-Collect and consolidate first-party data from any source using [APIs] and [SDKs]. You can also use built-in ingestion tools like [Cloud Data Ingestion]({{site.baseurl}}/user_guide/data/unification/cloud_ingestion) to create a direct integration from your data warehouse or file storage solution to Braze, or use [Data Transformation]({{site.baseurl}}/user_guide/data/unification/data_transformation) to build and manage webhook integrations for transferring data into Braze.
+Collect and consolidate first-party data from any source using [APIs]({{site.baseurl}}/api/home) and [SDKs]({{site.baseurl}}/developer_guide/sdk_integration). You can also use built-in ingestion tools like [Cloud Data Ingestion]({{site.baseurl}}/user_guide/data/unification/cloud_ingestion) to create a direct integration from your data warehouse or file storage solution to Braze, or use [Data Transformation]({{site.baseurl}}/user_guide/data/unification/data_transformation) to build and manage webhook integrations for transferring data into Braze.
## Activate your data
diff --git a/_docs/_user_guide/data/distribution/braze_currents/available_partners.md b/_docs/_user_guide/data/distribution/braze_currents/available_partners.md
index e1ab0eaf1a9..35914546af9 100644
--- a/_docs/_user_guide/data/distribution/braze_currents/available_partners.md
+++ b/_docs/_user_guide/data/distribution/braze_currents/available_partners.md
@@ -42,9 +42,7 @@ These customer data platforms collect and route information from multiple source
These partners specialize in product analytics and business intelligence and can help you interact with your users based on their actions.
* [Amplitude]({{site.baseurl}}/partners/data_and_analytics/customer_data_platform/amplitude/amplitude_for_currents/)
-
* [Mixpanel]({{site.baseurl}}/partners/data_and_analytics/analytics/mixpanel/)
-
* [Heap]({{site.baseurl}}/partners/data_and_analytics/analytics/heap/heap_cohort_import/)
diff --git a/_docs/_user_guide/engagement_tools/campaigns/building_campaigns/delivery_types/triggered_delivery/campaign_connector.md b/_docs/_user_guide/engagement_tools/campaigns/building_campaigns/delivery_types/triggered_delivery/campaign_connector.md
index e8bae468caf..8ffb7acf5eb 100644
--- a/_docs/_user_guide/engagement_tools/campaigns/building_campaigns/delivery_types/triggered_delivery/campaign_connector.md
+++ b/_docs/_user_guide/engagement_tools/campaigns/building_campaigns/delivery_types/triggered_delivery/campaign_connector.md
@@ -35,6 +35,10 @@ This feature allows you to target users who complete the following interactions
- Click content card
- Dismiss content card
+{% alert important %}
+Campaign Connector triggers cannot be used to trigger in-app message campaigns. In-app messages can only be triggered by SDK events, such as custom events or session start. For more information, see [Create an in-app message]({{site.baseurl}}/user_guide/message_building_by_channel/in-app_messages/traditional/create/).
+{% endalert %}
+
### Delivery rules
Note that you can't use Campaign Connector to send a message to a user after they have completed an interaction with a campaign. For example, if you're running a marketing campaign for nine weeks and set up a follow-on campaign that uses Campaign Connector at the beginning of week four, the follow-on campaign will only deliver messages to users that interacted with the marketing campaign after the follow-on campaign was published (weeks 4-9). Therefore, in order to ensure that your follow-on campaigns reach every user that you are targeting, you should:
@@ -77,7 +81,5 @@ You can use Campaign Connector to target users who engage or do not engage with
For example, you might choose to target users who clicked on a promotional push message that advertised free shipping so that you can send them a promotional push message advertising 15% off a purchase.
-Or, you might follow up with users who clicked a deep link in an onboarding in-app message by sending them another in-app message that highlights additional features. This way, you can target users that have demonstrated that they are interested in learning more about the features of your application and avoid annoying the users that prefer to discover these features by themselves.
-
Campaign Connector can also target users who receive a push notification reminding them that they have abandoned their cart. For example, you might want to resend the notification to users who did not directly open it. However, you'll likely want to exclude users that have made a purchase since you send the original notification, even if they did not directly open it. You can achieve this use case by adding a "Received push notification" trigger for the campaign "Abandoned Cart," setting a schedule delay and adding "Makes Purchase" and "Directly opened push notifications" as exceptions.
diff --git a/_docs/_user_guide/engagement_tools/canvas/canvas_components/agent_step.md b/_docs/_user_guide/engagement_tools/canvas/canvas_components/agent_step.md
index cacbafdc57e..33e85c9f93f 100644
--- a/_docs/_user_guide/engagement_tools/canvas/canvas_components/agent_step.md
+++ b/_docs/_user_guide/engagement_tools/canvas/canvas_components/agent_step.md
@@ -67,7 +67,7 @@ You must decide what data the agent should receive at runtime. The following opt
- **Provide values:** Pass only selected properties, such as a user’s first name or favorite color. Choose this option to only give the agent access to the values you assign here. For each **Key**, enter the [Liquid tag]({{site.baseurl}}/user_guide/personalization_and_dynamic_content/liquid/supported_personalization_tags) that defines the specific user profile field or context variable.
{% alert note %}
-Braze will only pass the first 10 KB of content to the agent. Providing values that have a total value of more than 10 KB will result in truncation. To help save costs, Braze Agents in Canvas use short-lived caches for LLM responses for identical inputs. Including all Canvas Context increases the likelihood that cached results cannot be used, which might increase your LLM costs.
+Braze passes the first 10 KB of content to the agent. Providing values that have a total value exceeding 10 KB results in truncation.
{% endalert %}
### Step 5: Test the agent
@@ -77,8 +77,10 @@ After setting up your Agent step, you can test and preview the output of this st
## Error handling
- If the connected model returns a rate limit error, Braze retries up to five times with exponential backoff.
-- If the agent fails for any other reason (such as invalid API key), the output variable is set to `null`.
-- Responses are cached for identical inputs to reduce repeated invocations.
+- If the agent fails for any other reason (such as invalid API key), the output variable is set to `null`.
+ - If an agent reaches its daily invocation limit, the output variable is set to `null`. If you're using an agent's output in a Message step, consider using Liquid abort logic.
+- Responses are cached for identical inputs and may be reused for repeated identical invocations within a few minutes.
+ - Responses that use cached values do still count towards total and daily invocations.
## Analytics
diff --git a/_docs/_user_guide/engagement_tools/canvas/ideas_and_strategies/ecommerce_use_cases.md b/_docs/_user_guide/engagement_tools/canvas/ideas_and_strategies/ecommerce_use_cases.md
index 9d65279f0d5..76305171b06 100644
--- a/_docs/_user_guide/engagement_tools/canvas/ideas_and_strategies/ecommerce_use_cases.md
+++ b/_docs/_user_guide/engagement_tools/canvas/ideas_and_strategies/ecommerce_use_cases.md
@@ -81,9 +81,21 @@ You can track eCommerce recommended event volume in the [Custom Events report]({
### Conversions report
-When you launch a campaign or Canvas using the Places Order conversion event, you can create a corresponding [Conversion report]({{site.baseurl}}/user_guide/analytics/dashboard/conversions_dashboard#conversions-dashboard) to track performance.
+### Custom Events report
-
+To create a [Custom Events report]({{site.baseurl}}/user_guide/data_and_analytics/custom_data/custom_events#analytics) based on who has performed an event supported through the integration, you can specify the specific [event name]({{site.baseurl}}/shopify_data_features/).
+
+### Dashboards
+
+#### Conversions dashboard
+
+To gain insights into the trends related to orders placed from your launched Canvases, set up a [Conversions dashboard]({{site.baseurl}}/user_guide/data_and_analytics/analytics/conversions_dashboard#conversions-dashboard) and specify your Canvases.
+
+#### eCommerce revenue dashboard
+
+To gain insights into revenue attributed to the last campaign or Canvas a user interacted with before placing an order, use the [eCommerce revenue dashboard]({{site.baseurl}}/ecommerce_revenue_dashboard/) and select a conversion window.
+
+### Query Builder
### Revenue report
diff --git a/_docs/_user_guide/engagement_tools/locations_and_geofences/creating_geofences.md b/_docs/_user_guide/engagement_tools/locations_and_geofences/creating_geofences.md
index 138643773ed..ad781555bd4 100644
--- a/_docs/_user_guide/engagement_tools/locations_and_geofences/creating_geofences.md
+++ b/_docs/_user_guide/engagement_tools/locations_and_geofences/creating_geofences.md
@@ -33,7 +33,7 @@ Refer to the following table for common geofence terms and their descriptions.
|---|---|
| Latitude and longitude | The geographic center of the geofence. |
| Radius | The radius of the geofence in meters, measured from the geographic center. We recommend setting a minimum radius of 100–150 meters for all geofences. |
-| Cooldown | Users receive geofence-triggered notifications after performing enter or exit transitions on individual geofences. After a transition occurs, there is a pre-defined time during which that user may not perform the same transition on that individual geofence again. This time is called the "cooldown" and is pre-defined by Braze, and its main purpose is to prevent unnecessary network requests. |
+| Cooldown | Users receive geofence-triggered notifications after performing enter or exit transitions on individual geofences. After a transition occurs, there is a pre-defined time during which that user may not perform the same transition on that individual geofence again. This time is called the "cooldown" and is pre-defined by Braze. By default, the cooldown is 6 hours. The main purpose of the cooldown is to prevent unnecessary network requests. |
{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
## Manually create geofences
diff --git a/_docs/_user_guide/engagement_tools/segments/measuring_segment_size.md b/_docs/_user_guide/engagement_tools/segments/measuring_segment_size.md
index c6d59eb1585..7b94716e7f5 100644
--- a/_docs/_user_guide/engagement_tools/segments/measuring_segment_size.md
+++ b/_docs/_user_guide/engagement_tools/segments/measuring_segment_size.md
@@ -25,8 +25,8 @@ It is possible that the number of total users is different than the number of us

For a user to be listed as reachable through a certain channel, the user must have both:
-* A valid email address or push token associated with their profile; and
-* Opted in or subscribed to your app.
+* A valid email address or push token associated with their profile, and
+* Opted-in or subscribed to your app.
A single user may belong to different reachable user groups. For example, a user might have both a valid email address and valid Android push token and be opted in to both, but have no associated iOS push token. The gap between the total reachable users and the sum of the different channels are the number of users who qualified for the segment but they are not reachable through those communication channels.
@@ -75,6 +75,17 @@ For a user to be listed as reachable through a certain channel, the user must ha
- A valid email address or push token associated with their profile, and
- Opted-in or subscribed to your app.
+#### Applied filters for channel-specific reachable users
+
+The following filters are applied for each channel when determining reachable users.
+
+| Channel | Filter |
+| --- | --- |
+| Email | **Email Available** is true. |
+| Push | **Foreground Push Enabled** is true. |
+| SMS | **Subscription Group** is any SMS subscription group. **Invalid Phone Number** is false. |
+{: .reset-td-br-1 .reset-td-br-2 role="presentation" }
+
## Calculating exact statistics
To view an accurate count of the number of users in your segment, select **Calculate exact stats** in the **Reachable users** pane.
diff --git a/_includes/developer_guide/web/sdk_integration.md b/_includes/developer_guide/web/sdk_integration.md
index e3f45e4bf60..c0f8b431fae 100644
--- a/_includes/developer_guide/web/sdk_integration.md
+++ b/_includes/developer_guide/web/sdk_integration.md
@@ -4,13 +4,17 @@ The Web Braze SDK lets you collect analytics and display rich in-app messages, p
{% multi_lang_include archive/web-v4-rename.md %}
-## Integrating the Web SDK
+## Integrate the Web SDK
You can integrate the Web Braze SDK using the following methods. For additional options, see [other integration methods](#web_other-integration-methods).
-- **Code-Based Integration:** Integrate the Web Braze SDK directly in your codebase using your preferred package manager or the Braze CDN. This will give you full control over how the SDK is loaded and configured.
+- **Code-based integration:** Integrate the Web Braze SDK directly in your codebase using your preferred package manager or the Braze CDN. This gives you full control over how the SDK is loaded and configured.
- **Google Tag Manager:** A no-code solution that let's you integrate the Web Braze SDK without modifying your site’s code. For more information, see [Google Tag Manager with the Braze SDK]({{site.baseurl}}/developer_guide/sdk_integration/google_tag_manager/).
+{% alert important %}
+We recommend using the [NPM integration method]({{site.baseurl}}/developer_guide/sdk_integration/?subtab=package%20manager&sdktab=web). Benefits include storing SDK libraries locally on your website, providing immunity from ad-blocker extensions, and contributing to faster load times as part of bundler support.
+{% endalert %}
+
{% tabs local %}
{% tab code-based integration %}
### Step 1: Install the Braze library
@@ -18,7 +22,7 @@ You can integrate the Web Braze SDK using the following methods. For additional
You can install the Braze library using one of the following methods. However, if your website uses a `Content-Security-Policy`, review the [Content Security Policy]({{site.baseurl}}/developer_guide/platforms/web/content_security_policy/) before continuing.
{% alert important %}
-While most ad blockers will not block the Braze Web SDK, some more-restrictive ad blockers are known to cause issues.
+While most ad blockers do not block the Braze Web SDK, some more-restrictive ad blockers are known to cause issues.
{% endalert %}
{% subtabs %}
@@ -156,7 +160,7 @@ braze.openSession();
{% multi_lang_include archive/web-v4-rename.md %}
-When you reference the Braze Web SDK from our content delivery network, for example, `https://js.appboycdn.com/web-sdk/a.a/braze.min.js` (as recommended by our default integration instructions), your users will receive minor updates (bug fixes and backward compatible features, versions `a.a.a` through `a.a.z` in the above examples) automatically when they refresh your site.
+When you reference the Braze Web SDK from our content delivery network, for example, `https://js.appboycdn.com/web-sdk/a.a/braze.min.js` (as recommended by our default integration instructions), your users receive minor updates (bug fixes and backward compatible features, versions `a.a.a` through `a.a.z` in the above examples) automatically when they refresh your site.
However, when we release major changes, we require you to upgrade the Braze Web SDK manually to ensure that breaking changes do not impact your integration. Additionally, if you download our SDK and host it yourself, you won't receive any version updates automatically and should upgrade manually to receive the latest features and bug fixes.
diff --git a/assets/js/broken_redirect_list.js b/assets/js/broken_redirect_list.js
index 0cc53a9f7df..1b0e520e0dd 100644
--- a/assets/js/broken_redirect_list.js
+++ b/assets/js/broken_redirect_list.js
@@ -3216,5 +3216,7 @@ validurls['/docs/hidden/archive_docs/windows_universal/analytics/setting_user_id
validurls['/docs/hidden/archive_docs/windows_universal/analytics/setting_custom_attributes/#setting-custom-attributes'] = '/docs/hidden/archive_docs/windows_universal/analytics/setting_custom_attributes/#set-custom-attributes';
validurls['/docs/user_guide/message_building_by_channel/banners/creating_campaigns'] = '/docs/user_guide/message_building_by_channel/banners/create';
+validurls['/docs/user_guide/brazeai/predictive_events/prediction_analytics/#prediction_quality'] = '/docs/user_guide/brazeai/predictive_events/analytics/#prediction_quality';
+validurls['/docs/user_guide/brazeai/predictive_events/prediction_analytics/#purchase_score'] = '/docs/user_guide/brazeai/predictive_events/analytics/#purchase_score';
// validurls['OLD'] = 'NEW';