# Datadog cost showback dashboard for platform and finance

> Open one screen each month to see which teams and products are driving your Datadog spend, and who is trending over budget.

- Workflow type: app
- Services: Datadog, Slack, Google Sheets
- Categories: Finance, Engineering
- Published: 2026-08-17

## What it does

- Shows your total estimated Datadog cost for whichever month you pick, plus a projected total for the month currently in progress.
- Breaks the month down by team so you can see each team's share of spend, how much it moved since last month, and whether it is tracking over its budget.
- Adds a product breakdown next to it, so it is obvious when log indexing or application monitoring is the thing that actually moved.
- Opens a detail view per team with their product split and log index breakdown, then lets you send that owner their summary in Slack or push the whole month to a finance spreadsheet.

## What you'll need

- A Datadog account, and a login with permission to see billing and usage information
- Usage attribution tags set up in Datadog for the tag you treat as team ownership, such as team, service, or cost center
- A Slack workspace, if you want to send owners their showback summaries
- A Google account and a spreadsheet where the monthly finance export should land

## Prompt

Build me a Datadog cost showback app. My platform lead and my finance partner open it together once a month to answer one question: who is actually spending our observability budget? It is a read and review surface, not an automation, so everything happens when someone opens it and picks a month.

The main screen starts with a month selector, defaulting to the current month. At the top, show two headline numbers for the selected period. The total estimated cost comes from the Datadog operation "Get estimated cost across your account". The projected cost for the current month comes from "Get projected cost across your account". Both of these have real availability limits that the UI has to handle gracefully rather than look broken: estimated cost is only available for the current month and the previous month and is delayed by up to 72 hours from when the spend was incurred, and projected cost only exists for the current month and does not become available until around the 12th. So label freshness explicitly. Under the estimated total, show something like "Estimated cost, data through <date>, Datadog lags up to 72 hours". If the selected month is the current month and it is before roughly the 12th, replace the projected number with an explanatory state saying the projection is not published by Datadog yet, and for any month older than last month explain that Datadog does not serve estimated cost that far back rather than rendering an empty card.

Below the headline numbers, the primary table is spend by team. Build it from "Get hourly usage attribution" over the selected month, aggregating the hourly rows up to a monthly figure per team tag value. That endpoint is paginated, so keep following next_record_id until it stops coming back, otherwise the totals will silently undercount. Let the user configure which tag key means team, since orgs use team, service, or cost center for this, and Datadog allows a small number of custom attribution tags. Each row shows the team, its cost for the month, its share of total spend as a percentage, and the change versus the prior month shown both in absolute currency and as a percentage. Sort by biggest month over month increase by default, descending, because that is the number people actually act on. Let the user re-sort by total spend, share, or percentage change.

Pull budgets with "List budgets" and match each budget to its team. When a team's spend is pacing above its budget for the period, flag that row visibly with a status treatment and a short reason like "tracking 18 percent over budget". Base the pacing calculation on elapsed days in the month so a team is not flagged over on day three just because the month is not finished. Teams with no budget defined should read as "no budget set" rather than as passing.

Underneath the team table, add a second breakdown by product family built from "Get hourly usage by product family", also aggregated across the selected month, with the same month over month change column. This is what makes it obvious when log indexing or APM hosts are the thing that moved, versus spend being spread evenly. Keep it visible on the same screen so the reader can compare the two views without navigating away.

Clicking a team row opens a detail view for that team. It shows that team's spend over the selected month, its product level split so you can see which products that specific team is driving, and a log index breakdown from "Get hourly usage for logs by index" so a team that blew up its bill through log retention can see exactly which index did it. Include the same month over month comparison at the team level and show the team's budget and pacing status at the top of the detail view.

There are two actions. First, from a team's detail view, send that team's owner their showback summary as a Slack message using the Slack operation "Send a Message", sent as the signed in user so it reads as a person nudging a peer rather than a bot. Use "Open a Conversation" first when the recipient is an individual so you have a DM channel to post into. The message should be short and readable in Slack: the team name, its cost for the month, its share of total, the change versus last month, budget status if one exists, and the top one or two products or log indexes responsible for the change. Show the user a preview they can edit before it sends. Second, from the main screen, export the full month table to a finance tracker using the Google Sheets operation "Append Values", appending one row per team with the month, team, cost, share of total, prior month cost, change, and budget status, so the finance partner accumulates a month over month history in their own spreadsheet.

Persist the configuration between visits, since this is opened monthly and nobody should re-enter it each time: which tag key defines a team, the mapping of team to Slack owner, the target spreadsheet and tab for the export, and the over budget threshold. Remember the last exported month per team so a repeat export is an obvious duplicate rather than a silent one.

On presentation: format currency consistently and round to whole units in tables, show percentage changes with a direction indicator, and use a neutral treatment for teams with no meaningful change so attention lands on the movers. Every number on screen should make it clear what period it covers and how fresh it is. When Datadog returns nothing for a requested window, say why in plain language, because with these cost endpoints an empty response usually means the data is not published yet rather than that spend was zero.

## How to customize

- Change which tag counts as a team, so the breakdown matches how your org already splits ownership between departments, services, or cost centers
- Change the default sort order, for example biggest month over month increase, largest total spend, or worst budget overage
- Pick which spreadsheet and tab the monthly export appends to, and map each team to the Slack person who owns its budget
- Adjust the threshold that flags a team as trending over budget, so you only see the overruns worth chasing

## FAQ

### Why does the current month total look lower than I expect?

Datadog's estimated cost figures can lag by up to 72 hours behind the spend that was actually incurred. The dashboard labels every total with how fresh the underlying data is, so a partial number reads as expected rather than as a broken report.

### Why is there no projected cost for this month yet?

Datadog only starts producing a projected monthly cost around the 12th of the month. Before that date the dashboard shows a clear note explaining the projection is not available yet instead of showing a blank or zero figure.

### Do I need usage attribution tags set up in Datadog?

You need them for the per team breakdown, since that is where the team level split comes from. Without them you will still get your monthly totals, the projected cost, and the breakdown by product, but the team table will be empty until tagging is in place.

### What if we organize by service or cost center instead of team?

That works fine. The breakdown reads whichever tag you point it at, so you can group spend by service, product line, department, or cost center depending on how your organization assigns ownership.

### Does this change anything inside Datadog?

No. The dashboard only reads your cost and usage information. The only things it writes are the Slack summary you choose to send an owner and the rows you choose to append to your finance spreadsheet.

### Who is this actually for?

It is built for the monthly conversation between a platform or infrastructure lead and their finance partner, where somebody has to explain which teams drove the observability bill and what changed since last month.

Use this prompt in General Input: https://www.generalinput.com/prompts/datadog-cost-showback-dashboard-for-platform-and-finance