When teams evaluate Wunderkind + Braze, the real question isn’t “Can it send emails?”—it’s “Will this integration respect our identity model, subscription logic, and compliance rules without breaking what already works?”
This post walks through the core technical patterns Wunderkind uses to “play nice” with Braze: durable identifiers and URL parameters, Braze API usage, and how Signals handles mailability, list growth, and prospect vs. customer state.
Durable identity: bxid and Braze profiles
Wunderkind sits in front of Braze as an identity and decisioning layer. It recognizes more of your web traffic and ties that behavior to Braze-ready identifiers, often expanding identification from 3–5% of traffic to roughly 40–60%.
To keep that identity stable from inbox to onsite, the integration uses Braze-native IDs in links:
- In Braze, each user has a
braze_id. Wunderkind’s standard Link Template appendsbxid=}(plus UTMs) to email URLs so every click carries a durable key back to site. - When a user clicks through, Wunderkind reads
bxid, ties the session to the right Braze profile, and can later trigger Signals (cart, browse, catalog) against that same person rather than a fragile cookie.
On the back end, Signals uses Braze’s profile model directly. Before triggering a Canvas, Wunderkind:
- Calls
/users/export/idsto confirm the user exists and to retrieve aliases or identifiers. - If needed, creates a
user_alias(for examplewknd_email_id) with/users/alias/newand upserts the profile via/users/trackso Braze has an email-backed record to target. - Triggers your Canvas using
/canvas/trigger/send, passing thecanvas_id, the alias, and acanvas_entry_propertiespayload that includes items, purpose, and user type (prospect vs. customer).
Batches are grouped by Canvas ID and capped at 50 recipients to stay efficient at volume.
Respecting Braze’s mailability and subscription model
Wunderkind is additive on top of Braze; it does not override Braze’s consent logic. There are two layers here:
- Braze-side checks
- API-level subscription handling (for capture and opt-out flows)
- To check mailability or subscription state, Wunderkind uses endpoints like
/users.export/idsand/subscription/user/statusto reademail_subscribeand group membership where needed. - When a user unsubscribes via a Wunderkind-powered touchpoint, Wunderkind can write that back using
/email/statusfor global email opt-out, or/subscription/status/setfor group-level unsubscribes. - If a user unsubscribes before Braze has a profile, Wunderkind can create one via
/users/trackwith a clearly labeled alias (for example, “Unsubscribed Via Wunderkind”) and setemail_subscribetounsubscribed, preventing accidental future mailings.
- To check mailability or subscription state, Wunderkind uses endpoints like
Net effect: Braze remains the source of truth for who is mailable; Wunderkind reads and updates that truth rather than keeping a parallel list.
New subscribers, list growth, and customer state
Wunderkind’s Identity Network is optimized to recognize more visitors and drive more capture, which then flows into Braze in real time.
New subscribers and extra fields
When a visitor submits a Wunderkind-powered form, the Braze API integration can:
- Create or update the user via
/users/trackwith email, phone, and any relevantexternal_id, using the Braze REST endpoint appropriate for your cluster. - Attach them to one or more subscription groups by including
subscription_groupsin the payload so they immediately qualify for the right Canvases and campaigns. - Set
attributes_to_mergeto populate Brazecustom_attributesfor things like acquisition source, signup experience, or lifecycle stage.
These profiles are then addressable for both your “native” Braze programs and Signals-driven Canvases.
Prospect vs. customer logic
Many brands differentiate journeys based on whether someone is a prospect or an existing customer. Signals supports two complementary patterns:
- Attribute-based: Use Braze
custom_attributes(such ascustomer_state) to segment users in Canvas Decision Splits. Signals passes aUserTypefield (for example,"prospect"or"customer") incanvas_entry_properties, and Braze uses that to branch messaging and cadence. - Subscription-group–based: Treat membership in a “customers” subscription group as your canonical flag, checking that via subscription APIs or Braze segmentation before entry.
From a practitioner’s perspective, you keep using the same Canvas tools—Segments, Decision Splits, Exit Criteria, and Rate Limiting. The only difference is that entry is driven by high-intent Signals, not just simple web events.
What this means for your Braze architecture
Operationally, the integration is designed to be low-friction:
- You connect Braze to Wunderkind via an API key with scoped permissions (Canvas, Content Blocks, Purchases), configured once in Wunderkind’s Integration Hub.
- Wunderkind auto-creates Braze assets: a set of email Content Blocks, a “Wunderkind Signals” Link Template (with
bxidand UTMs), and a library of Signals Canvases (cart, product, category, back-in-stock, price drop, low stock) following recommended cadences. - You remain in Braze to finish Canvas buildout—drag in the Content Blocks, wire up your creative, set entry/exit rules and frequency caps, and then go live.
For marketing ops and engineering, the key reassurance is that Wunderkind uses Braze’s own APIs, identifiers, and mailability rules, rather than introducing a parallel user store. You preserve your current data model and compliance posture, while unlocking more identified users, more list growth, and more high-intent journeys from the same Braze environment.