Extensibility
Advanced connector customization for contact resolution, event transformation, and data mapping.
Extensibility customizes how the connector resolves contacts, maps fields, and formats events. This is mainly used by technical teams when default behavior does not match the data model.
Setup
Extensibility is configured in The Wallet Crew admin console. Each entry point is a JavaScript script stored in the Bloomreach connector Advanced settings.
Staging is the recommended starting point. This reduces the risk of breaking production segmentation and scenario triggers.
Start with the smallest possible change
Contact Finder is commonly implemented first when email is not the primary identifier. Event Interceptor is commonly implemented first when event naming or governance is required.
Keeping changes small makes it easier to isolate attribution and ingestion issues.
Validate end-to-end behavior
Validation usually covers both connector directions:
An activity still works (Update pass / Notify / Apply privilege).
An event is still attributed to the expected Bloomreach contact.
When Event Interceptor is used, validation should confirm the final event name and properties visible in Bloomreach.
Extensibility entry points
Connector scripts are configured in the Bloomreach connector advanced settings in The Wallet Crew admin console.
Changes can impact event tracking and scenario execution. A staging environment is recommended for testing.
Contact Finder
A pass is linked to external identifiers (email, phone, member ID, ...). When an event happens on a pass, the connector needs to attach it to a Bloomreach contact.
Contact Finder customizes how those identifiers are converted into Bloomreach contact identifiers.
/**
* Retrieve contact identifier from pass identifiers to determine the bloomreach contact of a pass.
* Default implementation uses email as registered identifier
*
* This method is asynchronous, allowing calls to external webservices if needed.
*
* @param {Record<string, any>} identifiers - Key-value pairs of pass identifiers
* @returns {Promise<Record<string, string>>} Object with 'registered' key containing the contact identifier on the bloomreach side
*/
async function getContactIdentifiers(identifiers) {
// Example: use email as the contact identifier
// this is the default implementation
return { "registered": identifiers["email"] };
}
export default function (context) {
context.register('extensions.bloomreach.contactFinder', {
GetContactIdentifiers: getContactIdentifiers
});
}Event Interceptor
Event Interceptor can transform eventName and properties before sending the event to Bloomreach. This is useful for naming conventions, filtering, and enrichment.
Returning null drops the event.
Customer Mapper
Customer Mapper customizes mapping between The Wallet Crew enrolment form fields and Bloomreach fields. This is used when data is sent to or retrieved from Bloomreach with components like PassDataProvider and CustomerFlowElement.
FAQ
Last updated

