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

FieldTypeRequiredDescription
api_keysecretYesYour Omnisend API key with Events write permission. Sent as the X-API-KEY header on every request.

Configure in Signal

Quick Setup

  1. Navigate to Integrations in the sidebar.
  2. Open the Integration Library tab.
  3. Find Omnisend under the Marketing Automation category.
  4. Click Install and paste your API key.
  5. 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/json

Omnisend 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.

FieldSourceNotes
contact.emailtraits.emailPrimary contact key. Trimmed + lowercased. Required.
contact.phonetraits.phoneNormalised to E.164. Used for SMS and as a secondary match key.
contact.firstNametraits.first_nameOptional contact attribute.
contact.lastNametraits.last_nameOptional 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"
});

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 EventOmnisend eventNameNotes
pagepage viewedURL, title, referrer as properties.
Signed Upsigned upSign-up method. Triggers welcome flows.
Product Viewedproduct viewedProduct ID, title, price, URL. Powers browse-abandonment.
Product Addedadded to cartProduct, price, quantity.
Checkout Startedstarted checkoutCart value, products, abandoned-checkout URL. Powers cart recovery.
Order Completedplaced orderOrder ID, revenue, currency, line items.
Other eventsDropped by defaultEnable 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

  1. 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).
  2. In Omnisend, open Audience > Contacts and search for the test contact by email.
  3. Open the contact and check the activity timeline for the delivered event.
  4. In Signal, check Live Events to confirm delivery with a success status.

Troubleshooting

SymptomPossible CauseResolution
401 / 403Invalid or under-scoped API keyRegenerate the key in Store Settings > API keys and grant Events (write).
400 Bad RequestMissing contact identifierOmnisend requires email or phone on every event. Call datafly.identify() before tracking.
Event not in automation dropdownEvent never triggeredCustom events appear only after the first successful trigger. Send a test event, then build the flow.
Property type errorInconsistent property typesRe-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