Linking Heroku as a source

Alpha release

This source is currently in alpha. The interface and available tables may change.

The Heroku connector syncs your apps, releases, builds, dynos, add-ons, and other Heroku platform data into PostHog, so you can analyze your deploy history, dyno formations, and add-on spend alongside your product data.

Prerequisites

You need a Heroku account and an API key. Any Heroku user can generate one, no special account tier is required.

Adding a data source

  1. In PostHog, go to the Sources tab of the data pipeline section.
  2. Click + New source and click Link next to this source.
  3. Enter your credentials (see Configuration below) and click Next.
  4. Select the tables you want to sync, choose a sync method and frequency, then click Import.

Once the syncs are complete, you can start querying this data in PostHog.

When linking Heroku, you'll need:

  • API key – find it in your Heroku account settings under API Key, or create a long-lived token with the Heroku CLI: heroku authorizations:create.

Sync modes

Each table can be synced in one of several modes, depending on what the source supports:

  • Webhook (when available) – the source pushes changes to PostHog in real time. Fastest freshness, lowest ongoing cost, and the only mode that reliably captures updates and deletes.
  • Incremental – only new or updated rows are synced on each run, using a cursor field (such as an updated_at timestamp). Cheaper than a full refresh, but deletes aren't captured.
  • Append only – new rows are appended using a cursor field; existing rows are never updated. Ideal for immutable, append-only tables like event logs.
  • Full refresh – the whole table is reloaded on every sync. Use it when a table has no reliable cursor or when you need deletions reflected.

See sync methods for a full explanation of how each mode works and how to choose between them.

Heroku's API doesn't support filtering records by when they changed, so every table syncs as a full refresh.

Configuration

OptionTypeRequired
API keypasswordYes

Supported tables

TableDescriptionSync methodIncremental fieldPrimary key
apps

An app represents the program that you would like to deploy and run on Heroku.

Full refresh
addons

Add-ons represent add-ons that have been provisioned and attached to one or more apps.

Full refresh
builds

A build represents the process of transforming a code tarball into build artifacts.

Full refresh
collaborators

A collaborator represents an account that has been given access to an app on Heroku.

Full refresh
domains

Domains define what web routes should be routed to an app on Heroku.

Full refresh
dynos

A point-in-time snapshot of the processes currently running on each app

Full refresh
formation

The formation of processes that should be maintained for an app — the process types, dyno sizes, and quantities the app is scaled to.

Full refresh
invoices

Invoices for your personal Heroku account; team invoices are not included

Full refresh
pipelines

A pipeline allows grouping of apps into different stages.

Full refresh
releases

A release represents a combination of code, config vars and add-ons for an app on Heroku.

Full refresh
teams

Only returns data for accounts that belong to Heroku Teams or Enterprise

Full refresh

A few tables only apply to certain accounts:

  • invoices covers your personal Heroku account. Team invoices aren't included.
  • teams only returns data for accounts that belong to Heroku Teams or Enterprise.
  • dynos is a point-in-time snapshot of the processes running when the sync happened.

Troubleshooting

  • If your API key is invalid or has been revoked, generate a new key in your Heroku account settings, then reconnect.
  • Heroku rate limits API usage to 4,500 requests per hour per account. Syncs back off and retry automatically, but if other tools share the same account's quota, a sync can take longer than usual.

If your sync is failing or data looks wrong, see the Data warehouse troubleshooting guide. If that doesn't help, contact support – we're happy to help.

Community questions

Was this page useful?

Questions about this page? or post a community question.