Identifiers
Every user in your request must include at least one primary identifier so RevBridge can link events to the correct customer profile.
Primary identifiers
At least one of these is required per user:
| Identifier | Type | Description |
|---|
user_id | string | Your internal user or customer ID |
email | string | The user’s email address |
phone_number | string | Phone number in E.164 format (e.g., +5511999887766) |
anon_id | string | An anonymous identifier for users who haven’t signed up yet |
If none of these four identifiers are provided, the user will be rejected with a validation error.
Additional identifiers
You can also include device and advertising identifiers:
| Identifier | Type | Description |
|---|
idfa | string | Apple Identifier for Advertisers |
adid | string | Google Advertising ID |
Identity resolution
RevBridge uses deterministic identity resolution to match events to customer profiles. When you send an event with identifiers, the system:
- Looks for an existing profile that matches any of the provided identifiers.
- If a match is found, the event is linked to that profile, and any new identifiers are merged.
- If no match exists, a new profile is automatically created.
Providing multiple identifiers (e.g., both email and user_id) improves matching accuracy. When a user logs in and you know both their anonymous ID and their real identity, send both to merge the profiles.
Example: Merging anonymous and known users
{
"users": [
{
"identifiers": {
"anon_id": "device_abc123",
"user_id": "usr_001",
"email": "jane@example.com"
},
"events": [
{ "event_name": "login" }
]
}
]
}
By including the anon_id alongside the authenticated identifiers, RevBridge links the anonymous browsing history to the known customer profile.
User profile fields
Beyond identifiers, you can send profile attributes in the identifiers object. These fields are attached to the customer profile and can be used for segmentation and personalization.
| Field | Type | Description |
|---|
first_name | string | First name |
last_name | string | Last name |
gender | string | Gender |
birthday | string | Date of birth (e.g., 1990-05-20) |
age | number | Age (must be a numeric value) |
language | string | Preferred language (e.g., pt-BR, en-US) |
timezone | string | IANA timezone (e.g., America/Sao_Paulo) |
Location
| Field | Type | Description |
|---|
city | string | City name |
country | string | ISO 3166-1 country code (e.g., BR, US) |
Technical context
| Field | Type | Description |
|---|
platform | string | Platform (e.g., web, ios, android) |
ip_address | string | User’s IP address |
user_agent | string | Browser or app user agent string |
carrier | string | Mobile carrier |
device_model | string | Device model (e.g., iPhone 15 Pro) |
os_version | string | Operating system version |
app_version | string | Your application version |
Consent flags
RevBridge tracks channel-level consent to ensure campaigns only reach users who have opted in. Send these as part of the identifiers object.
| Field | Type | Description |
|---|
email_opt_in | boolean | User has opted in to receive emails |
sms_opt_in | boolean | User has opted in to receive SMS |
whatsapp_opt_in | boolean | User has opted in to receive WhatsApp messages |
rcs_opt_in | boolean | User has opted in to receive RCS messages |
web_push_opt_in | boolean | User has opted in to web push notifications |
mobile_push_opt_in | boolean | User has opted in to mobile push notifications |
gdpr_consent | boolean | User has given GDPR consent |
Send consent flags whenever they change — for example, when a user subscribes to your newsletter or updates their communication preferences.
Custom attributes
Any fields in the identifiers object that are not listed above are stored as custom attributes on the user profile. This lets you attach any business-specific data.
{
"identifiers": {
"email": "jane@example.com",
"user_id": "usr_001",
"first_name": "Jane",
"loyalty_tier": "gold",
"company": "Acme Inc",
"signup_source": "google_ads"
},
"events": [
{ "event_name": "purchase", "revenue": 59.90 }
]
}
Complete example
A request with full profile data, consent flags, and custom attributes:
{
"users": [
{
"identifiers": {
"user_id": "usr_001",
"email": "jane@example.com",
"phone_number": "+5511999887766",
"first_name": "Jane",
"last_name": "Smith",
"gender": "female",
"birthday": "1992-03-15",
"age": 33,
"language": "pt-BR",
"timezone": "America/Sao_Paulo",
"city": "São Paulo",
"country": "BR",
"platform": "web",
"email_opt_in": true,
"sms_opt_in": true,
"whatsapp_opt_in": false,
"loyalty_tier": "gold"
},
"events": [
{
"event_name": "purchase",
"timestamp": "2026-01-15T14:30:00Z",
"revenue": 259.90,
"currency": "BRL",
"order_id": "ORD-12345"
}
]
}
]
}