CAFC New Pass and Invitation Setup Guide
Version 1.0.3 — 20 August 2026, 09:53:01 (Europe/London)
1. Purpose
This guide defines the controlled process for adding a new invitation-led digital pass to the CAFC WordPress and Gravity Forms system.
It covers:
- the invitation email template;
- the invitation repository record;
- the recipient’s destination/application form;
- the Wallet Pass Definition;
- the pass notification containing the email pass and Apple/Google Wallet buttons;
- optional season and check-in integration;
- safe testing before live invitations are sent.
Do not create or send live invitations until every relevant item in the final checklist has passed.
2. Current system limitation
The live Generic Pass Invitation System v1.0.10 currently supports:
- invitation repository: Gravity Form 21;
- invitation templates: Gravity Form 23;
- destination/application form: Gravity Form 20 only;
- public invitation page:
/invitation/; - public shortcode:
[cafc_pass_invitation].
The management screen can store another destination form number, but the public invitation engine and send validation currently reject any destination other than Form 20.
Therefore:
- a new invitation campaign leading to the existing Managers Pass Form 20 can be configured without changing the invitation engine;
- a genuinely new pass with a new destination form requires a tested complete replacement of the Generic Pass Invitation System before it can be activated;
- check-in support for a new pass form must also be added separately unless the pass is already one of the supported forms.
3. System flow
- Form 23 stores the reusable invitation email template.
- Invitation Management creates a Pending recipient entry in Form 21.
- A live send creates a new secure token and emails the recipient.
- The email link opens
/invitation/?token=.... - The invitation engine validates the Form 21 status, token and expiry.
- The engine displays the configured destination/application form.
- The destination form is prefilled from Form 21 and submitted by the recipient.
- The Form 21 invitation becomes Used and records the resulting destination entry.
- The destination form’s notification uses
{cafc_wallet_email_pass}to create the email pass and Wallet buttons. - Form 19 tells the Wallet Pass System how to read the destination entry and display the pass.
- If required, Ticket Check-In recognises the reference and writes attendance to Form 5.
4. Forms and pages required
Always required
| Component | Current ID/path | Purpose |
|---|---|---|
| Wallet Pass Definitions | Form 19 | One active definition entry for each destination/source form |
| Destination/application form | Form 20 for the current live engine | Collects the recipient’s final application and owns the issued pass record |
| Pass Invitations | Form 21 | Stores each recipient, token, status, expiry, email and batch |
| Pass Invitation Content Templates | Form 23 | Stores reusable invitation email templates |
| Invitation page | /invitation/ |
Contains [cafc_pass_invitation] |
| Invitation Management page | /pass-invitation-management/ |
Contains [cafc_pass_invitation_management] |
Required when the pass is checked at the turnstile
| Component | Current ID | Purpose |
|---|---|---|
| Global Settings | Form 25 | Field 1 stores the current season |
| Fixtures | Form 15 | Supplies today’s real fixture |
| Check-In History | Form 5 | Stores check-in and undo history |
| Ticket Check-In snippet | Current authoritative release | Must explicitly recognise the new destination form and its fields |
5. Choose and record the new pass specification
Before changing Gravity Forms, complete this worksheet:
| Decision | Required value |
|---|---|
| Public pass name | For example, Managers Pass |
| Stable pass type key | Lowercase/underscore key, for example managers_pass |
| Invitation type | Exact text used consistently in Forms 21 and 23 |
| Destination form ID | Existing Form 20 or approved new form |
| Passholder name field | Destination field ID |
| Check-in reference field | Destination field ID |
| Season field | Destination field ID |
| Status field | Destination field ID and accepted value |
| Main detail field | Destination field ID, such as team |
| Valid-from rule | Fixed date, issue date or fixture date |
| Valid-to date | Required unless derived from fixture date |
| Apple Wallet enabled | Yes/No |
| Google Wallet enabled | Yes/No |
| Check-in required | Yes/No |
| Invitation validity | Number of days |
| Confirmation wording | Destination form confirmation |
| Pass email wording | Destination form notification |
The invitation type, destination form and Form 19 source form must agree.
6. Create or verify the destination/application form
Current Managers Pass destination — Form 20
The current invitation engine expects these fields:
| Field | Purpose |
|---|---|
| 3 | Manager name; inputs 3.3 and 3.6 are prefilled and made read-only |
| 5 | Season |
| 6 | Invited email; prefilled, made read-only and validated against Form 21 |
| 23 | Managers Pass status; Active is required for check-in |
| 25 | Manual/check-in reference |
| 29 | Team description |
| 35 | Invitation description source copied from Form 21 Field 15 |
| 36 | Secure invitation token |
| 37 | Source Form 21 invitation entry ID |
| 38 | Validated invited email |
| 39 | Invitation validation result; set to Validated |
Fields 36–39 should be hidden or administrative and must not be editable by the recipient.
Requirements for a future new destination form
Create a dedicated form when the new pass needs different application data or lifecycle behaviour. It must include fields for:
- passholder name;
- recipient email;
- season where applicable;
- pass status;
- unique check-in reference;
- any pass detail shown on the email/Wallet pass;
- invitation token;
- source Form 21 entry ID;
- validated invitation email;
- invitation validation marker.
Record the exact field IDs. A code release must then map the new form in the Generic Pass Invitation System. Never assume it will inherit the Form 20 mapping.
Destination confirmation
Configure the active Gravity Forms confirmation on the destination form. This controls the page displayed after a successful application.
The current Managers Pass system deliberately uses Form 20‘s active confirmation rather than hard-coded snippet wording.
Destination notification that issues the pass
Create or verify a notification on the destination form.
The message should contain:
{cafc_wallet_email_pass}
This single merge tag renders the pass, QR code, directions link and enabled Apple/Google Wallet controls using Form 19.
Set notification routing and conditional logic carefully. If the pass must only be issued after a successful payment or approved status, the notification must use the correct event/conditions. Do not allow a normal submission notification and a separate manual notification to issue the same pass twice.
7. Create the Wallet Pass Definition in Form 19
Create one new active Form 19 entry for the destination/source form. The Wallet system reads active entries newest-first and uses only the newest enabled definition for each source form.
Form 19 field map
| Field | Setting | Guidance |
|---|---|---|
| 1 | Pass type key | Stable lowercase key; do not reuse for a different product |
| 3 | Pass title | Customer-facing title |
| 4 | Description | Internal/customer description as designed |
| 5 | Season fallback | Used if the mapped source season is blank |
| 6 | Fixed valid-from date | Used for a fixed-date rule |
| 7 | Valid-to date | Store/enter the expected date format consistently |
| 8 | Fixture types | Applicable fixture choices |
| 9 | Usage rule | Describes permitted use |
| 11 | Re-entry rule | Re-entry setting |
| 12 | Required status | Must match the source form’s issued/active status |
| 13 | Required payment | Payment requirement where used |
| 14 | Apple enabled | Exact value Yes enables Apple Wallet |
| 15 | Google enabled | Exact value Yes enables Google Wallet |
| 17 | Source form ID | Destination/application form that owns the issued pass |
| 18 | Holder field ID | Field containing the displayed passholder name |
| 19 | Reference field ID | Field containing the unique QR/check-in reference |
| 20 | Main detail field ID | For example team or pass category |
| 21 | Season label | Usually SEASON |
| 22 | Season field ID | Source field containing season |
| 23 | Main detail label | For example TEAM |
| 24 | Status field ID | Source field containing pass status |
| 25 | Maximum uses | Numeric limit where applicable |
| 26 | Apple template type | Wallet template setting |
| 28 | Background colour | Hex colour, for example #008000 |
| 29 | Terms | Pass terms shown in the email/Wallet output |
| 30 | Validity text | Customer-facing validity wording |
| 31 | Show reference | Exact value Yes to display it |
| 32 | Show status | Exact value Yes to display it |
| 33 | Definition enabled | Must be exact value Yes |
| 35 | Valid-from rule | Supported design values include fixed date, Issue date, or Fixture date |
| 36 | Wallet layout style | Existing supported layout choice |
| 37 | Reference label | For example PASS NO. |
| 38 | Strip image URL | Public Media Library PNG URL where the selected Apple layout needs it |
| 39 | 2x strip image URL | Public high-resolution PNG URL where required |
| 40 | Third-detail source | Field, status, valid-from, valid-until or supported summary source |
| 41 | Third-detail field ID | Used when Field 40 selects a normal field |
| 42 | Third-detail label | Customer-facing label |
| 43 | Fixture date field ID | Required for fixture-date passes |
| 44 | Directions enabled | Exact value Yes enables directions |
| 45 | Directions label | For example Directions to Colston Avenue |
| 46 | Directions URL | Full public Google Maps/directions URL |
| 47 | Directions icon URL | Public Media Library image URL |
Form 19 validation
Before proceeding, confirm:
- Field 33 is
Yes; - Field 17 is the correct destination/source form ID;
- Fields 18, 19, 20, 22 and 24 refer to fields that actually exist in that form;
- the reference field is populated and unique for every issued pass;
- required status exactly matches the destination entry value;
- fixed or derived validity dates are available;
- Apple/Google switches reflect what should be shown;
- strip artwork is valid PNG when the chosen Apple layout requires it;
- directions URLs are public and load without authentication.
8. Create the invitation email template in Form 23
Create one active Form 23 entry. The management system discovers fields by their labels, so use these recommended labels exactly:
| Recommended label | Required content |
|---|---|
| Invitation Type | Exact invitation type selected in Invitation Management |
| Destination Form | Numeric destination form ID |
| Email Subject | Complete subject line |
| Email Content | Complete email body |
| Button Text | Apply/continue button wording |
The email body can use:
- ordinary Form 21 Gravity Forms merge tags;
{cafc_invitation_button}for the linked action button;{cafc_invitation_url}for the raw secure URL.
Include either the invitation button or raw invitation URL. The button is preferred for normal customer emails.
After saving the Form 23 entry, open Invitation Management and confirm the new invitation type appears in the template selector with the correct destination form title.
9. Form 21 invitation repository
Do not create another invitation repository form for each new pass. All invitation types use Form 21.
Form 21 field map
| Field | Purpose |
|---|---|
| 1 | Recipient name; 1.3 first name and 1.6 surname |
| 3 | Recipient email |
| 4 | Organisation |
| 5 | Department/team |
| 10 | Invitation status: Pending, Used, Cancelled or Expired; Pending plus Field 12 displays as Sent |
| 11 | Effective expiry |
| 12 | Live send date |
| 13 | Claimed date/time |
| 14 | Resulting destination-form entry ID |
| 15 | Invitation description source |
| 17 | Batch reference |
| 22 | Destination form ID |
| 24 | Copied email subject |
| 25 | Copied email content |
| 26 | Invitation type |
| 27 | Validity in days |
| 28 | Apply-button text |
| 29 | Secure invitation token |
| 30 | Campaign description |
| 31 | External reference |
| 32 | Campaign expiry |
Invitation Management creates these entries. Avoid manually changing token, status, sent, claimed or resulting-entry fields unless following an approved recovery process.
10. Configure code support for a genuinely new destination form
This step is mandatory if the destination is not Form 20.
Issue a complete replacement of the Generic Pass Invitation System that:
- explicitly permits the new destination form ID;
- maps Form 21 recipient data into the correct destination fields;
- makes invited identity fields read-only where required;
- validates the token and invited email on submission;
- stores the invitation token and source invitation ID in the destination entry;
- changes Form 21 to Used only after successful destination submission;
- records the resulting destination entry ID;
- preserves the destination form’s configured confirmation;
- preserves all existing Form 20 Managers Pass behaviour.
If check-in is required, issue a separate complete Ticket Check-In replacement that maps the new source form, status, season, holder, detail and reference fields. Update Checkin Reports if the pass needs a new reporting category.
11. Create invitations
Single recipient
- Open
/pass-invitation-management/. - Select Add Record.
- Choose an existing batch or create a new batch.
- For a new batch, select the required Form 23 invitation template.
- Enter first name, surname and valid email.
- Complete optional organisation, team, source, campaign and expiry information.
- Create the record.
- Confirm the new Form 21 entry is Pending.
- No email is sent by Add Record.
CSV batch
Use the Import tab and the supplied CSV template. Required columns are:
first_namelast_nameemail
Optional columns are:
external_referenceinvitee_organisationinvitee_department_teaminvitation_description_sourcecampaign_descriptioncampaign_expiry_date
Preview the batch before creation. Existing active invitations for the same email and invitation type are blocked; Expired or Cancelled records do not prevent a new invitation.
12. Test before live sending
- Create a single test invitation using a controlled address.
- Open Invitations and select the record.
- Choose Preview Send/Resend.
- Select the TEST tab.
- Enter the test mailbox.
- Leave Expire token as No for a reusable preview test.
- Send the test email.
- Check sender, subject, wording, button, mobile display and destination title.
- Confirm no live send date was written to Form 21 Field 12.
- When ready to test the complete application, perform a live send to a controlled recipient.
- Open the invitation link and confirm the destination form is prefilled correctly.
- Confirm invited name/email cannot be changed where required.
- Submit the destination form.
- Confirm its configured confirmation is displayed.
- Confirm Form 21 is Used and Fields 13 and 14 are populated.
- Confirm the pass email is received once.
- Confirm the email pass shows the correct holder, reference, season, detail, status, dates and directions.
- Test Apple Wallet and Google Wallet separately.
- If applicable, scan and manually enter the reference in Ticket Check-In TEST mode.
- Only after all checks pass should a real batch be sent.
13. Live-send rules
- Use Invitation Management preview before every live batch.
- Live Send/Resend rotates the secure token and renews effective expiry.
- An earlier secure link becomes invalid after resend.
- Reset creates a new token and returns the invitation to Pending without sending.
- Cancelled, Expired and Used invitations cannot be claimed.
- Do not send from both the Form 21 entry screen and Invitation Management during the same operation.
- Check Form 21 notes and the email log after failures.
14. Final go-live checklist
- Pass specification recorded.
- Destination form and exact field IDs confirmed.
- Destination confirmation tested.
- Destination pass notification contains
{cafc_wallet_email_pass}. - Notification routing/conditional logic prevents duplicate issue.
- Form 19 definition created and Field 33 equals
Yes. - Form 19 source form and all mapped field IDs verified.
- Wallet validity, required status, colours, artwork and directions verified.
- Form 23 template created with invitation type, destination, subject, content and button.
- New invitation type appears correctly in Invitation Management.
- Generic invitation code supports the destination form.
- Check-in and reports support added where required.
- Single invitation created without automatically sending.
- TEST email passed.
- Controlled live invitation and application passed.
- Form 21 lifecycle changed correctly to Used.
- Pass email arrived once.
- Email pass, Apple Wallet and Google Wallet passed.
- Turnstile test passed where applicable.
- Documentation and master context updated with the new pass mappings.
15. Current authoritative dependencies used for this guide
- CAFC Pass Invitation Management v1.6.6.
- CAFC Generic Pass Invitation System v1.0.10.
- CAFC Gravity Forms Wallet Pass System v2.8.8.
- CAFC Ticket Check-In v2.3.31 where turnstile support is required.
- CAFC Checkin Reports v1.2.4 where reporting support is required.
Revise this guide whenever a form ID, field ID, shortcode, page path, lifecycle rule or authoritative snippet changes.

