# Journey Builder notify

The Notify activity sends a wallet notification from Salesforce Marketing Cloud through The Wallet Crew. It does not update pass data and it does not change the pass template.

Use [Journey Builder push update](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-push-update.md) when the journey must update pass data with `additionalData`.

Complete [Setup](/connect/marketing-automation/salesforce-marketing-cloud/setup.md) before using this activity.

<details>

<summary><strong>Real-world examples</strong></summary>

* A birthday journey sends a wallet notification without changing the pass content.
* A campaign reminds customers that an offer is about to expire.
* A store event journey sends a local reminder to contacts who already installed the pass.

</details>

## What the activity does

Journey Builder sends a payload to The Wallet Crew notify listener.

The payload contains:

* `identifiers` to resolve the target customer or pass
* `content` for a single notification message
* `localizedContent` when the message must vary by language

## Endpoint URL

Use this endpoint when registering the custom activity:

`https://app.thewalletcrew.io/api/<tenantId>/webhooks/listeners/sfmc/actions/notify`

`<tenantId>` is the The Wallet Crew tenant identifier.

## Add the activity to a journey

{% stepper %}
{% step %}

### Open Journey Builder

Create a new journey or open an existing multi-step journey.
{% endstep %}

{% step %}

### Add The Wallet Crew Notify activity

Drag the The Wallet Crew Notify activity into the journey where the wallet notification should be sent.
{% endstep %}

{% step %}

### Configure the payload

Define the identifier mapping first. Then define either `content` or `localizedContent`.
{% endstep %}
{% endstepper %}

## Configure `identifiers`

`identifiers` works the same way as in [Journey Builder push update](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-push-update.md).

A common Salesforce Marketing Cloud example uses a customer identifier stored on the contact.

{% code title="Identifiers example" %}

```json
{
  "id.sfmc.customerId": "{{Contact.Attribute.Identifier}}"
}
```

{% endcode %}

## Configure `content`

Use `content` when one message is enough for every recipient.

{% code title="Notify payload with content" %}

```json
{
  "identifiers": {
    "id.sfmc.customerId": "{{Contact.Attribute.Identifier}}"
  },
  "content": "Your pass has been updated. Open Wallet to see the latest information."
}
```

{% endcode %}

## Configure `localizedContent`

Use `localizedContent` when the message must vary by language.

{% code title="Notify payload with localizedContent" %}

```json
{
  "identifiers": {
    "id.sfmc.customerId": "{{Contact.Attribute.Identifier}}"
  },
  "localizedContent": {
    "en": "Your pass has been updated.",
    "fr": "Votre pass a été mis à jour."
  }
}
```

{% endcode %}

## Choose between `content` and `localizedContent`

Use `content` for one message shared by every recipient.

Use `localizedContent` when the notification text must be localized.

Do not use Notify to update pass fields or template variables. That belongs to [Journey Builder push update](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-push-update.md).

## Test and activate

Validation should start with a small internal audience.

{% stepper %}
{% step %}

### Test with one contact

Use a contact with a known identifier and an installed pass.
{% endstep %}

{% step %}

### Check the message payload

Confirm the journey sends either `content` or `localizedContent`.
{% endstep %}

{% step %}

### Verify the notification on a device

Confirm the notification appears on a real device with the pass installed.
{% endstep %}
{% endstepper %}

## Troubleshooting

### No notification is sent

Check the identifier mapping first.

Then confirm the target pass is installed on a real device.

### The wrong language is used

Check the keys used in `localizedContent` and confirm the pass language context matches an available entry.

### The pass content does not change

This is expected.

Notify only sends a wallet notification. It does not update pass data.

## FAQ

<details>

<summary><strong>Does Notify update pass fields?</strong></summary>

No. Notify only sends a wallet notification.

Use [Journey Builder push update](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-push-update.md) to update pass data with `additionalData`.

</details>

<details>

<summary><strong>Can both <code>content</code> and <code>localizedContent</code> be used together?</strong></summary>

One source of notification text should be used per activity configuration.

Use `content` for one message, or `localizedContent` for language-specific messages.

</details>

<details>

<summary><strong>Should Notify be used to change template?</strong></summary>

No. Notify does not change template and does not use `passType`.

Template changes belong to [Journey Builder push update](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-push-update.md).

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.thewalletcrew.io/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-notify.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
