What this integration enables
Litecard connects Bloomreach Engagement with Apple Wallet and Google Wallet. Bloomreach remains the customer engagement and journey orchestration layer, while Litecard creates and manages digital wallet passes, pass updates and wallet-specific events.
- Create a personalised Apple Wallet or Google Wallet pass from a Bloomreach customer journey.
- Store each customer’s Apple Wallet link, Google Wallet link, QR code URL and Litecard ID in Bloomreach.
- Update loyalty points, tier, rewards or membership information on an existing pass.
- Send personalised wallet push notifications from Bloomreach scenarios.
- Return pass download and removal events to Bloomreach for segmentation and follow-up journeys.
Before you begin
- Access to the Litecard Dashboard and Template Builder.
- A Bloomreach Engagement project with access to Data Manager, Integrations, Scenarios and API Triggers.
- Litecard API credentials supplied by the Litecard team.
- An email service provider configured in Bloomreach. UniOne is used as the example in this guide.
- A stable customer identifier shared between Bloomreach and Litecard, normally the Bloomreach registered customer ID or loyalty member number.
1. Integration architecture
1.1 Two-way communication
The integration uses two-way communication because Bloomreach and Litecard perform different functions.
| Direction | Purpose | Typical actions |
| Bloomreach → Litecard | Bloomreach decides when a wallet action should occur. | Create a pass, update pass data, send a notification. |
| Litecard → Bloomreach | Litecard reports wallet lifecycle activity back to Bloomreach. | Pass downloaded, pass removed. |
1.2 Bloomreach to Litecard
- Welcome journey: create a wallet pass and insert the returned download links into an email.
- Loyalty update: send the latest points, tier, reward or membership data to the pass.
- Wallet notification: send a targeted message to an individual pass from a Bloomreach scenario.
1.3 Litecard to Bloomreach
Litecard sends wallet lifecycle events to a Bloomreach API Trigger. Bloomreach can then update the customer profile and use the new status in segmentation or journeys.
- Pass downloaded
- Pass removed
| Recommended source of truth Use Bloomreach or the connected loyalty platform as the source of truth for customer and loyalty data. Litecard should store only the fields required to render and operate the wallet pass. |
2. Configure Litecard and Bloomreach
2.1 Create the Litecard wallet pass template
Create a Litecard template that defines the Apple Wallet and Google Wallet pass design and the fields Bloomreach will populate. Keep the payload limited to the information required on the pass.
- First name
- Last name
- Member number or registered customer ID
- Points balance
- Tier, reward or membership status, where required

Example: Litecard template configuration.
2.2 Configure Litecard OAuth credentials in Bloomreach
Request the Client ID and Client Secret from Litecard support. In Bloomreach, go to Data & Assets → Integrations and create an OAuth integration using the Litecard token endpoint supplied by the Litecard team.
| Key | Value |
| business_id | Copy the Business ID from the Litecard Dashboard profile. |
| scope | Business Admin Employee |

Example: OAuth configuration in Bloomreach Engagement.
| Security Do not place Client Secrets, API Secrets or private tokens in screenshots, public documentation, browser-side scripts or campaign content. |
2.3 Create customer attributes in Bloomreach
Create a dedicated Litecard attribute group in Data & Assets → Data Manager. These attributes store the values returned when a pass is created or updated.
| Attribute | Type | Purpose |
| lc_apple_wallet_link | String | Unique Apple Wallet download link. |
| lc_google_wallet_link | String | Unique Google Wallet download link. |
| lc_qr_code_url | String | Hosted QR code URL, where used. |
| lc_card_id | String | Unique Litecard pass identifier. |
| lc_pass_downloaded | Boolean | Indicates whether the pass is currently downloaded. |

Example: Litecard customer attributes in Bloomreach Data Manager.
2.4 Create the custom events
Create the following events in Data Manager → Events. Use consistent machine-readable event names across Bloomreach scenarios and API requests.
| Event | Required properties | Purpose |
| LC_CREATE_PASS | None | Starts the pass creation journey. |
| LC_UPDATE_PASS | points, plus any other updated pass fields | Updates an existing pass. |
| LC_SINGLE_PN | title, message | Sends one personalised wallet notification. |
| LC_PENDING_DOWNLOAD | litecard_id | Places the customer into a pending-download state. |

Example: custom Litecard events configured in Bloomreach.
2.5 Create reusable webhook presets
Create authenticated webhook presets in Data & Assets → Integrations. Reuse these presets across scenarios so endpoint, authentication and payload changes are maintained in one place.
Create pass #
| Setting | Value |
| Method | POST |
| Endpoint | Litecard Create Card endpoint supplied for your environment |
| Authentication | OAuth connection created in Section 2.2 |
{
“templateId”: “<YOUR_TEMPLATE_ID>”,
“externalId”: “{{ customer_ids.registered }}”,
“cardPayload”: {
“firstName”: “{{ customer.first_name }}”,
“lastName”: “{{ customer.last_name }}”,
“memberNumber”: “{{ customer_ids.registered }}”,
“points”: “{{ customer.loyalty_points }}”
},
“options”: { “noPII”: true }
}

Example: Create Card webhook preset and request payload.

Example: customer field mapping within the Create Card request.
Update pass #
| Setting | Value |
| Method | PATCH |
| Endpoint | Litecard Update Card endpoint supplied for your environment |
| Authentication | OAuth connection created in Section 2.2 |
Send only the fields that need to change. This reduces unnecessary writes and makes troubleshooting easier.

Example: Update Card webhook configuration.
Send a wallet push notification #
| Setting | Value |
| Method | POST |
| Endpoint | Litecard notification queue endpoint supplied for your environment |
| Authentication | OAuth connection created in Section 2.2 |
Use this preset for one-to-one or journey-based notifications. Large broadcast campaigns can also be sent from the Litecard Dashboard, depending on the operating model.

Example: wallet notification webhook preset.

Example: notification request body and field mapping.
2.6 Create a Bloomreach API Trigger
Create an API Trigger to receive pass lifecycle events from Litecard. Bloomreach API Trigger endpoints use POST requests. Configure the trigger to accept the fields sent by the Litecard webhook.
| Parameter | Type |
| event | string |
| cardId | string |
| deviceType | string |
| timestamp | string |
| status | string |
| externalId | string |
| templateId | string |
| templateName | string |
| data | string or object |
| eventId | string |

Example: API Trigger parameter configuration.

Example: API Trigger request setup.
2.7 Register the Bloomreach webhook in Litecard
Create a Bloomreach Private API Group with permission to invoke API Triggers. Provide the API Trigger URL and the required authentication details to Litecard, then register the webhook against the relevant pass template or business.
1. In Bloomreach, go to Project Settings → Access Management → API.
2. Create a Private API Group and enable the API Triggers permission.
3. Copy the API Key and API Secret and store them securely.
4. Configure the Authorization header in the format required by the Bloomreach API Trigger.
5. Register the API Trigger URL as a Litecard webhook endpoint for download and removal events.
6. Send a test event and confirm it appears in Bloomreach Trigger Logs.

Example: Bloomreach API access configuration for API Triggers.

Example: registering the webhook endpoint in Litecard.
| Authentication consistency The Bloomreach authentication scheme can vary by endpoint and project configuration. Use the exact scheme shown in your Bloomreach API documentation and test it before launch. Do not mix Basic and Token authentication formats in the same request. |
2.8 Configure the email service provider
Configure an email service provider in Bloomreach so the pass invitation can be delivered as part of the welcome journey. This guide uses UniOne as an example, but the same approach applies to other supported providers.
1. Create or select an email service provider account.
2. Generate an API key in the provider dashboard.
3. Create the corresponding Email Service Provider integration in Bloomreach.
4. Verify the sender domain, sender identity and test-recipient configuration.
5. Create the pass invitation email using the Apple Wallet and Google Wallet links stored on the customer profile.

Example: email service provider integration in Bloomreach.
3. Build the Bloomreach scenarios
The integration uses four core scenarios: pass creation, pass updates, personalised wallet notifications and download-status synchronisation.
3.1 Welcome journey: create and deliver a wallet pass
1. Trigger the scenario when a customer registers, joins the loyalty program or meets the relevant eligibility criteria.
2. Check that the customer does not already have an lc_card_id.
3. Call the Create Pass webhook preset.
4. Map the returned card ID, Apple Wallet link, Google Wallet link and QR code URL to the customer profile.
5. Trigger LC_PENDING_DOWNLOAD and pass the returned Litecard ID.
6. Send the pass invitation email only after the response fields have been stored successfully.

Example: Bloomreach welcome journey for Litecard pass creation.

Example: mapping values returned by the Litecard API to the customer profile.
| Duplicate prevention Before creating a pass, check for an existing Litecard ID or use the customer external ID as an idempotency key. This prevents duplicate passes when a scenario is restarted or retried. |
3.2 Loyalty points or pass-data update scenario
Trigger the scenario when the source loyalty system emits a customer event containing the updated value. The event must be associated with a specific customer ID so Bloomreach can resolve the customer profile.
1. Receive the LC_UPDATE_PASS event with customer_ids and the updated properties.
2. Confirm that the customer has an lc_card_id.
3. Call the Update Pass webhook preset.
4. Send only the updated pass fields.
5. Record or alert on failed responses so the update can be retried.

Example: loyalty points update scenario.

Example: checking for an existing Litecard ID before updating the pass.
3.3 Personalised wallet notification scenario
Use LC_SINGLE_PN when a Bloomreach journey needs to send a message to one customer’s wallet pass.
1. Receive the event with title and message properties.
2. Resolve the customer using the registered customer ID.
3. Check that the customer has a valid lc_card_id and a downloaded pass.
4. Call the notification webhook preset.
5. Exclude customers who are not eligible, have removed the pass or do not have a valid pass ID.

Example: single-customer wallet notification scenario.
3.4 Synchronise pass download status
This scenario starts from the Bloomreach API Trigger. It evaluates the event received from Litecard, identifies the correct customer and updates lc_pass_downloaded.
| Litecard event | Bloomreach action |
| CARD_DOWNLOAD | Set lc_pass_downloaded to Yes. |
| CARD_REMOVE | Set lc_pass_downloaded to No. |

Example: pass download and removal processing scenario.

Example: matching a Litecard event to the customer profile.
| Customer matching Prefer matching on externalId or another stable customer identifier returned in the webhook. Use a pending-download event only where the implementation requires it and ensure it cannot match more than one customer. |
4. Test and simulate the integration
4.1 Simulate pass creation safely
Use a controlled test segment and a Now trigger to create passes for test customers. Add a strict condition such as a dedicated test email domain, test customer flag or explicit customer ID list.
1. Create or select a small set of test customers.
2. Confirm that each customer has the required fields and no existing lc_card_id.
3. Run the LC_CREATE_PASS simulation scenario.
4. Verify that the pass is created, the profile fields are populated and the invitation email is delivered.
5. Reset the scenario only after confirming duplicate-prevention logic is active.

Example: controlled pass-creation simulation scenario.
4.2 Simulate individual actions with the Bloomreach Events API
Use the Bloomreach Events API to target a specific test customer. Obtain the project token and the authentication token from the relevant API group, then confirm that the group has permission to submit the Litecard event types.

Example: Bloomreach API group permissions and public token location.
4.3 Simulate a loyalty-points update
curl –request POST \
–url https://api.exponea.com/track/v2/projects/{projectToken}/customers/events \
–header ‘accept: application/json’ \
–header ‘authorization: Token {publicToken}’ \
–header ‘content-type: application/json’ \
–data ‘{
“customer_ids”: { “registered”: “501” },
“properties”: { “points”: 15.91 },
“event_type”: “LC_UPDATE_PASS”
}’
After the request is accepted, confirm the event appears on the customer timeline and that the updated balance is displayed on the corresponding wallet pass.

Example: testing a Litecard event through the Bloomreach Events API.
4.4 Simulate a single wallet notification
curl –request POST \
–url https://api.exponea.com/track/v2/projects/{projectToken}/customers/events \
–header ‘accept: application/json’ \
–header ‘authorization: Token {publicToken}’ \
–header ‘content-type: application/json’ \
–data ‘{
“customer_ids”: { “registered”: “501” },
“event_type”: “LC_SINGLE_PN”,
“properties”: {
“title”: “Your Weekend Offer Is Ready”,
“message”: “Your loyalty tier gives you 20% off this weekend.”
}
}’
Confirm the event is processed by Bloomreach, the Litecard notification request succeeds and the message appears on the test device. Change the title or message between repeated tests because wallet platforms may suppress identical notifications.
4.5 Verify pass download and removal events
1. Open the invitation email and add the pass to Apple Wallet or Google Wallet.
2. Confirm the Litecard webhook reaches the Bloomreach API Trigger.
3. Check Trigger Logs for the received payload and response status.
4. Verify lc_pass_downloaded changes to Yes.
5. Remove the pass and verify the field returns to No.
5. Launch checklist
(Feel free to ask the Litecard team to help you out with this!) We highly recommend you use a sandbox environment inside Bloomreach and connect it with a Litecard Sandbox before launching live. You can easily port templates and scenarios over to production.
- Production Litecard endpoints and credentials are configured.
- Secrets are stored securely and are not visible in campaign content or screenshots.
- Customer identifiers are consistent across Bloomreach, Litecard and the loyalty system.
- Duplicate-pass prevention has been tested.
- Create, update, notification, download and removal flows all pass end-to-end testing.
- Scenario error handling and retry behaviour are defined.
- The wallet invitation email has been tested on iPhone and Android devices.
- Test customers and test-only scenario branches are excluded from production audiences.
- Monitoring ownership and support escalation paths are documented.
6. Troubleshooting
| Issue | Checks |
| Pass is not created | Confirm OAuth token, endpoint, template ID, required payload fields and customer identifier. |
| Wallet links are empty | Inspect the webhook response and verify the Jinja response mapping before the email step. |
| Pass update does not run | Confirm the event is attached to the correct customer and that lc_card_id exists. |
| Notification is not received | Check pass download status, card ID, request response and whether the message duplicates a recent notification. |
| Download status is not updated | Check Litecard webhook registration, API Trigger permissions, authentication and Trigger Logs. |
| Duplicate passes are created | Add an existing-card check and use a stable external ID or idempotency approach. |
7. Frequently asked questions
Can Bloomreach create Apple Wallet and Google Wallet passes?
Yes. Bloomreach can trigger Litecard’s API to create a personalised pass, then store the returned wallet links on the customer profile for use in emails and journeys.
Can Bloomreach update loyalty points on a wallet pass?
Yes. When Bloomreach receives a points or loyalty event for a customer, it can call Litecard to update the corresponding pass.
Can Bloomreach send Apple Wallet and Google Wallet notifications?
Yes. Bloomreach can trigger personalised wallet notifications through Litecard for customers who have an active pass.
Can Bloomreach track whether a pass was downloaded?
Yes. Litecard can send pass download and removal events to a Bloomreach API Trigger, allowing the customer profile to be updated.
Should email addresses be stored inside Litecard?
Not necessarily. A stable customer or member identifier is usually sufficient. Store only the data required for the pass and the integration.
Can Litecard work with an existing loyalty platform?
Yes. The loyalty platform can remain the source of truth while Bloomreach orchestrates journeys and Litecard displays the latest customer data in Apple Wallet and Google Wallet.
Questions while setting this up?
Contact support@litecard.com