---
title: Custom Metrics Billing
description: Datadog, the leading service for cloud-scale monitoring.
breadcrumbs: Docs > Account Management > Billing > Custom Metrics Billing
---

# Custom Metrics Billing

## Overview{% #overview %}

If a metric is not submitted from one of the [more than 1,000 Datadog integrations](https://docs.datadoghq.com/integrations/) it's considered a [custom metric](https://docs.datadoghq.com/metrics/custom_metrics/). Certain standard integrations can also potentially emit custom metrics. For more information, see [custom metrics and standard integrations](https://docs.datadoghq.com/metrics/custom_metrics/#standard-integrations).

**A custom metric is uniquely identified by a combination of a metric name and tag values (including the host tag)**. In general, any metric you send using [DogStatsD](https://docs.datadoghq.com/metrics/custom_metrics/dogstatsd_metrics_submission/) or through a [custom Agent Check](https://docs.datadoghq.com/metrics/custom_metrics/agent_metrics_submission/) is a custom metric.

Your monthly billable custom metrics usage (reflected on the Usage page) is calculated by taking the total of all distinct custom metrics (also known as timeseries) for each hour in a given month, and dividing it by the number of hours in the month to compute a monthly average value. Your billable usage is not impacted by data point submission frequency or the number of queries you run on your metrics.

Metrics without Limits™ users see monthly billable volumes for *ingested* and *indexed* custom metrics on their Usage page. Learn more about ingested and indexed custom metrics and [Metrics without Limits™](https://docs.datadoghq.com/metrics/metrics-without-limits).

## Counting custom metrics{% #counting-custom-metrics %}

The number of custom metrics associated with a particular metric name depends on its metric [submission type](https://docs.datadoghq.com/metrics/types/#metric-types). Below are examples of how to count your custom metrics based on the following scenario below:

Suppose you're submitting a metric, `request.Latency`, from two hosts (`host:A`,`host:B`), which measures the latency of your endpoint requests. You're submitting this metric with two tag keys:

- `endpoint`, which has the value `endpoint:X` or `endpoint:Y`.
- `status`, which has the value `status:200` or `status:400`.

Assume that in your data, `endpoint:X` is supported by both hosts, but fails only on `host:B`. Also assume that requests to `endpoint:Y` are always successful and only appear on `host:B` as shown below:

{% image
   source="https://datadog-docs.imgix.net/images/account_management/billing/custom_metrics/request_latency.0865373a0589c45484d2dae579a515d9.png?auto=format"
   alt="Request latency" /%}

{% tab title="Count, Rate" %}
The number of custom metrics from [COUNT](https://docs.datadoghq.com/metrics/types/?tab=count#metric-types) and [RATE](https://docs.datadoghq.com/metrics/types/?tab=rate#metric-types) is calculated with the same logic.

The number of unique tag value combinations submitted for a RATE metric with this tagging scheme is **four**:

- `host:A`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:400`
- `host:B`, `endpoint:Y`, `status:200`

This results in `request.Latency` reporting **four custom metrics**.

### Effect of adding tags{% #effect-of-adding-tags %}

Adding tags **may not** result in more custom metrics. Your count of custom metrics usually scales with the most granular or detailed tag. Suppose you are measuring temperature in the US, and you have tagged your `temperature` metric by country and region. You submit the following to Datadog:

| Metric Name   | Tag Values                         |
| ------------- | ---------------------------------- |
| `temperature` | `country:USA`, `region: Northeast` |
| `temperature` | `country:USA`, `region: Southeast` |

Suppose you wanted to add the tag `city` which has three values: `NYC`, `Miami`, and `Orlando`. Adding this tag increases the number of custom metrics as it provides more detail and granularity to your dataset as shown below:

| Metric Name   | Tag Values                                          |
| ------------- | --------------------------------------------------- |
| `temperature` | `country:USA`, `region: Northeast`, `city: NYC`     |
| `temperature` | `country:USA`, `region: Southeast`, `city: Orlando` |
| `temperature` | `country:USA`, `region: Southeast`, `city: Miami`   |

The count of custom metrics reporting from `temperature` scales with the most granular tag, `city`.

Suppose you also wanted to tag your temperature metric by `state` (which has two values: `NY` and `Florida`). This means you are tagging temperature by the tags: `country`, `region`, `state`, and `city`. Adding the state tag doesn't increase the level of granularity already present in your dataset provided by the city tag.

To obtain the temperature in Florida, you can recombine the custom metrics of:

- `temperature{country:USA, state:Florida, city:Orlando}`
- `temperature{country:USA, state:Florida, city:Miami}`

**Note**: Reordering tag values doesn't add uniqueness. The following combinations are the same custom metric:

- `temperature{country:USA, state:Florida, city:Miami}`
- `temperature{state:Florida, city:Miami, country:USA}`

### Configure tags with Metrics without Limits™{% #configure-tags-with-metrics-without-limits %}

Custom metrics volumes can be impacted by configuring tags using [Metrics without Limits™](https://docs.datadoghq.com/metrics/metrics-without-limits). Metrics without Limits™ decouples ingestion costs from indexing costs – so you can continue sending Datadog all of your data (everything is ingested) and you can specify an allowlist of tags you'd want to remain queryable in the Datadog platform. Given the volume of data Datadog is ingesting for your configured metrics now differs from the smaller, remaining volume you've indexed, you'll see two distinct volumes on your Usage page as well as the Metrics Summary page.

- **Ingested custom metrics**: The original volume of custom metrics based on the all ingested tags (sent via code)
- **Indexed custom metrics**: The volume of custom metrics that remains queryable in the Datadog platform (based on any Metrics without Limits™ configurations)

**Note: Only configured metrics contribute to your Ingested custom metrics volume.** If a metric is not configured with Metrics without Limits™, you're only charged for its indexed custom metrics volume.

#### When are you charged for ingested vs indexed custom metrics?{% #when-are-you-charged-for-ingested-vs-indexed-custom-metrics %}

For metrics not configured with Metrics without Limits™, you pay for indexed custom metrics.

| Indexed custom metrics(based on monthly average number of custom metrics per hour) |
| ---------------------------------------------------------------------------------- |
| Account allotment                                                                  | - Pro: 100 indexed custom metrics per host- Enterprise: 200 indexed custom metrics per host                                   |
| Usage greater than account allotment                                               | For each 100 indexed custom metrics over the account allotment, you pay an amount that is specified in your current contract. |

For metrics configured with Metrics without Limits™ (tags are configured), you pay for ingested custom metrics and indexed custom metrics.

| Ingested custom metrics              | Indexed custom metrics                                                                        |
| ------------------------------------ | --------------------------------------------------------------------------------------------- |
| Account Allotment                    | - Pro: 100 ingested custom metrics per host- Enterprise: 200 ingested custom metrics per host | - Pro: 100 indexed custom metrics per host- Enterprise: 200 indexed custom metrics per host                                   |
| Usage greater than account allotment | For each 100 ingested custom metrics over the account allotment, you pay $0.10.               | For each 100 indexed custom metrics over the account allotment, you pay an amount that is specified in your current contract. |

Suppose you wanted to use Metrics without Limits™ to reduce the size of your `request.Latency` metric by keeping only the `endpoint` and `status` tags. This results in the following three unique tag combinations:

- `endpoint:X`, `status:200`
- `endpoint:X`, `status:400`
- `endpoint:Y`, `status:200`

As a result of the tag configuration, `request.Latency` reporting a total of **3 indexed custom metrics** . Based on the original tags sent on this metric, the original **ingested** custom metrics volume of `request.Latency` is **4 ingested custom metrics**.

Learn more about [Metrics without Limits™](https://docs.datadoghq.com/metrics/metrics-without-limits).
{% /tab %}

{% tab title="Gauge" %}
The number of unique tag value combinations submitted for a GAUGE metric with this tagging scheme is **four**:

- `host:A`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:400`
- `host:B`, `endpoint:Y`, `status:200`

This results in `request.Latency` reporting **four custom metrics**.

### Effect of adding tags{% #effect-of-adding-tags %}

Adding tags **may not** result in more custom metrics. Your count of custom metrics usually scales with the most granular or detailed tag. Suppose you are measuring temperature in the US, and you have tagged your `temperature` metric by country and region. You submit the following to Datadog:

| Metric Name   | Tag Values                         |
| ------------- | ---------------------------------- |
| `temperature` | `country:USA`, `region: Northeast` |
| `temperature` | `country:USA`, `region: Southeast` |

Suppose you wanted to add the tag `city` which has three values: `NYC`, `Miami`, and `Orlando`. Adding this tag increases the number of custom metrics as it provides more detail and granularity to your dataset as shown below:

| Metric Name   | Tag Values                                          |
| ------------- | --------------------------------------------------- |
| `temperature` | `country:USA`, `region: Northeast`, `city: NYC`     |
| `temperature` | `country:USA`, `region: Southeast`, `city: Orlando` |
| `temperature` | `country:USA`, `region: Southeast`, `city: Miami`   |

The count of custom metrics reporting from `temperature` scales with the most granular tag, `city`.

Suppose you also wanted to tag your temperature metric by `state` (which has two values: `NY` and `Florida`). This means you are tagging temperature by `country`, `region`, `state`, and `city`. Adding the state tag doesn't increase the level of granularity already present in your dataset provided by the city tag.

To obtain the temperature in Florida, you can recombine the custom metrics of:

- `temperature{country:USA, state:Florida, city:Orlando}`
- `temperature{country:USA, state:Florida, city:Miami}`

**Note**: Reordering tag values doesn't add uniqueness. The following combinations are the same custom metric:

- `temperature{country:USA, state:Florida, city:Miami}`
- `temperature{state:Florida, city:Miami, country:USA}`

### Configure tags with Metrics without Limits™{% #configure-tags-with-metrics-without-limits %}

Custom metrics volumes can be impacted by configuring tags using [Metrics without Limits™][4]. Metrics without Limits™ decouples ingestion costs from indexing costs – so you can continue sending Datadog all of your data (everything is ingested) and you can specify an allowlist of tags you want to remain queryable in the Datadog platform. Given the volume of data Datadog is ingesting for your configured metrics now differs from the smaller, remaining volume you've indexed, you'll see two distinct volumes on your Usage page as well as the Metrics Summary page.

- **Ingested custom metrics**: The original volume of custom metrics based on the all ingested tags (sent via code)
- **Indexed custom metrics**: The volume of custom metrics that remains queryable in the Datadog platform (based on any Metrics without Limits™ configurations)

**Note: Only configured metrics contribute to your Ingested custom metrics volume.** If a metric is not configured with Metrics without Limits™, you're only charged for its indexed custom metrics volume.

#### When are you charged for ingested vs indexed custom metrics?{% #when-are-you-charged-for-ingested-vs-indexed-custom-metrics %}

For metrics not configured with Metrics without Limits™, you pay for indexed custom metrics.

| Indexed custom metrics(based on monthly average number of custom metrics per hour) |
| ---------------------------------------------------------------------------------- |
| Account allotment                                                                  | - Pro: 100 indexed custom metrics per host- Enterprise: 200 indexed custom metrics per host                                   |
| Usage greater than account allotment                                               | For each 100 indexed custom metrics over the account allotment, you pay an amount that is specified in your current contract. |

For metrics configured with Metrics without Limits™ (tags are configured), you pay for ingested custom metrics and indexed custom metrics.

| Ingested custom metrics              | Indexed custom metrics                                                                        |
| ------------------------------------ | --------------------------------------------------------------------------------------------- |
| Account Allotment                    | - Pro: 100 ingested custom metrics per host- Enterprise: 200 ingested custom metrics per host | - Pro: 100 indexed custom metrics per host- Enterprise: 200 indexed custom metrics per host                                   |
| Usage greater than account allotment | For each 100 ingested custom metrics over the account allotment, you pay $0.10.               | For each 100 indexed custom metrics over the account allotment, you pay an amount that is specified in your current contract. |

By default, the following aggregations can be used for querying:

- group by `SUM` & rollup by `AVG`
- group by `MAX` & rollup by `AVG`
- group by `MIN` & rollup by `AVG`
- group by `AVG` & rollup by `SUM`
- group by `SUM` & rollup by `SUM`
- group by `MAX` & rollup by `MAX`
- group by `MIN` & rollup by `MIN`
- group by `SUM` & rollup by `COUNT`

Your number of indexed custom metrics **does not scale** with the number of enabled aggregations.

Learn more about [Metrics without Limits™](https://docs.datadoghq.com/metrics/metrics-without-limits).
{% /tab %}

{% tab title="Histogram" %}
**A HISTOGRAM metric generates by default five custom metrics for each unique combination of metric name and tag values** to support the Agent-side aggregations `max`, `median`, `avg`, `95pc`, and `count`. [Learn more about HISTOGRAM metric type](https://docs.datadoghq.com/metrics/types/?tab=histogram#metric-types).

The number of unique tag value combinations submitted for a HISTOGRAM metric with this tagging scheme is **four**:

- `host:A`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:400`
- `host:B`, `endpoint:Y`, `status:200`

By default, the Agent generates five custom metrics for each of the original four unique tag value combinations to account [for each Agent-side aggregations enabled](https://docs.datadoghq.com/metrics/types/?tab=histogram#definition): `avg`, `count`, `median`, `95percentile`, and `max`. Consequently, `request.Latency` reports a total of **4\*5 = 20 custom metrics**.

**Note**: Adding aggregations to your HISTOGRAM metrics increases the number of distinct custom metrics reported. Removing aggregations decreases the number of custom metrics reported.

- Configure which aggregation you want to send to Datadog with the `histogram_aggregates` parameter in your [datadog.yaml configuration file](https://docs.datadoghq.com/agent/configuration/agent-configuration-files/#agent-main-configuration-file). By default, only `max`, `median`, `avg`, and `count` aggregations are sent out to Datadog. `sum` and `min` are also available if desired.
- Configure which percentile aggregation you want to send to Datadog with the `histogram_percentiles` parameter in your [datadog.yaml configuration file](https://docs.datadoghq.com/agent/configuration/agent-configuration-files/#agent-main-configuration-file). By default, only the `95percentile`, 95th percentile, is sent out to Datadog.

{% /tab %}

{% tab title="Distribution" %}
**A DISTRIBUTION metric generates by default five custom metrics for each unique combination of metric name and tag values** to represent the global statistical distribution of values. These five custom metrics represent server-side aggregations of `count`, `sum`, `min`, `max`, and `avg`. [Learn more about DISTRIBUTION metric type](https://docs.datadoghq.com/metrics/types/?tab=distribution#definition).

The number of unique tag value combinations submitted for a DISTRIBUTION metric with this tagging scheme is **four**.

- `host:A`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:200`
- `host:B`, `endpoint:X`, `status:400`
- `host:B`, `endpoint:Y`, `status:200`

The number of custom metrics from a [DISTRIBUTION metric](https://docs.datadoghq.com/metrics/types/?tab=distribution#definition) is five times the unique combination of metric name and tag values. This results in `request.Latency` reporting a total of **5\*4 = 20 custom metrics**.

##### Adding percentile aggregations{% #adding-percentile-aggregations %}

You can include percentile aggregations (`p50`, `p75`, `p90`, `p95`, and `p99`) on your distribution metric. Including these additional percentile aggregations results in an additional volume of five times the unique combination of metric name and tag values (**5\*4 = 20 custom metrics**). Therefore the total number of custom metrics emitted from this distribution metric with percentile aggregations is **2 \* (5\*4) = 40 custom metrics** .

This table summarizes the effect of adding percentile aggregations to any distribution metric.

| Metrics                                                                                   | Number of Billable custom metrics |
| ----------------------------------------------------------------------------------------- | --------------------------------- |
| Number of custom metrics from a baseline distribution (count, sum, min, max, avg)         | `5*(tag value combinations)`      |
| Number of custom metrics from including percentile aggregations (p50, p75, p90, p95, p99) | `5*(tag value combinations)`      |
| Total                                                                                     | `2*5(tag value combinations)`     |

### Configure tags with Metrics without Limits™{% #configure-tags-with-metrics-without-limits %}

Custom metrics volumes can be impacted by configuring tags and aggregations using [Metrics without Limits™](https://docs.datadoghq.com/metrics/metrics-without-limits). Metrics without Limits™ decouples ingestion costs from indexing costs – so you can continue sending Datadog all of your data (everything is ingested) and you can specify an allowlist of tags you'd want to remain queryable in the Datadog platform. Given the volume of data Datadog is ingesting for your configured metrics now differs from the smaller, remaining volume you've indexed, you'll see two distinct volumes on your Usage page as well as the Metrics Summary page.

- **Ingested custom metrics**: The original volume of custom metrics based on the all ingested tags (sent via code)
- **Indexed custom metrics**: The volume of custom metrics that remains queryable in the Datadog platform (based on any Metrics without Limits™ configurations)

**Note: Only configured metrics contribute to your Ingested custom metrics volume.** If a metric is not configured with Metrics without Limits™, you're only charged for its indexed custom metrics volume.

#### When are you charged for ingested vs indexed custom metrics?{% #when-are-you-charged-for-ingested-vs-indexed-custom-metrics %}

For metrics not configured with Metrics without Limits™, you pay for indexed custom metrics.

| Indexed custom metrics(based on monthly average number of custom metrics per hour) |
| ---------------------------------------------------------------------------------- |
| Account allotment                                                                  | - Pro: 100 indexed custom metrics per host- Enterprise: 200 indexed custom metrics per host                                   |
| Usage greater than account allotment                                               | For each 100 indexed custom metrics over the account allotment, you pay an amount that is specified in your current contract. |

For metrics configured with Metrics without Limits™ (tags/aggregations are configured), you pay for ingested custom metrics and indexed custom metrics.

| Ingested custom metrics              | Indexed custom metrics                                                                        |
| ------------------------------------ | --------------------------------------------------------------------------------------------- |
| Account Allotment                    | - Pro: 100 ingested custom metrics per host- Enterprise: 200 ingested custom metrics per host | - Pro: 100 indexed custom metrics per host- Enterprise: 200 indexed custom metrics per host                                   |
| Usage greater than account allotment | For each 100 ingested custom metrics over the account allotment, you pay $0.10.               | For each 100 indexed custom metrics over the account allotment, you pay an amount that is specified in your current contract. |

Suppose you want to keep only the `endpoint` and `status` tags associated with the `request.Latency` metric. This results in the following three unique tag combinations:

- `endpoint:X`, `status:200`
- `endpoint:X`, `status:400`
- `endpoint:Y`, `status:200`

The number of custom metrics from a [DISTRIBUTION metric](https://docs.datadoghq.com/metrics/types/?tab=distribution#definition) is five times the unique combination of metric name and tag values. As a result of the tag customization, `request.Latency` reporting a total of **5\*3 = 15 indexed custom metrics**. Based on the original tags sent on this metric, the original **ingested** custom metrics volume of `request.Latency` is **20 ingested custom metrics**.

Learn more about [Metrics without Limits™](https://docs.datadoghq.com/metrics/metrics-without-limits).
{% /tab %}

## Tracking custom metrics{% #tracking-custom-metrics %}

Administrative users (those with [Datadog Admin roles](https://docs.datadoghq.com/account_management/users/default_roles/)) can see the monthly average number of **ingested** and **indexed** custom metrics per hour. The top custom metrics table also lists the average number of **indexed** custom metrics on the [usage details page](https://app.datadoghq.com/billing/usage). See the [Usage Details](https://docs.datadoghq.com/account_management/plan_and_usage/usage_details/) documentation for more information.

For more real-time tracking of the count of custom metrics for a particular metric name, click into the metric name on the [Metrics Summary page](https://app.datadoghq.com/metric/summary). You can view the number of **ingested** custom metrics and **indexed** custom metrics on the metric's details sidepanel.

{% image
   source="https://datadog-docs.imgix.net/images/account_management/billing/custom_metrics/mwl_sidepanel_ingested_3142025.06ebe5f87b045dd079eea49ff1c13e85.jpg?auto=format"
   alt="Metrics Summary sidepanel" /%}

## Allocation{% #allocation %}

You are allocated a certain number of **ingested** and **indexed** custom metrics based on your Datadog pricing plan:

- Pro: 100 ingested custom metrics per host and 100 indexed custom metrics per host
- Enterprise: 200 ingested custom metrics per host and 200 indexed custom metrics per host

These allocations are counted across your entire infrastructure. For example, if you are on the Pro plan and licensed for three hosts, 300 indexed custom metrics are allocated. The 300 indexed custom metrics can be divided equally across each host, or all 300 indexed metrics can be used by a single host. Using this example, the graphic below shows scenarios that do not exceed the allocated custom metric count:

{% image
   source="https://datadog-docs.imgix.net/images/account_management/billing/custom_metrics/host_custom_metrics.bf2e821961d729a8685cd8e358a0ba71.png?auto=format"
   alt="Allocations for custom metrics" /%}

The billable number of indexed custom metrics is based on the average number of custom metrics (from all paid hosts) per hour over a given month. The billable number of ingested custom metrics only grows if you've used Metrics without Limits™ to configure your metric. Contact [Sales](mailto:sales@datadoghq.com) or your [Customer Success](mailto:success@datadoghq.com) Manager to discuss custom metrics for your account or to purchase an additional custom metrics package.

## Troubleshooting{% #troubleshooting %}

For technical questions, contact [Datadog support](https://docs.datadoghq.com/help/).

For billing questions, contact your [Customer Success](mailto:success@datadoghq.com) Manager.
