> For the complete documentation index, see [llms.txt](https://docs.thewalletcrew.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.thewalletcrew.io/developers-guides/integration-guides/wallet/update-pass-data-in-templates.md).

# Update pass data in templates

## Update pass data in templates

Passes are most valuable when they stay accurate over time. The usual pattern is simple: you update a pass through The Wallet Crew API, then your pass templates render the latest values using Liquid.

<details>

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

* A loyalty pass shows `points` and `tier` and updates after each purchase.
* An event ticket shows the latest `gate` and `seat` after a schedule change.
* A membership card shows `status` and `expiryDate` after a renewal.

</details>

### What “updated pass data” means

In The Wallet Crew, wallet fields usually come from two places: additional data stored on the pass and live data fetched by connectors at render time. External identifiers help connectors find the right source record. Metadata supports segmentation and reporting, not wallet display.

If the right storage location is unclear, start with [Structure](/developers-guides/pass-architecture/structure.md).

### Step-by-step: update data, then display it

{% stepper %}
{% step %}

#### 1) Update the pass data through the API

Update the pass using the Pass API. This is the same API you use for push updates and data refresh.

Use the [API reference](https://docs.thewalletcrew.io/api-reference) and look for **Update a pass**.

If pass creation is not set up yet, start with [Enrolment flows](/developers-guides/integration-guides/wallet/enrolment-flows.md) or [Connector-triggered pass creation](/developers-guides/integration-guides/wallet/connector-triggered-pass-creation.md).
{% endstep %}

{% step %}

#### 2) Inspect the updated data on a real pass

Open a pass and look at the JSON payload. This is your source of truth when you later reference fields in Liquid.

In the admin console, go to `Wallet > Passes`, pick a pass, then open the menu (`...`) and click **View data**.

<div data-with-frame="true"><figure><img src="/files/thpiPLNQO8r9RmT9Jga9" alt="Pass details screen showing the “View data” action in the pass menu."><figcaption><p>Use “View data” to confirm the keys and values that exist on this pass.</p></figcaption></figure></div>
{% endstep %}

{% step %}

#### 3) Use Liquid in your pass template

Go to `Wallet > Templates` and edit the template used by your pass.

<div data-with-frame="true"><figure><img src="/files/RYoRAL7BRg11jDYQoc3b" alt="Template list showing where to edit a pass template."><figcaption><p>Edit the template that matches your pass type.</p></figcaption></figure></div>

Then select the section you want to change. Sections are grouped so you can expand only what you need.

<div data-with-frame="true"><figure><img src="/files/QDDmvE0dYkxyDpBa02c8" alt="Template editor showing expandable sections for Apple and Google fields."><figcaption><p>Pick the field where the updated value should appear.</p></figcaption></figure></div>

When you need dynamic content (conditions, formatting, or computed strings), open the code editor (`<>`) and use Liquid.

<div data-with-frame="true"><figure><img src="/files/vsPHuW6iEAi8RHswzirb" alt="Template editor code view where Liquid can be written."><figcaption><p>Use Liquid when plain text fields are not enough.</p></figcaption></figure></div>

Use [Templating engine](/developers-guides/integration-guides/wallet/liquid-templating.md) for supported Liquid syntax in The Wallet Crew.

{% hint style="info" %}
Avoid guessing variable paths. Use **View data** to confirm what exists on the pass, then reference those exact keys in your template.
{% endhint %}
{% endstep %}

{% step %}

#### 4) Save and validate on a device

Save your template changes, then validate with a pass you can install on a phone.

If passes are distributed through a web page or QR flow, validate the hosted view on a real device. If distribution happens from a native app, validate the same pass through the app flow used by the project.
{% endstep %}
{% endstepper %}

### Troubleshooting tips

If you don’t see the new value in Apple Wallet or Google Wallet, start by checking the pass payload in **View data**. If the value is missing there, the issue is in the update call or in the source system used by the connector. If it exists in **View data** but not on the rendered pass, the issue is in the template mapping or Liquid logic.

If the value exists only as metadata, it will not appear on the wallet pass. Metadata is for targeting and reporting, not for display fields.

### Validation checklist

After an update, confirm four things:

* The stored value exists on the pass, or the connector source record contains the new value.
* The template references the exact key used at render time.
* A render trigger happened, such as preview, installation, or push update.
* The final pass is validated on a real device.

### FAQ

<details>

<summary><strong>What should I use: identifiers, metadata, or additional data?</strong></summary>

Use identifiers to link the pass to external systems. Use metadata to segment passes for operations. Use additional data for values that must persist on the pass and appear in wallet fields.

If a quick overview is needed, read [Structure](/developers-guides/pass-architecture/structure.md).

</details>

<details>

<summary><strong>Why does Liquid render empty values?</strong></summary>

In most cases, the key does not exist on that specific pass. Confirm the field exists in **View data**, then make sure your template references the exact same key name.

</details>

<details>

<summary><strong>Do I need to update the template after every data change?</strong></summary>

No. Templates define how to display data. You typically update a template only when you change layout or add new fields. Day-to-day changes should be done by updating pass data through the API.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.thewalletcrew.io/developers-guides/integration-guides/wallet/update-pass-data-in-templates.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
