Skip to content

Commit

Permalink
Merge pull request #3977 from braze-inc/develop
Browse files Browse the repository at this point in the history
  • Loading branch information
bre-fitzgerald authored Aug 25, 2022
2 parents d94944e + 7576f83 commit dbceb00
Show file tree
Hide file tree
Showing 140 changed files with 7,786 additions and 226 deletions.
2 changes: 1 addition & 1 deletion _docs/_api/objects_filters/purchase_object.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ A purchase object is an object that gets passed through the API when a purchase
"external_id" : (optional, string) External User ID,
"user_alias" : (optional, User Alias Object), User Alias,
"braze_id" : (optional, string) Braze User Identifier,
"app_id" : (required, string) see App Identifier,
"app_id" : (optional, string) see App Identifier,
// See the following product_id naming conventions for clarification.
"product_id" : (required, string), identifier for the purchase, e.g., Product Name or Product Category,
"currency" : (required, string) ISO 4217 Alphabetic Currency Code,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ channel:
Our in-app message product allows you to trigger an in-app message display due to several different event types: `Any Purchase`, `Specific Purchase`, `Session Start`, `Custom Event`, and `Push Click`. Furthermore, `Specific Purchase` and `Custom Event` triggers can contain robust property filters.

{% alert note %}
Triggered in-app messages only work with custom events logged through the SDK and not through the REST APIs. Make sure to check out how to [log custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/android/analytics/tracking_custom_events/).
Triggered in-app messages only work with custom events logged through the Braze SDK. In-app messages can't be triggered through the API or by API events (such as purchase events). Make sure to check out how to [log custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/android/analytics/tracking_custom_events/).
{% endalert %}

## Delivery semantics
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ channel:
Our in-app message product allows you to trigger in-app message display as a result of several different event types: `Any Purchase`, `Specific Purchase`, `Session Start`, `Custom Event`, and `Push Click`. Furthermore, `Specific Purchase` and `Custom Event` triggers contain robust property filters.

{% alert note %}
Triggered in-app messages only work with custom events logged through the SDK and not through the REST APIs. If you're working with iOS, visit our [tracking custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/ios/analytics/tracking_custom_events/) article to learn more.
Triggered in-app messages only work with custom events logged through the Braze SDK. In-app messages can't be triggered through the API or by API events (such as purchase events). If you're working with iOS, visit our [tracking custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/ios/analytics/tracking_custom_events/) article to learn more.
{% endalert %}

## Delivery semantics
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,26 @@ The Braze SDKs include a default card feed to get you started with Content Cards

## Customization

To build your own UI, you can get a list of available cards, and listen for updates to cards:

```javascript
// set initial cards
const [cards, setCards] = useState([]);

// listen for updates as a result of card refreshes
Braze.addListener(Braze.Events.CONTENT_CARDS_UPDATED, async (update) => {
const updatedCards = await Braze.getContentCards();
setCards(updatedCards);
});

// trigger a refresh of cards
Braze.requestContentCardsRefresh();
```

{% alert important %}
If you choose to build your own UI to display cards, you must call `logContentCardImpression` in order to receive analytics for those cards.
{% endalert %}

You can use these additional methods to build a custom Content Cards Feed within your app:

| Method | Description |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,78 @@ Integrating push notifications in React Native requires setting up each native p

## Step 1: Complete native setup

- Android: Follow the [Android integration instructions][1].
- iOS: Follow the [iOS integration instructions][2].
{% tabs %}
{% tab Expo %}

## Step 2: Test displaying push notifications
Set the `enableBrazeIosPush` and `enableFirebaseCloudMessaging` props to enable push for iOS and Android, respectively.

### Android setup

#### Step 1.1
Set the `firebaseCloudMessagingSenderId` config prop in your `app.json`. See the [Android integration instructions]({{site.baseurl}}/developer_guide/platform_integration_guides/android/push_notifications/android/integration/standard_integration#step-4-set-your-firebase-credentials) on retrieving your sender ID.

#### Step 1.2
Add your `google-services.json` file to your application's `assets` folder. This file is required when setting `enableFirebaseCloudMessaging: true` in your configuration.

```json
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"enableBrazeIosPush": true,
"enableFirebaseCloudMessaging": true,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID"
}
],
]
}
}
```

{% endtab %}
{% tab Android %}

Follow the [Android integration instructions]({{site.baseurl}}/developer_guide/platform_integration_guides/android/push_notifications/android/integration/standard_integration/).

{% endtab %}
{% tab iOS %}

Follow the [iOS integration instructions]({{site.baseurl}}/developer_guide/platform_integration_guides/ios/push_notifications/integration/). If you prefer not to request push permission upon launching the app, you should omit the `requestAuthorizationWithOptions:completionHandler:` call in your AppDelegate and follow the step below.

{% endtab %}
{% endtabs %}

## Step 2: Request push notifications permission

Use the `Braze.requestPushPermission()` method (available on v1.38.0 and up) to request permission for push notifications from the user on iOS and Android 13+. For Android 12 and below, this method is a no-op.

This method takes in a required parameter that specifies which permissions the SDK should request from the user on iOS. These options have no effect on Android.

```javascript
const permissionOptions = {
"alert": true,
"sound": true,
"banner": true,
"provisional": false
};

Braze.requestPushPermission(permissionOptions);
```

#### Step 2.1: Listen for push notifications on Android (optional)

```javascript
Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, data => {
console.log(`Push Notification event of type ${data.push_event_type} seen. Title ${data.title}\n and deeplink ${data.deeplink}`);
console.log(JSON.stringify(data, undefined, 2));
});
```

## Step 3: Test displaying push notifications

At this point, you should be able to send notifications to the devices. Adhere to the following steps to test your push integration.

Expand All @@ -29,8 +97,6 @@ You can't test push notification related app behavior on an iOS simulator becaus
2. Head to **Campaigns** and create a new push notification campaign. Choose the platforms that you'd like to test.
3. Compose your test notification and head over to the **Test** tab. Add the same `user-id` as the test user and click **Send Test**. You should receive the notification on your device shortly.

![A Braze push campaign showing you can add your own user ID as a test recipient to test your push notification.][3]
![A Braze push campaign showing you can add your own user ID as a test recipient to test your push notification.][1]

[1]: {{site.baseurl}}/developer_guide/platform_integration_guides/android/push_notifications/integration/standard_integration/
[2]: {{site.baseurl}}/developer_guide/platform_integration_guides/ios/push_notifications/integration/
[3]: {% image_buster /assets/img/react-native/push-notification-test.png %} "Push Campaign Test"
[1]: {% image_buster /assets/img/react-native/push-notification-test.png %} "Push Campaign Test"
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,16 @@ In your `app.json`, add the Braze Expo Plugin. You can provide the following con
| ------------------------------------| ---------| -------------------------------------------------------------------------------------------------------------------------------------------------------|
| `androidApiKey` | string | Required. The API key for your Android application. |
| `iosApiKey` | string | Required. The API key for your iOS application. |
| `baseUrl` | string | Required. The [SDK endpoint]({{site.baseurl}}/api/basics/#endpoints) for your application. |
| `fcmSenderID` | string | Android only. Your Firebase Cloud Messaging sender ID. |
| `baseUrl` | string | Required. The [SDK endpoint]({{site.baseurl}}/api/basics/#endpoints) for your application. |
| `enableBrazeIosPush` | boolean | iOS only. Whether to use Braze to handle push notifications on iOS. Introduced in React Native SDK v1.38.0 and Expo Plugin v0.4.0. |
| `enableFirebaseCloudMessaging` | boolean | Android only. Whether to use Firebase Cloud Messaging for push notifications. Introduced in React Native SDK v1.38.0 and Expo Plugin v0.4.0. |
| `firebaseCloudMessagingSenderId` | string | Android only. Your Firebase Cloud Messaging sender ID. Introduced in React Native SDK v1.38.0 and Expo Plugin v0.4.0. |
| `sessionTimeout` | integer | The Braze session timeout for your application in seconds. |
| `enableSdkAuthentication` | boolean | Whether to enable the [SDK Authentcation](https://www.braze.com/docs/developer_guide/platform_wide/sdk_authentication#sdk-authentication) feature. |
| `logLevel` | integer | The log level for your application. The default log level is 8 and will minimally log info. To enable verbose logging for debugging, use log level 0. |
| `enableGeofence` | boolean | Whether geofences are enabled. |
| `minimumTriggerIntervalInSeconds` | integer | The minimum time interval in seconds between triggers. Defaults to 30 seconds. |
| `enableAutomaticLocationCollection` | boolean | Whether automatic location collection is enabled (if the user permits). |
| `enableGeofence` | boolean | Whether geofences are enabled. |
| `enableAutomaticGeofenceRequests` | boolean | Whether geofence requests should be made automatically. |
| `dismissModalOnOutsideTap` | boolean | iOS only. Whether a modal in-app message will be dismissed when the user clicks outside of the in-app message. |
{: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3}
Expand All @@ -71,7 +73,16 @@ Example configuration:
"iosApiKey": "YOUR-IOS-API-KEY",
"baseUrl": "YOUR-SDK-ENDPOINT",
"sessionTimeout": 60,
"enableGeofence": true
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
}
],
]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ channel:
Our in-app message product allows you to trigger in-app message display as a result of several different event types: `Any Purchase`, `Specific Purchase`, `Session Start`, `Custom Event`, and `Push Click`. Furthermore, `Specific Purchase` and `Custom Event` triggers contain robust property filters.

{% alert note %}
Triggered in-app messages only work with custom events logged through the SDK and not through the REST APIs. If you're working with iOS, visit our [tracking custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/ios/analytics/tracking_custom_events/) article to learn more.
Triggered in-app messages only work with custom events logged through the Braze SDK. In-app messages can't be triggered through the API or by API events (such as purchase events). If you're working with iOS, visit our [tracking custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/ios/analytics/tracking_custom_events/) article to learn more.
{% endalert %}

## Delivery semantics
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,13 @@ This will help identify what values are being sent from your webpage's data laye

![The Braze Initialization Tag summary page provides an overview of the tag, including information on which tags were triggered.][gtm-tag-debug-mode]

### Enable verbose logging

To allow Braze technical support to access logs while testing, you can enable verbose logging on your Google Tag Manager integration. These logs will appear in the **Console** tab of your browser's [developer tools](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_are_browser_developer_tools).

In your Google Tag Manager integration, navigate to your Braze Initialization Tag and select **Enable Web SDK Logging**.

![The Braze Initialization Tag summary page with the option to Enable Web SDK Logging turned on.][gtm-verbose-logging]

[2]: https://support.google.com/tagmanager/answer/6103696
[gtm-community-gallery-search]: {% image_buster /assets/img/web-gtm/gtm-community-gallery-search.png %}
Expand All @@ -182,3 +189,4 @@ This will help identify what values are being sent from your webpage's data laye
[gtm-debugging-tool]: https://support.google.com/tagmanager/answer/6107056?hl=en
[e-commerce]: https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtm
[log-purchase]: https://js.appboycdn.com/web-sdk/latest/doc/modules/braze.html#logpurchase
[gtm-verbose-logging]: {% image_buster /assets/img/web-gtm/gtm_verbose_logging.png %}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ description: "This article describes in-app message delivery via the Braze SDK,
Our in-app message product allows you to trigger an in-app message display as a result of several different event types: `Any Purchase`, `Specific Purchase`, `Session Start`, `Custom Event`, and `Push Click`. Furthermore, `Specific Purchase` and `Custom Event` triggers contain robust property filters.

{% alert note %}
Triggered in-app messages only work with custom events logged through the SDK, not the REST APIs. If you're working with a web app, check out how to [log custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/web/analytics/tracking_custom_events/#tracking-custom-events).
Triggered in-app messages only work with custom events logged through the Braze SDK. In-app messages can't be triggered through the API or by API events (such as purchase events). If you're working with a web app, check out how to [log custom events]({{site.baseurl}}/developer_guide/platform_integration_guides/web/analytics/tracking_custom_events/#tracking-custom-events).
{% endalert %}

## Delivery semantics
Expand Down
2 changes: 1 addition & 1 deletion _docs/_developer_guide/platform_wide/braze_actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ For all other actions, or to combine multiple actions, use this guide to constru

## SDK Support

{% sdk_min_versions ios:5.1.0 android:21.0.0 web:4.0.3 %}
{% sdk_min_versions android:21.0.0 web:4.0.3 %}

The `brazeActions://` deeplink scheme can be used wherever a deeplink or redirect option exists within in-app messages and Content Cards.

Expand Down
3 changes: 3 additions & 0 deletions _docs/_help/help_articles/segments.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@ guide_menu_list:
- name: Segmentation Logic
link: /docs/help/help_articles/segments/segmentation_logic_with_and_or/
fa_icon: fas fa-columns
- name: Search Exact Text
link: /docs/help/help_articles/segments/search_exact_text/
fa_icon: fas fa-magnifying-glass

---
17 changes: 17 additions & 0 deletions _docs/_help/help_articles/segments/search_exact_text.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
nav_title: Search Exact Text
article_title: Search for exact text in search fields
page_order: 5

page_type: solution
description: "This article covers how to find exact text in search fields in Braze."
tool: Segments
---

# Search for exact text in search fields

You may find that searching for a specific item can sometimes return too many results, as Braze will return all results that have your search term in it.

To search for exact text, wrap your search in square brackets `[ ]`.

For example, if you search for `[Purchase]` on the **Segments** page, you'll see any segments that have the word "purchase" in it, but not "purchasers" or "purchases".
25 changes: 25 additions & 0 deletions _docs/_hidden/private_betas/canvas_version_history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
nav_title: Canvas Version History
permalink: "/canvas_version_history/"
hidden: true
---

# Version history

Version history allows you to view and access Canvas analytics and the user journeys for any previous version of your Canvas. This can be especially helpful to maintain a record of the evolution of a Canvas. For example, if you make a largescale change, you can reference previous Canvas versions to better understand how your workflows have progressed.

{% alert important %}
Version history for Canvas Flow is currently in early access. Contact your Braze customer success manager if you're interested in participating in the early access.
{% endalert %}

![][1]{: style="float:right;max-width:45%;margin-left:15px;"}

To access the version history, navigate to your Canvas details at the top of your Canvas and select **# Versions**. Here, you have access to the **Version history** sidebar. Select any of the Canvas versions to view and compare Canvas details. The Canvases listed under **Version history** are view-only. These previous versions can't be restored or deleted.

You can toggle between the Canvas analytics and the Canvas setup by clicking **View Analytics** or **View Canvas** at the bottom toolbar. When you create a new version of a Canvas, you can still access all past versions by going to the version history sidebar.

As you edit and refine your Canvas, you can choose to overwrite the Canvas directly or to create a new version. When a new Canvas version is created, the users already in the Canvas will progress through the workflow of the new version. Users entering the Canvas will also enter the new version.

You can still view analytics for any date range by adjusting the date picker. In the Canvas version view, the data will populate for the entire date range, not just the date range of that version. However, at the step level, analytics will only be shown for steps that existed while that version was active.

[1]: {% image_buster /assets/img_archive/canvas_version_history.png %}
Loading

2 comments on commit dbceb00

@vercel
Copy link

@vercel vercel bot commented on dbceb00 Aug 25, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

braze-docs-en – ./

braze-docs-en.vercel.app
braze-docs-en-git-master-braze.vercel.app
braze-docs-en-braze.vercel.app

@vercel
Copy link

@vercel vercel bot commented on dbceb00 Aug 25, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

braze-docs-fr – ./

braze-docs-fr-git-master-braze.vercel.app
braze-docs-fr.vercel.app
braze-docs-fr-braze.vercel.app

Please sign in to comment.