LiveRamp
LiveRamp is the leading independent identity resolution and data collaboration platform, providing the RampID as a privacy-safe, persistent identifier used across the open web and connected TV.
Why route LiveRamp through Datafly Signal
- Delivery happens server-to-server. Signal sends events to LiveRamp from your own infrastructure rather than from the visitor’s browser, so delivery does not depend on client-side conditions.
- Email, phone number, first name and last name are hashed before leaving your infrastructure. Signal normalises (trim and lowercase) and applies SHA-256 inside your own deployment, so LiveRamp receives match keys rather than raw personal data.
- Delivery is batched, rate-limited, and retried. Signal buffers to Kafka, respects the LiveRamp rate limit, and retries on 429 or transient failure rather than dropping the event.
- One consent decision governs every destination. LiveRamp is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
A LiveRamp Online Conversions API programme
In LiveRamp Console, set up the Online Conversions API (CAPI Hub) with the downstream programmes you want (Meta, Pinterest, Snapchat, TikTok and others) and their platform credentials. Those credentials stay in Console; Signal never sends them.
Your ATS configuration ID
Console > ATS > Web > your configuration > Admin > Placement Details. It forms the endpoint path.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
ats_config_id | string | Yes | The ATS Web configuration ID of your Online Conversions programme. |
api_key, account_id, audience_key | No | Not used: the Online Conversions API takes no API key. Leave blank. |
Signal Setup
- Navigate to Integrations > Integration Library and find LiveRamp under Identity Resolution.
- Click Install, enter the ATS configuration ID and choose a preset (General, E-commerce or Insurance).
- Click Install Integration.
API endpoint
POST https://api-ingest-console.liveramp.com/ingest/{ats_config_id}Events are batched in the events array, up to 500 per request. Allow egress to api-ingest-console.liveramp.com from the network your delivery workers run on.
Event Mapping
| Signal event | LiveRamp event | Presets |
|---|---|---|
page | PageView | all |
search | Search (search_string) | all |
view_item | ViewContent | all |
add_to_cart | AddToCart | General, E-commerce |
begin_checkout | InitiateCheckout | all |
add_to_wishlist | AddToWishlist | E-commerce |
add_payment_info | AddPaymentInfo | E-commerce, Insurance |
generate_lead, quote_requested | Lead | all (quote_requested: Insurance) |
sign_up | CompleteRegistration | all |
purchase, policy_renewed | Purchase | all (policy_renewed: Insurance) |
Every event carries event_id (deduplication), event_time (UNIX seconds), event_source: "web" and event_source_url (the page URL without its query string). Commerce events add custom_data string arrays: value and currency (required on Purchase), order_id, content_ids, content_name, content_type, num_items. App events without a page URL are dropped: LiveRamp requires app_data for them.
{
"events": [{
"event_id": "3f1c2a90-7d4e-4b8a-9c61-2f0e5d7a1b22",
"event_name": "Purchase",
"event_source": "web",
"event_source_url": "https://www.example.com/checkout",
"event_time": 1758500000,
"user_data": { "ip_address": "203.0.113.7", "user_agent": "Mozilla/5.0 ..." },
"provider_data": { "fb_click": "fb.1.1758500000000.AbC", "fb_view": "fb.1.1758500000000.123" },
"custom_data": {
"email": ["<sha256>"], "phone_number": ["<sha256>"],
"value": ["279.98"], "currency": ["GBP"], "order_id": ["ORD-001"],
"content_ids": ["SKU-1", "SKU-2"], "num_items": ["2"]
}
}]
}Identity
| Field | Source | Format |
|---|---|---|
custom_data.email[] | identify trait email | SHA-256 of the trimmed, lower-cased address |
custom_data.phone_number[] | identify trait phone | SHA-256 of the E.164 number without + |
custom_data.first_name[], last_name[] | identify traits | SHA-256 of the trimmed, lower-cased name |
user_data.ip_address, user_agent | request context | As LiveRamp documents (plain) |
provider_data.* | platform click and browser IDs (fbc, fbp, epik, sccid, ttclid, ttp) | As collected |
Nothing personal is sent in clear. The ATS identity envelope (user_data.envelope) is not collected yet (#1560).
Consent
Send LiveRamp events under the advertising consent category: LiveRamp forwards them to advertising platforms.
Verify it’s working
- After installing, trigger a test
identifyfrom a visitor with email + advertising consent. - In LiveRamp’s dashboard, navigate to Connect > Audiences and locate the configured segment. New record counts should appear within an hour (LiveRamp processes onboarding in batches).
- For real-time confirmation, check Signal’s Live Events for a
200response from the LiveRamp endpoint.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 Unauthorized | Invalid API key or secret | Re-issue credentials in LiveRamp’s admin panel and update the integration config. |
403 Segment not accessible | Segment ID not authorised for this customer | Confirm with your LiveRamp account manager that the segment is provisioned for your Customer ID. |
| Low match rate | Hashing mismatch | Both sides must use the same hash scheme + normalisation. Confirm SHA-256 lowercased+trimmed is acceptable, or switch to LiveRamp’s required scheme. |
| Audience size not growing | Records below match threshold | LiveRamp matching requires a minimum population for some destinations. Increase volume or broaden the identifier set sent per record. |
| Consent-related rejections (EU) | Missing per-record consent flags | Ensure your CMP integration is publishing consent state to Signal before delivery. |
Visit LiveRamp documentation for full API reference, audience onboarding details, and the Authenticated Traffic Solution (ATS) guide.