Skip to content

notification.deliveries

Purpose

The notification.deliveries dataset tracks the history of notification deliveries within Coralogix's Notification Center. It logs detailed information about each notification delivery attempt, including the status, timestamps, destination, and any errors that occurred. This dataset is invaluable for monitoring the success and failure of notification deliveries, diagnosing issues with notification routing, and auditing the overall performance of your notification system. It helps teams ensure that notifications are delivered reliably and enables troubleshooting when deliveries fail.

Schema description

Full JSON pathField data typeField data exampledescription
notificationCenterObject{ ... }Container for Notification Center envelope fields.
notificationCenter.$lObject{"team":"SRE","service":"payments-api","env":"prod"}Entity labels copied from the originating notification request.
notificationCenter.$mObject{ ... }Metadata block for this delivery event.
notificationCenter.$m.cxEventIdString (UUID)"76c411be-6g4d-4fb1-a987-5fce042deaaf"Unique Coralogix event identifier for this delivery record.
notificationCenter.$m.timestampString (Date)"2025-08-10T14:23:00Z"Timestamp when this delivery event was recorded.
notificationCenter.$m.severityEnum"Error"Delivery severity derived from outcome.status (Info or Error).
notificationCenter.$m.priorityClassString"medium"Delivery priority classification.
notificationCenter.$m.entityTypeString"notificationDeliveries"Fixed entity type marker.
notificationCenter.$dObject{ ... }Delivery-specific identifiers and source linkage.
notificationCenter.$d.notificationDeliveryIdString"deliv-01H8F2J7Q0A3"Unique identifier for this specific delivery attempt/record.
notificationCenter.$d.sourceObject{ ... }Originating request identifiers and entity context.
notificationCenter.$d.source.requestDeduplicationIdString (UUID)"3f2504e0-4f89-11d3-9a0c-0305e82c3301"Deduplication ID from the originating request.
notificationCenter.$d.source.notificationIdString (UUID)"6fa459ea-ee8a-3ca4-894e-db77e160355e"Notification ID from the originating request.
notificationCenter.$d.source.requestTimestampString (Date)"2025-08-10T14:20:00Z"Timestamp of the originating notification request.
notificationCenter.$d.source.entityTypeString"alert"Source entity type from the request.
notificationCenter.$d.source.entitySubTypeString"threshold"Source entity subtype from the request.
destinationObject{ "type":"slack", "connectorInfo":{...}, "presetInfo":{...} }Delivery destination details.
destination.typeString"slack"Destination channel/category (e.g., slack, email, webhook).
destination.connectorInfoObject{ "id":"conn-123", "userFacingId":"slack-oncall", "name":"Slack" }Information about the connector used.
destination.connectorInfo.idString"conn-123"Internal connector identifier.
destination.connectorInfo.userFacingIdString"slack-oncall"Human-readable identifier shown in the UI.
destination.connectorInfo.nameString"Slack"Connector display name.
destination.presetInfoObject{ "id":"preset-9", "userFacingId":"oncall-room", "name":"#oncall" }Preset configuration details, if used.
destination.presetInfo.idString"preset-9"Internal preset identifier.
destination.presetInfo.userFacingIdString"oncall-room"Human-readable preset ID shown in the UI.
destination.presetInfo.nameString"#oncall"Preset display name.
messageString"Alert: CPU usage is high!"Optional human-readable message or summary for the delivery.
contentObject{ "templated": { ... } }Template inputs used to render message and connector payloads.
content.templatedObject{ "messageConfig":"Alert: { alert.name }", "connectorConfig":"{ \"channel\":\"#oncall\" }" }Serialized template inputs.
content.templated.messageConfigString"Alert: { alert.name }"Message configuration used for templating.
content.templated.connectorConfigString"{ \"channel\":\"#oncall\", \"mention\":\"@oncall\" }"Connector-specific template inputs.
renderedObject{ "messageConfig":"Alert: CPU usage is high!", "connectorConfig":"{ \"channel\":\"#oncall\" }" }Rendered outputs after template resolution.
rendered.messageConfigString"Alert: CPU usage is high!"Rendered message payload.
rendered.connectorConfigString"{ \"channel\":\"#oncall\" }"Rendered connector payload/config.
renderingErrorsObject{ "messageConfig": { "message": "template var missing" } }Errors encountered during rendering, if any.
renderingErrors.messageConfigObject{ "message":"template var missing: alert.name" }Message template rendering error details.
renderingErrors.messageConfig.messageString"template var missing: alert.name"Error message from rendering the message template.
renderingErrors.connectorConfigObject{ "message":"invalid channel name" }Connector template rendering error details.
renderingErrors.connectorConfig.messageString"invalid channel name"Error message from rendering the connector template.
routingObject{ ... }Routing metadata used to select destination.
routing.routerInfoObject{ "id":"router-01","userFacingId":"primary","name":"Primary Notifications Router" }Router identification.
routing.routerInfo.idString"router-01"Router ID used to select the destination.
routing.routerInfo.userFacingIdString"primary"Human-readable router ID shown in the UI.
routing.routerInfo.nameString"Primary Notifications Router"Router name.
routing.matchingRuleObject{ "name":"pagerduty-high","condition":"severity >= 3" }The rule that matched for this delivery.
routing.matchingRule.nameString"pagerduty-high"Name of the rule that matched.
routing.matchingRule.conditionString"severity >= 3"Rule condition/expression that evaluated to a match.
outcomeObject{ ... }Final outcome and per-attempt details.
outcome.timestampString (Date)"2025-08-10T14:23:30Z"Timestamp when the delivery outcome was finalized.
outcome.durationMsNumber500Duration of the delivery execution (ms).
outcome.e2eDurationNumber3000End-to-end duration from request registration to outcome (ms).
outcome.protocolString"https"Delivery protocol used (e.g., https, smtp, slack-api).
outcome.httpsObject{ "responseStatusCode": 200 }HTTPS-specific response details, if applicable.
outcome.https.responseStatusCodeNumber200HTTP status code returned by the destination.
outcome.statusEnum"Success"Final outcome status: Success, Discarded, Failure, InternalFailure, or Rejected.
outcome.statusReasonsObject / Array\{ "type":"Timeout","message":"Request timed out after 10 seconds" }Reason(s) for the final status (category + message).
outcome.statusReasons.typeString"Timeout"Machine-friendly reason/category for the status.
outcome.statusReasons.messageString"Request timed out after 10 seconds"Human-readable explanation of the status.
outcome.attemptsArray\[{"timestamp":"2025-08-10T14:23:05Z","durationMs":300,"status":"Failure","protocol":"https","protocolDetails":{"retryAfterMs":1000}}]Per-attempt execution details (retries, backoffs, etc.).
outcome.attempts.timestampString (Date)"2025-08-10T14:23:05Z"Timestamp for the individual attempt.
outcome.attempts.durationMsNumber300Attempt duration in milliseconds.
outcome.attempts.statusString"Failure"Attempt status (often mirrors final outcome.status on last try).
outcome.attempts.statusReasonsObject / Array\{ "type":"Timeout","message":"Request timed out after 10 seconds" }Reason(s) for the attempt status.
outcome.attempts.protocolString"https"Protocol used on the attempt.
outcome.attempts.protocolDetailsObject{ "retryAfterMs": 1000 }Protocol-specific detail map (e.g., headers, retry hints).

How the data in this dataset can be used

Monitoring notification success and failures

By querying outcome.status and outcome.timestamp, users can monitor the success and failure rates of notifications. This helps track how often deliveries fail and identify the possible causes.

Example query:

source system/notification.deliveries
| filter outcome.status == 'Failure'
| explode outcome.statusReasons into reason
| groupby reason.type
     aggregate count() as failures
| sortby failures desc

Auditing notification events

The dataset provides detailed timestamps and status data (outcome.timestamp, outcome.status), which is useful for auditing. For example, users can review all notifications sent in a specific time range and check their delivery statuses.

Example query:

source system/notification.deliveries
| filter outcome.timestamp >= 1753910400000000000
| filter outcome.timestamp <= 1754783999000000000
| groupby outcome.status
    aggregate count() as deliveries
| sort deliveries desc

Troubleshooting delivery issues

If a notification fails, the statusReasons field can be examined to identify common failure reasons (e.g., network timeout, rate limit reached). This allows teams to quickly identify and fix recurring issues.

Example query:

source system/notification.deliveries
| filter outcome.status == 'Failure'
| explode outcome.statusReasons into reason
| groupby reason.message
    aggregate count() as failures
| sortby failures desc

notification.deliveries schema

The notification.deliveries dataset stores the history of notifications sent or attempted using Coralogix's Notification Center.

{ notificationCenter
$l

type: object
Entity labels copied from the originating notification request.

{ $m
cxEventId

type: string (format: uuid)
Unique Coralogix event identifier for this delivery record.

timestamp

type: string
Timestamp when this delivery event was recorded.

severity

Enum: Info, Error
Delivery severity derived from outcome.status.

priorityClass

type: string
Delivery priority classification (e.g., medium).

entityType

type: string
Fixed entity type marker, e.g., notificationDeliveries.

}
{ $d
notificationDeliveryId

type: string
Unique identifier for this specific delivery attempt/record.

{ source
requestDeduplicationId

type: string
Deduplication ID from the originating request.

notificationId

type: string
Notification ID from the originating request.

requestTimestamp

type: string
Timestamp of the originating notification request.

entityType

type: string
Source entity type from the request.

entitySubType

type: string
Source entity subtype from the request.

}
}
}
{ destination
type

type: string
Destination channel/category (e.g., slack, email, webhook).

{ connectorInfo
id

type: string
Internal connector identifier.

userFacingId

type: string
Human-readable identifier shown in the UI.

name

type: string
Connector display name.

}
{ presetInfo
id

type: string
Internal preset identifier.

userFacingId

type: string
Human-readable preset ID shown in the UI.

name

type: string
Preset display name.

}
}
message

type: string
Optional human-readable message or summary for the delivery.

{ content
{ templated
messageConfig

type: string
Serialized template inputs for message content.

connectorConfig

type: string
Serialized template inputs for connector-specific options.

}
}
{ rendered
messageConfig

type: string
Rendered message payload after template resolution.

connectorConfig

type: string
Rendered connector payload/config after template resolution.

}
{ renderingErrors
{ messageConfig
message

type: string
Error details from rendering the message template.

}
{ connectorConfig
message

type: string
Error details from rendering the connector template.

}
}
{ routing
{ routerInfo
id

type: string
Router ID used to select the destination.

userFacingId

type: string
Human-readable router ID shown in the UI.

name

type: string
Router name.

}
{ matchingRule
name

type: string
Name of the rule that matched.

condition

type: string
Rule condition/expression that evaluated to a match.

}
}
{ outcome
timestamp

type: string
Timestamp when the delivery outcome was finalized.

durationMs

type: number
Duration of the delivery execution (ms).

e2eDuration

type: number
End-to-end duration from request registration to outcome (ms).

protocol

type: string
Delivery protocol used (e.g., https, smtp, slack-api).

{ https
responseStatusCode

type: number
HTTP status code returned by the destination (if applicable).

}
status

Enum: Success, Discarded, Failure, InternalFailure, Rejected
Final outcome status for this delivery.

{ statusReasons
type

type: string
Machine-friendly reason/category for the status.

message

type: string
Human-readable explanation of the status.

}
attempts

type: array
Per-attempt execution details (retries, backoffs, etc.). { timestamp: string, durationMs: number, status: string, statusReasons: object, protocol: string, protocolDetails: object }

}