| name | datadog-unfurl |
| description | Unfurl a Datadog dashboard, metric explorer, notebook, logs, or RUM URL (e.g. https://app.datadoghq.com/s/e16e18c08/yry-azg-bva) — resolve shared links, show widget/query details, and download the snapshot image. Use when the user pastes a Datadog dashboard, metric explorer, notebook, logs, RUM, or shared link and wants to understand what it shows. |
Datadog Unfurl
datadog unfurl takes a Datadog URL, resolves it, and shows a human-readable summary of the widget(s) along with a snapshot image.
CLI availability
Run command -v datadog before use. If it is unavailable, install the local source with cargo install --path ~/code/datadog-cli/datadog.
Usage
datadog unfurl "https://app.datadoghq.com/s/e16e18c08/yry-azg-bva"
datadog unfurl "https://app.datadoghq.com/logs?query=service%3Amultiplayer%20status%3Aerror&from_ts=...&to_ts=..."
datadog unfurl "https://app.datadoghq.com/rum/explorer?query=%40type%3Aerror&from_ts=...&to_ts=..."
datadog unfurl "https://app.datadoghq.com/dashboard/5iv-bx7-9xp/multiplayer-v2?fullscreen_widget=3737456056966802"
datadog unfurl "https://app.datadoghq.com/dashboard/5iv-bx7-9xp/multiplayer-v2"
datadog unfurl "https://app.datadoghq.com/metric/explorer?start=123&end=456#N4Ig..."
datadog unfurl "https://app.datadoghq.com/s/e16e18c08/yry-azg-bva" --json
What it does
- Resolves
/s/ short links — follows the redirect and extracts the real URL (dashboard, metric explorer, notebook, logs, or RUM)
- Fetches dashboard data via the Datadog API (for dashboard URLs)
- Decodes metric explorer fragments — metric explorer URLs encode the widget definition as lz-string in the URL fragment; the tool decompresses and parses it
- Fetches notebook cells — for notebook URLs, fetches the notebook via API and shows the specific cell (if
cell_id is present) or all cells, using the same widget format as dashboards
- Reads logs/RUM explorer queries — for
/logs and /rum/... URLs, shows the query, viz, and time range read straight from the URL params (no API call needed)
- Shows widget details — title, type, formulas, and metric queries in a readable format
- Downloads the snapshot image to the current directory (for shared links only — this is the same
og:image that Slack unfurls). Filenames include the ID when available (dd-widget-<ID>.png, dd-notebook-<ID>.png, dd-logs-explorer.png, dd-rum-explorer.png) and auto-increment (-1, -2, ...) to avoid overwriting existing files
Supported URL formats
| Format | Example |
|---|
| Shared link | https://app.datadoghq.com/s/TOKEN/ID |
| Dashboard with widget | https://app.datadoghq.com/dashboard/ID/title?fullscreen_widget=123 |
| Dashboard (all widgets) | https://app.datadoghq.com/dashboard/ID/title |
| Metric explorer | https://app.datadoghq.com/metric/explorer?start=...&end=...#N4Ig... |
| Notebook cell | https://app.datadoghq.com/notebook/ID?cell_id=CELL_ID (typically via short link) |
| Logs explorer | https://app.datadoghq.com/logs?query=...&from_ts=...&to_ts=... |
| RUM explorer | https://app.datadoghq.com/rum/explorer?query=...&from_ts=...&to_ts=... |
Widget focus
If the URL contains fullscreen_widget or tile_focus query params, only that specific widget is shown. This is the default when using shared links created from a focused widget.
Snapshot image
When unfurling a shared link, the tool downloads the og:image — the exact same image Slack shows when you paste the link. This image may include cursor annotations (timestamp and metric count) that aren't available in the text output.
Example output
Resolving short link...
Dashboard: Multiplayer (13 widgets)
## File Download and Launch Failed [id: 3737456056966802]
Type: timeseries
Request 1:
Formula: default_zero(query1)
Query (query1): sum:multiplayer.docs.load_failed{$env,$pod_name} by {error}.as_count()
Snapshot: dd-widget-3737456056966802.png
(Tip: the snapshot may include cursor annotations — timestamp and count — not shown above)