← Back to Metrics

Delivery Notifications Sent

Also known as: Shipping Notifications Sent, Shipment Status Notifications Sent, Delivery Updates Sent, Transactional Shipping Messages Sent

OperationsmetricE-commerce: Post-Purchase Logistics & FulfillmentE-commerce

Count of shipment status notifications (shipped, out for delivery, delivered, exception) dispatched to customers by email, SMS or push. Denominator of Delivery Notification Open Rate.

Business Use Case

1️⃣ Customer Service sees WISMO contacts rise while sends per shipment fall and gets the missing status trigger restored.,2️⃣ Customer Service reviews sends by channel before moving shipped updates from SMS to push to cut messaging cost.,3️⃣ Customer Service compares sends to carrier scans after onboarding a carrier and flags statuses that trigger no message.

Business Criticality

Medium

Journey / Navigation Area

Engagement

Owning Function

Customer Service

Scope

Event

Formula

COUNT(DISTINCT message_id) WHERE message_category = 'delivery_notification' AND send_status = 'sent'

Calculation Notes

1️⃣ One count per message_id per channel; provider retries and replayed send webhooks for the same message add nothing.,2️⃣ In scope: shipped, out for delivery, delivered and delivery exception templates. Order confirmation, pickup-ready and marketing sends are excluded.,3️⃣ Counted at dispatch: suppressed, opted-out and failed-at-send messages are excluded; later bounces stay in and are reported as delivered separately.,4️⃣ Email, SMS and push each count; one status update sent on two channels counts 2.,5️⃣ Split shipments send per package, so the count can exceed orders shipped; divide by shipments, not orders, for sends per shipment.,6️⃣ Dated by send timestamp in the reporting timezone, not by order or delivery date.,7️⃣ Exclude seed and test recipients and messages triggered by internal test orders.

Technical Details

Measure TypeCounter
Aggregation WindowDaily, Weekly, Monthly

Events

SQL Queries

Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
DECLARE start_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY);
DECLARE end_date DATE DEFAULT CURRENT_DATE();
DECLARE reporting_tz STRING DEFAULT 'America/New_York';

-- Delivery notifications sent per day: one per message_id per channel, dated by send timestamp in the reporting timezone
SELECT
  DATE(sent_at, reporting_tz) AS send_date,
  COUNT(DISTINCT CONCAT(message_id, '|', channel)) AS delivery_notifications_sent
FROM `your-project.crm.message_sends`
WHERE message_category = 'delivery_notification'
  -- In-scope shipment status templates only
  AND template_status IN ('shipped', 'out_for_delivery', 'delivered', 'delivery_exception')
  -- Counted at dispatch: suppressed, opted-out and failed-at-send rows excluded; later bounces stay in
  AND send_status = 'sent'
  AND channel IN ('email', 'sms', 'push')
  -- Exclude seed/test recipients and internal test orders
  AND is_seed_recipient = FALSE
  AND is_test_order = FALSE
  AND DATE(sent_at, reporting_tz) BETWEEN start_date AND end_date
GROUP BY send_date
ORDER BY send_date;
Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
-- Relative reporting window and reporting timezone
WITH params AS (
  SELECT
    DATE_SUB(CURRENT_DATE(), 90) AS start_date,
    CURRENT_DATE() AS end_date,
    'America/New_York' AS reporting_tz
)
-- Delivery notifications sent per day: one per message_id per channel, dated by send timestamp in the reporting timezone
SELECT
  TO_DATE(FROM_UTC_TIMESTAMP(s.sent_at, p.reporting_tz)) AS send_date,
  COUNT(DISTINCT CONCAT(s.message_id, '|', s.channel)) AS delivery_notifications_sent
FROM aep_backend_dataset s
CROSS JOIN params p
WHERE s.message_category = 'delivery_notification'
  -- In-scope shipment status templates only
  AND s.template_status IN ('shipped', 'out_for_delivery', 'delivered', 'delivery_exception')
  -- Counted at dispatch: suppressed, opted-out and failed-at-send rows excluded; later bounces stay in
  AND s.send_status = 'sent'
  AND s.channel IN ('email', 'sms', 'push')
  -- Exclude seed/test recipients and internal test orders
  AND s.is_seed_recipient = FALSE
  AND s.is_test_order = FALSE
  AND TO_DATE(FROM_UTC_TIMESTAMP(s.sent_at, p.reporting_tz)) BETWEEN p.start_date AND p.end_date
GROUP BY TO_DATE(FROM_UTC_TIMESTAMP(s.sent_at, p.reporting_tz))
ORDER BY send_date;

Source Data

CRM

Dependencies

Prerequisite: List the dependencies required for this Metric

Dimensions:

shipment-status

Report Attributes

Notification Channel Shipment Status Carrier Delivery Region Fulfillment Method

Recommended Reporting Views

Views
Post-Purchase CommunicationsDelivery Experience OverviewWISMO Deflection

Segment Eligibility

true

Governance

Data SensitivityInternal

Derived KPIs

Governance

Created bydevyendarm
Created on9/27/2026
Last modified bydevyendarm
Last modified on9/27/2026
Version1.0.0
Validation stateqa passed
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/metrics/delivery-notifications-sent.yml

Community Discussion