Understand when events enter the dead letter queue and how to manage them.
Read time 3 minutesLast updated 3 hours ago
The dead letter queue (DLQ) stores events that failed delivery after all retries were exhausted. This includes failed webhook HTTP requests and failed trigger processing. You can list events, replay them to retry delivery, or discard them.To manage the dead letter queue, use the Unity Dashboard, the CLI, or the REST API. For an overview of the options, refer to Manage DLQ.
When events enter the dead letter queue
Events are added to the dead letter queue in the following cases:
Webhooks: When the Triggers service cannot successfully deliver a HTTP request to your webhook URL (for example, the endpoint returns
5xx
errors, times out, or returns
429 Too Many Requests
) and retries are exhausted, the event is added to the dead letter queue.
Triggers: When trigger processing fails repeatedly (for example, Cloud Code invocation fails), the event can be added to the dead letter queue.
Events that fail with non-retryable errors (for example
4xx
client errors for webhooks) are not retried and are not added to the queue. For more information on webhook configuration and retry behavior, refer to Webhooks and Failure handling.
DLQ event status and resolution
Each event in the dead letter queue has a
status
field. Retention and capacity are described in Limits.
Status
Description
pending
Awaiting your action (replay or discard).
replay_queued
Queued for replay by the system.
processing
Currently being replayed.
resolved
The event has been resolved (replayed or discarded).
When
status
is
resolved
, the
resolutionAction
field indicates how it was resolved:
Resolution action
Description
replayed
The event was successfully re-published.
discarded
The event was manually removed from the queue.
Note
The Unity Dashboard combines
status
and
resolutionAction
into a single filter for convenience. The API and CLI expose them as separate fields.
DLQ event structure
Each event in the dead letter queue has the following top-level fields. Understanding this structure helps you debug failed deliveries and build inspection or automation workflows against the API or CLI.
Field
Type
Description
id
string (UUID)
Unique identifier of the DLQ record.
projectId
string (UUID)
Project that owns the trigger and event.
environmentId
string (UUID)
Environment (for example production or development).
eventId
string (UUID)
Original event ID from the Triggers pipeline.
sourceType
string
How the event was produced; for example
webhook
.
eventType
string
Event type URN; for example
com.unity.triggers.action.v1
.
subject
string
Subject (resource) the event refers to; for example
webhooks.<projectId>
.
metadata
object
Trigger and context metadata (see below).
payload
object
Original event payload; structure depends on the trigger and event type.
status
string
DLQ status:
pending
,
replay_queued
,
processing
, or
resolved
. When
resolved
, see
resolutionAction
.
resolutionAction
string
How a
resolved
event was handled:
replayed
or
discarded
. Omitted when
status
is not
resolved
.
createdAt
string (ISO 8601)
When the event was added to the DLQ.
updatedAt
string (ISO 8601)
When the DLQ record was last updated.
The
metadata
object contains trigger and execution context. Common keys include:
Key
Description
projectid
,
environmentid
Project and environment IDs.
triggerid
,
triggername
Trigger identifier and display name.
triggeractionurn
,
triggeractiontype
Action URN (for example
urn:ugs:webhook
) and type (for example
webhook
).
triggereventtype
Event type that fired the trigger (for example
com.unity.services.player-auth.signed-in.v1
).
The
payload
field is the original event body and varies by event type (for example player-auth events include
To access the dead letter queue via the API or CLI, the service account must have one of the following roles:
Role
Permissions
Triggers DLQ Viewer
List and get DLQ events (
triggers.dlq.list
,
triggers.dlq.get
).
Triggers DLQ Manager
All viewer permissions, plus replay and discard events (
triggers.dlq.replay
,
triggers.dlq.discard
).
In the Unity Dashboard, you assign these roles through service account management. Refer to Authentication for details on setting up service accounts and assigning product roles.