```json
{
    "title": "Hidden form fields dynamic pass expiry",
    "url": "https://www.addtowallet.co/hidden-form-fields-dynamic-pass-expiry/",
    "datePublished": "2026-09-21",
    "dateModified": "2026-09-21",
    "language": "en-US",
    "description": "{{ brizy_dc_global_blocks position='top' }} Hidden Form Fields: Dynamic Expiry for Wallet Passes Set an expiry date on every pass automatically — without adding a date field to your public registration…",
    "author": "Fahiz",
    "publisher": "AddToWallet.co"
}
```

# Hidden form fields dynamic pass expiry

{{ brizy_dc_global_blocks position='top' }}
 .atw-blog {
 max-width: 720px;
 margin: 0 auto;
 font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
 font-size: 17px;
 line-height: 1.65;
 color: #1a1a1a;
 }
 .atw-blog h1,
 .atw-blog h2,
 .atw-blog h3 {
 color: #000000 !important;
 font-weight: 700;
 line-height: 1.25;
 margin-top: 2rem;
 margin-bottom: 0.75rem;
 }
 .atw-blog h1 {
 font-size: 2rem;
 margin-top: 0;
 }
 .atw-blog h2 {
 font-size: 1.5rem;
 padding-bottom: 0.35rem;
 border-bottom: 2px solid #eee;
 }
 .atw-blog h3 {
 font-size: 1.15rem;
 margin-top: 1.25rem;
 }
 .atw-blog p {
 margin: 0 0 1rem;
 }
 .atw-blog ul,
 .atw-blog ol {
 margin: 0 0 1.25rem 1.25rem;
 padding: 0;
 }
 .atw-blog li {
 margin-bottom: 0.5rem;
 }
 .atw-blog strong {
 color: #000;
 }
 .atw-blog .lead {
 font-size: 1.125rem;
 color: #333;
 margin-bottom: 1.5rem;
 }
 .atw-blog .callout {
 background: #f7f7f8;
 border-left: 4px solid #7828c8;
 padding: 1rem 1.25rem;
 margin: 1.5rem 0;
 border-radius: 0 8px 8px 0;
 }
 .atw-blog .callout p:last-child {
 margin-bottom: 0;
 }
 .atw-blog figure {
 margin: 2rem 0;
 text-align: center;
 }
 .atw-blog figure img {
 max-width: 100%;
 height: auto;
 border: 1px solid #e5e5e5;
 border-radius: 8px;
 box-shadow: 0 4px 20px rgba(0,0,0,0.06);
 }
 .atw-blog figcaption {
 margin-top: 0.75rem;
 font-size: 0.9rem;
 color: #555;
 font-style: italic;
 }
 .atw-blog .steps {
 counter-reset: step;
 list-style: none;
 margin-left: 0;
 padding: 0;
 }
 .atw-blog .steps li {
 counter-increment: step;
 position: relative;
 padding-left: 2.5rem;
 margin-bottom: 0.75rem;
 }
 .atw-blog .steps li::before {
 content: counter(step);
 position: absolute;
 left: 0;
 top: 0.1rem;
 width: 1.6rem;
 height: 1.6rem;
 background: #000;
 color: #fff;
 font-size: 0.85rem;
 font-weight: 700;
 border-radius: 50%;
 text-align: center;
 line-height: 1.6rem;
 }
 .atw-blog hr {
 border: none;
 border-top: 1px solid #eee;
 margin: 2.5rem 0;
 }

 Hidden Form Fields: Dynamic Expiry for Wallet Passes

 Set an expiry date on every pass automatically — without adding a date field to your public registration form.

 **In short:** Add a hidden field in the form builder, choose fixed date or days after signup, map it to the card and to Scheduled Pass Expiry. The platform fills the value when someone registers.

 Why this matters

 Many passes should expire a set number of days after signup — for example, 365 days from registration. Two settings are easy to mix up:

 **Scheduled Pass Expiry** — when the pass moves to Expired in Apple Wallet and Google Wallet.
 **Front-of-card fields** — what date the customer *sees* on the pass.

 Changing one does not change the other. Hidden fields tie them together: you set the rule once, map it in Step 3, and every new registration gets the right date. Visitors never fill it in.

 How it works

 Add a field and turn on **Hide from visitors**.
 Pick a **fixed date** or **days after signup** (e.g. 365).
 In Step 3, map the field to the card front and to **Scheduled Pass Expiry**.

 Step 1 — Add a hidden field

 In the form builder, add a **Date** field (e.g. label it **Expiry Date**). Enable **Hide from visitors**. It stays in your design with a Hidden badge but does not show on the public form.

Then choose how the date is set:

 **Days after signup** — e.g. **365** for one year from submit.
 **Fixed date** — same expiry for every registration.

 Other field types (text, number, etc.) can also be hidden with a default value applied on each submit.

 Figure 1 — Hidden Expiry Date field with “365 days after signup”.

 Step 2 — Map to the pass and wallet expiry

 In **Step 3: Map Form Fields to Pass**, connect your hidden field in two places.

 On the card (what customers see)
 Click a front-row field on the pass preview and assign your hidden **Expiry Date** field.

 Pass settings (when the wallet expires)
 Under the card preview, open **Pass settings**:

 **Scheduled Pass Expiry** — marks the pass Expired in the wallet.
 **Expiry notification date** — only if your template uses expiry notifications.

 Use the same hidden field for the visible row and Scheduled Pass Expiry so display and expiry stay aligned.

 Figure 2 — Map the hidden field to the card and to Scheduled Pass Expiry.

 Example: 365-day membership

 Label: **Expiry Date**
 Hide from visitors: **On**
 Date value: **365 days after signup**
 Map to front row + **Scheduled Pass Expiry**
 Save and test with a new registration

 Each signup gets expiry 365 days from that submission. Existing passes are not updated — only new ones after you save.

 Quick tips

 Test with a **new** signup; old test passes keep their original dates.
 One hidden field can map to multiple pass targets.
 Number Generator fields still use their own “Show on form” toggle — separate from this.

{{ brizy_dc_global_blocks position='bottom' }}
