Skip to content
'; user_status_content.firstChild.appendChild(avatarContainer); } else { // Placeholder for LoggedOutUserMenu let loggedOutContainer = document.createElement('div'); // if LoggedOutUserMenu fallback let userBtn = document.createElement('button'); userBtn.style.width = "33px"; userBtn.style.height = "33px"; userBtn.style.display = "flex"; userBtn.style.alignItems = "center"; userBtn.style.justifyContent = "center"; userBtn.style.color = "var(--ds-gray-900)"; userBtn.style.border = "1px solid var(--ds-gray-300)"; userBtn.style.borderRadius = "100%"; userBtn.style.cursor = "pointer"; userBtn.style.background = "transparent"; userBtn.style.padding = "0"; // user icon ( from geist) let svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); svg.setAttribute('data-testid', 'geist-icon'); svg.setAttribute('height', '16'); svg.setAttribute('stroke-linejoin', 'round'); svg.setAttribute('style', 'color:currentColor'); svg.setAttribute('viewBox', '0 0 16 16'); svg.setAttribute('width', '16'); let path = document.createElementNS('http://www.w3.org/2000/svg', 'path'); path.setAttribute('fill-rule', 'evenodd'); path.setAttribute('clip-rule', 'evenodd'); path.setAttribute('d', 'M7.75 0C5.95507 0 4.5 1.45507 4.5 3.25V3.75C4.5 5.54493 5.95507 7 7.75 7H8.25C10.0449 7 11.5 5.54493 11.5 3.75V3.25C11.5 1.45507 10.0449 0 8.25 0H7.75ZM6 3.25C6 2.2835 6.7835 1.5 7.75 1.5H8.25C9.2165 1.5 10 2.2835 10 3.25V3.75C10 4.7165 9.2165 5.5 8.25 5.5H7.75C6.7835 5.5 6 4.7165 6 3.75V3.25ZM2.5 14.5V13.1709C3.31958 11.5377 4.99308 10.5 6.82945 10.5H9.17055C11.0069 10.5 12.6804 11.5377 13.5 13.1709V14.5H2.5ZM6.82945 9C4.35483 9 2.10604 10.4388 1.06903 12.6857L1 12.8353V13V15.25V16H1.75H14.25H15V15.25V13V12.8353L14.931 12.6857C13.894 10.4388 11.6452 9 9.17055 9H6.82945Z'); path.setAttribute('fill', 'currentColor'); svg.appendChild(path); userBtn.appendChild(svg); loggedOutContainer.appendChild(userBtn); loggedOutContainer.style.display = 'flex'; loggedOutContainer.style.gap = '8px'; loggedOutContainer.style.alignItems = 'center'; user_status_content.firstChild.appendChild(loggedOutContainer); } })();
Drains

Working with Drains

Last updated March 4, 2026

Drains are available on Enterprise and Pro plans

Drains let you forward observability data from your applications to external services for debugging, performance optimization, analysis, and alerting, so that you can:

  • Store observability data persistently in your preferred external services
  • Process large volumes of telemetry data using your own tools
  • Set up alerts based on application behavior patterns
  • Build custom metrics and dashboards from your data

You can add Drains in two ways:

Learn how to manage your active drains.

You can drain four types of data:

  • Logs: Runtime, build, and static logs from your deployments (supports custom endpoints and native integrations)
  • Traces: Distributed tracing data in OpenTelemetry format (supports custom endpoints and native integrations)
  • Speed Insights: Performance metrics and web vitals (custom endpoints only)
  • Web Analytics: Page views and custom events (custom endpoints only)

Each drain data type has specific formats, fields, and schemas. Review the reference documentation for logs, traces, speed insights, and analytics to understand the data structure you'll receive from each data type.

When you create or update drains through the REST API, use the schemas property in the request body to specify which data type the drain receives. Each drain handles one data type.

The schemas object maps a schema name to a version object:

{
  schemas: {
    [schemaName: string]: {
      version: string;
    };
  }
}

The following table lists the available schema names:

Schema nameVersionData type
logv1Runtime, build, and static logs
tracev1Distributed tracing data in OpenTelemetry format
analyticsv2Web Analytics page views and custom events
speed_insightsv1Performance metrics and web vitals

For example, to create a log drain, set log as the schema name with version v1:

{
  "schemas": {
    "log": { "version": "v1" }
  }
}

You also use the schemas property when validating drain delivery configuration. Pass the same schemas and delivery values you plan to use when creating the drain to verify your endpoint before the drain is live.

For details on the data each schema delivers, see the reference docs for logs, traces, speed insights, and analytics.

You can secure your drains by checking for valid signatures and hiding IP addresses. Learn how to add security to your drains.

Drains are available to all users on the Pro and Enterprise plans. If you are on the Hobby or Pro Trial plan, you'll need to upgrade to Pro to access drains.

Drains usage is billed based on the pricing table below. Pricing is the same regardless of data type:

ResourcePriceIncluded (Pro)
Drains$0.50 per 1 GBN/A

See Optimizing Drains for information on how to manage costs associated with Drains.

For more information on Drains, check out the following resources:


Was this helpful?

supported.