IntegrationsData Clean RoomsInfoSum

InfoSum

Datafly Signal delivers hashed first-party identifiers to InfoSum, the privacy-first data clean room platform from WPP. Once your data is in an InfoSum dataset, you can collaborate with advertisers, publishers, and other partners using deterministic identity matching — without raw PII ever leaving your environment.

Signal writes files to an S3 bucket that your InfoSum Bunker imports from; InfoSum is not called over HTTP. The connection fields below set the file layout InfoSum needs. Not yet tested against a live Bunker import.

Why route InfoSum through Datafly Signal

  • Delivery happens server-to-server. Signal sends events to InfoSum from your own infrastructure rather than from the visitor’s browser, so delivery does not depend on client-side conditions.
  • Email, phone number, first name, last name, date of birth and postcode are hashed before leaving your infrastructure. Signal normalises (trim and lowercase) and applies SHA-256 inside your own deployment, so InfoSum receives match keys rather than raw personal data.
  • Presets for General, Automotive, E-commerce and Insurance. The mapping starts from a working configuration for your vertical instead of a blank field map.
  • One consent decision governs every destination. InfoSum is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

What InfoSum does

InfoSum’s core idea is a decentralised Bunker model: every party (you, the advertiser, the publisher) keeps their own data in their own InfoSum-managed environment. To collaborate, parties run matched analyses against each other’s bunkers using Private Set Intersection (PSI) — the platform computes overlaps and aggregates without anyone seeing the other side’s raw rows.

Common use cases:

  • Audience overlap analysis with media partners
  • Closed-loop measurement (campaign exposure ↔ outcomes)
  • Audience activation to walled-garden ad platforms via InfoSum destinations (The Trade Desk, Amazon Data Manager, Google, etc.)
  • Insight generation across first-party datasets

Prerequisites

An InfoSum account and Bunker

InfoSum is enterprise-only; contact InfoSum for access. Your Bunker’s region must match the residency requirements of the data.

An S3 bucket InfoSum imports from

A bucket you grant your Bunker access to (InfoSum’s cross-account S3 import), or one InfoSum provides, plus an AWS access key that can write to it.

An import in InfoSum

Create an import connector for the bucket and prefix, then a recordset and normalisation configuration for the columns listed below. InfoSum automates an import only while the source, the file format and the normalisation configuration stay the same, which is why every file Signal writes has the same columns.

Configure in Signal

Configuration fields

FieldRequiredDescription
bucket, regionYesThe S3 bucket and its region.
access_key_id, secret_access_keyYesAWS credentials with write access to the bucket.
prefixNoObject key prefix; point the InfoSum import at the same prefix.
file_formatYescsv or parquet (InfoSum does not import NDJSON).
schema_modeYesblueprint: one column per key.
schema_columnsYesThe fixed column list, for example message_id,event_name,event_timestamp,customer_id,email,phone,first_name,last_name,postcode,date_of_birth,consent,funnel_stage,vehicle_make,vehicle_model,quote_value,dealer_id,order_value,currency,insurance_type (drop the ones your preset does not use).
batch_sizeYesRows per file, for example 10000. Unset, Signal writes one file per event.
batch_max_wait_msNoLongest a partly filled file waits before it is written (default one minute).

Files are written as <prefix>/yyyy=YYYY/mm=MM/dd=DD/hh=HH/<message_id>.csv (or .parquet).

⚠️

Integrations created before 0.10.0 without these fields write NDJSON in the warehouse layout (identifiers inside properties_json), one file per event, which InfoSum cannot import. Set the fields above (#1559).

Identity signals

Every row carries the identity columns; the preset adds event columns.

ColumnSourceFormat
customer_iduser_idPlain text
emailidentify trait emailSHA-256 of the trimmed, lower-cased address
phoneidentify trait phoneSHA-256 of the E.164 number (with +)
first_name, last_nameidentify traitsSHA-256 of the trimmed, lower-cased name
postcodeidentify trait postcodeSHA-256 of the lower-cased postcode with spaces removed
date_of_birthidentify trait dobSHA-256 of the value as sent (use YYYY-MM-DD)
consentmarketing consent stategranted or denied

Visitors with no user ID, email or phone are dropped. Pre-hashed keys match only if your collaborator normalises and hashes the same way. InfoSum’s Global Schema expects phone, postcode and date of birth raw (and hashes them itself during normalisation in your Bunker); hashed, they can only be used as custom keys agreed with the collaborator.

PresetRows
Generalidentify, sign_up
Automotivefunnel stages (vehicle_viewed, finance_quote_requested, trade_in_valued, test_drive_booked, dealer_contacted, service_appointment_booked) with funnel_stage, vehicle_make, vehicle_model, quote_value, dealer_id
E-commerceidentify, sign_up, purchase with order_value, currency
Insuranceidentify, quote_requested (insurance_type, quote_value), purchase as policy_purchased (insurance_type, order_value, currency)

How to send user data

Call datafly.identify() when a user logs in, registers or submits a form:

datafly.identify("user-123", {
  email: "jane.doe@example.com",
  phone: "+44 7700 900123",
  first_name: "Jane",
  last_name: "Doe",
  postcode: "SW1A 1AA"
});

Stored event context

Alongside the fields your blueprint maps (where email, phone, names and address are stored as normalised SHA-256 by default), each file row carries the event’s collected context exactly as Signal received it. The blueprint does not filter or hash the context: this is deliberate (decision 2026-09-23), so the context is complete for attribution, fraud and debugging queries, and it is listed here so you can decide what to keep.

StoredWhat it contains
Visitor requestIP address, user agent, Accept-Language, locale and timezone
PageURL including its query string, path, title and referrer
CampaignUTM source, medium, campaign, term and content
ConsentThe visitor’s consent state
LocationGeoIP country, region and city, and the network (ASN)
DeviceScreen size; for app events the OS and version, manufacturer, model, advertising ID and IDFV when the app collected them
Vendor IDsCookie and click identifiers in vendor_ids (for example the _fbp browser ID, gclid, ttclid, the GA client ID)
Session and librarySession ID, number and engagement time; the collector’s name and version
Partner attributesProfile attributes from partner enrichment (partner_attrs)

In each NDJSON line these are the context object, with anonymous_id, user_id, device_id, message_id, event_id, click_ids and collected_ids beside the mapped properties. In CSV and Parquet with the canonical schema they are the ip_address, user_agent, page_url, page_path and page_referrer columns and, in full, the context_json column. In blueprint schema mode only the columns you declare are written.

The IP address, device and advertising IDs, and cookie and click identifiers are personal data under UK and EU GDPR. To keep any of them out of storage, strip, mask or hash the field for every integration with the organisation data layer, apply URL redaction to page URLs, or remove it in the installed blueprint; and set the storage’s retention to match your privacy notice. See Personal data by integration.

InfoSum data should be sent under the marketing or advertising consent category, depending on your downstream use cases. Visitors who have not granted the required consent are filtered out by Signal before any record reaches your InfoSum Bunker.

For regulated regions, InfoSum supports per-record consent attributes in the dataset schema — Signal includes the visitor’s CMP consent state on every record so consent enforcement can be applied at activation time.

Troubleshooting

ProblemSolution
InfoSum import fails to parse the filesCheck file_format is csv or parquet, schema_mode is blueprint and schema_columns is set, so every file has the same header.
Thousands of tiny filesSet batch_size.
Low match rate with partnersConfirm both sides normalise the same way before hashing (lower-case, spaces removed; E.164 for phone).
Upload 403 AccessDeniedThe access key cannot write to the bucket or prefix.

Resources

See also

  • LiveRamp — alternative identity / data collaboration
  • Amperity — CDP with identity resolution
  • Zeotap — CDP with identity-graph capabilities