Delivery Overview

Delivery Overview is a visual observability tool designed to help Segment users diagnose event delivery issues for any cloud-streaming destination receiving events from cloud-streaming sources.

Delivery Overview for RETL destinations, Storage destinations, and Engage Audience Syncs currently in development

This means that Segment is actively developing Delivery Overview features for RETL destinations, Storage destinations, and Engage Audience syncs. Some functionality may change before Delivery Overview for these integrations becomes generally available.

Delivery Overview is generally available for streaming connections (cloud-streaming sources and cloud-streaming destinations). All users of Delivery Overview have access to the Event Delivery tab, and can configure delivery alerts for their destinations.

Key features

Delivery Overview has three core features:

  • Pipeline view: a visual overview of each step your data takes during the delivery process
  • Breakdown table: contains more detail about the events that were processed at each pipeline step
  • Discard table: contains details about the events that failed or were filtered out of your process and allows you to inspect samples of them

You can refine these tables using the time picker and the metric toggle, located under the destination header. With the time picker, you can specify a time period (last 10 minutes, 1 hour, 24 hours, 7 days, 2 weeks, or a custom date range over the last two weeks) for which you’d like to see data. With the metric toggle, you can switch between seeing metrics represented as percentages (for example, 85% of events or a 133% increase in events) or as counts (13 events or an increase of 145 events.) Delivery Overview shows percentages by default.

Pipeline view

The pipeline view provides insights into each step your data is processed by enroute to the destination, with an emphasis on the steps where data can be discarded due to errors or your filter preferences. Each step provides details into counts, change rates, and event details (like the associated Event Type or Event Names), and the discard steps (Failed on ingest, Filtered at source, Filtered at destination, & Failed delivery) provide you with the reasons events were dropped before reaching the destination. Discard steps also include how to control or alter that outcome, when possible. The pipeline view also shows a label between the Filtered at destination and Failed delivery steps indicating how many events are currently pending retry.

The pipeline view shows the following steps:

  • Successfully received: Events that Segment ingested from your source
  • Failed on ingest: Events that Segment received, but were dropped due to internal data validation rules
  • Filtered at source: Events that were discarded due to schema settings or Protocols Tracking Plans
  • Filtered at destination: Events that were discarded due to Destination Filters, filtering in the Integrations object, Destination Insert functions, or per source schema integration filters. Actions destinations also have a filtering capability: for example, if your Action is set to only send Identify events, all other event types will be filtered out. Actions destinations with incomplete triggers or disabled mappings are filtered out at this step. Consent Management users also see events discarded due to consent preferences.
  • Failed delivery: Events that have been discarded due to errors or unmet destination requirements
  • Successful delivery: Events that were successfully delivered to the destination

Actions destinations also include a mapping dropdown, which allows you to select a mapping to filter the events in the Filtered at destination, Failed delivery and Successful delivery pipeline steps. The following image shows an Actions destination filtered to include only Track Page View events in the last three pipeline steps:

A screenshot of the Delivery Overview tab for an Actions destination, with the Track Page View mapping selected.

Breakdown table

The breakdown table provides you with greater detail about the selected events.

To open the breakdown table, select either the first step in the pipeline view (Successfully received,) the last step in the pipeline view (Successful delivery,) or select a discard step and then click on a discard reason.

The breakdown table displays the following details:

  • Event type: The Segment spec event type (Track call vs. Identify call, for example)
  • Event name: The event name, provided by you or the source (not available for inspection at all steps)
  • App version: The app/release version, provided by you or the source (not available for inspection at all steps)
  • Event count: How many of each event either successfully made it through this pipeline step (in the case of the first or last steps in the pipeline view) or were filtered out (if you access it from a discard table)
  • % Change: Insight into how the event counts differ from the last comparable time range as a percentage1

1: Segment calculates the related change percentage by subtracting the percent of events impacted in the previous time period from the percent of impacted events in the current time period. For example, if last week 15% of your events were filtered at a source, but this week, 22% of your events were filtered at a source, you would have a related change percentage of 7%.

Discard table

The discard table provides you with greater detail about the events that failed to deliver or were filtered out of your sources and destinations.

To open the discard table, click on one of the discard steps. If you click on a row in the discard table, you can see the breakdown table for the discarded events.

The discard table displays the following details:

  • Discard reason: Any relevant error code, message, or description associated with the event’s failure. When possible, Delivery Overview links to any troubleshooting information you can use to get your events up and running again. Clicking on a discard reason brings you to the breakdown table where you can see more detail about discarded events. For more context about discard reasons, see the Troubleshooting documentation.
  • Details & Samples: View up to ten samples over the selected time range. Examine the error message and reason for the error or discard and inspect the payloads involved with the attempted transaction (not available for inspection at all steps)
  • Event count: How many of each event were discarded in this pipeline step
  • % Change: Insight into how the event counts differ from the last comparable time range as a percentage1

1: Segment calculates the related change percentage by subtracting the percent of events impacted in the previous time period from the percent of impacted events in the current time period. For example, if last week 15% of your events were filtered at a source, but this week, 22% of your events were filtered at a source, you would have a related change percentage of 7%.

When should I use Delivery Overview?

Delivery Overview is useful to diagnose delivery errors in the following scenarios:

  • When setting up a destination, tracking plan, or filter for the first time: With Delivery Overview, you can verify that the data you’re sending to a new destination, a new tracking plan, or a new filter arrives in your destination as expected.
  • When data is missing from your destination: The pipeline view can help you see where your data is getting “stuck” on the way to your destination, which can help you quickly diagnose and address problems in your data pipeline.
  • When emission or delivery volume fluctuates out of expected norms: Delivery Overview will highlight where the largest rate change(s) occurred and what events were associated with the change.

Delivery Overview in Engage Destinations

Because Engage uses sources for multiple purposes, you can expect to see filtered at destination events with the integrations object in destinations linked to Engage. Engage uses the integrations object to route events to destinations you’ve added to your audiences, traits, and journey steps. As a result, some events aren’t meant to be delivered by the destination, so the integrations object filters them.

Where do I find Delivery Overview?

To view the Delivery Overview page:

  1. Sign into Segment.
  2. From the homepage, navigate to Connection > Destinations and click on the destination you’d like to investigate.
  3. Select the Delivery Overview tab from the destination header.

How do I use Delivery Overview?

To use Delivery Overview:

  1. Navigate to the destination you’d like to review, and select Delivery Overview from the destination header.
  2. On the Delivery Overview tab, select a time period from the time picker. The time picker reflects data in the user’s local time.
    Optional: Turn the metric toggle off if you’d like to see the quantity of events as counts instead of percentages. Delivery Overview shows percentages by default.
  3. Select a success or discard step to view additional context about the events that passed through that step.

How does Delivery Overview differ from other Segment monitoring and observability tools?

With Source Debugger or Event Delivery, you can only verify that events are successfully making it from your source or to your destination. If events fail, you have to troubleshoot to see where in the pipeline your events are getting stuck. With Event Tester, you can verify that your event makes it from your source to your destination, but if the results aren’t what you expected, you’re stuck troubleshooting your source, filters, tracking plans, and destinations.

With Delivery Overview, you can verify that your source receives your events, that any filters and tracking plans work as expected, and that events successfully make it to your destination. Any errors or unexpected behavior can be identified using the pipeline view, leading to quicker resolution.

How can I configure alerts?

You can use the Event Delivery alerting features (Delivery Alerts) by selecting the Alerts tab in the destination header. Once you enable alerts, if the successful delivery rate of all events is less than the threshold percentage in the last 24 hours, you’ll be notified through in-app notification and/or workspace email.

Note that this is dependent on your notification settings. For example, if the threshold is set to 99%, then you’ll be notified each time less than 100% of events fail.

You can also use Connections Alerting, a feature that allows Segment users to receive in-app, email, and Slack notifications related to the performance and throughput of an event-streaming connection.

Connections Alerting allows you to create two different alerts:

  • Source volume alerts: These alerts notify you if your source ingests an abnormally small or large amount of data. For example, if you set a change percentage of 4%, you would be notified when your source ingests less than 96% or more than 104% of the typical event volume.
  • Successful delivery rate alerts: These alerts notify you if your destination’s successful delivery rate falls outside of a percentage that you set. For example, if you set a percentage of 99%, you would be notified if you destination had a successful delivery rate of 98% or below.

Why is the Delivery Overview page only available for cloud-mode destinations?

Similar to Segment’s Event Delivery feature, the Delivery Overview page is only available for server-side integrations (also known as cloud-mode destinations). You won’t be able to use the Delivery Overview page for client side integrations (also known as device-mode destinations) because device-mode data is sent directly to the destination tool’s API. In order to report on deliverability, data must be sent to destinations using a server-side connection.

Troubleshooting

The Delivery Overview pipeline steps Failed on Ingest, Filtered at Source, Filtered at Destination, and Failed Delivery display a discard table with information about why your events failed or were discarded.

This table provides a list of all possible discard reasons available at each pipeline step.

Show all All Failed on Ingest Filtered at Source Filtered at Destination Failed Delivery

Discard reason Error code What happened? Remedy
Failed on Ingest: Events that Segment received, but were dropped due to internal data validation rules
Empty batch result empty_batch_result No messages found for batch result. After processing messages within batch, no messages returned Check the event payload and client instrumentation
Project not found project_not_found The write key is not valid Provide a valid write key.

For more information, see the Locate Your Write Key documentation
Source disabled source_disabled Source is not enabled Check the source settings
Batch is empty empty_batch The batch request contained no messages Check the event payload and client instrumentation.

For more information, see the HTTP API Batch documentation
Multi user error multi_user_error One or more messages within the batch had an error. Only messages without errors were published Review individual payloads for each error.

For more information, see the HTTP API Errors documentation
No userID or anonymousID no_user_anon_id The userID or anonymousID was not provided Check the event payload and client instrumentation.

For more information, see the Anatomy of a Segment message documentation
Event not defined event_not_defined Track event did not have event name Check the event payload and client instrumentation.

For more information, see the Spec: Track documentation
Track event not a string event_not_string Track event name is not a string Check the event payload and client instrumentation.

For more information, see the Spec: Track documentation
Properties field not an object properties_not_object The properties field must be an object type Check the event payload and client instrumentation.

For more information, see the Spec: Track documentation
Traits must be an object traits_not_object The traits field must be an object type Check the event payload and client instrumentation.

For more information, see the Spec: Track documentation
Name must be non-empty string name_not_string For Page or Screen calls, name field was an empty string or not a string Check the event payload and client instrumentation.

For more information, see the Spec: Page documentation
Category field must be a string category_not_string For Page or Screen calls, category field was an empty string or not a string Check the event payload and client instrumentation.

For more information, see the Spec: Page documentation
Identifier missing from payload id_required All payloads require a userId and/or an anonymousId Ensure all payloads have a userId and/or anonymousId.

For more information, see the Anatomy of a Segment message documentation
Identifier not a string id_not_string The userID or anonymousId was an empty string or not a string Check the event payload and client instrumentation.

For more information, see the Anatomy of a Segment message documentation
Consent categoryPreference object does not exist consent_
categorypreferences
_should_exist
context.consent.
categoryPreferences object is required
Check the event payload and instrumentation for the Segment Consent Preference Updated Track event.

For more information, see the Segment Consent Preference Updated event documentation
Consent Categories field must be an object for "Segment Consent Preference Updated" event consent_
categorypreferences
_fields_should_be_object
context.consent.
categoryPreferences must be an object
Check the event payload and instrumentation for the Segment Consent Preference Updated Track event.

For more information, see the Segment Consent Preference Updated event documentation
Consent category preferences not boolean consent_
categorypreferences
_fields_should_be_bool
Consent preferences for the categories must be boolean Check the event payload and instrumentation for the Segment Consent Preference Updated Track event.

For more information, see the Segment Consent Preference Updated event documentation
Device advertisingId not a string device_advertisingid
_should_be_string
advertisingId must be a string Check the event payload and instrumentation for the Segment Consent Preference Updated Track event.
Consent version not a number consent_version_
should_be_number
Version must be a number Check the event payload and instrumentation for the Segment Consent Preference Updated Track event.
Could not decode payload bad_request The payload could have an incorrect content type, body, or something else Fix the payload and include any missing details.

For more information, see the Source Functions documentation
Could not read write key from url unknown_source Failed to find source with [write_key] Verify and use the appropriate function webhook URL.

For more information, see the Source Functions documentation
Could not find source from write key unknown_source Failed to find source with [write_key] Verify and use the appropriate function webhook URL.

For more information, see the Source Functions documentation
Source missing write key unknown_source Failed to find source with [write_key] Verify and use the appropriate function webhook URL.

For more information, see the Source Functions documentation
Could not decode internal settings of the source invalid_settings Function internal settings are invalid Fix the function settings. If you need more information to troubleshoot the function settings, contact support.

For more information, see the Source Functions documentation
Could not parse content-type BAD_REQUEST The payload has an incorrect content type Fix the payload and include any missing details.
Make sure you're using 'application/json' or 'application/x-www-form-urlencoded' as your content-type header value.

For more information, see the Source Functions documentation
Could not parse request body BAD_REQUEST The payload has an incorrect body Ensure the payload uses accurate JSON.

For more information, see the Source Functions documentation
Unsupported content-type BAD_REQUEST The payload has an incorrect content type Fix the payload and include any missing details. Make sure you're using 'application/json' or 'application/x-www-form-urlencoded' as your content-type header value.

For more information, see the Source Functions documentation
Source/project is disabled source_disabled
or
SOURCE_DISABLED
The source/project instance is disabled Enable the source/project instance.

For more information, see the Source Functions documentation
Workspace is locked out locked_workspace The workspace is disabled Contact support for more details
Function not deployed internal The function is not deployed properly Re-deploy the function. Contact support if the issue persists.

For more information, see the Source Functions documentation
Unexpected deploy type internal The function must be deployed as an AWS lambda type Re-deploy the function. Contact support if the issue persists.

For more information, see the Source Functions documentation
Invalid deploy ID internal The function is missing the lambda ARN Re-deploy the function. Contact support if the issue persists.

For more information, see the Source Functions documentation
Could not call tracking API TRACKING_API_FAILED Failed to call tracking API Check the payload. Contact support if issue persists.

For more information, see the HTTP API documentation
Could not call set API SET_API_FAILED Failed to call set API because the client was closed Check the payload. Contact support for more details.

For more information, see the Source Functions documentation
Could not call set API SET_API_FAILED Failed to call set API Check the payload. Contact support for more details.

For more information, see the Source Functions documentation
Failed to encode into lambda input format lambda_err
or
internal
Internal encoding error Contact support for more details
Failed to create lambda client lambda_err Unexpected lambda error Contact support for more details
Lambda API permanent error lambda_err Unexpected lambda error Contact support for more details
Lambda API temporary error lambda_err Unexpected lambda error Contact support for more details
Too many lambda API requests too_many_requests The incoming event traffic rate exceeds the expected rate. Contact support for more details.

For more information, see the Rate Limits documentation
Function timeout FUNCTION_TIMEOUT The function timed out Optimize the function code.

For more information, see the Functions Usage documentation
Function retry error RETRY_ERROR Retry error from function code. Retry attempt will be done Function will be retried. Segment's systems have a retry mechanism where an event will be retried 6 times over a four-hour period with exponential backoff.

For more information, see the Source Functions documentation
Function execution error INVOKE_ERROR The function failed to execute Check the function code for syntax and config issues. Contact support if issue persists.
Failed to decode function output internal Internal error Reach out to support for more details
Failed is not deployed BAD_DEPLOY The function is not deployed properly Re-deploy the function and then reach out to support if issue persists.

For more information, see the Source Functions documentation.
Unexpected DeployType. Supported is aws::lambda BAD_DEPLOY The function is not deployed properly Reach out to support if issue persists.

For more information, see the Source Functions documentation.
Invalid deploy ID, missing lambda ARN BAD_DEPLOY The function is not deployed properly Re-deploy the function and then reach out to support if issue persists.

For more information, see the Source Functions documentation.
Filtered at Source: Events that were discarded due to schema settings or Protocols Tracking Plans
Common schema violation common_schema_violation Event violated common JSON schema of Tracking Plan Check event payload against the connected Tracking Plan Common JSON Schema. If the event passes the correct information, then update the tracking plan common JSON schema with the new information.
or:
Update the source configurations settings to allow events that violate the connected Tracking Plan JSON schema:
Source > Settings > Schema Configurations > Advanced Blocking Controls

For more information, see the Common JSON schema documentation
Event discard setting event_setting The Source is configured to discard events of this type Check source schema filters.

For more information, see the Source Schema Integrations Filters documentation
Schema violation schema_violation Source schema is configured to block events that violate the connected Tracking Plan JSON schema. Check event payload against the connected Tracking Plan Common JSON Schema. If the event passes the correct information, then update the tracking plan common JSON schema with the new information.
or:
Update the source configurations settings to allow events that violate the connected Tracking Plan JSON schema:
Source > Settings > Schema Configurations > Advanced Blocking Controls

For more information, see the Customize your schema controls documentation
Unplanned event unplanned Source schema configured to block events not defined in the connected Tracking Plan Check source Configurations:
Settings > Schema Configurations > to allow unplanned events.
OR:
Add the new event in the connected tracking plan so it's recognized as a planned event. For more information, see the Customize your schema controls documentation
Unplanned and schema violation unplanned_and_
schema_violation
Source schema configured to block events not defined in the connected tracking plan. The event also violated the connected tracking plan JSON schema Update the source schema configurations to allow unplanned events
OR:
Add the new event in the connected tracking plan so it's recognized as a planned event.
Filtered at Destination: Events that were discarded due to Destination Filters, filtering in the Integrations object, or per source schema integration filters
Filtered by rules FILTERED_BY_RULES Event matched a Destination Filter rule To include events like this, change the Destination Filter to be more specific or exclude this event.

For more information, see the Destination Filters documentation
Filtered by integrations object FILTERED_BY_
INTEGRATIONS_OBJECT
The event was filtered because sending to the destination in the integrations object is disabled To include events like this, remove filtering from the integrations object.

For more information, see the Filtering with the integrations object documentation
Unkown integration UNKNOWN_INTEGRATION Destination not registered in the integrations info Check the event payloads integrations object to ensure all listed destinations are valid. Refer to the destination's documentation for acceptable names.

For more information, see the Filtering with the integrations object documentation
Message sent client side MESSAGE_SENT_CLIENT_SIDE The message was already sent client side These events are being sent client side in Device Mode and will not be sent from Segment's servers. Events in this category are sent directly from your website or app to the downstream destination.

For more information, see the Destination methods comparison documentation
Unsupported event type UNSUPPORTED_EVENT_TYPE The destination does not support this event type For more information about the events your destination can consume, see the Filtering with the integrations object documentation
Invalid settings INVALID_SETTINGS The event type is missing one or more required settings Check your integration type.

For more information, see the Destination settings documentation
Functions lock out FUNCTIONS_LOCK_OUT The function wasn't executed because the workspace reached its paid limit for functions To increase your functions limits, upgrade your workspace plan.

For more information, see the Functions usage limits documentation
Internal error INTERNAL Something went wrong Contact support for more information
Action missing mapping or trigger NO_MATCHING_MAPPING The Actions destination is missing either a mapping or trigger for this event Your event does not meet any trigger cases for your Actions mappings. Please add a mapping with a trigger that accepts this event.

For more information, see the Actions destination FAQ
Filtered at mapping FILTERED_AT_MAPPING The event was filtered because it did not match the Actions destination mapping Contact support for more information
Failed data encryption FAILED_DATA_ENCRYPTION Message delivery failed due to data encryption; either there was an issue encrypting data or failed to deliver data with encrypted values Check if the destination can accept encrypted data in the fields being encrypted
Invalid request bad_request The request is either malformed or the function threw an unknown exception Review the payload to ensure that it aligns with Segment's expectations.

For more information, see the HTTP API Errors documentation
Invalid settings invalid_settings The function's internal settings are invalid Fix the function's settings or reach out to support for more details.
Invalid event message_rejected The function threw exceptions such as InvalidEventPayload or ValidationError Fix the payload to contain the data needed by the function
Unsupported content-type unsupported_event_type EventNotSupported or Missing event handler Add the missing handler to the function code
Failed to process request internal Segment failed to process the request Contact support for more information
Too many incoming lambda API requests too_many_requests The incoming event traffic rate exceeds the expected rate Contact support for more information
Function timeout gateway_timeout The function timed out Check the function code or contact support to increase the timeout
Function retry error retry Retry errror from function code Function will be retried automatically
Filtered by end user consent FILTERED_BY_
END_USER_CONSENT
The message was dropped due to the user's consent preferences Contact support for more information
Failed Delivery: Events that have been discarded due to errors or unmet destination requirements
Invalid settings INVALID_SETTINGS The event is missing some required settings as configured for that integration per event type Review your Segment settings and make any necessary updates.

For more information, see the Integration Error Codes documentation
429 429 Too many requests were sent in a time frame These events will be retried automatically.
If the events eventually fail due to too much volume, contact the partner to raise your rate limit.
If the destination allows batching in Segment, you may be able to reduce the total number of requests.

For more information, see the Integration Error Codes documentation
Erefused EREFUSED There was a temporary problem connecting to the destination's API This event will be retried automatically.
If the event eventually fails, your Segment configuration settings may contain some invalid settings, or the integration may not be operational.
If your configurations are valid, consider disabling this integration or conact the intagration partner.

For more information, see the Integration Error Codes documentation
Unsupported event type UNSUPPORTED_EVENT_TYPE The destination does not support this event type Contact support for more information
Message rejected MESSAGE_REJECTED Request was blocked Check the event payload for required fields and data types for all fields and compare it to your destination configuration.

For more information, see the Integration Error Codes documentation
400/Bad request 400
or
BAD_REQUEST
The downstream API rejected the payload Review the Response from Destination tab for more information.

For more context, see the Integration Error Codes documentation
Etimedout ETIMEDOUT
or
etimedout
The downstream destination did not send an API response back to Segment in a reasonable amount of time No action is needed. The delivery will be retried automatically
Enotfound ENOTFOUND The endpoint URL cannot be found or does not exist Check the Request from Segment tab to see which URL the request is being sent to and verify that the URL there is correct
Internal INTERNAL There was a problem connecting to the destination's server No action needed. Events will be retried when there's a successful connection
404 404 The server cannot find the requested resource The server cannot find the requested resource. This can happen for a number of reasons, such as:
The requested resource does not exist.
The requested resource has been moved or deleted.
There is a typo in the URL.
The server is experiencing technical difficulties.
307 307 The requested resource was temporarily redirected Segment will automatically retry the request using the redirected URL
502 502 The server recieved an invalid response from the upstream server No action needed. Segment will try to send the payload again.

For more information, see the Integration Error Codes documentation
503 503 Server could not handle the request No action needed. Segment will try to send the payload again.

For more information, see the Integration Error Codes documentation
Retry RETRY The intitial request was unsuccessful. The request was sent again No action needed. Segment will continue to retry sending the payload.

For more information, see the Integration Error Codes documentation
401 401 The request could not be completed because the authentication credentials are either invalid or expired Re-authenticate your account with the partner and update your authentication settings in Segment.

For more information, see the Integration Error Codes documentation
Econnreset ECONNRESET Segment could not establish a connection to the partner server Your Segment configurations might contain some invalid settings or the integration may no longer be operational. If your configurations are valid, disable this integration or contact the integration partner.

For more information, see the Integration Error Codes documentation

This page was last modified: 09 Apr 2024



Get started with Segment

Segment is the easiest way to integrate your websites & mobile apps data to over 300 analytics and growth tools.
or
Create free account