Omnisend
Ecommerce-focused email and SMS marketing platform with automation workflows, segmentation, and product-aware campaigns.
This integration is currently in alpha. Configuration and behaviour may change.
Datafly Signal delivers events to Omnisend’s Customer Events API server-side, with no client-side pixel. Each event triggers Omnisend custom-event automations (welcome series, abandoned cart, back-in-stock, post-purchase) and is recorded on the contact’s timeline.
Prerequisites
Complete these steps in Omnisend before configuring Signal.
Access your Omnisend account
Log in to the Omnisend dashboard at omnisend.com. API access is available on all plans.
Create an API key
Go to Store Settings > API keys and click Create API key. Give it a name (e.g. “Datafly Signal”) and grant at least the Events (write) permission. Copy the key immediately — Omnisend shows it only once.
API keys are case-sensitive. Copy and paste the key exactly as shown.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
api_key | secret | Yes | Your Omnisend API key with Events write permission. Sent as the X-API-KEY header on every request. |
Configure in Signal
Quick Setup
- Navigate to Integrations in the sidebar.
- Open the Integration Library tab.
- Find Omnisend under the Marketing Automation category.
- Click Install and paste your API key.
- Click Install Integration to create the integration with the ready-to-use default configuration.
API Setup
curl -X POST http://localhost:8084/v1/admin/integration-catalog/omnisend/install \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Omnisend",
"variant": "default",
"config": {
"api_key": "AjWvksZpTG4JZBdc4xxxxxxxx"
},
"delivery_mode": "server_side"
}'API Endpoint
All events are sent to:
POST https://api.omnisend.com/v5/events
X-API-KEY: {api_key}
Content-Type: application/jsonOmnisend returns a success status on accepted events. A 400 indicates a malformed body or a missing contact identifier; 401/403 indicate a bad or under-scoped API key.
Identity Signals
Omnisend matches events to contacts by email or phone — at least one is required on every event, so anonymous events are dropped. Identifiers are sent in clear in the contact object (Omnisend does not accept hashed identifiers); the email is trimmed and lowercased and the phone is normalised to E.164 before delivery.
| Field | Source | Notes |
|---|---|---|
contact.email | traits.email | Primary contact key. Trimmed + lowercased. Required. |
contact.phone | traits.phone | Normalised to E.164. Used for SMS and as a secondary match key. |
contact.firstName | traits.first_name | Optional contact attribute. |
contact.lastName | traits.last_name | Optional contact attribute. |
Call datafly.identify() whenever a user logs in or submits a form so events carry an identifier:
datafly.identify("user-123", {
email: "jane@example.com",
phone: "+447700900123",
first_name: "Jane"
});Consent
Omnisend events are sent under the marketing consent category. Signal forwards the visitor’s CMP consent state on every event as a marketing_consent property (subscribed / unsubscribed / nonSubscribed) so flows can respect the contact’s marketing preference.
Event Mapping
The default (ecommerce) blueprint maps:
| Datafly Event | Omnisend eventName | Notes |
|---|---|---|
page | page viewed | URL, title, referrer as properties. |
Signed Up | signed up | Sign-up method. Triggers welcome flows. |
Product Viewed | product viewed | Product ID, title, price, URL. Powers browse-abandonment. |
Product Added | added to cart | Product, price, quantity. |
Checkout Started | started checkout | Cart value, products, abandoned-checkout URL. Powers cart recovery. |
Order Completed | placed order | Order ID, revenue, currency, line items. |
| Other events | Dropped by default | Enable the event in the blueprint editor to forward. |
A Datafly.js Order Completed event:
datafly.track("Order Completed", {
order_id: "ORDER-5512",
revenue: 89.90,
currency: "GBP",
coupon: "WELCOME10",
products: [
{ product_id: "SKU-1", product_name: "Wool Scarf", price: 39.95, quantity: 1 },
{ product_id: "SKU-2", product_name: "Knit Hat", price: 49.95, quantity: 1 }
]
});is delivered to Omnisend as:
{
"eventName": "placed order",
"origin": "api",
"contact": {
"email": "jane@example.com",
"phone": "+447700900123"
},
"properties": {
"orderID": "ORDER-5512",
"value": 89.90,
"currency": "GBP",
"discountCode": "WELCOME10",
"marketing_consent": "subscribed",
"products": [
{ "product_id": "SKU-1", "product_name": "Wool Scarf", "price": 39.95, "quantity": 1 },
{ "product_id": "SKU-2", "product_name": "Knit Hat", "price": 49.95, "quantity": 1 }
]
}
}A custom event only appears in the Omnisend automation-trigger dropdown after it has been triggered at least once. Fire a test event first, then build the flow that listens for it.
Testing
- After installing the integration, trigger a test event from your website or via the Signal event API. Make sure the visitor is identified (has an email or phone).
- In Omnisend, open Audience > Contacts and search for the test contact by email.
- Open the contact and check the activity timeline for the delivered event.
- In Signal, check Live Events to confirm delivery with a success status.
Troubleshooting
| Symptom | Possible Cause | Resolution |
|---|---|---|
401 / 403 | Invalid or under-scoped API key | Regenerate the key in Store Settings > API keys and grant Events (write). |
400 Bad Request | Missing contact identifier | Omnisend requires email or phone on every event. Call datafly.identify() before tracking. |
| Event not in automation dropdown | Event never triggered | Custom events appear only after the first successful trigger. Send a test event, then build the flow. |
| Property type error | Inconsistent property types | Re-triggering an event with a different type for the same property key errors. Keep property types stable across events. |
See the Omnisend API documentation for full reference and custom-event details.
See also
- Klaviyo — ecommerce email/SMS alternative
- Mailchimp — email marketing alternative
- Customer.io — event-driven messaging alternative