Zeotap

Customer intelligence platform for identity resolution, audience segmentation, and data activation with a privacy-first approach.

Why route Zeotap through Datafly Signal

  • Profiles are updated from the server, not the browser. Events reach Zeotap even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
  • Email and phone number are hashed before leaving your infrastructure. Signal normalises (trim and lowercase) and applies SHA-256 inside your own deployment, so Zeotap receives match keys rather than raw personal data.
  • One consent decision governs every destination. Zeotap is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Prerequisites

Complete these steps in Zeotap before configuring Signal.

Access your Zeotap account

Log in to the Zeotap Unity platform at unity.zeotap.com. If you do not have an account, contact your Zeotap representative.

Determine your region

Zeotap operates in multiple regions. Your region was assigned during account setup and determines the API endpoint:

RegionAPI URLValue for Signal
EUhttps://api.zeotap.comeu
UShttps://api-us.zeotap.comus

Check with your Zeotap account manager if you are unsure of your region.

Create an integration

Navigate to Integrations (or Data Sources) in the Zeotap Unity dashboard. Click Create Integration and select Server-Side API as the type. Give it a name (e.g. “Datafly Signal Events”) and configure the event types you want to receive.

Get your Write Key

After creating the integration, Zeotap will display a Write Key. This key authenticates events sent to this specific integration. Copy it immediately.

Note your API URL

The API URL for your integration is displayed on the integration detail page. This may include your region-specific base URL plus integration-specific path components. Copy the full URL.

Configure Event Types

In the integration settings, specify which event types you want to accept. Common choices include:

  • Track — for custom behavioural events
  • Identify — for identity and profile data
  • Page — for page view events

Configuration

FieldTypeRequiredDescription
api_urlstringYesThe API URL from the IMPLEMENTATION DETAILS tab of your Zeotap HTTP API (Server to Server) source, without query parameters.
regionselectYesThe region code of the source (EU, US or IN), sent as the region query parameter.
write_keysecretYesThe source’s write key. Sent as HTTP Basic auth w_k:{write_key}. Wait 30 minutes after creating the source before using it.
event_typeselectNoSent as the eventType query parameter. Zeotap’s server-to-server source requires s2s (the default).
default_countrystringNoISO 3166-1 alpha-2 country sent when the visitor’s GeoIP country is unknown. Zeotap requires a country on every server-to-server event; an event with neither is not sent: the preset filters it (it is not dead-lettered) (#1556). Set it when your traffic can arrive without a GeoIP country (internal or load-test traffic, for example).

Signal Setup

Quick Setup

  1. Navigate to Integrations in the sidebar.
  2. Open the Integration Library tab.
  3. Find Zeotap under the Identity Resolution category.
  4. Click Install, and fill in the required fields with the credentials gathered above.
  5. Click Install Integration to create the integration with a ready-to-use default configuration.

API Setup

curl -X POST http://localhost:8084/v1/admin/integration-catalog/zeotap/install \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Zeotap",
    "variant": "default",
    "config": {
      "api_url": "https://spl.zeotap.com/fp",
      "region": "EU",
      "write_key": "xxxxxxxxxxxxxxxxxxxx",
      "event_type": "s2s",
      "default_country": "GB"
    },
    "delivery_mode": "server_side"
  }'

Event Mapping

Each event is POSTed to {api_url}?region={region}&eventType=s2s. Zeotap maps any JSON shape in the source’s catalogue mapping; the body follows the documented server-side Zeotap shape:

FieldValue
id, type, eventSignal event ID; track, page or identify; the Signal event name
user_id, customer_id, anonymous_idIdentifiers (the anonymous ID is on every event)
emailSHA-256 digest of the trimmed, lower-cased address
event_timestampISO 8601 event time
contextcountry (required), ip, user_agent, locale, page, consent.marketing
propertiesEvery documented property; currency upper-cased, line items as products
identify: properties.first_name, last_name, phoneSHA-256 digests (phone shaped to E.164 first)

Presets: General, Retail, Insurance, Travel and Media & Streaming. Map these fields in the source’s catalogue mapping in Zeotap.

Identity

FieldSourceHashingNotes
emailidentify traitsSHA-256, lower-cased and trimmedPrimary deterministic identity key.
properties.phone (identify)identify traitsSHA-256 of the E.164 numberSecondary deterministic key.
user_id, customer_iduser_id from datafly.identify()Plain textYour stable customer ID.
anonymous_idDatafly anonymous identifierPlain textFirst-party cookie ID; Zeotap requires an identifier on every event.
context.countryGeoIP, else default_countryPlain textRequired by Zeotap on server-to-server calls. An event with neither is filtered (not sent, not dead-lettered).

Zeotap events should be sent under the marketing consent category. Zeotap’s identity graph honours per-record consent flags — Signal includes the visitor’s CMP consent state on every event so Zeotap can downgrade or suppress processing where required.

Delivery

Events are delivered server-side from your Datafly Signal infrastructure directly to the Zeotap API. No client-side scripts are loaded for this integration.

Verify it’s working

  1. After installing the integration, trigger a test event from your website or via the Signal event API.
  2. In the Zeotap Unity dashboard, navigate to your integration and check the Activity or Event Log for recently received events.
  3. Navigate to Audiences and verify the test user’s profile was created or updated with the expected attributes.
  4. In Signal, check Live Events to confirm delivery with a 200 response status.

Troubleshooting

SymptomPossible CauseResolution
401 UnauthorizedInvalid write keyVerify the write key on the integration detail page in Zeotap Unity and update the config
404 Not FoundIncorrect API URLVerify the API URL on the integration detail page. Ensure it includes the correct region base URL
400 Bad RequestWrong region or eventType, or a missing identifier or countryRead the x-zeo-debug response header; set event_type to s2s and the region to the source’s region
Wrong regionRegion mismatchCheck with your Zeotap account manager and ensure the region config matches
Identity not resolvedMissing identifiersInclude at least one deterministic identifier (hashed email, phone) for Zeotap identity resolution

Visit Zeotap documentation for full API reference and integration setup details.

See also

  • Amperity — alternative CDP with identity resolution
  • LiveRamp — RampID-based identity resolution
  • InfoSum — privacy-preserving data collaboration