Koddi
Datafly Signal sends conversions to Koddi’s commerce-media platform server-to-server through the Event Collection conversion beacon, matched to earlier impression and click beacons by the user GUID.
Why route Koddi through Datafly Signal
- Conversions survive ad blockers and tracking prevention. A browser tag served from an advertising domain is blocked outright for part of your traffic, and Safari’s ITP shortens the cookies it can set. Signal sends the event from your own server, so what Koddi receives is not filtered by the browser.
- Personal data is hashed before it leaves your infrastructure. Signal normalises and SHA-256 hashes the identifiers inside your own deployment, so the vendor receives match keys, never the raw values.
- One consent decision governs every destination. Koddi is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
- No vendor tag on the page. Removing it removes its page weight and its independent access to your visitors.
Prerequisites
Get your client details
Koddi provides your beacon subdomain (the part before .koddi.io) and your client_name.
Use one user GUID everywhere
Signal sends the Signal visitor ID without hyphens as user_guid. Your impression and click beacons must send the same GUID.
Match item IDs to your feed
Each purchased item is a bidder; the item ID must be the bidder ID in the feed Koddi holds.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
client_subdomain | Yes | Your Koddi beacon subdomain, the part before .koddi.io (e.g. enter ‘acme’ for acme.koddi.io). Provided by your Koddi onboarding team. |
client_name | Yes | The client_name string Koddi assigned to your account. Sent in the body of every conversion event. Provided by your Koddi team. |
api_key | No | Not used: Koddi documents no authentication for the conversion beacon; the subdomain and client_name identify you. Retained so existing configurations still load. |
Management UI Setup
- Go to Integrations > Add Integration > Koddi.
- Choose a preset: Default (
default), Retail (ecommerce), Travel (travel). - Fill in the fields above and click Save.
Request format
One conversion per request. Koddi documents no authentication for the beacon.
POST https://{client_subdomain}.koddi.io/event-collection/beacon/conversion{
"attributes": {
"hashed_email": "huC55WwXzE0SOH4ZSbhQU/vnO8POWhGIcTqdMAzGEz0=",
"hashed_phone": "nhkZrXijT9Z6hL+88v6hQHQGVRe+oy6Skkdxw/kuVGI="
},
"bidders": [
{
"base_price": 120,
"bidder": "SKU_1",
"count": 2,
"total_price": 240
},
{
"base_price": 19.99,
"bidder": "SKU_2",
"count": 1,
"total_price": 19.99
}
],
"client_name": "Your Client Name",
"conversion_source": "purchase",
"culture": "en-GB",
"currency": "GBP",
"domain": "shop.example.co.uk",
"transaction_id": "ORD-1001",
"unixtime": 1758500000,
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
"user_guid": "3f2b8c1e9d4a4e7b8a612c5d9e0f1a7b",
"user_ip": "203.0.113.9"
}Event Mapping
| Signal event | Vendor event | Presets |
|---|---|---|
purchase | purchase | Default, Retail, Travel |
booking_completed | booking | Travel |
Signal forwards event properties the preset does not map unless the integration’s strict output contract is on. Turn on strict_output_contract for this integration so only the documented fields are sent.
Identity
Email and phone are sent only as Base64-encoded SHA-256 hashes (attributes.hashed_email, attributes.hashed_phone), as Koddi documents. IP address and user agent are sent for fraud detection; Koddi deletes the IP within 48 hours.
Consent
Koddi is an advertising destination and requires marketing consent by default.
Troubleshooting
| Problem | Solution |
|---|---|
| Events dropped in Signal | The order has no items, currency or locale; Koddi requires all three. |
Blueprint
The Koddi blueprint version is 0.5.0. It was last reviewed against the vendor’s documentation on 2026-09-22.