Bloomreach Apple Wallet & Google Wallet Integration

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.

DirectionPurposeTypical actions
Bloomreach → LitecardBloomreach decides when a wallet action should occur.Create a pass, update pass data, send a notification.
Litecard → BloomreachLitecard 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.

KeyValue
business_idCopy the Business ID from the Litecard Dashboard profile.
scopeBusiness 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.

AttributeTypePurpose
lc_apple_wallet_linkStringUnique Apple Wallet download link.
lc_google_wallet_linkStringUnique Google Wallet download link.
lc_qr_code_urlStringHosted QR code URL, where used.
lc_card_idStringUnique Litecard pass identifier.
lc_pass_downloadedBooleanIndicates 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.

EventRequired propertiesPurpose
LC_CREATE_PASSNoneStarts the pass creation journey.
LC_UPDATE_PASSpoints, plus any other updated pass fieldsUpdates an existing pass.
LC_SINGLE_PNtitle, messageSends one personalised wallet notification.
LC_PENDING_DOWNLOADlitecard_idPlaces 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 #

SettingValue
MethodPOST
EndpointLitecard Create Card endpoint supplied for your environment
AuthenticationOAuth 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 #

SettingValue
MethodPATCH
EndpointLitecard Update Card endpoint supplied for your environment
AuthenticationOAuth 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 #

SettingValue
MethodPOST
EndpointLitecard notification queue endpoint supplied for your environment
AuthenticationOAuth 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.

ParameterType
eventstring
cardIdstring
deviceTypestring
timestampstring
statusstring
externalIdstring
templateIdstring
templateNamestring
datastring or object
eventIdstring

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 eventBloomreach action
CARD_DOWNLOADSet lc_pass_downloaded to Yes.
CARD_REMOVESet 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

IssueChecks
Pass is not createdConfirm OAuth token, endpoint, template ID, required payload fields and customer identifier.
Wallet links are emptyInspect the webhook response and verify the Jinja response mapping before the email step.
Pass update does not runConfirm the event is attached to the correct customer and that lc_card_id exists.
Notification is not receivedCheck pass download status, card ID, request response and whether the message duplicates a recent notification.
Download status is not updatedCheck Litecard webhook registration, API Trigger permissions, authentication and Trigger Logs.
Duplicate passes are createdAdd 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

Updated on September 13, 2026