Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
22 changes: 20 additions & 2 deletions _docs/_api/endpoints/user_data/post_user_delete.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,31 @@ description: "This article outlines details about the Delete users Braze endpoin

Up to 50 `external_ids`, `user_aliases`, `braze_ids`, `email_addresses`, or `phone_numbers` can be included in a single request. Only one of `external_ids`, `user_aliases`, `braze_ids`, `email_addresses`, or `phone_numbers` can be included in a single request.

{% apiref postman %}https://documenter.getpostman.com/view/4689407/SVYrsdsG?version=latest#22e91d00-d178-4b4f-a3df-0073ecfcc992 {% endapiref %}

If you have a use case that can't be solved with bulk user deletion through the API, contact the [Braze Support team]({{site.baseurl}}/user_guide/administrative/access_braze/support/) for assistance.

## What data is deleted (nulled) {#data-deleted}

{% alert warning %}
Deleting user profiles cannot be undone. It will permanently remove users which may cause discrepancies in your data. Learn more about what happens when you [delete a user profile using the API]({{site.baseurl}}/help/help_articles/api/delete_user/) in our Help documentation.
Deleting user profiles cannot be undone. It will permanently remove users which may cause discrepancies in your data.
{% endalert %}

{% apiref postman %}https://documenter.getpostman.com/view/4689407/SVYrsdsG?version=latest#22e91d00-d178-4b4f-a3df-0073ecfcc992 {% endapiref %}
When you use this endpoint to remove a user, the following data is deleted (nulled):

- Any attributes that the user had
- Email address
- Phone number
- External user ID
- Gender
- Country
- Language

The following events will also occur:

- The user profile is deleted (nulled).
- The Lifetime Users count will be updated to account for the newly removed users.
- The removed user will still count toward the aggregated conversion percentage. Custom event counts and purchase counts will not be updated for removed users.

## Prerequisites

Expand Down
51 changes: 0 additions & 51 deletions _docs/_help/help_articles/api/attribute_name_id_across_sources.md

This file was deleted.

40 changes: 0 additions & 40 deletions _docs/_help/help_articles/api/delete_user.md

This file was deleted.

27 changes: 0 additions & 27 deletions _docs/_help/help_articles/data/change_custom_data_type.md

This file was deleted.

36 changes: 33 additions & 3 deletions _docs/_user_guide/data/activation/custom_data/custom_attributes.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,20 @@ From this page, you can view, manage, create, or blocklist existing custom attri

### Blocklisting

Custom attributes can be blocklisted individually in the actions menu, or up to 100 attributes can be selected and blocklisted in bulk. If you block a custom attribute, no data will be collected regarding that attribute, existing data will be unavailable unless reactivated, and blocklisted attributes will not show up in filters or graphs. Additionally, if the attribute is currently referenced by filters or triggers in other areas of the Braze dashboard, a warning modal will appear explaining that all instances of the filters or triggers that reference it will be removed and archived.
Custom attributes can be blocklisted individually in the actions menu, or up to 100 attributes can be selected and blocklisted in bulk.

If you block a custom attribute, no data will be collected regarding that attribute, existing data will be unavailable unless reactivated, and blocklisted attributes will not show up in filters or graphs. Additionally, if the attribute is currently referenced by filters or triggers in other areas of the Braze dashboard, a warning modal will appear explaining that all instances of the filters or triggers that reference it will be removed and archived.

#### Differences between blocklisting and deleting

To understand the difference between blocklisting an deleting attributes in Braze, consider the results of each action:

- **Blocklisting:** If custom attributes, events, or purchases are blocklisted, they will remain on the user profile, but no new requests for the attribute will be processed.
- **Deleting:** If custom attributes, events, or purchases are deleted, the data will be removed. However, Braze will still accept new incoming requests for that attribute if it's still tracked via the SDK or uploaded through API or CSV.

To accomplish blocklisting, Braze will have to send the blocklisting information down to each user's device, and it will be a data-intensive operation, which we ideally try to avoid. Also, if the list is too large (more than 100 attributes, events, or purchases), your app can begin to slow down.

If you aren’t planning to send attributes to Braze anymore, the deletion route would be the recommended approach. Regardless of your route, the custom attributes, events, and purchases you wish to remove will no longer appear on the **Manage Workspace** page, which removes them as segment filters. User-level data will remain on the profiles.

### Marking as personally identifiable information (PII)

Expand Down Expand Up @@ -247,6 +260,25 @@ We've consolidated the list of operators available to use in attribute filters,
| Array | doesn't include value | includes none of | At least 1 value |
{: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4 role="presentation" }

## Changing data types

To change the data type of a custom attribute, do the following:

1. Go to **Data Settings** and select **Custom Attributes**.
2. Select **Edit** next to the custom attribute.
3. Choose the new data type from the **Data Type** dropdown.
4. Select **Save**.

Note the following impacts of changing data types (for example, changing a data type from `time` to `string`):

- Relevant filters in segments, campaigns, Canvases, or other locations using the changed attribute or event are not automatically updated. Before you can modify attributes, you must stop any campaigns or Canvases using the attributes in segments or filters, and remove the attributes from filters that reference them.
- User data will not be retroactively updated. If the changed attribute was on a user profile before the data type change, that value will still be the old data type. This can cause users to fall out of the segments that contain the changed attribute. The filter will actively look for the new data type, but if a profile still has the previous data type, that user will now be excluded from the segment. These users must be updated to fall back into the proper segments. You can do this with the [`/users/track` endpoint]({{site.baseurl}}/api/endpoints/user_data/post_user_track).
- New data won't be accepted if it's not the new data type. For example, an API call to the `/users/track` endpoint that contains the previous data type for a changed attribute will not be accepted. You must call the new data type.

{% alert note %}
If you're interested in the ability to prevent automatic detection from updating the custom attribute data type, contact your customer success manager to enable this feature.
{% endalert %}

## Purchase and revenue tracking {#purchase-revenue-tracking}

Using our purchase methods to record in-app purchases establishes the Lifetime Value (LTV) for each individual user profile. This data is viewable within our revenue page in time-series.
Expand All @@ -269,5 +301,3 @@ Using our purchase methods to record in-app purchases establishes the Lifetime V
If you would like to segment on the number of times a specific purchase has occurred, you should also record that purchase individually as an [incrementing custom attribute]({{site.baseurl}}/developer_guide/platform_integration_guides/swift/analytics/setting_custom_attributes/#incrementingdecrementing-custom-attributes).
{% endalert %}

You can change the data type of your custom attribute, but you should be aware of the impacts of [changing data types]({{site.baseurl}}/help/help_articles/data/change_custom_data_type/).

Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,36 @@ As a convenience, a summary of supported personalization tags are provided. For

### Supported attributes

Campaign, Card, and Canvas attributes are only supported in their corresponding messaging templates (for example, `dispatch_id` isn't available in in-app message campaigns).

Refer to this help article to learn more about [how some of these attributes differ across sources in Braze]({{site.baseurl}}/help/help_articles/api/attribute_name_id_across_sources/).
Campaign, Card, and Canvas attributes are only supported in their corresponding messaging templates (for example, `dispatch_id` isn't available in in-app message campaigns). You can use Liquid to pass these attributes in the message itself, in a Connected Content call, or as key-value pairs. This is usually done for tracking purposes.

{% tabs %}
{% tab Campaign attributes %}

| Attribute | Liquid | REST API | Currents |
| --- | --- | --- | --- |
| Campaign name | {% raw %}`{{campaign.${name}}}`{% endraw %} | `name` | `campaign_name` |
| Campaign ID | {% raw %}`{{campaign.${api_id}}}`{% endraw %} | N/A (used as an input for the API call itself) | campaign_id |
| Variant name | {% raw %}`{{campaign.${message_name}}}`{% endraw %} | `messages.message_variation_id.name` | N/A (map variant name to variant ID using the Export campaign details endpoint) |
| Variant ID | {% raw %}`{{campaign.${message_api_id}}}`{% endraw %} | `messages.message_variation_id` | `message_variation_api_id` |
{: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4 role="presentation" }

{% endtab %}
{% tab Canvas attributes %}

| Attribute | Liquid | REST API | Currents |
| --- | --- | --- | --- |
| Canvas name | {% raw %}`{{canvas.${name}}}`{% endraw %} | `name` | `canvas_name` |
| Canvas ID | {% raw %}`{{canvas.${api_id}}}`{% endraw %} | N/A (used as an input for the API call itself) | canvas_id |
| Variant name | {% raw %}`{{canvas.${variant_name}}}`{% endraw %} | `variants.name` | `canvas_variation_name` |
| Variant ID | {% raw %}`{{canvas.${variant_api_id}}}`{% endraw %} | `variants.name.id` | `canvas_variation_id` |
| Step name | {% raw %}`{{campaign.${name}}}`{% endraw %} | `steps.name` | `canvas_step_name` |
| Step ID | {% raw %}`{{campaign.${api_id}}}`{% endraw %} | `steps.id` | `canvas_step_id` |
| Message channel | N/A | `steps.messages.message_variation_id.channel` | N/A (inherent from event type, such as push send or email open) |
| Message ID | {% raw %}`{{campaign.${message_api_id}}}`{% endraw %} | `steps.message.message_variation_id` | `canvas_step_message_variation_api_id` |
{: .reset-td-br-1 .reset-td-br-2 .reset-td-br-3 .reset-td-br-4 role="presentation" }

{% endtab %}
{% endtabs %}

### Canvas and campaign tag differences

Expand Down
Loading