Ometria
Datafly Signal delivers events to Ometria server-to-server using the Data API push endpoint. Events are pushed as Ometria custom events, linked to a contact by email, and become available for segmentation, journeys, and cross-channel campaigns (email, SMS, push) — without any client-side Ometria tag.
Why route Ometria through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Ometria even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- Delivery is batched, rate-limited, and retried. Signal buffers to Kafka, respects the Ometria rate limit, and retries on 429 or transient failure rather than dropping the event.
- One consent decision governs every destination. Ometria is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Before configuring Ometria in Signal, you need an Ometria account with a Data API key, and the custom event types you intend to send must be set up in Ometria.
Step 1: Generate a Data API key
- In Ometria, go to Settings > API keys.
- Create a key with push / write access to the Data API.
- Copy the key — it is sent in the
X-Ometria-Authheader on every request.
This is the Data API key, not the Website Personalisation (Query API) key. The Query API uses Basic authentication on a different host and will not work with this integration.
Step 2: Set up your custom events in Ometria
Ometria accepts a custom event push immediately, but it will not act on an unknown event type until that type is configured.
- Go to Settings > Custom events.
- Create each event type you plan to send (for example
product_viewed,cart_add,order_completed). - Define the properties you want available in templates and segments.
Event type names should be kept under 512 characters — longer values are truncated by Ometria.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
api_key | Yes | Your Ometria Data API key with push access. Found in Settings > API keys. Sent in the X-Ometria-Auth header. |
Management UI Setup
Add the integration
Go to Integrations > Add Integration > Ometria.
Choose a preset
Select the Retail preset for the standard e-commerce funnel (product views, cart, checkout, purchase), or start from Default.
Enter your API key
Paste your Ometria Data API key into the api_key field.
Select consent categories
Choose the consent category that governs this integration (typically marketing).
Save
Click Save. Signal begins delivering matching events to Ometria.
API Endpoint
POST https://api.ometria.com/v2/push
X-Ometria-Auth: {api_key}
Content-Type: application/jsonThe request body is a JSON array of records (up to 100 per request). A single request contains only one record type — Signal sends custom_event records. A successful push returns 202 Accepted.
Identity Signals
Server-side custom_event records for Ometria’s Data API push endpoint: the retail funnel (product viewed, wishlist, cart add and remove, checkout started, order completed) with product IDs as a products-list field, linked to the Ometria contact by identity_email (trimmed, lowercased), identity_account_id (the Signal user_id) or identity_phone_number (E.164). Events with no identifier are not sent.
| Field | Source | Notes |
|---|---|---|
identity_email | traits.email | Trimmed and lowercased. |
identity_account_id | user_id | Your customer ID in Ometria. |
identity_phone_number | traits.phone | E.164. |
Event Mapping
Blueprint 0.4.0, reviewed against the vendor’s documentation on 2026-09-23. Each preset maps the events below; every other event is dropped. Events use the canonical names from the event specs (transaction_id, value, items[], search_term); the legacy order_id, revenue and flat product fields are still read as a fallback.
Retail / E-commerce (ecommerce)
Pushes the retail funnel to Ometria’s Data API push endpoint as custom_event records (the core funnel plus page views and search): product viewed, wishlist add, cart add and remove, checkout started and order completed, with the product IDs as a products-list field (an array of product IDs), prices as numbers and the currency upper-cased. Each record names the contact by identity_email (trimmed, lowercased), identity_account_id (the Signal user_id) and identity_phone_number (E.164); Ometria needs at least one, so anonymous events are not sent. Create each custom event type and its fields in Ometria first.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
page | page_view | page_title, referrer |
search | search | search_term |
view_item | product_viewed | product_id, product_name, variant_id, product_price, currency |
add_to_wishlist | wishlist_add | product_id, product_name, variant_id, product_price, currency |
add_to_cart | cart_add | product_id, product_name, variant_id, product_price, currency, product_quantity |
remove_from_cart | cart_remove | product_id, product_name, variant_id, product_price, currency, product_quantity |
begin_checkout | checkout_started | value, currency, coupon, product_id |
purchase | order_completed | order_id, total, currency, tax, shipping, coupon, product_id |
Default (default)
Pushes the retail funnel to Ometria’s Data API push endpoint as custom_event records (the core funnel): product viewed, wishlist add, cart add and remove, checkout started and order completed, with the product IDs as a products-list field (an array of product IDs), prices as numbers and the currency upper-cased. Each record names the contact by identity_email (trimmed, lowercased), identity_account_id (the Signal user_id) and identity_phone_number (E.164); Ometria needs at least one, so anonymous events are not sent. Create each custom event type and its fields in Ometria first.
| Datafly event | Vendor event / call | Fields |
|---|---|---|
view_item | product_viewed | product_id, product_name, variant_id, product_price, currency |
add_to_wishlist | wishlist_add | product_id, product_name, variant_id, product_price, currency |
add_to_cart | cart_add | product_id, product_name, variant_id, product_price, currency, product_quantity |
remove_from_cart | cart_remove | product_id, product_name, variant_id, product_price, currency, product_quantity |
begin_checkout | checkout_started | value, currency, coupon, product_id |
purchase | order_completed | order_id, total, currency, tax, shipping, coupon, product_id |
An identified purchase (preset ecommerce) is delivered as:
POST https://api.ometria.com/v2/push{
"@type": "custom_event",
"event_type": "order_completed",
"id": "3f2b8c1e-9d4a-4e7b-8f6a-2c1d0e9b",
"identity_account_id": "crm-user-7",
"identity_email": "jane.doe@example.com",
"identity_phone_number": "+447700900123",
"properties": {
"coupon": "SUMMER",
"currency": "GBP",
"order_id": "T-1001",
"page_url": "https://shop.example.co.uk/p/helmet",
"product_id": [
"SKU_1",
"SKU_2"
],
"shipping": 4.99,
"tax": 73.33,
"total": 439.99
},
"timestamp": "2025-09-23T04:00:00Z"
}Testing Your Integration
Trigger a test event
Identify a contact and fire a tracked event on your site (for example, view a product).
Check Signal’s event debugger
In the Management UI, open the Event Debugger for the integration and confirm the event was delivered with a 202 response.
Verify in Ometria
In Ometria, open the contact’s profile and confirm the custom event appears in their activity, or check the custom-event listing for the event type.
Troubleshooting
| Problem | Solution |
|---|---|
403 Forbidden on every push | The API key is missing, invalid, or is a Query API (Website Personalisation) key rather than a Data API push key. Generate a Data API key under Settings > API keys. |
Push returns 202 but the event never appears against the contact | The event_type is not configured in Ometria. Create it under Settings > Custom events. |
| Event delivered but not linked to a customer | identity_email is missing. Call datafly.identify() with the contact’s email before tracking. |
400 Bad Request | The batch mixed record types or exceeded 100 records, or the body was malformed. Signal sends only custom_event records in batches of up to 100, so check for a custom Field Mapping change. |
| Event type appears truncated | Event type names over 512 characters are truncated by Ometria. Use a shorter event_type. |
Rate Limits & Batching
| Limit | Value |
|---|---|
| Records per push request | 100 (Signal batches automatically) |
| Record types per request | 1 (Signal sends only custom events) |
Signal batches events automatically, sending up to 100 custom events per push request. The default settings are sufficient for most deployments.