Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.
The SuprSend Datadog connector streams notification metrics to your Datadog account via OpenTelemetry (OTLP) in real time, with sub-second latency. It covers three key areas of your notification pipeline:
API Requests
Track every API call hitting SuprSend - success/failure counts, error breakdowns, and request volume over time.
Workflow Executions
Monitor workflow performance, catch execution errors early, and identify top failing workflows.
Messages
Follow the full message lifecycle - triggered, delivered, seen, clicked - with delivery errors by vendor and channel.
Enterprise plan feature. The SuprSend Datadog connector is only available on our Enterprise plan.
SuprSend exports suprsend.* metrics to Datadog via OTLP over HTTP. You provide your Datadog OTLP endpoint and API key, choose which events to sync, and SuprSend streams them in real time, with sub-second latency.Once connected you can build custom dashboards, set up monitors and alerts for delivery failures or API errors, slice by any dimension (workspace, tenant, workflow, category, channel, vendor), and correlate notification health with your infrastructure and APM data in Datadog.All metrics are tagged by workspace, tenant, workflow, category, channel, vendor, and error details. See Reported metrics for the full list.
Please refer to your Datadog pricing agreement for information on how custom metrics sent to Datadog are priced for your account.
Get started quickly with our pre-built Datadog dashboard to visualize your SuprSend metrics in a few clicks.
SuprSend Notification Overview dashboard in Datadog
Copy Dashboard Starter Kit JSON
{"title":"SuprSend Notification Dashboard","description":"","layout_type":"ordered","reflow_type":"fixed","tags":[],"template_variables":[{"name":"api_type","prefix":"api_type","available_values":[],"default":"*"},{"name":"workflow_slug","prefix":"workflow_slug","available_values":[],"default":"*"},{"name":"category","prefix":"category","available_values":[],"default":"*"},{"name":"channel","prefix":"channel","available_values":[],"default":"*"},{"name":"vendor","prefix":"vendor","available_values":[],"default":"*"}],"widgets":[{"definition":{"type":"note","content":"## Overview","background_color":"white","font_size":"14","text_align":"left","vertical_align":"top","show_tick":false,"tick_pos":"50%","tick_edge":"left","has_padding":true},"layout":{"x":0,"y":0,"width":12,"height":1}},{"definition":{"type":"query_value","title":"API Requests \u2014 Total","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Total Requests"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.api_request.total{*}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":true,"precision":0},"layout":{"x":0,"y":1,"width":3,"height":2}},{"definition":{"type":"query_value","title":"Workflows \u2014 Total","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Total Executions"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.workflow_execution.total{*}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":true,"precision":0},"layout":{"x":3,"y":1,"width":3,"height":2}},{"definition":{"type":"query_value","title":"Notifications \u2014 Triggered","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Triggered"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.triggered{*}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":true,"precision":0},"layout":{"x":6,"y":1,"width":3,"height":2}},{"definition":{"type":"note","content":"### Glossary\n\n**Requests** \u2014 API/SDK calls made to SuprSend. Failures at this stage typically mean a bad request or missing assets (for example recipient not found, workflow doesn't exist). A failed request does not trigger a workflow execution.\n\n**Workflow Executions** \u2014 Workflows that were actually executed for a recipient. This excludes skipped runs (for example trigger conditions not met, throttle limits hit). Each execution corresponds to one recipient. Errors here stem from issues like variable mismatches, incorrect vendor configuration on a delivery node, or a failed webhook request.\n\n**Notifications** \u2014 Messages sent by SuprSend to the end vendor (for example SendGrid, Twilio, FCM). For out-of-the-box channels, final delivery is handled by the vendor, and delivery errors are reported back by them. The exception is Inbox, where SuprSend handles delivery end-to-end. Common causes of delivery failures include vendor misconfiguration, invalid or expired channel credentials (for example a stale push token), or client-side blocks (for example mailbox full, DND settings).","background_color":"white","font_size":"12","text_align":"left","vertical_align":"top","show_tick":false,"tick_pos":"50%","tick_edge":"left","has_padding":true},"layout":{"x":9,"y":1,"width":3,"height":4}},{"definition":{"type":"query_value","title":"API Requests \u2014 Failed","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Failed"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.api_request.errors{*}.as_count()","aggregator":"sum"}],"response_format":"scalar","conditional_formats":[{"comparator":">","value":0,"palette":"red_on_white"},{"comparator":"<=","value":0,"palette":"green_on_white"}]}],"autoscale":true,"precision":0},"layout":{"x":0,"y":3,"width":3,"height":2}},{"definition":{"type":"query_value","title":"Workflows \u2014 Failed","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1 + query2","alias":"Failed"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.workflow_execution.errors{*}.as_count()","aggregator":"sum"},{"name":"query2","data_source":"metrics","query":"sum:suprsend.broadcast_execution.errors{*}.as_count()","aggregator":"sum"}],"response_format":"scalar","conditional_formats":[{"comparator":">","value":0,"palette":"red_on_white"},{"comparator":"<=","value":0,"palette":"green_on_white"}]}],"autoscale":true,"precision":0},"layout":{"x":3,"y":3,"width":3,"height":2}},{"definition":{"type":"query_value","title":"Delivery Errors","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Delivery Failures"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.delivery_errors{*}.as_count()","aggregator":"sum"}],"response_format":"scalar","conditional_formats":[{"comparator":">","value":0,"palette":"red_on_white"},{"comparator":"<=","value":0,"palette":"green_on_white"}]}],"autoscale":true,"precision":0},"layout":{"x":6,"y":3,"width":3,"height":2}},{"definition":{"type":"note","content":"## API Requests & Failures\n**Requests** \u2014 API calls made to SuprSend (workflow triggers, event tracking, user updates etc.). Use the template variables at the top to filter by `api_type`.","background_color":"white","font_size":"14","text_align":"left","vertical_align":"top","show_tick":false,"tick_pos":"50%","tick_edge":"left","has_padding":true},"layout":{"x":0,"y":5,"width":12,"height":1}},{"definition":{"type":"timeseries","title":"API Requests & Failures Over Time (15 min)","title_size":"16","title_align":"left","show_legend":true,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"requests":[{"formulas":[{"formula":"query1","alias":"Total Requests","style":{"palette":"blue","palette_index":4}},{"formula":"query2","alias":"Failed Requests","style":{"palette":"red","palette_index":4}}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.api_request.total{$api_type}.as_count().rollup(sum, 900)"},{"name":"query2","data_source":"metrics","query":"sum:suprsend.api_request.errors{$api_type}.as_count().rollup(sum, 900)"}],"response_format":"timeseries","display_type":"line","style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"}}],"yaxis":{"include_zero":true}},"layout":{"x":0,"y":6,"width":5,"height":3}},{"definition":{"type":"toplist","title":"Errors by API Type","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Error Count","limit":{"count":10,"order":"desc"}}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.api_request.errors{$api_type} by {api_type}.as_count()","aggregator":"sum"}],"response_format":"scalar"}]},"layout":{"x":5,"y":6,"width":4,"height":3}},{"definition":{"type":"sunburst","title":"Requests by API Type","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.api_request.total{$api_type} by {api_type}.as_count()","aggregator":"sum"}],"response_format":"scalar"}]},"layout":{"x":9,"y":6,"width":3,"height":3}},{"definition":{"type":"note","content":"## Workflow Executions & Failures\n**Executions** \u2014 Workflow and broadcast runs that process notification logic (routing, templates, channel selection). Use the template variables to filter by `workflow_slug` or `category`.","background_color":"white","font_size":"14","text_align":"left","vertical_align":"top","show_tick":false,"tick_pos":"50%","tick_edge":"left","has_padding":true},"layout":{"x":0,"y":9,"width":12,"height":1}},{"definition":{"type":"timeseries","title":"Workflow Executions & Errors Over Time (15 min)","title_size":"16","title_align":"left","show_legend":true,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"requests":[{"formulas":[{"formula":"query1","alias":"Total Executions"},{"formula":"query2","alias":"Workflow Errors","style":{"palette":"red","palette_index":4}},{"formula":"query3","alias":"Broadcast Errors","style":{"palette":"red","palette_index":2}}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.workflow_execution.total{$workflow_slug,$category}.as_count().rollup(sum, 900)"},{"name":"query2","data_source":"metrics","query":"sum:suprsend.workflow_execution.errors{$workflow_slug,$category}.as_count().rollup(sum, 900)"},{"name":"query3","data_source":"metrics","query":"sum:suprsend.broadcast_execution.errors{$workflow_slug,$category}.as_count().rollup(sum, 900)"}],"response_format":"timeseries","display_type":"line","style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"}}],"yaxis":{"include_zero":true}},"layout":{"x":0,"y":10,"width":5,"height":3}},{"definition":{"type":"toplist","title":"Top Failing Workflows","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Errors","limit":{"count":100,"order":"desc"}}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.workflow_execution.errors{$workflow_slug,$category} by {workflow_slug}.as_count()","aggregator":"sum"}],"response_format":"scalar"}]},"layout":{"x":5,"y":10,"width":4,"height":3}},{"definition":{"type":"sunburst","title":"Executions by Workflow","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.workflow_execution.total{$workflow_slug,$category} by {workflow_slug}.as_count()","aggregator":"sum"}],"response_format":"scalar"}]},"layout":{"x":9,"y":10,"width":3,"height":3}},{"definition":{"type":"note","content":"## Notification Delivery & Engagement\n**Delivery** \u2014 Actual notifications sent to end-users via channels (email, SMS, push, WhatsApp, etc.). Use the template variables to filter by `channel` or `vendor`.","background_color":"white","font_size":"14","text_align":"left","vertical_align":"top","show_tick":false,"tick_pos":"50%","tick_edge":"left","has_padding":true},"layout":{"x":0,"y":13,"width":12,"height":1}},{"definition":{"type":"query_value","title":"Triggered","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Triggered"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.triggered{$channel,$vendor}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":true,"precision":0},"layout":{"x":0,"y":14,"width":2,"height":2}},{"definition":{"type":"query_value","title":"Delivered","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Delivered"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.delivered{$channel,$vendor}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":true,"precision":0},"layout":{"x":2,"y":14,"width":2,"height":2}},{"definition":{"type":"query_value","title":"Delivery Failures","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Delivery Failures"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.delivery_errors{$channel,$vendor}.as_count()","aggregator":"sum"}],"response_format":"scalar","conditional_formats":[{"comparator":">","value":0,"palette":"red_on_white"},{"comparator":"<=","value":0,"palette":"green_on_white"}]}],"autoscale":true,"precision":0},"layout":{"x":4,"y":14,"width":2,"height":2}},{"definition":{"type":"query_value","title":"Seen","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Seen"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.seen{$channel,$vendor}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":true,"precision":0},"layout":{"x":6,"y":14,"width":2,"height":2}},{"definition":{"type":"query_value","title":"Clicked","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Clicked"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.clicked{$channel,$vendor}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":true,"precision":0},"layout":{"x":8,"y":14,"width":2,"height":2}},{"definition":{"type":"query_value","title":"% Delivered","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"(query2 / query1) * 100","alias":"% Delivered"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.triggered{$channel,$vendor}.as_count()","aggregator":"sum"},{"name":"query2","data_source":"metrics","query":"sum:suprsend.messages.delivered{$channel,$vendor}.as_count()","aggregator":"sum"}],"response_format":"scalar"}],"autoscale":false,"precision":1,"custom_unit":"%"},"layout":{"x":10,"y":14,"width":2,"height":2}},{"definition":{"type":"timeseries","title":"Delivered & Delivery Errors Over Time (15 min)","title_size":"16","title_align":"left","show_legend":true,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"requests":[{"formulas":[{"formula":"query1","alias":"Triggered"},{"formula":"query2","alias":"Delivered"},{"formula":"query3","alias":"Delivery Errors","style":{"palette":"red","palette_index":4}}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.triggered{$channel,$vendor}.as_count().rollup(sum, 900)"},{"name":"query2","data_source":"metrics","query":"sum:suprsend.messages.delivered{$channel,$vendor}.as_count().rollup(sum, 900)"},{"name":"query3","data_source":"metrics","query":"sum:suprsend.messages.delivery_errors{$channel,$vendor}.as_count().rollup(sum, 900)"}],"response_format":"timeseries","display_type":"line","style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"}}],"yaxis":{"include_zero":true}},"layout":{"x":0,"y":16,"width":6,"height":3}},{"definition":{"type":"timeseries","title":"Seen & Clicked Over Time (15 min)","title_size":"16","title_align":"left","show_legend":true,"legend_layout":"auto","legend_columns":["avg","min","max","value","sum"],"requests":[{"formulas":[{"formula":"query1","alias":"Seen"},{"formula":"query2","alias":"Clicked"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.seen{$channel,$vendor}.as_count().rollup(sum, 900)"},{"name":"query2","data_source":"metrics","query":"sum:suprsend.messages.clicked{$channel,$vendor}.as_count().rollup(sum, 900)"}],"response_format":"timeseries","display_type":"line","style":{"palette":"dog_classic","line_type":"solid","line_width":"normal"}}],"yaxis":{"include_zero":true}},"layout":{"x":6,"y":16,"width":6,"height":3}},{"definition":{"type":"query_table","title":"Delivery & Engagement \u2014 Workflow Level Breakdown","title_size":"16","title_align":"left","requests":[{"formulas":[{"formula":"query1","alias":"Triggered","cell_display_mode":"number"},{"formula":"(query2 / query1) * 100","alias":"% Delivered","cell_display_mode":"number"},{"formula":"(query3 / query2) * 100","alias":"% Seen / Delivered","cell_display_mode":"number"},{"formula":"(query4 / query2) * 100","alias":"% Clicked / Delivered","cell_display_mode":"number"}],"queries":[{"name":"query1","data_source":"metrics","query":"sum:suprsend.messages.triggered{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()","aggregator":"sum"},{"name":"query2","data_source":"metrics","query":"sum:suprsend.messages.delivered{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()","aggregator":"sum"},{"name":"query3","data_source":"metrics","query":"sum:suprsend.messages.seen{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()","aggregator":"sum"},{"name":"query4","data_source":"metrics","query":"sum:suprsend.messages.clicked{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()","aggregator":"sum"}],"response_format":"scalar","sort":{"count":100,"order_by":[{"type":"formula","index":0,"order":"desc"}]}}]},"layout":{"x":0,"y":19,"width":12,"height":5}}]}
To import, visit dashboards, click New Dashboard, then click the gear icon in the top-right corner and choose Import dashboard JSON. Paste the JSON above. Use the copy button to copy the JSON.
Once your metrics are flowing into Datadog, you can set up monitors to get paged when something goes wrong in your notification pipeline. Here are two examples to get you started.
Example 2 - Alert on anomalous message delivery drop
Alert when delivered message volume drops unexpectedly - useful for catching silent failures where messages stop flowing without a corresponding error spike.
Message delivery has dropped below expected levels - {{value}} messages delivered in the last 15 minutes.Investigate: https://app.suprsend.com/logs
Add your notification recipients using @ mentions in the message body.
Click Save.
Scope either monitor to a specific workflow or channel by adding workflow_slug:your-workflow or channel:email to the metric query in step 3. This lets you create targeted monitors for your most critical notification flows.
SuprSend streams the following suprsend.* counter metrics to Datadog. All counters are monotonic sums exported with delta temporality - each data point carries the count for that export window, not a running total.
Track the volume and health of every API call made to SuprSend.
Metric
Description
suprsend.api_request.total
Total number of API requests received by SuprSend. Use the status tag to break down by outcome - completed, partial_failure, or failed.
suprsend.api_request.errors
API requests that failed to process due to an error. Group by api_type to identify which endpoint is failing, and by error_severity to prioritize investigation.
Monitor how your workflows and broadcasts are performing and quickly spot execution failures.
Metric
Description
suprsend.workflow_execution.total
Total number of workflow executions started. Workflow executions are counted per-recipient. Use workflow_slug and tenant_id tags to drill down into specific workflows.
suprsend.workflow_execution.errors
Workflow executions that failed to process due to an error.
suprsend.broadcast_execution.errors
Broadcast executions that failed to process due to an error.
Tags on Workflow Execution metrics
Tag
Description
Example values
workflow_slug
Slug of the workflow that was executed
welcome-flow, order-confirmation
ws_slug
Slug of the SuprSend workspace
my-workspace
ws_uid
Identifier of the SuprSend workspace (environment)
your_ws_uid
tenant_id
Tenant ID if the workflow is scoped to a tenant
tenant_abc
error_severity
Severity level of the error (on error metrics only)
All metrics are scoped to the SuprSend environment (for example production, staging) via the ws_uid tag.
For delivery, seen, and click metrics to be populated for Email, SMS, and WhatsApp, configure https://hub.suprsend.com/webhook/* as a callback URL in your vendor dashboard. See the vendor integration docs for per-vendor instructions.
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"SuprSend: API-first notification infrastructure","colors":{"primary":"#2E70E8","light":"#63A3F7","dark":"#2E70E8"},"logo":"https://mintcdn.com/suprsend/CMaQBA3E8wM1DyFj/images/suprsend-logo.svg?fit=max\u0026auto=format\u0026n=CMaQBA3E8wM1DyFj\u0026q=85\u0026s=f325b9764c629a0b488476db369b8d47","favicon":"https://mintcdn.com/suprsend/5H8hv-jDy8OaCsyX/favicon.svg?fit=max\u0026auto=format\u0026n=5H8hv-jDy8OaCsyX\u0026q=85\u0026s=e9c88c84e18f0fd4a64adb33f5fa3603","api":{"openapi":"openapi.yaml"},"background":{"decoration":"windows"},"navbar":{"links":[{"href":"mailto:support@suprsend.com","label":"Contact Us"}],"primary":{"type":"button","label":"Get Started","href":"https://app.suprsend.com"}},"footer":{"socials":{"x":"https://x.com/suprsend","github":"https://github.com/suprsend","linkedin":"https://linkedin.com/company/suprsend","youtube":"https://youtube.com/@suprsend"}},"seo":{"indexing":"all"},"fonts":{"family":"Inter"},"styling":{"codeblocks":"system","latex":true},"integrations":{"ga4":{"measurementId":"G-PPDYBESP2L"},"gtm":{"tagId":"GTM-T6W3P8RG"},"mixpanel":{"projectToken":"2febb9e078d777860c5624f2579507a7"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Community","icon":"slack","color":{"light":"#f59f0b","dark":"#f59f0b"},"href":"https://join.slack.com/t/suprsendcommunity/shared_invite/zt-3932rw936-XNWY1RC8bsffh4if4ZyoXQ"},{"anchor":"Trust Center","icon":"shield-halved","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://trust.suprsend.com"},{"anchor":"Platform Status","icon":"wifi","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://status.suprsend.com"},{"anchor":"Postman Collection","icon":"code","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://www.postman.com/suprsend/suprsend/collection/16bdmwa/suprsend-apis"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"suprsend","hasAudioNarration":false,"actualSubdomain":"suprsend","customDomains":["docs.suprsend.com"],"gitSource":{"type":"github","owner":"suprsend","repo":"documentation","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae333734c2492fe62cb5f9a","collectionId":"37278b68-1dc8-4a19-977b-205d552098f2","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae333734c2492fe62cb5f9a"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae864d90047c384a18ee40b","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Documentation","count":151},{"language":"default","tag":"Developer Resources","count":105},{"language":"default","tag":"Management API","count":91},{"language":"default","tag":"API Reference","count":86},{"language":"default","tag":"SDKs and APIs","count":81},{"language":"default","tag":"SDKs","count":78},{"language":"default","tag":"CORE CONCEPTS","count":57},{"language":"default","tag":"CLI","count":50},{"language":"default","tag":"SuprSend Client SDK","count":43},{"language":"default","tag":"SuprSend Backend SDK","count":34}],"searchSettings":{"showContentSnippets":true}},"assistantConfig":{"deflection":{"enabled":true,"email":"support@suprsend.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"img{max-width:100%;height:auto}table{display:block}code,pre,table{overflow-x:auto;max-width:100%}@media (max-width:768px){img[width]{width:100%!important;max-width:100%!important;height:auto!important}pre{font-size:13px}}a.card[href=\"https://skills.sh/suprsend/skills\"]{position:relative}a.card[href=\"https://skills.sh/suprsend/skills\"]>img{position:absolute!important;top:1.25rem!important;left:1.5rem!important;width:1.5rem!important;height:1.5rem!important;max-width:1.5rem!important;max-height:1.5rem!important;min-height:1.5rem!important;object-fit:contain!important;z-index:1}a.card[href=\"https://skills.sh/suprsend/skills\"] .px-6.py-5{padding-top:3.25rem!important}a.card[href=\"https://skills.sh/suprsend/skills\"] h2{margin-top:0!important}[data-component-name=mermaid-controls-wrapper]{display:none!important}.mermaid .cluster-label,.mermaid .cluster-label p,.mermaid .edgeLabel,.mermaid .edgeLabel p,.mermaid .nodeLabel,.mermaid .nodeLabel p{color:#4d4d4d!important}.mermaid .cluster-label,.mermaid .edgeLabel,.mermaid .nodeLabel,.mermaid text{fill:#4d4d4d!important}.dark .mermaid .cluster-label,.dark .mermaid .cluster-label p,.dark .mermaid .edgeLabel,.dark .mermaid .edgeLabel p,.dark .mermaid .nodeLabel,.dark .mermaid .nodeLabel p{color:#ccc!important}.dark .mermaid .cluster-label,.dark .mermaid .edgeLabel,.dark .mermaid .nodeLabel,.dark .mermaid text{fill:#ccc!important}.changelog-page-content{padding:0 7rem}@media (max-width:768px){.changelog-page-content{padding:0 1rem}}.ss-flow{--ss-ink:#1f2937;--ss-muted:#6b7280;--ss-line:#e5e7eb;--ss-accent:#2e70e8;--ss-core-bg:#f5f8fe;--ss-core-line:#d4e2fb;--ss-arrow:#9ca3af;display:grid;grid-template-columns:minmax(0,1fr) 1.5rem minmax(0,2.1fr) 1.5rem minmax(0,1fr);align-items:center;margin:1.75rem 0 2rem;font-size:.875rem;line-height:1.4;color:var(--ss-ink)}.dark .ss-flow{--ss-ink:#e5e7eb;--ss-muted:#9ca3af;--ss-line:rgba(255, 255, 255, 0.12);--ss-accent:#63a3f7;--ss-core-bg:rgba(46, 112, 232, 0.1);--ss-core-line:rgba(99, 163, 247, 0.28);--ss-arrow:#6b7280}.ss-flow .ss-flow__label{margin:0 0 .5rem;font-size:.75rem;font-weight:600;color:var(--ss-muted)}.ss-flow .ss-flow__list{list-style:none;margin:0;padding:.5rem .75rem;border:1px solid var(--ss-line);border-radius:10px;font-size:.8125rem}.ss-flow .ss-flow__list li{margin:0;padding:.3125rem 0}.ss-flow .ss-flow__arrow{position:relative;height:1px;margin:1.25rem .25rem 0 .125rem;background:var(--ss-arrow)}.ss-flow .ss-flow__arrow::after{content:\"\";position:absolute;top:-4px;right:-1px;border-top:4.5px solid transparent;border-bottom:4.5px solid transparent;border-left:6px solid var(--ss-arrow)}.ss-flow .ss-flow__core{overflow:hidden;border:1px solid var(--ss-core-line);border-radius:14px;background:var(--ss-core-bg)}.ss-flow .ss-flow__label--core{margin:0;padding:.875rem 1rem 0;font-size:.875rem;color:var(--ss-accent)}.ss-flow .ss-flow__stages{list-style:none;margin:0;padding:.875rem 1rem 1rem}.ss-flow .ss-flow__stage{position:relative;margin:0;padding:0 0 1rem 1.5rem}.ss-flow .ss-flow__stage:last-child{padding-bottom:0}.ss-flow .ss-flow__stage::before{content:\"\";position:absolute;top:.3rem;left:0;z-index:1;width:.625rem;height:.625rem;border-radius:50%;background:var(--ss-accent)}.ss-flow .ss-flow__stage::after{content:\"\";position:absolute;top:.5rem;bottom:-.5rem;left:calc(.3125rem - 1px);width:2px;background:var(--ss-core-line)}.ss-flow .ss-flow__stage:last-child::after{display:none}.ss-flow .ss-flow__stage strong{display:block}.ss-flow .ss-flow__stage span{display:block;margin-top:.125rem;font-size:.8125rem;color:var(--ss-muted)}.ss-flow .ss-flow__logs{margin:0;padding:.625rem 1rem;border-top:1px dashed var(--ss-core-line);font-size:.8125rem;color:var(--ss-muted)}.ss-flow .ss-flow__logs strong,.ss-flow .ss-flow__stage strong{font-weight:600;color:var(--ss-ink)}@media (max-width:640px){.ss-flow{grid-template-columns:minmax(0,1fr)}.ss-flow .ss-flow__list{display:flex;flex-wrap:wrap;gap:0 1rem}.ss-flow .ss-flow__arrow{width:1px;height:1.25rem;margin:.5rem auto}.ss-flow .ss-flow__arrow::after{top:auto;right:auto;bottom:-1px;left:-4px;border-top:6px solid var(--ss-arrow);border-right:4.5px solid transparent;border-bottom:0;border-left:4.5px solid transparent}}"}],"page":{"pagePath":"docs/datadog","slug":"/docs/datadog","pageMetadata":{"title":"Datadog","description":"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.","href":"/docs/datadog"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Frame,Heading,Info,OptimizedImage,Step,Steps,Table,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The SuprSend Datadog connector streams notification metrics to your Datadog account via `,_jsx(_components.a,{href:`https://opentelemetry.io/`,children:`OpenTelemetry (OTLP)`}),` in real time, with `,_jsx(_components.strong,{children:`sub-second latency`}),`. It covers three key areas of your notification pipeline:`]}),`\n`,_jsxs(CardGroup,{cols:3,children:[_jsx(Card,{title:`API Requests`,icon:`server`,href:`#reported-metrics`,children:_jsx(_components.p,{children:`Track every API call hitting SuprSend - success/failure counts, error breakdowns, and request volume over time.`})}),_jsx(Card,{title:`Workflow Executions`,icon:`diagram-project`,href:`#reported-metrics`,children:_jsx(_components.p,{children:`Monitor workflow performance, catch execution errors early, and identify top failing workflows.`})}),_jsx(Card,{title:`Messages`,icon:`envelope`,href:`#reported-metrics`,children:_jsx(_components.p,{children:`Follow the full message lifecycle - triggered, delivered, seen, clicked - with delivery errors by vendor and channel.`})})]}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Enterprise plan feature.`}),` The SuprSend Datadog connector is only available on our `,_jsx(_components.a,{href:`https://suprsend.com/pricing`,children:`Enterprise plan`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsxs(_components.p,{children:[`SuprSend exports `,_jsx(_components.code,{children:`suprsend.*`}),` metrics to Datadog via OTLP over HTTP. You provide your `,_jsx(_components.strong,{children:`Datadog OTLP endpoint`}),` and `,_jsx(_components.strong,{children:`API key`}),`, choose which events to sync, and SuprSend streams them in real time, with `,_jsx(_components.strong,{children:`sub-second latency`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`Once connected you can `,_jsx(_components.strong,{children:`build custom dashboards`}),`, `,_jsx(_components.strong,{children:`set up monitors and alerts`}),` for delivery failures or API errors, `,_jsx(_components.strong,{children:`slice by any dimension`}),` (workspace, tenant, workflow, category, channel, vendor), and `,_jsx(_components.strong,{children:`correlate notification health with your infrastructure and APM data`}),` in Datadog.`]}),`\n`,_jsxs(_components.p,{children:[`All metrics are tagged by workspace, tenant, workflow, category, channel, vendor, and error details. See `,_jsx(_components.a,{href:`#reported-metrics`,children:`Reported metrics`}),` for the full list.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Please refer to your Datadog pricing agreement for information on how custom metrics sent to Datadog are priced for your account.`})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`installing-the-connector`,children:`Installing the connector`}),`\n`,_jsxs(Steps,{children:[_jsxs(Step,{title:`Create a new connector`,children:[_jsxs(_components.p,{children:[`In your SuprSend dashboard, navigate to `,_jsx(_components.a,{href:`https://app.suprsend.com/connectors`,children:_jsx(_components.strong,{children:`Connectors`})}),` and click `,_jsx(_components.strong,{children:`New Connector`}),`.`]}),_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/connectors-list.png?fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=bdfd4f44f24ed3725839aa42494ed8a4`,\"data-og-width\":`2048`,width:`2048`,\"data-og-height\":`486`,height:`486`,\"data-path\":`images/docs/connectors-list.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/connectors-list.png?w=280\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=ad67d4b5ab47e7acea6728cfc3f00cbf 280w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/connectors-list.png?w=560\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=ffe8e92395e4b54710d1bbee5db8165b 560w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/connectors-list.png?w=840\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=64e1596bc821086eb1c3a9fc78b97cea 840w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/connectors-list.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=b87acf2a29fd7e132e3041db74655377 1100w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/connectors-list.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=b8d5a33d86eda06848afe8b0c723efcb 1650w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/connectors-list.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=4ea3eb746cd910624d07a2b9df6bfc4a 2500w`})})]}),_jsxs(Step,{title:`Configure connector settings`,children:[_jsx(_components.p,{children:`Fill in the following fields:`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connector Name`})}),_jsxs(_components.td,{children:[`A label to identify this connector (for example `,_jsx(_components.code,{children:`Datadog Production`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`OTLP Endpoint`})}),_jsx(_components.td,{children:`Select the site that matches your Datadog account’s region from the dropdown`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`API Key`})}),_jsxs(_components.td,{children:[`A Datadog API key from the `,_jsx(_components.a,{href:`https://app.datadoghq.com/organization-settings/api-keys`,children:`API Keys`}),` page. We recommend creating a dedicated key for SuprSend`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Events to sync`})}),_jsxs(_components.td,{children:[`One or more metric events to export (see `,_jsx(_components.a,{href:`#reported-metrics`,children:`Reported metrics`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Protocol`})}),_jsx(_components.td,{children:`HTTP`})]})]})]}),_jsx(Frame,{caption:`Datadog connector configuration`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-connector-settings.png?fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=a4e760ae0a0507309de912f0b082659e`,\"data-og-width\":`1882`,width:`1882`,\"data-og-height\":`1374`,height:`1374`,\"data-path\":`images/docs/datadog-connector-settings.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-connector-settings.png?w=280\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=38d2933bcba9c993aa55396a1ed28dac 280w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-connector-settings.png?w=560\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=aa9dc3c7799bde2f686873a47ee952bb 560w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-connector-settings.png?w=840\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=3d807a0fa5bdcc8d51649c8ee62bb699 840w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-connector-settings.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=dcef434f2bfbfce3b275dd14831977e6 1100w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-connector-settings.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=3162a98bcef80470b6e0c157c70281b6 1650w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-connector-settings.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=04b0b047610840f8150820bf2b7fcbdb 2500w`})})]}),_jsx(Step,{title:`Save the connector`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`. Your metrics will start streaming to Datadog within a few minutes.`]})})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`dashboard-starter-kit`,children:`Dashboard starter kit`}),`\n`,_jsx(_components.p,{children:`Get started quickly with our pre-built Datadog dashboard to visualize your SuprSend metrics in a few clicks.`}),`\n`,_jsx(Frame,{caption:`SuprSend Notification Overview dashboard in Datadog`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-dashboard-preview.png?fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=50489f0c2efe63d5f9879f8e7a98ddc2`,\"data-og-width\":`1024`,width:`1024`,\"data-og-height\":`682`,height:`682`,\"data-path\":`images/docs/datadog-dashboard-preview.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-dashboard-preview.png?w=280\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=2810375a18934a2835acbe7556662f5d 280w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-dashboard-preview.png?w=560\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=ddd06cd663732f14d6c50f66e81ea254 560w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-dashboard-preview.png?w=840\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=dcc90f1279bf871d18e10030749be7dd 840w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-dashboard-preview.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=a11c7a25667dacb3ab3f182f1ecd4f88 1100w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-dashboard-preview.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=6d5ba38b3156ada167c8fc77c5715c5e 1650w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-dashboard-preview.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=c3f37ecc85744a8ab718abcb56bb574d 2500w`})}),`\n`,_jsx(CodeBlock,{filename:`Copy Dashboard Starter Kit JSON`,numberOfLines:`1`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`1`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:'{\"title\":\"SuprSend Notification Dashboard\",\"description\":\"\",\"layout_type\":\"ordered\",\"reflow_type\":\"fixed\",\"tags\":[],\"template_variables\":[{\"name\":\"api_type\",\"prefix\":\"api_type\",\"available_values\":[],\"default\":\"*\"},{\"name\":\"workflow_slug\",\"prefix\":\"workflow_slug\",\"available_values\":[],\"default\":\"*\"},{\"name\":\"category\",\"prefix\":\"category\",\"available_values\":[],\"default\":\"*\"},{\"name\":\"channel\",\"prefix\":\"channel\",\"available_values\":[],\"default\":\"*\"},{\"name\":\"vendor\",\"prefix\":\"vendor\",\"available_values\":[],\"default\":\"*\"}],\"widgets\":[{\"definition\":{\"type\":\"note\",\"content\":\"## Overview\",\"background_color\":\"white\",\"font_size\":\"14\",\"text_align\":\"left\",\"vertical_align\":\"top\",\"show_tick\":false,\"tick_pos\":\"50%\",\"tick_edge\":\"left\",\"has_padding\":true},\"layout\":{\"x\":0,\"y\":0,\"width\":12,\"height\":1}},{\"definition\":{\"type\":\"query_value\",\"title\":\"API Requests \\\\u2014 Total\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Total Requests\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.api_request.total{*}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":0,\"y\":1,\"width\":3,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Workflows \\\\u2014 Total\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Total Executions\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.workflow_execution.total{*}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":3,\"y\":1,\"width\":3,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Notifications \\\\u2014 Triggered\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Triggered\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.triggered{*}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":6,\"y\":1,\"width\":3,\"height\":2}},{\"definition\":{\"type\":\"note\",\"content\":\"### Glossary\\\\n\\\\n**Requests** \\\\u2014 API/SDK calls made to SuprSend. Failures at this stage typically mean a bad request or missing assets (for example recipient not found, workflow doesn\\'t exist). A failed request does not trigger a workflow execution.\\\\n\\\\n**Workflow Executions** \\\\u2014 Workflows that were actually executed for a recipient. This excludes skipped runs (for example trigger conditions not met, throttle limits hit). Each execution corresponds to one recipient. Errors here stem from issues like variable mismatches, incorrect vendor configuration on a delivery node, or a failed webhook request.\\\\n\\\\n**Notifications** \\\\u2014 Messages sent by SuprSend to the end vendor (for example SendGrid, Twilio, FCM). For out-of-the-box channels, final delivery is handled by the vendor, and delivery errors are reported back by them. The exception is Inbox, where SuprSend handles delivery end-to-end. Common causes of delivery failures include vendor misconfiguration, invalid or expired channel credentials (for example a stale push token), or client-side blocks (for example mailbox full, DND settings).\",\"background_color\":\"white\",\"font_size\":\"12\",\"text_align\":\"left\",\"vertical_align\":\"top\",\"show_tick\":false,\"tick_pos\":\"50%\",\"tick_edge\":\"left\",\"has_padding\":true},\"layout\":{\"x\":9,\"y\":1,\"width\":3,\"height\":4}},{\"definition\":{\"type\":\"query_value\",\"title\":\"API Requests \\\\u2014 Failed\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Failed\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.api_request.errors{*}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\",\"conditional_formats\":[{\"comparator\":\">\",\"value\":0,\"palette\":\"red_on_white\"},{\"comparator\":\"\u003c=\",\"value\":0,\"palette\":\"green_on_white\"}]}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":0,\"y\":3,\"width\":3,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Workflows \\\\u2014 Failed\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1 + query2\",\"alias\":\"Failed\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.workflow_execution.errors{*}.as_count()\",\"aggregator\":\"sum\"},{\"name\":\"query2\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.broadcast_execution.errors{*}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\",\"conditional_formats\":[{\"comparator\":\">\",\"value\":0,\"palette\":\"red_on_white\"},{\"comparator\":\"\u003c=\",\"value\":0,\"palette\":\"green_on_white\"}]}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":3,\"y\":3,\"width\":3,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Delivery Errors\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Delivery Failures\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.delivery_errors{*}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\",\"conditional_formats\":[{\"comparator\":\">\",\"value\":0,\"palette\":\"red_on_white\"},{\"comparator\":\"\u003c=\",\"value\":0,\"palette\":\"green_on_white\"}]}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":6,\"y\":3,\"width\":3,\"height\":2}},{\"definition\":{\"type\":\"note\",\"content\":\"## API Requests \u0026 Failures\\\\n**Requests** \\\\u2014 API calls made to SuprSend (workflow triggers, event tracking, user updates etc.). Use the template variables at the top to filter by `api_type`.\",\"background_color\":\"white\",\"font_size\":\"14\",\"text_align\":\"left\",\"vertical_align\":\"top\",\"show_tick\":false,\"tick_pos\":\"50%\",\"tick_edge\":\"left\",\"has_padding\":true},\"layout\":{\"x\":0,\"y\":5,\"width\":12,\"height\":1}},{\"definition\":{\"type\":\"timeseries\",\"title\":\"API Requests \u0026 Failures Over Time (15 min)\",\"title_size\":\"16\",\"title_align\":\"left\",\"show_legend\":true,\"legend_layout\":\"auto\",\"legend_columns\":[\"avg\",\"min\",\"max\",\"value\",\"sum\"],\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Total Requests\",\"style\":{\"palette\":\"blue\",\"palette_index\":4}},{\"formula\":\"query2\",\"alias\":\"Failed Requests\",\"style\":{\"palette\":\"red\",\"palette_index\":4}}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.api_request.total{$api_type}.as_count().rollup(sum, 900)\"},{\"name\":\"query2\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.api_request.errors{$api_type}.as_count().rollup(sum, 900)\"}],\"response_format\":\"timeseries\",\"display_type\":\"line\",\"style\":{\"palette\":\"dog_classic\",\"line_type\":\"solid\",\"line_width\":\"normal\"}}],\"yaxis\":{\"include_zero\":true}},\"layout\":{\"x\":0,\"y\":6,\"width\":5,\"height\":3}},{\"definition\":{\"type\":\"toplist\",\"title\":\"Errors by API Type\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Error Count\",\"limit\":{\"count\":10,\"order\":\"desc\"}}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.api_request.errors{$api_type} by {api_type}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}]},\"layout\":{\"x\":5,\"y\":6,\"width\":4,\"height\":3}},{\"definition\":{\"type\":\"sunburst\",\"title\":\"Requests by API Type\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.api_request.total{$api_type} by {api_type}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}]},\"layout\":{\"x\":9,\"y\":6,\"width\":3,\"height\":3}},{\"definition\":{\"type\":\"note\",\"content\":\"## Workflow Executions \u0026 Failures\\\\n**Executions** \\\\u2014 Workflow and broadcast runs that process notification logic (routing, templates, channel selection). Use the template variables to filter by `workflow_slug` or `category`.\",\"background_color\":\"white\",\"font_size\":\"14\",\"text_align\":\"left\",\"vertical_align\":\"top\",\"show_tick\":false,\"tick_pos\":\"50%\",\"tick_edge\":\"left\",\"has_padding\":true},\"layout\":{\"x\":0,\"y\":9,\"width\":12,\"height\":1}},{\"definition\":{\"type\":\"timeseries\",\"title\":\"Workflow Executions \u0026 Errors Over Time (15 min)\",\"title_size\":\"16\",\"title_align\":\"left\",\"show_legend\":true,\"legend_layout\":\"auto\",\"legend_columns\":[\"avg\",\"min\",\"max\",\"value\",\"sum\"],\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Total Executions\"},{\"formula\":\"query2\",\"alias\":\"Workflow Errors\",\"style\":{\"palette\":\"red\",\"palette_index\":4}},{\"formula\":\"query3\",\"alias\":\"Broadcast Errors\",\"style\":{\"palette\":\"red\",\"palette_index\":2}}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.workflow_execution.total{$workflow_slug,$category}.as_count().rollup(sum, 900)\"},{\"name\":\"query2\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.workflow_execution.errors{$workflow_slug,$category}.as_count().rollup(sum, 900)\"},{\"name\":\"query3\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.broadcast_execution.errors{$workflow_slug,$category}.as_count().rollup(sum, 900)\"}],\"response_format\":\"timeseries\",\"display_type\":\"line\",\"style\":{\"palette\":\"dog_classic\",\"line_type\":\"solid\",\"line_width\":\"normal\"}}],\"yaxis\":{\"include_zero\":true}},\"layout\":{\"x\":0,\"y\":10,\"width\":5,\"height\":3}},{\"definition\":{\"type\":\"toplist\",\"title\":\"Top Failing Workflows\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Errors\",\"limit\":{\"count\":100,\"order\":\"desc\"}}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.workflow_execution.errors{$workflow_slug,$category} by {workflow_slug}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}]},\"layout\":{\"x\":5,\"y\":10,\"width\":4,\"height\":3}},{\"definition\":{\"type\":\"sunburst\",\"title\":\"Executions by Workflow\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.workflow_execution.total{$workflow_slug,$category} by {workflow_slug}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}]},\"layout\":{\"x\":9,\"y\":10,\"width\":3,\"height\":3}},{\"definition\":{\"type\":\"note\",\"content\":\"## Notification Delivery \u0026 Engagement\\\\n**Delivery** \\\\u2014 Actual notifications sent to end-users via channels (email, SMS, push, WhatsApp, etc.). Use the template variables to filter by `channel` or `vendor`.\",\"background_color\":\"white\",\"font_size\":\"14\",\"text_align\":\"left\",\"vertical_align\":\"top\",\"show_tick\":false,\"tick_pos\":\"50%\",\"tick_edge\":\"left\",\"has_padding\":true},\"layout\":{\"x\":0,\"y\":13,\"width\":12,\"height\":1}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Triggered\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Triggered\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.triggered{$channel,$vendor}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":0,\"y\":14,\"width\":2,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Delivered\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Delivered\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.delivered{$channel,$vendor}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":2,\"y\":14,\"width\":2,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Delivery Failures\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Delivery Failures\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.delivery_errors{$channel,$vendor}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\",\"conditional_formats\":[{\"comparator\":\">\",\"value\":0,\"palette\":\"red_on_white\"},{\"comparator\":\"\u003c=\",\"value\":0,\"palette\":\"green_on_white\"}]}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":4,\"y\":14,\"width\":2,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Seen\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Seen\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.seen{$channel,$vendor}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":6,\"y\":14,\"width\":2,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"Clicked\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Clicked\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.clicked{$channel,$vendor}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":true,\"precision\":0},\"layout\":{\"x\":8,\"y\":14,\"width\":2,\"height\":2}},{\"definition\":{\"type\":\"query_value\",\"title\":\"% Delivered\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"(query2 / query1) * 100\",\"alias\":\"% Delivered\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.triggered{$channel,$vendor}.as_count()\",\"aggregator\":\"sum\"},{\"name\":\"query2\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.delivered{$channel,$vendor}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\"}],\"autoscale\":false,\"precision\":1,\"custom_unit\":\"%\"},\"layout\":{\"x\":10,\"y\":14,\"width\":2,\"height\":2}},{\"definition\":{\"type\":\"timeseries\",\"title\":\"Delivered \u0026 Delivery Errors Over Time (15 min)\",\"title_size\":\"16\",\"title_align\":\"left\",\"show_legend\":true,\"legend_layout\":\"auto\",\"legend_columns\":[\"avg\",\"min\",\"max\",\"value\",\"sum\"],\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Triggered\"},{\"formula\":\"query2\",\"alias\":\"Delivered\"},{\"formula\":\"query3\",\"alias\":\"Delivery Errors\",\"style\":{\"palette\":\"red\",\"palette_index\":4}}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.triggered{$channel,$vendor}.as_count().rollup(sum, 900)\"},{\"name\":\"query2\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.delivered{$channel,$vendor}.as_count().rollup(sum, 900)\"},{\"name\":\"query3\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.delivery_errors{$channel,$vendor}.as_count().rollup(sum, 900)\"}],\"response_format\":\"timeseries\",\"display_type\":\"line\",\"style\":{\"palette\":\"dog_classic\",\"line_type\":\"solid\",\"line_width\":\"normal\"}}],\"yaxis\":{\"include_zero\":true}},\"layout\":{\"x\":0,\"y\":16,\"width\":6,\"height\":3}},{\"definition\":{\"type\":\"timeseries\",\"title\":\"Seen \u0026 Clicked Over Time (15 min)\",\"title_size\":\"16\",\"title_align\":\"left\",\"show_legend\":true,\"legend_layout\":\"auto\",\"legend_columns\":[\"avg\",\"min\",\"max\",\"value\",\"sum\"],\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Seen\"},{\"formula\":\"query2\",\"alias\":\"Clicked\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.seen{$channel,$vendor}.as_count().rollup(sum, 900)\"},{\"name\":\"query2\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.clicked{$channel,$vendor}.as_count().rollup(sum, 900)\"}],\"response_format\":\"timeseries\",\"display_type\":\"line\",\"style\":{\"palette\":\"dog_classic\",\"line_type\":\"solid\",\"line_width\":\"normal\"}}],\"yaxis\":{\"include_zero\":true}},\"layout\":{\"x\":6,\"y\":16,\"width\":6,\"height\":3}},{\"definition\":{\"type\":\"query_table\",\"title\":\"Delivery \u0026 Engagement \\\\u2014 Workflow Level Breakdown\",\"title_size\":\"16\",\"title_align\":\"left\",\"requests\":[{\"formulas\":[{\"formula\":\"query1\",\"alias\":\"Triggered\",\"cell_display_mode\":\"number\"},{\"formula\":\"(query2 / query1) * 100\",\"alias\":\"% Delivered\",\"cell_display_mode\":\"number\"},{\"formula\":\"(query3 / query2) * 100\",\"alias\":\"% Seen / Delivered\",\"cell_display_mode\":\"number\"},{\"formula\":\"(query4 / query2) * 100\",\"alias\":\"% Clicked / Delivered\",\"cell_display_mode\":\"number\"}],\"queries\":[{\"name\":\"query1\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.triggered{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()\",\"aggregator\":\"sum\"},{\"name\":\"query2\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.delivered{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()\",\"aggregator\":\"sum\"},{\"name\":\"query3\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.seen{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()\",\"aggregator\":\"sum\"},{\"name\":\"query4\",\"data_source\":\"metrics\",\"query\":\"sum:suprsend.messages.clicked{$workflow_slug,$category,$channel,$vendor} by {workflow_slug,category,channel,vendor}.as_count()\",\"aggregator\":\"sum\"}],\"response_format\":\"scalar\",\"sort\":{\"count\":100,\"order_by\":[{\"type\":\"formula\",\"index\":0,\"order\":\"desc\"}]}}]},\"layout\":{\"x\":0,\"y\":19,\"width\":12,\"height\":5}}]}'})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`To import, visit `,_jsx(_components.a,{href:`https://app.datadoghq.com/dashboard/lists`,children:`dashboards`}),`, click `,_jsx(_components.strong,{children:`New Dashboard`}),`, then click the `,_jsx(_components.strong,{children:`gear icon`}),` in the top-right corner and choose `,_jsx(_components.strong,{children:`Import dashboard JSON`}),`. Paste the JSON above. Use the copy button to copy the JSON.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`setting-up-alerts`,children:`Setting up alerts`}),`\n`,_jsx(_components.p,{children:`Once your metrics are flowing into Datadog, you can set up monitors to get paged when something goes wrong in your notification pipeline. Here are two examples to get you started.`}),`\n`,_jsx(Heading,{level:`3`,id:`example-1-alert-on-delivery-error-rate-spike`,children:`Example 1 - Alert on delivery error rate spike`}),`\n`,_jsx(_components.p,{children:`Alert when message delivery errors exceed a threshold - useful for catching vendor-side failures or misconfigurations before users notice.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In Datadog, go to `,_jsx(_components.a,{href:`https://app.datadoghq.com/monitors/create`,children:_jsx(_components.strong,{children:`Monitors → New Monitor`})}),` and select `,_jsx(_components.a,{href:`https://docs.datadoghq.com/monitors/types/metric/`,children:_jsx(_components.strong,{children:`Metric`})}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Choose the detection method`}),`, select `,_jsx(_components.strong,{children:`Threshold Alert`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Define the metric`}),`, enter:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`sum:suprsend.messages.delivery_errors{*}.as_count()`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Set `,_jsx(_components.strong,{children:`Evaluate the bounds for the last`}),` to `,_jsx(_components.strong,{children:`5 minutes`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Set alert conditions`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Trigger when the evaluated value is`}),`: `,_jsx(_components.code,{children:`above`}),` the threshold`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Alert threshold`}),`: `,_jsx(_components.code,{children:`50`}),` - adjust based on your typical delivery volume. A good starting point is 1–2% of your average message volume per 5 minutes.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Warning threshold`}),`: `,_jsx(_components.code,{children:`20`}),` - optional, but useful for early visibility before a full alert fires`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`If data is missing`}),`: set to `,_jsx(_components.strong,{children:`Evaluate as zero`})]}),`\n`]}),`\n`,_jsx(Frame,{caption:`Metric and alert condition configuration in Datadog`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-threshold.png?fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=6b0ad6bcbc72f62ba1a7fd021c1fef91`,\"data-og-width\":`1012`,width:`1012`,\"data-og-height\":`1448`,height:`1448`,\"data-path\":`images/docs/datadog-alert-threshold.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-threshold.png?w=280\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=cf2d9f95f1ef4aad52a4f3bd87572b70 280w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-threshold.png?w=560\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=f51484a71db3ad0da77dbb74e3627c9f 560w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-threshold.png?w=840\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=bc89396a91482cc5cbb60cdfef992f86 840w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-threshold.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=e7bce13f8e7d115bb5ce4fb857363aba 1100w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-threshold.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=18db38a526a12d16daa7b26cf361a0dc 1650w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-threshold.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=c2b474f3ef1ae9be4bd799a5ddcb9dbc 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.a,{href:`https://docs.datadoghq.com/monitors/notify/`,children:_jsx(_components.strong,{children:`Configure notifications \u0026 automations`})}),`, give the monitor a name (for example `,_jsx(_components.code,{children:`SuprSend — Delivery Error Spike`}),`) and add a message with context:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Delivery errors are elevated - {{value}} errors in the last 5 minutes.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Investigate: https://app.suprsend.com/logs`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Add your notification recipients (email, Slack, PagerDuty, etc.) using `,_jsx(_components.strong,{children:`@ mentions`}),` in the message body.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`example-2-alert-on-anomalous-message-delivery-drop`,children:`Example 2 - Alert on anomalous message delivery drop`}),`\n`,_jsx(_components.p,{children:`Alert when delivered message volume drops unexpectedly - useful for catching silent failures where messages stop flowing without a corresponding error spike.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`In Datadog, go to `,_jsx(_components.a,{href:`https://app.datadoghq.com/monitors/create`,children:_jsx(_components.strong,{children:`Monitors → New Monitor`})}),` and select `,_jsx(_components.strong,{children:`Metric`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Choose the detection method`}),`, select `,_jsx(_components.a,{href:`https://docs.datadoghq.com/monitors/types/anomaly/`,children:_jsx(_components.strong,{children:`Anomaly Detection`})}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Define the metric`}),`, enter:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`sum:suprsend.messages.delivered{*}.as_count()`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Set `,_jsx(_components.strong,{children:`Evaluate the bounds for the last`}),` to `,_jsx(_components.strong,{children:`15 minutes`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Set alert conditions`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Trigger when the evaluated values have been`}),`: `,_jsx(_components.code,{children:`below`}),` the bounds - so you’re only alerted when delivery drops, not when it spikes`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Alert threshold`}),`: `,_jsx(_components.code,{children:`75`}),` - alert when 75% or more of the values in the window fall below the expected range`]}),`\n`,_jsxs(_components.li,{children:[`Under `,_jsx(_components.strong,{children:`Advanced options → Anomaly detection algorithm options`}),`: set deviations to `,_jsx(_components.code,{children:`2`}),` and keep the algorithm as `,_jsx(_components.strong,{children:`basic`})]}),`\n`]}),`\n`,_jsx(Frame,{caption:`Anomaly detection configuration in Datadog`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-anomaly.png?fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=fdecc4ff0e1ab2fcefa751042355c2b5`,\"data-og-width\":`1764`,width:`1764`,\"data-og-height\":`1474`,height:`1474`,\"data-path\":`images/docs/datadog-alert-anomaly.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-anomaly.png?w=280\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=8919ea84144dae05e8282eb47c105532 280w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-anomaly.png?w=560\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=5bfe6dd2f7081f43ba409d5ea1232959 560w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-anomaly.png?w=840\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=74574b22da6c80c8cbc66160a244c9fc 840w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-anomaly.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=441654dcc2506eddd7683ed55bfc9788 1100w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-anomaly.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=5507bacbd49079a6d8219de0d51524eb 1650w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-alert-anomaly.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=896fe2feb882480d776ff26d3cb7b568 2500w`})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Under `,_jsx(_components.a,{href:`https://docs.datadoghq.com/monitors/notify/`,children:_jsx(_components.strong,{children:`Configure notifications \u0026 automations`})}),`, give the monitor a name (for example `,_jsx(_components.code,{children:`SuprSend — Delivery Drop Anomaly`}),`) and add a message:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`3`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Message delivery has dropped below expected levels - {{value}} messages delivered in the last 15 minutes.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Investigate: https://app.suprsend.com/logs`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Add your notification recipients using `,_jsx(_components.strong,{children:`@ mentions`}),` in the message body.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Scope either monitor to a specific workflow or channel by adding `,_jsx(_components.code,{children:`workflow_slug:your-workflow`}),` or `,_jsx(_components.code,{children:`channel:email`}),` to the metric query in step 3. This lets you create targeted monitors for your most critical notification flows.`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`reported-metrics`,children:`Reported metrics`}),`\n`,_jsxs(_components.p,{children:[`SuprSend streams the following `,_jsx(_components.code,{children:`suprsend.*`}),` counter metrics to Datadog. All counters are monotonic sums exported with delta temporality - each data point carries the count for that export window, not a running total.`]}),`\n`,_jsx(Heading,{level:`3`,id:`api-requests`,children:`API Requests`}),`\n`,_jsx(_components.p,{children:`Track the volume and health of every API call made to SuprSend.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Metric`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.api_request.total`})}),_jsxs(_components.td,{children:[`Total number of API requests received by SuprSend. Use the `,_jsx(_components.code,{children:`status`}),` tag to break down by outcome - `,_jsx(_components.code,{children:`completed`}),`, `,_jsx(_components.code,{children:`partial_failure`}),`, or `,_jsx(_components.code,{children:`failed`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.api_request.errors`})}),_jsxs(_components.td,{children:[`API requests that failed to process due to an error. Group by `,_jsx(_components.code,{children:`api_type`}),` to identify which endpoint is failing, and by `,_jsx(_components.code,{children:`error_severity`}),` to prioritize investigation.`]})]})]})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Tags on API Request metrics`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tag`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Example values`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`api_type`})}),_jsx(_components.td,{children:`The SuprSend API endpoint that was called`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`workflow_trigger`}),`, `,_jsx(_components.code,{children:`broadcast_trigger`}),`, `,_jsx(_components.code,{children:`user_edit`}),`, `,_jsx(_components.code,{children:`event`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`method`})}),_jsx(_components.td,{children:`HTTP method of the request`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`POST`}),`, `,_jsx(_components.code,{children:`GET`}),`, `,_jsx(_components.code,{children:`PUT`}),`, `,_jsx(_components.code,{children:`PATCH`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`status`})}),_jsx(_components.td,{children:`Outcome of the request`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`completed`}),`, `,_jsx(_components.code,{children:`partial_failure`}),`, `,_jsx(_components.code,{children:`failed`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ws_uid`})}),_jsx(_components.td,{children:`Identifier of the SuprSend workspace (environment)`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`your_ws_uid`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ws_slug`})}),_jsx(_components.td,{children:`Slug of the SuprSend workspace`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`staging`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`tenant_id`})}),_jsx(_components.td,{children:`Tenant ID if the request is scoped to a tenant`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`tenant_abc`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`error_severity`})}),_jsx(_components.td,{children:`Severity level of the error (on error metrics only)`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`error`}),`, `,_jsx(_components.code,{children:`warning`})]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`workflow-executions`,children:`Workflow Executions`}),`\n`,_jsx(_components.p,{children:`Monitor how your workflows and broadcasts are performing and quickly spot execution failures.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Metric`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.workflow_execution.total`})}),_jsxs(_components.td,{children:[`Total number of workflow executions started. Workflow executions are counted per-recipient. Use `,_jsx(_components.code,{children:`workflow_slug`}),` and `,_jsx(_components.code,{children:`tenant_id`}),` tags to drill down into specific workflows.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.workflow_execution.errors`})}),_jsx(_components.td,{children:`Workflow executions that failed to process due to an error.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.broadcast_execution.errors`})}),_jsx(_components.td,{children:`Broadcast executions that failed to process due to an error.`})]})]})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Tags on Workflow Execution metrics`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tag`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Example values`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`workflow_slug`})}),_jsx(_components.td,{children:`Slug of the workflow that was executed`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`welcome-flow`}),`, `,_jsx(_components.code,{children:`order-confirmation`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ws_slug`})}),_jsx(_components.td,{children:`Slug of the SuprSend workspace`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`my-workspace`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ws_uid`})}),_jsx(_components.td,{children:`Identifier of the SuprSend workspace (environment)`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`your_ws_uid`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`tenant_id`})}),_jsx(_components.td,{children:`Tenant ID if the workflow is scoped to a tenant`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`tenant_abc`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`error_severity`})}),_jsx(_components.td,{children:`Severity level of the error (on error metrics only)`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`error`})})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`messages`,children:`Messages`}),`\n`,_jsx(_components.p,{children:`Follow the full lifecycle of every message - from trigger through delivery, open, and click - and monitor delivery failures by vendor and channel.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Metric`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.messages.triggered`})}),_jsxs(_components.td,{children:[`Total number of messages triggered. Slice by `,_jsx(_components.code,{children:`channel`}),` and `,_jsx(_components.code,{children:`vendor`}),` to see volume distribution.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.messages.delivered`})}),_jsx(_components.td,{children:`Total number of messages delivered to the recipient.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.messages.delivery_errors`})}),_jsxs(_components.td,{children:[`Messages that failed to deliver due to an error. Use `,_jsx(_components.code,{children:`vendor`}),` / `,_jsx(_components.code,{children:`channel`}),` tags to isolate the error source.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.messages.seen`})}),_jsx(_components.td,{children:`Total number of messages seen by the recipient. Requires vendor webhook callbacks to be configured (see note below).`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`suprsend.messages.clicked`})}),_jsx(_components.td,{children:`Total number of messages clicked by the recipient. Requires vendor webhook callbacks to be configured (see note below).`})]})]})]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Tags on Message metrics`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Tag`}),_jsx(_components.th,{children:`Description`}),_jsx(_components.th,{children:`Example values`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ws_slug`})}),_jsx(_components.td,{children:`Slug of the SuprSend workspace`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`my-workspace`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`ws_uid`})}),_jsx(_components.td,{children:`Identifier of the SuprSend workspace (environment)`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`your_ws_uid`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`tenant_id`})}),_jsx(_components.td,{children:`Tenant ID if the message is scoped to a tenant`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`tenant_abc`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`category`})}),_jsx(_components.td,{children:`Preference category of the parent workflow`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`transactional`}),`, `,_jsx(_components.code,{children:`promotional`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`root_category`})}),_jsx(_components.td,{children:`Root category that the preference category belongs to`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`system`}),`, `,_jsx(_components.code,{children:`transactional`}),`, `,_jsx(_components.code,{children:`promotional`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`channel`})}),_jsx(_components.td,{children:`Delivery channel used for the message`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`email`}),`, `,_jsx(_components.code,{children:`sms`}),`, `,_jsx(_components.code,{children:`androidpush`}),`, `,_jsx(_components.code,{children:`iospush`}),`, `,_jsx(_components.code,{children:`webpush`}),`, `,_jsx(_components.code,{children:`whatsapp`}),`, `,_jsx(_components.code,{children:`inbox`}),`, `,_jsx(_components.code,{children:`slack`}),`, `,_jsx(_components.code,{children:`ms_teams`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`vendor`})}),_jsx(_components.td,{children:`Vendor used to deliver the message`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`mailgun`}),`, `,_jsx(_components.code,{children:`twilio`}),`, `,_jsx(_components.code,{children:`firebase`}),`, `,_jsx(_components.code,{children:`sendgrid`}),`, etc.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`workflow_slug`})}),_jsx(_components.td,{children:`Slug of the workflow that generated the message`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`welcome-flow`}),`, `,_jsx(_components.code,{children:`order-confirmation`})]})]})]})]}),`\n`,_jsx(Info,{children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`All metrics are scoped to the SuprSend environment (for example `,_jsx(_components.code,{children:`production`}),`, `,_jsx(_components.code,{children:`staging`}),`) via the `,_jsx(_components.code,{children:`ws_uid`}),` tag.`]}),`\n`,_jsxs(_components.li,{children:[`For delivery, seen, and click metrics to be populated for Email, SMS, and WhatsApp, configure `,_jsx(_components.code,{children:`https://hub.suprsend.com/webhook/*`}),` as a callback URL in your vendor dashboard. See the `,_jsx(_components.a,{href:`/docs/vendors`,children:`vendor integration docs`}),` for per-vendor instructions.`]}),`\n`,_jsxs(_components.li,{children:[`For error details, the `,_jsx(_components.a,{href:`https://app.suprsend.com`,children:`SuprSend dashboard`}),` provides more granular information via `,_jsx(_components.a,{href:`/docs/logging`,children:`Logs`}),` and `,_jsx(_components.a,{href:`/docs/analytics`,children:`Analytics`}),`.`]}),`\n`]})}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`disabling-the-connector`,children:`Disabling the connector`}),`\n`,_jsxs(_components.p,{children:[`To pause metrics streaming, open the connector from the `,_jsx(_components.a,{href:`https://app.suprsend.com/connectors`,children:_jsx(_components.strong,{children:`Connectors`})}),` page and toggle `,_jsx(_components.strong,{children:`Enable sync`}),` off. Re-enable it at any time to resume.`]}),`\n`,_jsx(Frame,{caption:`Toggle Enable sync off to pause metrics streaming`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-disable-sync.png?fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=de5c80cb1572a473d695ab5202be7d53`,\"data-og-width\":`1892`,width:`1892`,\"data-og-height\":`616`,height:`616`,\"data-path\":`images/docs/datadog-disable-sync.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-disable-sync.png?w=280\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=eed79ce1f01d8f7212e7942ad8eec15b 280w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-disable-sync.png?w=560\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=bbb09b8a36d5fb41a7fb33bfc002d44b 560w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-disable-sync.png?w=840\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=ee7f5de80ab679e3316459f6401c20e3 840w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-disable-sync.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=e338bf13868fe0022fcaa5e956a21e42 1100w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-disable-sync.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=6483035074781ec72d5e72e1ea5be783 1650w, https://mintcdn.com/suprsend/-qfetk0341zDe-jx/images/docs/datadog-disable-sync.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-qfetk0341zDe-jx\u0026q=85\u0026s=ba042f045d390e26ff8d4554c7b9208d 2500w`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Datadog","description":"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.","href":"/docs/datadog"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How it works","slug":"how-it-works","depth":2,"children":[]},{"title":"Installing the connector","slug":"installing-the-connector","depth":2,"children":[]},{"title":"Dashboard starter kit","slug":"dashboard-starter-kit","depth":2,"children":[]},{"title":"Setting up alerts","slug":"setting-up-alerts","depth":2,"children":[{"title":"Example 1 - Alert on delivery error rate spike","slug":"example-1-alert-on-delivery-error-rate-spike","depth":3,"children":[]},{"title":"Example 2 - Alert on anomalous message delivery drop","slug":"example-2-alert-on-anomalous-message-delivery-drop","depth":3,"children":[]}]},{"title":"Reported metrics","slug":"reported-metrics","depth":2,"children":[{"title":"API Requests","slug":"api-requests","depth":3,"children":[]},{"title":"Workflow Executions","slug":"workflow-executions","depth":3,"children":[]},{"title":"Messages","slug":"messages","depth":3,"children":[]}]},{"title":"Disabling the connector","slug":"disabling-the-connector","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/suprsend/1ff47b86af33ef76/apollo-tracker.js"],"subdomain":"suprsend","siteName":"SuprSend: API-first notification infrastructure","title":"Datadog - SuprSend: API-first notification infrastructure","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-16T05:41:11.384Z","originalFileLocation":"docs/datadog.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.\">\u003cmeta data-mint-head name=\"application-name\" content=\"SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Datadog - SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head property=\"og:description\" content=\"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.suprsend.com/docs/datadog\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://suprsend.mintlify.app/_mintlify/api/og/v2?division=Connectors\u0026amp;title=Datadog\u0026amp;description=Stream+real+time+SuprSend+notification+metrics%2C+API+requests%2C+and+delivery+events+to+your+Datadog+account+via+OpenTelemetry+OTLP+with+sub-second+latency.\u0026amp;theme=77e430d508312c14f721c90a\u0026amp;signature=f61895adc14d70c89f7f93c0711811a3edfde25c15aac3abdd43dfe408a01888\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Datadog - SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://suprsend.mintlify.app/_mintlify/api/og/v2?division=Connectors\u0026amp;title=Datadog\u0026amp;description=Stream+real+time+SuprSend+notification+metrics%2C+API+requests%2C+and+delivery+events+to+your+Datadog+account+via+OpenTelemetry+OTLP+with+sub-second+latency.\u0026amp;theme=77e430d508312c14f721c90a\u0026amp;signature=f61895adc14d70c89f7f93c0711811a3edfde25c15aac3abdd43dfe408a01888\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/suprsend/FnIDjx0xTYX1D8EZ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"SuprSend: API-first notification infrastructure\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2E70E8\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.suprsend.com/docs/datadog\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/datadog.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.suprsend.com/#organization\",\"name\":\"SuprSend: API-first notification infrastructure\",\"url\":\"https://docs.suprsend.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/suprsend/CMaQBA3E8wM1DyFj/images/suprsend-logo.svg?fit=max\u0026auto=format\u0026n=CMaQBA3E8wM1DyFj\u0026q=85\u0026s=f325b9764c629a0b488476db369b8d47\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.suprsend.com#website\",\"name\":\"SuprSend: API-first notification infrastructure\",\"url\":\"https://docs.suprsend.com\",\"publisher\":{\"@id\":\"https://docs.suprsend.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.suprsend.com/docs/datadog#webpage\",\"url\":\"https://docs.suprsend.com/docs/datadog\",\"name\":\"Datadog\",\"description\":\"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.\",\"dateModified\":\"2026-10-16T05:41:11.384Z\",\"isPartOf\":{\"@id\":\"https://docs.suprsend.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.suprsend.com/docs/datadog#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.suprsend.com/docs/datadog#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"INTEGRATIONS\",\"item\":\"https://docs.suprsend.com/docs/outbound-webhook\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Connectors\",\"item\":\"https://docs.suprsend.com/docs/connectors\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Datadog\",\"item\":\"https://docs.suprsend.com/docs/datadog\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.suprsend.com/docs/datadog#article\",\"headline\":\"Datadog\",\"name\":\"Datadog\",\"description\":\"Stream real time SuprSend notification metrics, API requests, and delivery events to your Datadog account via OpenTelemetry OTLP with sub-second latency.\",\"url\":\"https://docs.suprsend.com/docs/datadog\",\"mainEntityOfPage\":{\"@id\":\"https://docs.suprsend.com/docs/datadog#webpage\"},\"dateModified\":\"2026-10-16T05:41:11.384Z\",\"publisher\":{\"@id\":\"https://docs.suprsend.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.suprsend.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"SuprSend: API-first notification infrastructure\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"SuprSend: API-first notification infrastructure","nav":{"global":{"anchors":[{"anchor":"Community","icon":"slack","color":{"light":"#f59f0b","dark":"#f59f0b"},"href":"https://join.slack.com/t/suprsendcommunity/shared_invite/zt-3932rw936-XNWY1RC8bsffh4if4ZyoXQ"},{"anchor":"Trust Center","icon":"shield-halved","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://trust.suprsend.com"},{"anchor":"Platform Status","icon":"wifi","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://status.suprsend.com"},{"anchor":"Postman Collection","icon":"code","color":{"light":"#2564eb","dark":"#2564eb"},"href":"https://www.postman.com/suprsend/suprsend/collection/16bdmwa/suprsend-apis"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"GETTING STARTED","pages":[{"title":"What is SuprSend?","href":"/docs/what-is-suprsend"},{"group":"Quick Start Guide","pages":[{"title":"Quick start","sidebarTitle":"Overview","href":"/docs/quick-start-guide"},{"title":"Core Concepts - Notifications and SuprSend","sidebarTitle":"Core concepts","href":"/docs/core-concepts"},{"title":"Integrate SuprSend","sidebarTitle":"Integrate SuprSend","href":"/docs/integrate-suprsend"},{"title":"Add a channel","sidebarTitle":"Add a channel","href":"/docs/add-a-channel"},{"title":"Send a broadcast","sidebarTitle":"Send a broadcast","href":"/docs/send-a-broadcast"}]},{"group":"Best Practices","pages":[{"title":"Notification System Design","href":"/docs/best-practices-notification-system-design"},{"title":"Batching \u0026 Digest","href":"/docs/best-practices-for-batching-digest"}]},{"group":"Plan Your Integration","pages":[{"title":"Migrate in-house Notification System","href":"/docs/migrating-your-existing-notifications"},{"title":"Migrate from MagicBell to SuprSend","href":"/docs/migrate-from-magicbell-to-suprsend"}]},{"title":"Go-live checklist","href":"/docs/go-live-checklist"},{"group":"Example Apps","pages":[{"title":"Task Management App with React","sidebarTitle":"Task Management","tag":"REACT","href":"/docs/task-management-app-guide"},{"title":"B2B2C Restaurant Platform with Next.js","sidebarTitle":"WorkVibe","tag":"NEXT.JS","href":"/docs/workvibe-app-guide"},{"title":"Multi-tenant B2B Project Management with Next.js","sidebarTitle":"Keystone","tag":"NEXT.JS","href":"/docs/keystone-app-guide"}]}]},{"group":"CORE CONCEPTS","pages":[{"title":"Workspaces","href":"/docs/workspaces"},{"group":"Templates","pages":[{"title":"Quickstart","href":"/docs/templates-overview"},{"title":"Creating \u0026 Managing Templates","href":"/docs/templates"},{"group":"Channel Editors","pages":[{"title":"Email","href":"/docs/email-template"},{"title":"In-App Inbox","href":"/docs/in-app-inbox-template"},{"title":"SMS","href":"/docs/sms-template"},{"title":"WhatsApp","href":"/docs/whatsapp-template"},{"title":"Android Push","href":"/docs/android-push-template"},{"title":"iOS Push","href":"/docs/ios-push-template"},{"title":"Web Push","href":"/docs/web-push-template"},{"title":"Slack","href":"/docs/slack-template"},{"title":"MS Teams","href":"/docs/ms-teams-template"}]},{"title":"Template Variants","href":"/docs/template-variants"},{"title":"Handlebars helpers","href":"/docs/handlebars-helpers"},{"title":"JSONNET","href":"/docs/jsonnet-templates"},{"title":"Multi-lingual Templates","href":"/docs/multi-lingual-template"},{"group":"Template Approval","pages":[{"title":"DLT Guidelines","href":"/docs/dlt-guidelines"},{"title":"WhatsApp Template Guidelines","href":"/docs/whatsapp-template-guidelines"}]}]},{"title":"Users","href":"/docs/users"},{"title":"Events","href":"/docs/events"},{"title":"Workflows overview","sidebarTitle":"Workflow","href":"/docs/workflows"},{"group":"Notification Categories","pages":[{"title":"Overview","href":"/docs/notification-category"},{"title":"Manage Categories and Preferences","href":"/docs/managing-notification-categories"}]},{"group":"Preferences","pages":[{"title":"User Preferences","href":"/docs/user-preferences"},{"title":"Tenant Preferences","href":"/docs/tenant-preference"},{"title":"Preference Evaluation","href":"/docs/preference-evaluation"}]},{"group":"Tenants","pages":[{"title":"Overview","href":"/docs/tenants"},{"title":"Quickstart","href":"/docs/tenant-quick-start"},{"title":"Managing Tenants","href":"/docs/tenant-management"},{"title":"Tenant Templates","href":"/docs/tenant-templates"},{"title":"Tenant Workflows","href":"/docs/tenant-workflows"},{"title":"Tenant Preferences","href":"/docs/tenant-preference"},{"title":"Tenant Vendor","href":"/docs/tenant-vendor"},{"title":"User-Tenant Mapping","href":"/docs/user-tenant-mapping"},{"title":"Sub-tenants","href":"/docs/sub-tenants"}]},{"group":"Lists","pages":[{"title":"Lists","sidebarTitle":"Overview","href":"/docs/lists"},{"title":"Database sync","href":"/docs/list-sync-via-database"},{"title":"Manual (CSV upload)","href":"/docs/list-sync-via-csv"},{"title":"Segment Lists","tag":"BETA","href":"/docs/segment-lists"},{"group":"Segment SQL reference","pages":[{"title":"Query clauses and features","href":"/docs/sql-query-clauses"},{"title":"Aggregate functions","href":"/docs/sql-aggregate-functions"},{"title":"Array functions","href":"/docs/sql-array-functions"},{"title":"String functions","href":"/docs/sql-string-functions"},{"title":"JSON and map functions","href":"/docs/sql-json-functions"},{"title":"Date and time functions","href":"/docs/sql-date-time-functions"},{"title":"Conditional and null-handling functions","href":"/docs/sql-conditional-functions"},{"title":"Arithmetic and math functions","href":"/docs/sql-math-functions"},{"title":"String search and matching functions","href":"/docs/sql-string-search-functions"},{"title":"Window functions","href":"/docs/sql-window-functions"},{"title":"Tuple functions","href":"/docs/sql-tuple-functions"},{"title":"URL functions","href":"/docs/sql-url-functions"},{"title":"Encoding, hashing, and UUID functions","href":"/docs/sql-encoding-functions"},{"title":"Bit and bitmap functions","href":"/docs/sql-bit-functions"},{"title":"Geo functions","href":"/docs/sql-geo-functions"},{"title":"Vector and distance functions","href":"/docs/sql-vector-functions"}]}]},{"title":"Broadcast notifications overview","sidebarTitle":"Broadcast","href":"/docs/broadcast"},{"group":"Objects","pages":[{"title":"Manage Objects","href":"/docs/objects"},{"title":"Object Subscriptions","href":"/docs/object-subscriptions"}]},{"title":"Translations","href":"/docs/translations"}]},{"group":"WORKFLOW BUILDER","pages":[{"title":"Design Workflow","href":"/docs/design-workflow"},{"group":"Node List","pages":[{"title":"Delivery- Single Channel","href":"/docs/delivery-single-channel"},{"title":"Delivery- Multi-Channel","href":"/docs/delivery-multi-channel"},{"title":"Smart Channel Routing","href":"/docs/smart-delivery"},{"title":"Override Recipient","href":"/docs/override-recipient-list"},{"title":"Delay","href":"/docs/delay"},{"title":"Batch","href":"/docs/batch"},{"title":"Digest","href":"/docs/digest"},{"title":"Wait Until","href":"/docs/wait-until"},{"title":"Fetch","href":"/docs/fetch"},{"title":"Webhook","href":"/docs/webhook"},{"title":"Branch","href":"/docs/branch"},{"title":"Time Window","href":"/docs/time-window"},{"title":"Data Transform","href":"/docs/data-transform"},{"title":"Add User to list","href":"/docs/add-user-to-list"},{"title":"Remove User from list","href":"/docs/remove-user-from-list"},{"title":"Subscribe to Object","href":"/docs/subscribe-to-object"},{"title":"Unsubscribe from Object","href":"/docs/unsubscribe-from-object"},{"title":"Update User Profile","href":"/docs/update-user-profile"},{"title":"Invoke Workflow","href":"/docs/invoke-workflow"},{"title":"Cancel Workflow","href":"/docs/cancel-workflow"}]},{"group":"Workflow Settings","pages":[{"title":"Throttle","href":"/docs/throttle"}]},{"title":"Trigger Workflow","href":"/docs/trigger-workflow"},{"title":"Validate Trigger Payload","href":"/docs/validate-workflow-payload"}]},{"group":"Notification Inbox","pages":[{"title":"Overview","href":"/docs/inbox-overview"},{"title":"Multi Tabs","href":"/docs/multi-tabs"},{"group":"React","pages":[{"title":"Overview","href":"/docs/react-inbox-integration"},{"title":"Migration Guide","href":"/docs/react-migration-guide"}]},{"group":"Javascript (Angular, Vuejs etc)","pages":[{"title":"Integration","href":"/docs/web-components-integration"},{"title":"Customization options","href":"/docs/web-components-customisations"}]},{"group":"React Native","pages":[{"title":"React Native (Headless)","href":"/docs/inbox-react-native"}]},{"title":"InApp Feed (Headless)","sidebarTitle":"iOS (Headless)","href":"/docs/inbox-ios"},{"title":"Flutter (Headless)","href":"/docs/inbox-flutter"}]},{"group":"PREFERENCE CENTRE","pages":[{"title":"Embedded Preference Centre","href":"/docs/embedded-preference-centre"},{"title":"Javascript","href":"/docs/preferences-javascript"},{"title":"Angular","href":"/docs/preferences-angular"},{"title":"React","href":"/docs/preferences-react-headless"}]},{"group":"VENDOR INTEGRATION GUIDE","pages":[{"title":"Overview","href":"/docs/vendors"},{"group":"Email Integrations","pages":[{"title":"Sendgrid","href":"/docs/sendgrid"},{"title":"Amazon SES","href":"/docs/amazon-ses"},{"title":"Mailgun","href":"/docs/mailgun"},{"title":"Resend","href":"/docs/resend"},{"title":"Postmark","href":"/docs/postmark"},{"title":"Mailjet","href":"/docs/mailjet"}]},{"group":"SMS Integrations","pages":[{"title":"ACL Sinch","sidebarTitle":"ACL Sinch","href":"/docs/acl-sinch"},{"title":"Twilio","href":"/docs/twilio"},{"title":"Karix","href":"/docs/karix-sms"},{"title":"Gupshup","href":"/docs/gupshup-sms"},{"title":"AWS SNS","href":"/docs/aws-sns-sms"},{"title":"Pinnacle","href":"/docs/pinnacle"}]},{"group":"Android Push","pages":[{"title":"Firebase FCM","href":"/docs/firebase-fcm-androidpush"}]},{"group":"Whatsapp Integrations","pages":[{"title":"Karix","href":"/docs/karix-whatsapp"},{"title":"Gupshup","href":"/docs/gupshup-whatsapp"},{"title":"Exotel Cloud API","href":"/docs/exotel"},{"title":"WhatsApp Cloud API","href":"/docs/whatsapp-cloud-api"},{"title":"Twilio","href":"/docs/twilio-whatsapp"},{"title":"Netcore","href":"/docs/netcore-whatsapp"}]},{"title":"iOS Push","href":"/docs/ios-push-vendor-integration"},{"group":"Chat Integrations","pages":[{"title":"Slack","href":"/docs/slack"},{"group":"Microsoft Teams","pages":[{"title":"Microsoft Teams","sidebarTitle":"Overview","href":"/docs/microsoft-teams"},{"title":"Create a Teams app and add the vendor","sidebarTitle":"Create a Teams app","href":"/docs/microsoft-teams-create-app"},{"title":"Post to a Teams channel with a webhook","sidebarTitle":"Send via channel webhook","href":"/docs/microsoft-teams-incoming-webhook"},{"title":"Send DMs or post in channels via your Teams app","sidebarTitle":"Send via your Teams app","href":"/docs/microsoft-teams-customer-workspaces"},{"title":"Send DMs or post in channels via your customer's Teams app","sidebarTitle":"Send via customer's Teams app","href":"/docs/microsoft-teams-customer-bot"}]}]},{"title":"Vendor Fallback","href":"/docs/vendor-fallback"},{"title":"Tenant Vendor","href":"/docs/tenant-vendor"}]},{"group":"INTEGRATIONS","pages":[{"title":"Webhook","href":"/docs/outbound-webhook"},{"group":"Connectors","pages":[{"title":"Overview","href":"/docs/connectors"},{"title":"OpenTelemetry","href":"/docs/opentelemetry"},{"title":"New Relic","description":"Stream SuprSend notification metrics to New Relic via OpenTelemetry OTLP to monitor API requests, delivery, and engagement with sub-second latency.","href":"/docs/new-relic"},{"title":"Datadog","href":"/docs/datadog"},{"title":"Mixpanel","description":"Connect Mixpanel with SuprSend to export user cohorts into subscriber lists and trigger broadcast notifications based on Mixpanel segments.","href":"/docs/mixpanel"},{"title":"Segment","href":"/docs/segment"},{"group":"Amazon S3 v2.0","pages":[{"title":"Overview","href":"/docs/amazon_s3_v2"},{"title":"Query with Athena","href":"/docs/athena_s3_query"}]},{"group":"Database","pages":[{"title":"Overview","href":"/docs/database"},{"title":"Postgres","href":"/docs/postgres"},{"title":"MySQL","href":"/docs/mysql"},{"title":"Bigquery","href":"/docs/bigquery"}]}]}]},{"group":"MONITORING \u0026 DEBUGGING","pages":[{"group":"Logs","pages":[{"title":"Logs","href":"/docs/logging"},{"title":"Request logs","href":"/docs/request-logs"},{"title":"Workflow execution logs","href":"/docs/workflow-execution-logs"},{"title":"Broadcast execution logs","href":"/docs/broadcast-execution-logs"},{"title":"Message logs","href":"/docs/message-logs"}]},{"title":"Analytics","href":"/docs/analytics"},{"title":"Audit Logs","href":"/docs/audit-logs"},{"group":"Error Guides","pages":[{"title":"Execution Errors","href":"/docs/error-guides"},{"group":"Delivery Failures","pages":[{"title":"Androidpush","href":"/docs/androidpush-errors"},{"title":"Gupshup (SMS)","href":"/docs/gupshup-sms-errors"},{"title":"Twilio (SMS)","href":"/docs/twilio-sms-errors"},{"title":"Messagebird (SMS)","href":"/docs/messagebird-sms-errors"}]}]}]},{"group":"MANAGE YOUR ACCOUNT","pages":[{"title":"Authentication Methods","href":"/docs/authentication-methods"},{"title":"Managing Team Members","href":"/docs/managing-members"}]}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/docs/guides/modelling-customers-workspace-vs-tenant"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/reference/overview"}]},{"tab":"Management API","pages":[{"title":"Management API","href":"/docs/management-api-overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/reference/cli-intro"}]},{"tab":"Build with AI","pages":[{"title":"Build with AI","href":"/reference/build-with-ai"}]},{"tab":"Developer Resources","groups":[{"group":"Developer Resources","pages":[{"title":"Overview","href":"/docs/developer/overview"}]},{"group":"Updates and Versioning","pages":[{"title":"Versioning and Support Policy","href":"/docs/developer/versioning/sdk-versioning"},{"title":"SDK Changelog","href":"/docs/developer/versioning/sdk-changelog"}]},{"group":"Authentication","pages":[{"title":"API Keys and Secrets","href":"/docs/developer/api-keys"},{"title":"Service Token","href":"/docs/developer/service-tokens"},{"title":"Best Practices for Key \u0026 Token Management","href":"/docs/best-practices-for-api-keys-management"}]},{"group":"Security","pages":[{"title":"Security","href":"/docs/security"}]},{"group":"SDKs and APIs","pages":[{"group":"SDKs","pages":[{"title":"SDK Overview","href":"/docs/developer/sdk-overview"},{"group":"SuprSend Backend SDK","pages":[{"group":"Python SDK","pages":[{"title":"Integrate Python SDK","href":"/docs/integrate-python-sdk"},{"title":"Verify Package Signature","href":"/docs/python-verify-signature"},{"title":"Manage Users","href":"/docs/python-create-user-profile"},{"title":"Objects","href":"/docs/python-objects"},{"title":"Send and Track Events","href":"/docs/python-send-event-data"},{"title":"Trigger a workflow from the Python SDK","sidebarTitle":"Trigger Workflow from API","href":"/docs/python-trigger-workflow-from-api"},{"title":"Messages","href":"/docs/python-messages"},{"title":"Tenants","href":"/docs/python-tenants"},{"title":"Lists","href":"/docs/python-lists"},{"title":"Send broadcast notifications with the Python SDK","sidebarTitle":"Broadcast","href":"/docs/python-broadcast"}]},{"group":"Node.js SDK","pages":[{"title":"Integrate Node SDK","href":"/docs/integrate-node-sdk"},{"title":"Manage Users","href":"/docs/node-create-user-profile"},{"title":"Objects","href":"/docs/objects-node-sdk"},{"title":"Send and Track Events","href":"/docs/node-send-event-data"},{"title":"Trigger a workflow from the Node.js SDK","sidebarTitle":"Trigger Workflow from API","href":"/docs/node-trigger-workflow-from-api"},{"title":"Tenants","href":"/docs/node-tenants"},{"title":"Lists","href":"/docs/node-lists"},{"title":"Send broadcast notifications with the Node.js SDK","sidebarTitle":"Broadcast","href":"/docs/node-broadcast"}]},{"group":"Java SDK","pages":[{"title":"Integrate Java SDK","href":"/docs/integrate-java-sdk"},{"title":"Verify Package Signature","href":"/docs/java-verify-signature"},{"title":"Manage Users","href":"/docs/java-create-user-profile"},{"title":"Objects","href":"/docs/java-objects"},{"title":"Send and Track Events","href":"/docs/java-send-event-data"},{"title":"Trigger a workflow from the Java SDK","sidebarTitle":"Trigger Workflow from API","href":"/docs/java-trigger-workflow-from-api"},{"title":"Tenants","href":"/docs/tenants-java"},{"title":"Lists","href":"/docs/lists-java"},{"title":"Send broadcast notifications with the Java SDK","sidebarTitle":"Broadcast","href":"/docs/broadcast-java"}]},{"group":"Go SDK","pages":[{"title":"Integrate Go SDK","href":"/docs/integrate-go-sdk"},{"title":"Manage Users","href":"/docs/go-create-user-profile"},{"title":"Send and Track Events","href":"/docs/go-send-event-data"},{"title":"Trigger a workflow from the Go SDK","sidebarTitle":"Trigger Workflow from API","href":"/docs/go-trigger-workflow-from-api"},{"title":"Tenants","href":"/docs/tenants-go"},{"title":"Lists","href":"/docs/lists-go"},{"title":"Send broadcast notifications with the Go SDK","sidebarTitle":"Broadcast","href":"/docs/broadcast-go"}]}]},{"group":"SuprSend Client SDK","pages":[{"title":"Authentication","href":"/docs/client-authentication"},{"group":"Javascript","pages":[{"title":"Integration","href":"/docs/integrate-javascript-sdk"},{"title":"WebPush","href":"/docs/js-webpush"},{"title":"Preferences","href":"/docs/js-preferences"},{"title":"Events and User methods","href":"/docs/js-events-and-user-methods"},{"title":"InApp Feed","href":"/docs/js-inapp-feed"},{"title":"Migration guide","href":"/docs/migration-guide-from-v1"}]},{"group":"React","pages":[{"title":"Integration","href":"/docs/react-sdk"},{"title":"WebPush","href":"/docs/react-webpush"},{"title":"Preferences","href":"/docs/preference-react-sdk"},{"title":"Events and User methods","href":"/docs/react-events-and-user-methods"},{"group":"InApp Feed","pages":[{"title":"Popover feed","href":"/docs/react-in-app-feed"},{"title":"Full screen or Sidesheet notifications feed","href":"/docs/react-full-screen-or-sidesheet-notifications-feed"},{"title":"Customising Feed","href":"/docs/react-customising-feed"},{"title":"Build your own feed UI (headless)","href":"/docs/react-sdk-headless-feed"},{"title":"Toast Notifications","href":"/docs/react-toast-notifications"},{"title":"Internationalization","href":"/docs/react-language-support"}]},{"title":"Embeddable Templates","href":"/docs/embeddable-template-react-sdk"},{"title":"Migration guide","href":"/docs/react-migration-from-v0"}]},{"group":"Android","pages":[{"title":"Integrate Android SDK","href":"/docs/integrate-android-sdk"},{"title":"Mobile Push Setup","href":"/docs/android-firebase-fcm-push-integration"},{"title":"Manage Users","href":"/docs/android-create-user"},{"title":"Send and Track Events","href":"/docs/android-send-event-data"}]},{"group":"iOS","pages":[{"title":"Integration","href":"/docs/ios-integration"},{"title":"Events and User methods","href":"/docs/ios-events-and-user-methods"},{"title":"APNS Push Integration","href":"/docs/ios-apns-push"},{"title":"Preferences","href":"/docs/ios-preferences"},{"title":"InApp Feed (Headless)","href":"/docs/ios-inbox"},{"title":"Migration guide from v1","href":"/docs/ios-migration-from-v1"}]},{"group":"React Native","pages":[{"title":"Android Integration","href":"/docs/react-native-android-integration"},{"title":"iOS Integration","href":"/docs/react-native-ios-integration"},{"title":"Manage Users","href":"/docs/react-native-create-user"},{"title":"Sync Events","href":"/docs/react-native-send-event-data"},{"title":"iOS Push Setup","href":"/docs/react-native-ios-push-integration"},{"title":"Android Push (FCM)","href":"/docs/react-native-androidpush-integration"}]},{"group":"Expo","pages":[{"title":"Integration","href":"/docs/expo-integration"},{"title":"Push Notifications","href":"/docs/expo-push-notifications"},{"title":"Inbox Feed","href":"/docs/expo-inbox"},{"title":"Preferences","href":"/docs/expo-preferences"}]},{"group":"Flutter","pages":[{"title":"Integration","href":"/docs/flutter-integration"},{"title":"iOS Push Setup (APNs)","href":"/docs/flutter-apns-push"},{"title":"Android Push Setup (FCM)","href":"/docs/flutter-fcm-push"},{"title":"Migration guide from v2","href":"/docs/flutter-migration-from-v2"}]}]}]},{"title":"Management API","href":"/docs/developer/management-api"},{"title":"REST API","href":"/docs/developer/rest-api"},{"title":"Postman Collection","href":"/docs/developer/postman-collection"}]},{"group":"Features","pages":[{"title":"Validate Trigger Payload","href":"/docs/validate-workflow-payload"},{"title":"Type Safety","href":"/docs/type-generation"}]},{"group":"Testing","pages":[{"title":"Testing Templates","href":"/docs/testing-the-template"},{"title":"Test Mode","href":"/docs/developer/test-mode"}]},{"group":"Monitoring and Logging","pages":[{"group":"Logs","pages":[{"title":"Logs","href":"/docs/logging"},{"title":"Request logs","href":"/docs/request-logs"},{"title":"Workflow execution logs","href":"/docs/workflow-execution-logs"},{"title":"Broadcast execution logs","href":"/docs/broadcast-execution-logs"},{"title":"Message logs","href":"/docs/message-logs"}]},{"title":"Analytics","href":"/docs/analytics"},{"group":"Data Out","pages":[{"title":"Webhook","href":"/docs/outbound-webhook"},{"group":"Amazon S3 v2.0","pages":[{"title":"Overview","href":"/docs/amazon_s3_v2"},{"title":"Query with Athena","href":"/docs/athena_s3_query"}]},{"title":"OpenTelemetry","href":"/docs/opentelemetry"},{"title":"New Relic","description":"Stream SuprSend notification metrics to New Relic via OpenTelemetry OTLP to monitor API requests, delivery, and engagement with sub-second latency.","href":"/docs/new-relic"},{"title":"Datadog","href":"/docs/datadog"}]}]}]},{"tab":"Self-Hosted","pages":[{"title":"Self-Hosted","href":"/docs/self-hosted/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"Datadog - SuprSend: API-first notification infrastructure","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-PS-3COT9.js","DynamicMarkdown-BcnBltEQ.js","zoom-image-lightbox-B4-wUcHm.js","lightbox-handle-r17bVUz3.js"]}