Mapp

Datafly Signal delivers events to Mapp Engage server-to-server using the Mapp Connect Integration Event API: abandoned-cart and wishlist entries, orders in the Transactions eCommerce table and (retail preset) Product Catalog updates. Each cart, wishlist or order event is matched to an Engage contact by email or mobile number and drives segmentation, Whiteboard automations and personalised messaging.

Because delivery happens from your own Signal endpoint, no Mapp pixel or browser SDK is required, and the events are not affected by ad blockers or third-party cookie restrictions.

Why route Mapp through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach Mapp even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • One consent decision governs every destination. Mapp is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Prerequisites

  • A Mapp Engage account with API access enabled.
  • A system user with the API or Hybrid role (Administration > Users). HTTP Basic authentication uses this user’s email and password.
  • An Integration created in Engage (Administration > Integrations). Note its numeric Integration ID.
  • Your Engage host — the host portion of your login URL (for example, if you log in at https://email.acme.mapp.com/home/login.jsp, the host is email.acme).
  • The contacts you reference must already exist in Engage. An event for an unknown contact is silently not saved, so pair this with your existing contact-import or registration flow.

Configuration

Collect the following before configuring Signal:

FieldWhere to find it
Engage HostThe host of your Engage login URL, without .mapp.com (e.g. email.acme).
Integration IDAdministration > Integrations — the numeric ID of your integration.
API User EmailThe email of your API/Hybrid system user.
API User PasswordThat user’s password.

Configure in Signal

  1. In the management UI, open Integrations and add Mapp.
  2. Enter the Engage Host, Integration ID, API User Email, and API User Password.
  3. Select the Default preset and attach it to your pipeline.
  4. Map your Signal events to the Mapp product fields (see Event Mapping).
  5. Save and enable the integration.

API Endpoint

Signal sends a POST request per event to the Engage Integration Event API:

POST https://{host}.mapp.com/api/rest/v19/integration/{integration_id}/event?subtype={subtype}

Authentication is HTTP Basic. Signal builds the Authorization header by Base64-encoding {api_user}:{api_password}:

Authorization: Basic <base64(api_user:api_password)>
Content-Type: application/json

The subtype query parameter selects what Mapp stores: abandonedCart and wishlist (cart and wishlist events, deleted again with "delete": "true"), transaction (orders) and product (Product Catalog, retail preset). The request body is flat JSON; map the same field names in the Mapp Connect integration’s mappings. A Mapp login on a vanity domain is not supported yet (#1484).

Identity Signals

Server-side e-commerce events for Mapp Engage through the Mapp Connect Integration Event API: abandoned-cart and wishlist entries (abandonedCart and wishlist subtypes, removed again on remove_from_cart / remove_from_wishlist) and orders in the Transactions eCommerce table (transaction subtype), keyed to the Engage contact by email (plain text, trimmed and lowercased: Mapp matches the contact on the address and has no hashed key) or mobile number (E.164); the retail preset also keeps the Product Catalog current from view_item. Events with neither identifier are not sent.

FieldSourceNotes
emailtraits.emailPlain text, trimmed and lowercased. Mapp matches the Engage contact on it and has no hashed key.
mobileNumbertraits.phoneE.164. Used when there is no email match.
userIdnot sentIn Mapp this is the Engage Contact ID and is matched first; the Signal user ID must not fill it.

Event Mapping

Blueprint 0.3.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.

Default (default)

Abandoned cart and wishlist entries (Mapp Connect abandonedCart and wishlist subtypes, deleted again on remove_from_cart / remove_from_wishlist) and orders in the Transactions eCommerce table (transaction subtype), each keyed to an existing Engage contact by email or mobile number. Map the same field names in the Mapp Connect integration’s mappings; an event for an unknown contact is not saved by Mapp (a transaction creates the contact).

Datafly eventVendor event / callFields
add_to_cartabandonedCart (abandoned_cart)sku, createdAt, price, size
remove_from_cartabandonedCart (abandoned_cart)sku, delete
add_to_wishlistwishlist (wishlist)sku, createdAt, price, size
remove_from_wishlistwishlist (wishlist)sku, delete
purchasetransaction (transaction)orderId, transaction_date, currency, items

Retail / E-commerce (ecommerce)

Everything in the default preset, plus view_item keeping the Engage Product Catalog current (product subtype: SKU, name, price, URL, category in customAttribute1, brand in customAttribute2). The abandoned cart, wishlist and browse tables need each product in the Product Catalog. The catalogue call carries no contact identifier.

Datafly eventVendor event / callFields
view_itemproductproductSKU, productName, productPrice, productURL, customAttribute1, customAttribute2
add_to_cartabandonedCart (abandoned_cart)sku, createdAt, price, size
remove_from_cartabandonedCart (abandoned_cart)sku, delete
add_to_wishlistwishlist (wishlist)sku, createdAt, price, size
remove_from_wishlistwishlist (wishlist)sku, delete
purchasetransaction (transaction)orderId, transaction_date, currency, items

An identified purchase (preset default) is delivered as:

POST https://email.acme.mapp.com/api/rest/v19/integration/123456/event?subtype=transaction
{
  "currency": "GBP",
  "email": "jane.doe@example.com",
  "items": [
    {
      "name": "Helmet",
      "price": 120,
      "qty_ordered": 2,
      "sku": "SKU_1"
    },
    {
      "name": "Gloves",
      "price": 199.99,
      "qty_ordered": 1,
      "sku": "SKU_2"
    }
  ],
  "mobileNumber": "+447700900123",
  "orderId": "T-1001",
  "transaction_date": "2025-09-23T04:00:00Z"
}

Testing

  1. Send a test event from a page running Datafly.js, or replay one from the Event Debugger.
  2. Confirm Signal records a 2xx response from Mapp for the delivery.
  3. In Engage, open the contact you targeted and verify the product event appears in their activity / behavioural data.
  4. If you have a Whiteboard automation listening for the integration event, confirm it triggers.

Troubleshooting

SymptomLikely causeFix
401 UnauthorizedWrong API user email/password, or the Basic header is missing.Re-enter the credentials; confirm the user can log in.
403 ForbiddenThe system user lacks the API or Hybrid role.Grant the API or Hybrid role in Administration > Users.
404 Not FoundWrong host or unknown Integration ID.Re-check the host (login URL) and the numeric Integration ID.
400 Bad RequestMissing identifier, or malformed JSON.Ensure at least one of email / userId / mobileNumber is mapped.
2xx but no data in EngageThe contact does not exist.Events for unknown contacts are not saved — import or register the contact first.

For full API reference see the Mapp Engage API documentation and Getting Started with Engage API.