> 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/pass-architecture/structure.md).

# Structure

## Structure

This page explains how pass data is organized in The Wallet Crew. It shows which values are stored on the pass record, which values stay in connected systems, and when to use each field type.

{% hint style="info" %}
The Wallet Crew follows a privacy-first model. Personal data is not stored by default. The platform stores external identifiers and, when needed, limited non-sensitive values such as metadata or additional data.
{% endhint %}

<details>

<summary>Real-world examples</summary>

* A loyalty pass can use a CRM customer ID as an external identifier, a `storeId` as metadata, and a campaign message as additional data.
* A ticketing pass can use a ticket ID from the ticketing system, a `venue` metadata field for segmentation, and a seat-upgrade note as additional data.
* A membership pass can combine several identifiers when data comes from more than one system, such as Shopify, Klaviyo, and an internal CRM.

</details>

### What a pass contains

A pass is built from several data blocks. Each block serves a different purpose.

* **General information** describes the pass record itself.
* **External identifiers** connect the pass to other systems.
* **Metadata** supports segmentation and targeting.
* **Additional data** enriches the pass when no source system provides the value.
* **External data** shows the source data used to build the pass.

### General information

The general section contains the core record details for the pass. It includes the creation date, the last update date, Apple Wallet and Google Wallet status, and the pass type.

The pass type is the only value in this section that can be changed manually.

![Pass general information, including creation date, update date, wallet status, and pass type](/files/zDVqn19d4NeraUWx2ZRr)

*General information helps confirm the current state of the pass and the template it uses.*

### External identifiers

External identifiers connect a pass to one or more connected systems. They make it possible to fetch the data needed to build the pass without storing that personal data in The Wallet Crew.

A single pass can contain several identifiers. Each identifier maps to a specific integration point, such as Shopify, Klaviyo, or Cegid Y2.

![List of external identifiers attached to a pass](/files/cZIhQGGe3wVkrZwVrePK)

Identifiers are stored as key-value pairs. This makes it possible to attach the right reference for each source system.

![Form used to add an external identifier to a pass](/files/5rP5OSgbocU98GNElDZV)

*Use external identifiers when a pass must stay linked to a source system.*

### Metadata

Metadata is used to segment passes. It helps group passes by operational or marketing criteria.

For example, a `storeId` metadata field can separate passes by location. This makes it possible to target a push notification to passes linked to one store only.

![Metadata fields used to segment passes](/files/hJhR5H63gjv5vg2UDqY7)

*Use metadata when the value must support filtering, targeting, or reporting.*

### Additional data

Additional data is optional pass-level information. It is not required to create the pass and is not intended for segmentation.

This data is useful when a value does not exist in a connected system but still improves the wallet experience. A custom welcome message is a common example.

![Additional data attached to a pass for wallet enrichment](/files/c2kyyQmj5WQ36npwJcXm)

*Use additional data when the value enriches the pass but does not need to drive audience selection.*

### External data

External data shows the source information used to build the pass. It helps verify which values were collected and which connected system provided them.

This view is useful for validation and troubleshooting. It makes it easier to confirm that the pass receives the expected data before or after an update.

![External data used to build a pass and its source systems](/files/FILSQhlGeOZAmgKPVm0j)

*Use external data to inspect the raw source values behind a pass.*

### Choosing the right field type

Choosing the right field type keeps the pass model clean and maintainable.

* Use **external identifiers** to connect the pass to a source system.
* Use **metadata** to segment passes.
* Use **additional data** to enrich selected passes.
* Use **external data** to validate the source payload.

### FAQ

<details>

<summary>Does The Wallet Crew store personal data on the pass record?</summary>

Not by default. The Wallet Crew stores external identifiers and can store limited non-sensitive values when needed, such as metadata or additional data.

</details>

<details>

<summary>What is the difference between metadata and additional data?</summary>

Metadata is designed for segmentation. Additional data is designed for pass enrichment. If a value must be used for targeting or filtering, it belongs in metadata.

</details>

<details>

<summary>Can one pass be connected to several systems?</summary>

Yes. A single pass can contain several external identifiers. Each identifier can represent a different connected system.

</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/pass-architecture/structure.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.
