Skip to content

Commit

Permalink
Merge pull request #5479 from braze-inc/develop
Browse files Browse the repository at this point in the history
Deploy - May 24, 2023
  • Loading branch information
lydia-xie authored May 24, 2023
2 parents 85a6849 + 947506b commit c3aa5c1
Show file tree
Hide file tree
Showing 72 changed files with 1,479 additions and 116 deletions.
10 changes: 2 additions & 8 deletions _docs/_developer_guide/platform_wide/feature_flags/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ platform:
Looking for steps on how to create a feature flag in Braze? Refer to [Creating feature flags][3].

{% alert important %}
Feature flags are currently in beta. Contact your Braze account manager if you're interested in participating in the early access.
Feature flags are currently in beta. [Click here](https://dashboard.braze.com/engagement/feature_flags) to learn more about joining the beta program.
{% endalert %}

## Prerequisites

To use feature flags, ensure your SDKs are up to date with at least these minimum versions:

{% sdk_min_versions swift:5.9.0 android:24.2.0 web:4.6.0 %}
{% sdk_min_versions swift:5.9.0 android:24.2.0 web:4.6.0 unity:4.1.0 cordova:5.0.0 reactnative:4.1.0 %}

## Use cases
Feature flags have a few different strategic uses, outlined below. To learn how you would implement these example use cases, see the [feature flag use cases][2] article.
Expand All @@ -43,16 +43,10 @@ Use feature flags to modify your app's functionality in production. This can be
For example, you can use a feature flag's property values to quickly change your app's homepage links or text. You can even dynamically personalize this content using Braze profile attributes.

### Message coordination
{% alert important %}
This functionality is not yet supported in beta.
{% endalert %}

Use feature flags to synchronize a feature's rollout and messaging. This will allow you to use Braze as the source of truth for both your user experience and its relevant messaging. To achieve this, target the new feature to a particular segment or filtered portion of your audience. Then, create a Campaign or Canvas that only targets that segment.

### Feature experimentation
{% alert important %}
This functionality is not yet supported in beta.
{% endalert %}

Use feature flags to experiment and confirm your hypotheses around your new feature. By splitting traffic into two or more groups, you can compare the impact of a feature flag across groups, and determine the best course of action based on the results.

Expand Down
86 changes: 23 additions & 63 deletions _docs/_developer_guide/platform_wide/feature_flags/create.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ platform:
Looking to learn more about what feature flags are and how you can use them in Braze? Check out [About feature flags][5] before proceeding.

{% alert important %}
Feature flags are currently in beta. Contact your Braze account manager if you're interested in participating in the early access.
{% endalert %}

## Prerequisites

To use feature flags, ensure your SDKs are up to date with at least these minimum versions:

{% sdk_min_versions swift:5.9.0 android:24.2.0 web:4.6.0 %}
{% sdk_min_versions swift:5.9.0 android:24.2.0 web:4.6.0 unity:4.1.0 cordova:5.0.0 reactnative:4.1.0 %}

{% alert important %}
Feature flags are currently in beta. [Click here](https://dashboard.braze.com/engagement/feature_flags) to learn more about joining the beta program.
{% endalert %}

## Implement feature flags in the dashboard

Expand Down Expand Up @@ -171,16 +171,12 @@ if (featureFlag.enabled) {
{% endtab %}
{% tab Cordova %}
```javascript
BrazePlugin.getFeatureFlag(
"expanded_user_profile",
(featureFlag) => {
if (featureFlag.enabled) {
console.log(`expanded_user_profile is enabled`);
} else {
console.log(`expanded_user_profile is not enabled`);
}
}
);
const featureFlag = await BrazePlugin.getFeatureFlag("expanded_user_profile");
if (featureFlag.enabled) {
console.log(`expanded_user_profile is enabled`);
} else {
console.log(`expanded_user_profile is not enabled`);
}
```
{% endtab %}
{% endtabs %}
Expand Down Expand Up @@ -252,52 +248,22 @@ val numberProperty = featureFlag.getNumberProperty("height")

```javascript
// String properties
const stringProperty = await Braze.getFeatureFlagStringProperty("my_flag", "color");
const stringProperty = await Braze.getFeatureFlagStringProperty("my_flag_id", "color");
// Boolean properties
const booleanProperty = await Braze.getFeatureFlagBooleanProperty("my_flag", "expanded");
const booleanProperty = await Braze.getFeatureFlagBooleanProperty("my_flag_id", "expanded");
// Number properties
const numberProperty = await Braze.getFeatureFlagNumberProperty("my_flag", "height");
const numberProperty = await Braze.getFeatureFlagNumberProperty("my_flag_id", "height");
```

{% endtab %}
{% tab Cordova %}
```javascript
// String properties
BrazePlugin.getFeatureFlagStringProperty(
"my_flag",
"color",
(color) => {
if (color === null) {
console.log(`Property not found`);
} else {
console.log(color);
}
}
);
const stringProperty = await BrazePlugin.getFeatureFlagStringProperty("my_flag_id", "color");
// Boolean properties
BrazePlugin.getFeatureFlagBooleanProperty(
"my_flag",
"expanded",
(expanded) => {
if (expanded === null) {
console.log(`Property not found`);
} else {
console.log(expanded);
}
}
);
const booleanProperty = await BrazePlugin.getFeatureFlagBooleanProperty("my_flag_id", "expanded");
// Number properties
BrazePlugin.getFeatureFlagNumberProperty(
"my_flag",
"height",
(height) => {
if (height === null) {
console.log(`Property not found`);
} else {
console.log(height);
}
}
);
const numberProperty = await BrazePlugin.getFeatureFlagNumberProperty("my_flag_id", "height");
```
{% endtab %}
{% endtabs %}
Expand Down Expand Up @@ -357,13 +323,10 @@ for(const feature of features) {
{% endtab %}
{% tab Cordova %}
```javascript
BrazePlugin.getAllFeatureFlags(
(features) => {
for(const feature of features) {
console.log(`Feature: ${feature.id}`, feature.enabled);
}
}
);
const features = await BrazePlugin.getAllFeatureFlags();
for(const feature of features) {
console.log(`Feature: ${feature.id}`, feature.enabled);
}
```
{% endtab %}
{% endtabs %}
Expand Down Expand Up @@ -500,12 +463,9 @@ Braze.addListener(braze.Events.FEATURE_FLAGS_UPDATED, (featureFlags) => {
{% tab Cordova %}
```javascript
// Register an event listener
BrazePlugin.subscribeToFeatureFlagUpdates(
// On updated
(featureFlags) => {
BrazePlugin.subscribeToFeatureFlagUpdates((featureFlags) => {
console.log(`featureFlagUpdates`, JSON.stringify(featureFlags));
}
);
});
```
{% endtab %}
{% endtabs %}
Expand Down
6 changes: 3 additions & 3 deletions _docs/_developer_guide/platform_wide/feature_flags/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@ platform:

### How can I join the feature flags beta program? {#join-beta}

Braze feature flags are currently in an open beta. Please ask your Braze account team to learn more about joining the beta program.
Braze feature flags are currently in an open beta. [Click here](https://dashboard.braze.com/engagement/feature_flags) to request beta access, or speak with your Braze account team.

### What platforms are Braze feature flags supported on? {#platforms}

Braze supports Feature Flags on iOS, Android, and Web platforms with the following SDK version requirements:

{% sdk_min_versions swift:5.9.0 android:24.2.0 web:4.6.0 %}
{% sdk_min_versions swift:5.9.0 android:24.2.0 web:4.6.0 unity:4.1.0 cordova:5.0.0 reactnative:4.1.0 %}

Do you need support on other platforms? Email our team: [feature-flags-feedback@braze.com](mailto:feature-flags-feedback@braze.com).

Expand Down Expand Up @@ -113,4 +113,4 @@ Have questions or feedback? Email our team: [feature-flags-feedback@braze.com](m

[properties]: {{site.baseurl}}/developer_guide/platform_wide/feature_flags/create/#properties
[refreshing]: {{site.baseurl}}/developer_guide/platform_wide/feature_flags/create/#refreshing
[listen-for-updates]: {{site.baseurl}}/developer_guide/platform_wide/feature_flags/create/#updates
[listen-for-updates]: {{site.baseurl}}/developer_guide/platform_wide/feature_flags/create/#updates
10 changes: 1 addition & 9 deletions _docs/_developer_guide/platform_wide/feature_flags/use_cases.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ platform:
> This article describes specific examples of using feature flags to improve your user experience. Looking for steps on how to create a feature flag in Braze? Refer to [Creating feature flags][8].
{% alert important %}
Feature flags are currently in beta. Contact your Braze account manager if you're interested in participating in the early access.
Feature flags are currently in beta. [Click here](https://dashboard.braze.com/engagement/feature_flags) to learn more about joining the beta program.
{% endalert %}

## Gradual rollouts
Expand Down Expand Up @@ -105,10 +105,6 @@ As a result, the next time someone loads the app they will see the new Thanksgiv
## Messaging coordination
{% alert important %}
This functionality is not yet supported in beta.
{% endalert %}
Let's say that we're launching a new loyalty rewards program for our end users. It can be difficult for Marketing and Product teams to perfectly coordinate the timing of promotional messaging with a feature's rollout. Feature flags in Canvas let you apply sophisticated logic when it comes to enabling a feature for a select audience, and controlling the related messaging to those same users.
To effectively coordinate feature rollout and messaging, we'll create a new feature flag called `show_loyalty_program`. For our initial phased release, we'll let Canvas control when and for whom the feature flag is enabled. For now, we'll leave the rollout percentage at 0% and not select any target segments.
Expand All @@ -124,10 +120,6 @@ Now, users in this segment will start to see the new loyalty program, and once i
## Experimentation
{% alert important %}
This functionality is not yet supported in beta.
{% endalert %}
An A/B test is a powerful tool that compares users' responses to multiple versions of a variable.
In this example, our team has built a new checkout flow for our e-commerce app. Even though we're confident it's an improvement the user experience, we want to run an A/B test to measure its impact on our app's revenue.
Expand Down
2 changes: 1 addition & 1 deletion _docs/_hidden/wip_partnerships/partnership_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ Once you have selected the [Partner] webhook template, you should see the follow
- **HTTP Method**: POST
- **Request Header**:
- **Authorization**: Bearer [PARTNER_AUTHORIZATION_HEADER]
- **Request Body**: application/json
- **Content-Type**: application/json
{% endraw %}
#### Request body
Include code of your webhook request body.
Expand Down
5 changes: 4 additions & 1 deletion _docs/_partners/data_and_infrastructure_agility.md
Original file line number Diff line number Diff line change
Expand Up @@ -113,5 +113,8 @@ valid_partner_list:
url: /docs/partners/data_and_infrastructure_agility/workflow_automation/mozart_data/
- name: Merkury
url: /docs/partners/data_and_infrastructure_agility/analytics/merkury/

- name: SalesWings
url: /docs/partners/data_and_infrastructure_agility/analytics/saleswings/
- name: OneTrust
url: /docs/partners/data_and_infrastructure_agility/data_privacy/onetrust/
---
2 changes: 2 additions & 0 deletions _docs/_partners/data_and_infrastructure_agility/analytics.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,7 @@ valid_partner_list:
url: /docs/partners/data_and_infrastructure_agility/analytics/contentsquare/
- name: Merkury
url: /docs/partners/data_and_infrastructure_agility/analytics/merkury/
- name: SalesWings
url: /docs/partners/data_and_infrastructure_agility/analytics/saleswings/

---
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The Braze and Clarisights integration allows you to import data from Braze campa

## Use cases

With the Braze and Clarisights integration, users can create different visualizations and tabled to gain insights from the campaigns they have created. Popular use cases include:
With the Braze and Clarisights integration, users can create different visualizations and tables to gain insights from the campaigns they have created. Popular use cases include:

{% tabs %}
{% tab Better visibility %}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
nav_title: SalesWings
article_title: SalesWings
description: "This reference article outlines the partnership between Braze and SalesWings, an analytics platform, that helps you track scoring and grading, sales insights and alerts, marketing alignment, and attribution reporting."
alias: /partners/saleswings/
page_type: partner
search_tag: Partner

---

# SalesWings

> [SalesWings][1], an analytics platform built for marketing and sales teams, helps you manage account website tracking, scoring and grading, sales insights and alerts, marketing alignment, and attribution reporting.
The Braze and SalesWings integration allows you to sync data across the two platforms in a [flexible way][3] to qualify leads with lead scoring and lead grading capabilities.

## Prerequisites

| Requirement | Description |
| ----------- | ----------- |
| SalesWings account | A [SalesWings][1] account is required to take advantage of this partnership. |
| Braze REST API key | A Braze REST API key with `users.export.ids` permissions. <br><br> This can be created within the **Braze Dashboard > Developer Console > REST API Key > Create New API Key**. |
| Braze REST endpoint | [Your REST endpoint URL][2]. Your endpoint will depend on the Braze URL for your instance. |
| Segment.com account (optional) | If you are a Segment.com user, you can send all lead engagement and profile data and identify events via Segment.com for lead profiling. |
{: .reset-td-br-1 .reset-td-br-2}

## Use cases

With the Braze and SalesWings integration, users can align different teams by qualifying leads and creating different visualizations to gain insights from the various messages they have created.

- **Visualize data**: view qualified leads and accounts based on profile data by sending attribute data from Braze directly to SalesWings with key insights on detailed engagement with Braze emails, other marketing messaging, and message engagement.
- **Automated reporting**: Build automated reporting with leads, contacts, accounts, and opportunities, based on web engagement data and Braze campaign engagement. For instance, you can surface a list of hot leads to a sales team or representative, with everyone who clicked on a specific email campaign or performed a specific action in your app or website.<br>![Example dashboard linked to Braze email and marketing engagement within Salesforce, focusing on the impact of Braze campaigns on sales results and outcomes.]({{site.baseurl}}/assets/img/saleswings/saleswings_email_campaign_attribution_dashboard.png)

## Integration

Before setting up this integration, set up website tracking and identification of leads in SalesWings.

### Add key to SalesWings

Go to the [**SalesWings Settings** page][13] and expand the **Braze Integration** section.

![The Braze Integration section of the SalesWings Settings page.][14]

Copy the value of the **Identifier** column for the newly created key and paste it into the **Braze API key** field of the SalesWings **Braze Integration** section.

Add your Braze API endpoint as described in [API and SDK endpoints article][16], and enter it in the **Braze API endpoint** field. Copy the value of the **REST Endpoint** column and enter it in the **Braze API endpoint** field in the SalesWings **Braze Integration** section.

Then, click **Save Changes** in the SalesWings settings.

## Using this integration

To trigger lead scoring and the creation of sales insights, SalesWings must identify a user on your website or app. This can occur in the following ways:

- **Form submissions:** When a user submits a web form, SalesWings will automatically identify all of your web form types (i.e., login, download, contact us, etc.) and resolve the identity of a user when they submit a form.
- **URL clicks with a Braze ID or external ID:** A user clicks on a Braze marketing action, typically email clicks, banner clicks, or similar, leading to a page you are tracking with SalesWings.
- **Sales email tracking via Gmail and Outlook plugins (optional):** If you decide to empower your sales representative with email tracking plugins, they can trigger full website tracking of users by sending trackable links.
- **Segment.com identify event (optional):** If you are a Segment.com user, you can also resolve the identity of a user with Segment.com integration.

### Identifying users from URL clicks

You can identify users automatically when they click on a trackable URL (e.g., email blasts, banners with URLs). To make a URL trackable, there are two ways to modify your website URLs in your emails, banners, or SMS by adding the parameter and ID at the end of your links.

1. Appending `?braze_id=` followed by {% raw %}`{{${braze_id}}}`{% endraw %}
- **Link example:** {% raw %}`https://www.your-website.com?braze_id={{${braze_id}}}`{% endraw %}<br><br>

2. Appending `?br_user_id=` followed by {% raw %}`{{${user_id}}}`{% endraw %}
- **Link example:** {% raw %}`https://www.client-website.com?br_user_id={{${user_id}}}`{% endraw %}

The `braze_id` variable is set to an identifier of the user-generated by Braze and is always available. The `br_user_id` variable is set to the user's identifier in your system and may be missing in certain scenarios (e.g., for anonymous users created by the Braze SDK). If both `braze_id` and `br_user_id` are used in a link, SalesWings will only consider the `braze_id` parameter.

For configuration and further troubleshooting, contact the [SalesWings services team][1] for onboarding support.

[1]: https://www.saleswingsapp.com/?utm_source=braze&utm_campaign=technicaldocs
[2]: {{site.baseurl}}/developer_guide/rest_api/basics/#endpoints
[3]: https://www.saleswingsapp.com/braze-lead-scoring-and-sales-insights?utm_source=braze&utm_campaign=technicaldocs
[4]: {% image_buster /assets/img/saleswings/example_lead_scoring_builder_braze_lead_scoring.png %}
[5]: {% image_buster /assets/img/saleswings/prioritized_lead_or_contact_list_braze_lead_scoring.png %}
[6]: {% image_buster /assets/img/saleswings/prioritized_account_list_braze_lead_scoring.png %}
[7]: {% image_buster /assets/img/saleswings/marketo_sales_insights_alternative_for_braze.png %}
[8]: {% image_buster /assets/img/saleswings/smart_watch_alerts.png %}
[9]: {% image_buster /assets/img/saleswings/saleswings_email_campaign_attribution_dashboard.png %}
[10]: https://www.saleswingsapp.com/schedule-a-demo?utm_source=braze&utm_campaign=technicaldocs
[11]: https://support.saleswingsapp.com/en/collections/3285135-1-implementing-saleswings-tracking-script
[12]: {% image_buster /assets/img/saleswings/creating_api_key_in_braze_lead_scoring.png %}
[13]: https://helium.saleswings.pro/settings
[14]: {% image_buster /assets/img/saleswings/saleswings_braze_lead_scoring_integration_settings.png %}
[15]: {% image_buster /assets/img/saleswings/braze_api_key_lead_scoring.png %}
[16]: {{site.baseurl}}/user_guide/administrative/access_braze/sdk_endpoints
[17]: {% image_buster /assets/img/saleswings/braze_api_endpoint_for_lead_scoring.png %}
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ valid_partner_list:
url: /docs/partners/data_and_infrastructure_agility/data_privacy/transcend/
- name: DataGrail
url: /docs/partners/data_and_infrastructure_agility/data_privacy/datagrail/
- name: OneTrust
url: /docs/partners/data_and_infrastructure_agility/data_privacy/onetrust/
---
Loading

1 comment on commit c3aa5c1

@vercel
Copy link

@vercel vercel bot commented on c3aa5c1 May 24, 2023

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-git-master-braze.vercel.app
braze-docs-en.vercel.app
braze-docs-en-braze.vercel.app

Please sign in to comment.