Skip to main content

DiscoAds Conversion tracking

Send conversion events to a single unified endpoint. Both GET (postback) and POST (server-side / Web SDK) are supported, authenticated by account_id. For the best results, use postback: server-to-server tracking is the most reliable, and browser-based options are there for setups that can't support it.

Advertisers can send Disco multiple events, with one designated as the primary conversion event; secondary events can drive secondary optimizations. There must be a persistent identifier across events to ensure accurate attribution.

Endpoint

https://partners.disconetwork.com/advertiser/events/

Requests are tied to your account by your account_id, provisioned by your Disco account team. Treat it like a credential: share it only with the people building your integration. Event names must be configured in Disco's system before they'll fire; share your event-name options with your account team.

Before you integrate​

Setup takes three steps, in this order:

  1. Tell us what to track. Send your Disco account team the events you want tracked (e.g. Purchase, Trial Start, Subscription Renewal), plus any details you'd like attached to each one, such as order value, plan type or SKU.
  2. We configure it and send you two things: your account_id, and the exact event names to use in your requests.
  3. You build the integration using the endpoint and code samples below.

Required fields​

FieldTypeRequiredDetails
account_idstring✓Your Disco-provisioned advertiser account ID
event_namestring✓The configured conversion event (e.g. SIGNUP, PURCHASE). Case-insensitive
click_idstringrecommendedThe click ID from the Disco ad click. Gives the most accurate attribution, so pass it on every request whenever you can
email_hashstringalternativeSHA-256 hash of the lowercased email. Prefer this over email if you can't pass click_id
emailstringalternativePlain-text email of the converting shopper. Use only if you can't pass click_id or email_hash

At least one identifier (click_id, email_hash or email) is required on every request.

Where the click ID comes from​

When a shopper clicks your Disco offer, Disco adds click_id to your landing page URL, for example https://yourbrand.com/landing?click_id=abc123. Capture it when the shopper lands, keep it for at least 30 days, and send the same value back with the conversion. Holding it for 30 days means a shopper who converts days after their click is still credited.

You can also choose the parameter yourself. Put {CLICK_ID} in any parameter of your landing page URL, for example https://yourbrand.com/landing?subid={CLICK_ID}, and Disco fills in the click ID there instead of adding click_id. This is useful when your tracking platform expects the ID under its own parameter name.

Use this if you can: it's the recommended method for every advertiser. Your server, affiliate network or tracking platform calls this URL when a conversion happens. Pass parameters as query strings.

ParameterRequiredDetails
event_datetimeWhen the event happened, in ISO-8601 format. Must be URL-encoded (e.g. 2026-03-17T12%3A00%3A00Z)

Any other parameters are captured as custom metadata. Our team uses it to analyze your conversions and optimize your campaigns.

https://partners.disconetwork.com/advertiser/events/?account_id=YOUR_ACCOUNT_ID&event_name=SIGNUP&click_id=dsc_abc123

With event_datetime + custom metadata:

https://partners.disconetwork.com/advertiser/events/?account_id=YOUR_ACCOUNT_ID&event_name=PURCHASE&click_id=dsc_abc123&event_datetime=2026-03-17T12%3A00%3A00Z&sku1=value1&sku2=value2

POST: server-side (JSON)​

Use this if your engineers send events from your own backend. Send Content-Type: application/json. Put identifiers and custom_metadata inside event_properties. event_datetime goes at the top level, next to event_name.

{
"event_name": "SIGNUP",
"account_id": "YOUR_ACCOUNT_ID",
"event_datetime": "2026-04-20T17:30:00Z",
"event_properties": {
"click_id": "dsc_abc123",
"custom_metadata": { "sku1": "SERUM-01", "sku2": "CREAM-02" }
}
}

Web SDK / GTM​

Use this if you can't set up postback and manage tags on your site yourself, directly or in Google Tag Manager. Both snippets send requests from the browser to the Disco Events API. Of the two, GET is recommended because it works out of the box. If you use the Disco Web SDK, install it directly on your site rather than through Google Tag Manager where you can: fewer layers between your site and Disco means fewer places for events to drop. Fire the script on your conversion event (e.g. purchase-confirmation page load); in GTM, add either as a Custom HTML tag with the right trigger.

GET (recommended):

<script>
var url = "https://partners.disconetwork.com/advertiser/events/" +
"?account_id=YOUR_ACCOUNT_ID" +
"&event_name=YOUR_EVENT_NAME" +
"&click_id=YOUR_CLICK_ID";
fetch(url);
</script>

POST:

caution

Browser POST only works from domains Disco has approved. Browsers block a site from POSTing data to another domain unless that domain has allowed it (this is called CORS), so ask your Disco account team to approve your domain before you use this snippet. Without approval, events are blocked in the browser and never reach Disco. GET doesn't need approval.

<script>
fetch("https://partners.disconetwork.com/advertiser/events/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
account_id: "YOUR_ACCOUNT_ID",
event_name: "YOUR_EVENT_NAME",
event_properties: { click_id: "YOUR_CLICK_ID" }
})
});
</script>

Before you test: send us your setup​

Once your integration is built, send your Disco account team the details below before you run a test conversion. We'll check them against your account so problems surface before testing, not after.

  • Postback or server-side POST: the postback URL or request you've configured, the identifier you're sending (ideally click_id) and the event names you're using.
  • Web SDK or Google Tag Manager: a screenshot of your tag or SDK setup, the identifier you're sending and the event names you're using.

Error responses​

StatusMessageCause
400"Request missing required properties."Missing a user identifier (click_id, email or email_hash)
400"Events not configured for this account."No event names set up yet. Contact your Disco account team
400"event_name not provided on request."The event_name field is missing
400"Event name not configured for account. Options: [...]"The event_name doesn't match a configured event; the response lists valid names
422Detailed JSON responseMost likely the account_id is missing or incorrect
tip

event_name is case-insensitive. Never include PII in custom_metadata. Contact your Disco account team to provision new event_name or account_id values.

Already on Shopify?​

The Disco app handles conversion tracking automatically, no code required. Just install and connect your store.

Dig deeper​