- Sources
- API
Datahash API
Overview
Section titled “Overview”Datahash API takes server-side events posted from your own backend over a REST endpoint, and delivers them to your advertising platforms. Signals validates each payload, hashes the identifiers and routes the event onward.
Where a CRM, a warehouse, a file drop or a website tag already holds what you need, those connectors are less to maintain. Where the event only exists inside your own application, this is the way to send it.
There is no SDK to install and no pixel on any page. Any language that can make an HTTPS request works, so a service written in Go, Python, Node or anything else posts events the same way.
Supported Platforms
Section titled “Supported Platforms”Destinations supported by Datahash API
| Category | Supported |
|---|---|
| Offline Conversions | |
| Lead Conversions | |
| Custom Audience |
Prerequisites
Section titled “Prerequisites”- A backend that can make an outbound HTTPS request and hold a credential. This connector is not configurable from Studio alone; someone has to write the call.
- Agreement on which events you are sending and what each one is called, since the event name is what the destination reports against.
- The identifiers your destinations match on, chiefly email address and phone number, available at the point the event is raised.
Authentication
Section titled “Authentication”The connector authenticates with an API key. Studio provides the key for the instance, and your backend sends it with each request.
Configuration
Section titled “Configuration”API key
Section titled “API key”Studio provides an API key for the instance. That key identifies your account on every request, so keep it to the one integration it was issued for.
Send a test event
Section titled “Send a test event”Post one event from your backend, following the API reference for the endpoint, the request shape and the fields it accepts. Send a real event rather than a placeholder.
Manage instance
Section titled “Manage instance”One instance covers one key and the destinations it feeds. To send from a second system, add another instance from the Manage existing instance table. To change an existing one, open it from there, click the edit option in the menu to the top right, update the fields and click Finish.
Data & identifiers
Section titled “Data & identifiers”Personal identifiers are normalized and SHA-256 hashed at ingestion, before they are sent to any destination. You can also send them already hashed, in which case they are used as they arrive.
Email, phone, name and location are what destinations match on. Value, currency and product fields describe the conversion rather than the person, so they do not affect match rates.
Best practices
Section titled “Best practices”- Send an identifier with every event. Email address and phone number carry the most weight, so an event holding neither matches at a much lower rate.
- Normalize before hashing if you are sending pre-hashed values. A hash only matches if both sides normalized the value the same way, so lowercase the email and put the phone number in E.164 first.
- Fix the field the response names before you resend. A request is validated as a unit, so one invalid event rejects every event sent with it and retrying the same body fails the same way.
- Keep batches small enough that one bad record does not cost you a large upload. A single request can carry one event or many, and either works.
- Keep each key to the integration it was issued for, so one can be revoked without affecting the others.
Troubleshooting & FAQ
Section titled “Troubleshooting & FAQ”A request is rejected. The response returns status as Error and names the field that failed in messages. One invalid event rejects the whole request, so events_received counting your events is not confirmation that any of them were delivered.
Match rates are low. Usually no identifier on the event, or a normalisation step missed before hashing. Send more identifiers and fix the formatting at source.
Which languages are supported? Any language that can make an HTTPS request. The API takes JSON over REST and there is no SDK to install.

