API
One endpoint. Send a conversion event, Toplu delivers it to every destination you use. The event schema below follows the IAB Tech Lab's ECAPI 1.0 spec directly, the same fields you'd send to any ECAPI-native destination. The API isn't live yet, this reference describes the intended shape so you know what you're signing up for.
Event
The event object represents a single conversion, a purchase or other action you want reflected in your ad platforms. Every request is authenticated with an API key tied to one account.
Schema
Your own unique identifier for this event. Strongly recommended, used for idempotency and delivery-status lookups.
Unix epoch timestamp of when the conversion happened.
One of ECAPI's 27 standard event types (purchase, add_to_cart, sign_up, and so on), or `custom`.
Required only when `event_type` is `custom`.
Monetary value of the event.
ISO 4217 currency code, required when `value` is set.
Where the event took place: email, website, app, phone_call, chat, physical_store, system_generated, business_messaging, or other.
Which of your connected destinations to deliver this event to, e.g. `["google", "meta"]`.
Identifiers used to match the event to a person. Hashed fields use SHA-256 over lowercased, trimmed values, the same normalization ECAPI itself specifies.
Send an event
Sends one conversion event for delivery to the destinations you specify. Toplu normalizes it into whatever each destination expects, ECAPI directly where a destination speaks it, a dedicated connector otherwise.
curl https://api.toplu.app/v1/events \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "id": "evt_1a2b3c", "timestamp": 1785594720, "event_type": "purchase", "value": 129.00, "currency_code": "USD", "source": "website", "destinations": ["google", "meta"], "user_data": { "email_address": ["5d41402abc4b2a76..."] } }'{ "id": "evt_1a2b3c", "status": "delivered", "destinations": { "google": { "status": "delivered", "code": 200 }, "meta": { "status": "failed", "code": 400, "error": "invalid_user_data" } }}What's next
Authentication, error codes, webhooks, and the full destinations reference are still being written, alongside the API itself. Get in touch if you want early access or want to shape what this should cover.
Need a hand?
Coding is hard sometimes, and that's okay. Visit our help center or reach out directly, we're here to help.
