One Pass for Registration, Bib, Check-In & Rewards
Replace paper forms, manual bib lookups, and scattered waivers with a single, secure, NFT-backed Race Pass. It registers the runner, holds waiver attestations, displays the official bib, supports QR/NFC check-in, and unlocks post-race rewards. Web2-friendly for everyday runners, fully Web3-ready for power users.
Book a Pilot Race See a Live Demo🎯 Overview
What is the Race Pass?
A soulbound (non-transferable) NFT minted to a runner’s Invisible ID wallet. It represents:
- ✅ Confirmed registration (name, division, distance)
- ✅ Waiver attestation (stored as a hash or verifiable credential)
- ✅ Bib number (auto-updates once assigned by timing)
- ✅ Check-in QR/NFC for packet pickup & corral control
- ✅ Perks (sponsor coupons, finisher badge, loyalty rewards)
Who uses it?
- 👟 Runners: simple signup (email/SMS ok), one pass for everything.
- 🧰 Organizers: roster, waivers, check-in, corral & merch—centralized.
- ⏱️ Timers: import/export CSV, assign bib/chip as usual. No workflow breaks.
Works alongside your existing registration links—adopt gradually or go all-in.
💡 Benefits
For Organizers
- Centralized roster with verified profiles
- Instant waiver status, emergency contacts, shirt sizes
- QR/NFC check-in & corral control
- Auto-sync with timers via CSV
- Built-in sponsor placements & coupons
For Timers
- Familiar CSV imports to RunScore/RaceResult/MYLAPS
- Pre-validated fields (DOB → age on race)
- Return bib/chip files → auto-write to passes
- No new hardware/protocols required
For Runners
- Email/SMS login (custodial wallet) or connect wallet
- One pass for expo pickup + race morning
- Automatic finisher badge & leaderboard link
- Rewards that persist across future events
🧭 How It Works (End-to-End)
- Sign Up — Runner signs in (email/SMS or wallet), chooses distance & options, accepts waiver, pays (card/crypto).
- Mint Race Pass — A soulbound NFT is minted to the runner’s Invisible ID (ERC-6551-ready).
- Roster CSV — Organizer exports/downloads CSV in the timer’s preferred column order.
- Bib/Chip Assignment — Timer returns an assignment file; Pass metadata/bib is updated instantly.
- Packet Pickup — Staff scan QR/NFC; pass shows green “Verified” with name, bib, corral, merch.
- Race Day — Corrals check via pass, on-the-spot edits logged, timing proceeds as usual.
- Results — After results, mint Finisher Badge with official time/place & link to results page.
Invisible ID binds the pass to the person. Optional biometric levels available for elite or security-sensitive events.
Store a hash/VC attestation, not raw PII, preserving privacy while proving acceptance.
Post-race, passes remain as proof of participation and unlock future loyalty perks.
🔄 Registration Flows
Web2-Friendly (Default)
- Email/SMS login → custodial wallet auto-created
- Pay with card (Stripe/PayPal)
- Pass minted automatically; runner receives link & QR
Web3-Ready (Optional)
- Connect wallet (Polygon) & mint
- Pay with crypto or promo code
- Pass lives in the user’s wallet (or token-bound account)
🎫 Bib & Chip Assignment
Mode A — Timer Assigns
Export pre-race CSV (no bib). Timer returns a bib/chip assignment file. Organizer uploads it → passes update with official bibs.
Mode B — Organizer Assigns
Assign bibs inside the dashboard (ranges per distance/corral). Export final CSV to timer.
Either mode preserves the timer’s existing scoring workflow.
✅ Check-In & Packet Pickup
What Staff See
- Runner name + bib + corral + distance
- Waiver ✔ / ✖, age on race, merch size
- Green “Verified” if wallet proves ownership
How It Verifies
QR/NFC opens a secure page that checks pass ID + wallet signature or session. No blockchain knowledge required for volunteers.
🗂️ CSV Schema for Timers
We support common columns used by RunScore / RaceResult / MYLAPS-style imports. You can rename/reorder to match your timer.
Column | Description |
---|---|
Bib | Official bib number (blank if timer will assign) |
FirstName, LastName | Runner legal name |
Gender | M / F / X |
DOB | YYYY-MM-DD (used to compute AgeOnRace) |
AgeOnRace | Computed from DOB and event date |
Email, Phone | Contact details (optional to share with timer) |
Address, City, State, Zip | For mailing and prize logistics (optional) |
Distance | 5K / 10K / Half / etc. |
Category | Age group or special category (Clydesdale, Athena, etc.) |
Corral | Wave/Corral assignment |
ShirtSize | XS-XXL etc. |
EmergencyName, EmergencyPhone | Displayed to staff; encrypted at rest in our system |
Notes | “InvisibleID: <tokenId>” or other flags |
Show Sample CSV
Bib,FirstName,LastName,Gender,DOB,AgeOnRace,Email,Phone,Address,City,State,Zip,Category,Distance,Corral,ShirtSize,EmergencyName,EmergencyPhone,Notes 214,Alex,Runner,M,1992-08-07,33,alex@example.com,412-555-1212,123 Main St,Grove City,PA,16127,5K,5K,A,M,Sam Runner,724-555-3434,"InvisibleID: 12345"
🧱 Pass Metadata (What’s Stored)
Core Fields
- Event ID, distance, wave/corral
- Bib (updates after assignment)
- Waiver attestation (hash or VC)
- Emergency contact (encrypted off-chain)
- Check-in URL (QR/NFC)
The pass is soulbound by default; admins can unlock for sanctioned transfers.
Example JSON
{ "name": "2025 Turkey Trot — Bib 214", "description": "Official race registration & bib (5K).", "image": "ipfs://.../bibs/2025-tt5k/214.png", "external_url": "https://invisibleid.io/bib/2025-tt5k/214", "attributes": [ {"trait_type":"Event","value":"Turkey Trot"}, {"trait_type":"Distance","value":"5K"}, {"trait_type":"Bib","value":"214"}, {"trait_type":"Wave","value":"A"} ], "properties": { "event_id": "2025-11-27-tt-5k", "invisible_id_token": 12345, "waiver_attestation_hash": "0x...", "emergency_contact_enc": "age-encrypted-payload", "checkin_qr": "https://invisibleid.io/checkin/2025-tt5k/214" } }
Implementation Notes (Tech)
- NFT Type: ERC-721 (soulbound via transfer guard) with admin unlock for official reassignment.
- Wallets: Works with custodial email/SMS wallets; supports ERC-6551 token-bound accounts for deep linking to Invisible ID.
- Storage: Public bib image on IPFS/HTTPS; sensitive fields off-chain (encrypted) with hashes on-chain.
- Interoperability: CSV in/out; webhook for bib assignments; results ingestion for finisher badges.
🔗 Integrations
Registration Sites
Keep your existing links live. We can mint Race Passes for those registrants automatically using their email (custodial wallets), or accept all registrations directly on Invisible ID.
Timing Partners
Provide a CSV in their preferred format. If they assign bib/chip, upload their return file to auto-update every pass.
Results
Link the Finisher Badge to the public results page and embed chip time, pace, rank, and age-group place into the badge attributes.
🔒 Privacy & Compliance
- Minimal on-chain data: we store references/hashes; PII lives off-chain, encrypted.
- Consent & revocation: granular consent for marketing; easy opt-out & data deletion workflow.
- Waiver proofs: verifiable without exposing personal details.
- Emergency info: visible to staff during the event; hidden otherwise.
🏅 Finisher Badges & Rewards
Finisher Badge
Automatically minted post-race with official chip time and rank. Great for social sharing and perennial leaderboards.
Sponsor Perks
Attach coupons or limited-time offers directly to the pass—redeemable by QR at partner locations. Track redemptions and ROI.
❓ FAQ
Do runners need crypto?
No. Email/SMS login creates a secure custodial wallet. Web3 is optional.
Can we still use our timer?
Yes. We export/import CSV in whichever column order your timer prefers.
What if a bib is transferred?
Admins can unlock a pass to reassign it under event policy, then relock to keep it soulbound.
What about race-day registrations?
Scan a QR at the tent to mint & pay in minutes. The pass immediately shows a valid bib for packet pickup.
📬 Get Started
Pilot a Race
We’ll mirror your current workflow, enable Invisible ID passes, and coordinate CSVs with your timing partner.
Questions?
Email: info@invisibleid.io • Web: invisibleid.io
Prefer phone? Add a call link or number here.
© Invisible ID — Secure digital identity for races, gyms, schools, and more.