Datadog cost showback dashboard for platform and finance

By General Input

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

Integrations

  • Datadog
  • Slack
  • Google Sheets

Type

App

Categories

  • Finance
  • Engineering

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.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageWin back LiveChat visitors whose chats went unansweredLet support send one-off Loops emails without an engineerStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardChat quality review board for LiveChat support leadsLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seats