Pass installation and uninstallation hooks
Create a custom connector that calls your API when a pass is installed or uninstalled in Apple Wallet or Google Wallet.
It is possible to create a custom connector in The Wallet Crew to call an external API whenever a pass is installed or uninstalled on Apple Wallet or Google Wallet.
This allows Brands to synchronize installation status with external systems such as a CRM, analytics tool, or marketing automation platform.
Real-world examples
A retail Brand updates a CRM field like
hasWalletPass=trueright after installation. It then stops sending “add to wallet” reminders.A ticketing Brand logs installs and uninstalls in its BI stack. It monitors adoption by event, channel, and device type.
A Brand triggers a welcome journey after installation. It uses
registrationSourceto segment by UTM campaign.A Brand detects unusual uninstall spikes after a bad release. It rolls back quickly and communicates proactively.
Runtime Hooks
The platform exposes the following hooks on the runtime.wallet.passUpdater endpoint:
OnPassInstalled→ Triggered when a pass is added to Apple/Google WalletOnPassUninstalled→ Triggered when a pass is removed from Apple/Google Wallet
Both methods receive the same parameters:
passId
string
Unique identifier of the pass
passType
string
Type of pass (loyalty, gift card, event ticket…)
identifiers
Record<string, any>
Key/value identifiers defined on the pass (e.g. customerId)
device
"apple" or "google"
Wallet platform
additionalInformation
AdditionalPassInstallationInformation
Includes registration statistics
Example Implementation
Scripts can be placed in the server/scripts folder under advanced configuration.
Minimal Example
For testing or logging only:
When Are Events Triggered?
OnPassInstalled→ fired when a user successfully adds a pass to Apple or Google Wallet.OnPassUninstalled→ fired when a user removes the pass from their wallet.Events are reliable: the platform ensures correct delivery even under high load.
Notes
fetchis not the standard browser fetch — it accepts PascalCase options (Method,Headers,Body,ThrowOnError).Authentication is flexible: you may use API keys (via
getSecret) or OAuth with the customfetch.There are no platform restrictions: execution is safe and fully managed.
FAQ
Are these events real-time?
They trigger when the pass is added or removed in the wallet. In practice, you should treat them as near real-time. Always design your API to be idempotent, so retries do not create duplicates.
What happens if my API is down?
Your connector code controls the call. You should handle timeouts and errors gracefully. If the external system is critical, implement retries and a dead-letter strategy on your side.
Last updated

