# Journey Builder push update

The Push update activity lets Salesforce Marketing Cloud call The Wallet Crew during a journey. It resolves a pass from contact identifiers and sends the payload needed to update pass data.

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

<details>

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

* A post-purchase journey refreshes the loyalty card after a store transaction.
* A VIP flow switches the targeted pass type after a tier upgrade.

</details>

## What the activity does

Journey Builder sends a payload to The Wallet Crew push update listener.

The payload contains:

* `identifiers` to resolve the target customer or pass
* `additionalData` to inject pass data or template values
* `passType` when the journey must target a specific pass type

Use [Journey Builder notify](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-notify.md) when the goal is only to send a wallet notification.

## Add the activity to a journey

{% stepper %}
{% step %}

### Open Journey Builder

Create a new journey or open an existing multi-step journey.

<div data-with-frame="true"><figure><img src="/files/HE8dfJq9IyPmebTYGSlk" alt="Salesforce Marketing Cloud Journey Builder showing creation of a multi-step journey"><figcaption><p>Use a multi-step journey when wallet updates must be part of a broader campaign flow.</p></figcaption></figure></div>
{% endstep %}

{% step %}

### Add The Wallet Crew Push update activity

Drag the The Wallet Crew Push update activity into the journey.

<div data-with-frame="true"><figure><img src="/files/ggg8yeLCatNbGlpOuZxP" alt="Journey Builder canvas with The Wallet Crew push update custom activity"><figcaption><p>Add the The Wallet Crew Push update activity where the journey must refresh pass data or change template.</p></figcaption></figure></div>
{% endstep %}

{% step %}

### Configure the activity payload

Define the identifier mapping first. Then add any message or template data required by the flow.
{% endstep %}
{% endstepper %}

## Configure `identifiers`

`identifiers` must match an identifier already known by The Wallet Crew.

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 %}

Use a stable external identifier whenever possible.

This avoids targeting issues caused by mutable fields such as email.

## Configure `additionalData`

`additionalData` carries the values used by the target pass update flow.

A simple message example looks like this.

{% code title="additionalData example" %}

```json
{
  "sfmc_message": "Your message here"
}
```

{% endcode %}

The exact keys depend on the The Wallet Crew flow or template logic used by the tenant.

## Use `passType` only to change template

`passType` is optional.

Leave it empty to keep the current template already associated with the targeted pass.

Set `passType` only when the journey must switch the pass to another template.

The expected format is `passType=template`.

Accepted values depend on the tenant configuration.

## Test and activate

Validation should start with a small internal audience.

{% stepper %}
{% step %}

### Test the journey with one contact

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

{% step %}

### Check the activity payload

Confirm the identifier value resolves to the expected customer or pass.
{% endstep %}

{% step %}

### Verify the pass result

Confirm the pass refreshes as expected on a test device.
{% endstep %}

{% step %}

### Activate the journey

Activate the journey once the identifier mapping and wallet behavior are validated.
{% endstep %}
{% endstepper %}

## Troubleshooting

### No pass is updated

Check the identifier mapping first.

Most failures come from an identifier name or value that does not match The Wallet Crew data.

### The wrong pass type is targeted

Leave `passType` empty when the goal is only to update the current pass.

Set `passType` only when the journey must move the pass to another template.

### A notification was expected, but no notification appears

Push update does not exist to send notification-only payloads.

Use [Journey Builder notify](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-notify.md) for notification-only use cases.

## FAQ

<details>

<summary><strong>Is <code>passType</code> always required?</strong></summary>

No. Leave `passType` empty to keep the current template.

Set it only when the journey must change the pass template.

</details>

<details>

<summary><strong>Which identifier should be used first?</strong></summary>

A stable external identifier should be preferred.

This is usually safer than a mutable field such as email.

</details>

<details>

<summary><strong>Can the activity send a wallet notification?</strong></summary>

No. Use [Journey Builder notify](/connect/marketing-automation/salesforce-marketing-cloud/journey-builder-notify.md) to send a wallet notification without updating pass data.

</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-push-update.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.
