The Brevo integration keeps your contact records in sync with loyalty data through contact attributes (always-on profile data) and track events (fired when specific actions happen). Both can be used in Brevo’s automation workflows to send targeted emails based on loyalty activity.
Contact Attributes
Contact attributes are updated directly on the Brevo contact record automatically when data changes. Attributes of type Date (such as LOYALTY_BIRTHDAY) must be created manually in Brevo before the first sync. Go to Contacts → Settings → Contact Attributes to add them. Other attributes are created automatically on first sync.
| Attribute | Type | When Updated | Description |
|---|---|---|---|
LOYALTY_POINTS_BALANCE | Number | Every points transaction | The customer’s current points balance. |
LOYALTY_POINTS_LAST_UPDATED | Text (ISO 8601) | Every points transaction | Timestamp of the most recent points change. |
LOYALTY_REFERRAL_CODE | Text | Every points transaction | The customer’s unique referral code. Only present if the referral module is active. |
LOYALTY_BIRTHDAY | Date (YYYY-MM-DD) | When customer saves their birthday | The customer’s birthday. Use as the trigger date for a Brevo anniversary automation. |
FIRSTNAME | Text | Every points transaction | Customer’s first name, synced from WordPress. |
LASTNAME | Text | Every points transaction | Customer’s last name, synced from WordPress. |
Track Events
Track events are sent to the Brevo Marketing Automation API and can be used as triggers or conditions in Brevo automation workflows.
Points Updated
Fired on every points transaction: earning, spending, expiring, and manual adjustments.
| Property | Type | Description |
|---|---|---|
delta | Integer | Points change. Positive for earned, negative for spent or expired. |
balance_after | Integer | Points balance after the transaction. |
reason_title | String | Human-readable reason for the change. See the full list below. |
source | String | Machine-readable source type. |
awarded_at | ISO 8601 datetime | Timestamp of the transaction. |
All possible reason_title values:
| reason_title | When it fires |
|---|---|
| Order purchase | Customer earns points for placing an order. |
| Order discount | Customer redeems points for a discount on an order. |
| Order cancelled | Points are reversed when an order is cancelled. |
| Order refunded | Points are reversed when an order is refunded. |
| Product review | Customer earns points for leaving a product review. |
| Friend referral | Customer earns points for referring a friend. |
| Manual adjustment | An admin manually adds or removes points. |
| Registration bonus | Customer earns points for creating an account. |
| Birthday bonus | Points awarded on the customer’s birthday. |
| Imported points | Points added via CSV import. |
| Points expired | Points removed due to inactivity expiry. |
Rank Achieved
Fired when a customer reaches a new rank tier.
| Property | Type | Description |
|---|---|---|
rank_id | Integer | ID of the new rank. |
rank_name | String | Display name of the new rank. |
rank_milestone | Integer | Points threshold for the new rank. |
previous_rank_name | String | Name of the previous rank. Not present on first rank. |
achieved_at | ISO 8601 datetime | Timestamp when the rank was achieved. |
coupon_code | String | The coupon code issued as a rank reward. Only present when a coupon is configured for this rank. |
coupon_codes | Array | All coupon codes issued when the rank has multiple rewards configured. Only present when more than one coupon is issued. |
Using Events in Brevo Automations
In Brevo, go to Automations and create a new workflow. Choose Specific event as the entry point and enter the event name (Points Updated or Rank Achieved). Add conditions on event properties to filter by activity. For example, filter on reason_title = Order purchase to send a points earned confirmation after every purchase, or reason_title = Points expired to send a re-engagement email when points expire.
For date-based birthday emails, use the Anniversary date trigger on the LOYALTY_BIRTHDAY contact attribute instead. This approach sends annually on the stored date regardless of other events.