Webhook event reference
The supported webhook types and the exact data payload of each.
Disclaimer
Example field values below are significant for format and type only. Do not treat them as real data.
This page lists every supported webhook type and shows the complete request body for each. For the shared request format (method, headers, delivery and retry behaviour, security), see the Webhooks overview.
Each event is identified by the X-Webhook-Type request header, whose value is one of the strings in the table below. Route on that header, then read the fields for that type.
Every webhook body has the same three top-level fields, and the type-specific fields are nested under data:
| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for this event, generated by DT One. Use it to deduplicate repeated deliveries. |
created_at | string | RFC 3339 timestamp (UTC) of when DT One recorded the event. |
data | object | The type-specific event fields, documented per webhook type below. |
X-Webhook-Type | DT Shop label | Fires when… |
|---|---|---|
ESIM_STATUS | eSIM Status | The installation state of an eSIM profile changes (e.g. it is installed). |
ESIM_BALANCE_ACTIVATION | eSIM Balance Activation | A data balance is activated on an eSIM. |
ESIM_BALANCE_ALERT | eSIM Balance Alert | An eSIM's remaining data balance crosses the low-balance threshold. |
ESIM_COUNTRY_CHANGE | eSIM Country Change | An eSIM connects to a network in a different country. |
All current events are eSIM eventsEvery webhook type available today relates to eSIM services. The
id/created_at/databody structure and delivery behaviour are generic, so new event types may be added later without changing the request format — always route onX-Webhook-Typeand ignore anydatafields you do not recognize.
ESIM_STATUS
ESIM_STATUSSent when the installation state of an eSIM profile changes — for example, when the end user installs the profile on a device.
{
"id": "1288",
"created_at": "2026-07-26T10:15:30Z",
"data": {
"iccid": "89361123300836129514",
"imsi": "260216611193634",
"profile_state": "INSTALLED",
"eid": "74088234238931452"
}
}| Field | Type | Description |
|---|---|---|
id | string | Unique event identifier (top level). Use it to deduplicate. |
created_at | string | RFC 3339 timestamp (UTC) when DT One recorded the event (top level). |
data.iccid | string | ICCID (serial) of the eSIM whose state changed. |
data.imsi | string | IMSI (International Mobile Subscriber Identity) of the eSIM. |
data.profile_state | string | The eSIM profile's installation state (for example, INSTALLED). |
data.eid | string | The device's eUICC identifier (EID). Optional — may be empty or absent if the device did not report it. |
ESIM_BALANCE_ACTIVATION
ESIM_BALANCE_ACTIVATIONSent when a data balance is activated on an eSIM (for example, after a purchase or top-up is provisioned).
{
"id": "1289",
"created_at": "2026-07-26T09:52:10Z",
"data": {
"activatedAt": "2026-07-26T09:52:10Z",
"expiresAt": "2026-08-03T10:15:30Z",
"transaction_id": 2239249455
}
}| Field | Type | Description |
|---|---|---|
id | string | Unique event identifier (top level). Use it to deduplicate. |
created_at | string | RFC 3339 timestamp (UTC) when DT One recorded the event (top level). |
data.activatedAt | string | RFC 3339 timestamp (UTC) when the balance was activated. |
data.expiresAt | string | RFC 3339 timestamp (UTC) when the balance will expire. |
data.transaction_id | integer | The DT One transaction that provisioned this balance. Cross-reference it against your own records. |
ESIM_BALANCE_ALERT
ESIM_BALANCE_ALERTSent when an eSIM's remaining data balance drops below the low-balance threshold, so you can prompt the user to top up.
{
"id": "1290",
"created_at": "2026-07-26T10:15:30Z",
"data": {
"iccid": "89361123300836129514",
"imsi": "260216611193634",
"timestamp": "2026-07-26T10:15:30Z",
"balance_amount_in_byte": 93618231,
"transaction_id": 2239249455
}
}| Field | Type | Description |
|---|---|---|
id | string | Unique event identifier (top level). Use it to deduplicate. |
created_at | string | RFC 3339 timestamp (UTC) when DT One recorded the event (top level). |
data.iccid | string | ICCID (serial) of the eSIM. |
data.imsi | string | IMSI of the eSIM. |
data.timestamp | string | RFC 3339 timestamp (UTC) when the alert was raised. |
data.balance_amount_in_byte | integer | Remaining data balance, in bytes. |
data.transaction_id | integer | The DT One transaction associated with the eSIM. Cross-reference it against your own records. |
ESIM_COUNTRY_CHANGE
ESIM_COUNTRY_CHANGESent when an eSIM connects to a network in a different country.
{
"id": "1291",
"created_at": "2026-07-26T11:02:00Z",
"data": {
"imsi": "123456789012345",
"iccid": "12345678901234567890",
"previous_country": null,
"new_country": "DE"
}
}| Field | Type | Description |
|---|---|---|
id | string | Unique event identifier (top level). Use it to deduplicate. |
created_at | string | RFC 3339 timestamp (UTC) when DT One recorded the event (top level). |
data.imsi | string | IMSI of the eSIM. |
data.iccid | string | ICCID (serial) of the eSIM. |
data.previous_country | string / null | The country the eSIM was previously connected to. null when this is the eSIM's first connection. |
data.new_country | string | The country the eSIM is now connected to. |
Full HTTP request example
The bodies above are delivered inside a POST request with DT One's headers. A complete ESIM_STATUS request looks like this end to end:
POST /your/webhook/endpoint HTTP/1.1
Content-Type: application/json; charset=UTF-8
X-Webhook-Type: ESIM_STATUS
User-Agent: Digital Value Services Webhook
Date: Sun, 26 Jul 2026 10:15:30 UTC
{
"id": "1288",
"created_at": "2026-07-26T10:15:30Z",
"data": {
"iccid": "89361123300836129514",
"imsi": "260216611193634",
"profile_state": "INSTALLED",
"eid": "74088234238931452"
}
}Updated about 4 hours ago
