Table of Contents [expand]
Last updated June 30, 2026
Provisioning the Add-On
Heroku manages Apache Kafka on Heroku as other add-ons on the platform. You can provision a Kafka cluster for a Heroku app via the CLI:
$ heroku addons:create heroku-kafka:standard-0 -a example-app
Creating heroku-kafka:standard-0 on ⬢ example-app... ~$2.083/hour (max $1500/month)
The cluster should be available in 5-15 minutes.
Run `heroku kafka:wait` to wait until the cluster is ready.
You can read more about managing Kafka at https://devcenter.heroku.com/articles/kafka-on-heroku#managing-kafka
kafka-animated-39618 is being created in the background. The app will restart when complete...
Run heroku addons:info kafka-animated-39618 to check creation progress.
Run heroku addons:docs heroku-kafka to view documentation.
New clusters can take some time to become available. You can track the progress by typing heroku kafka:wait.
We don’t recommend using Zookeeper beyond its role in supporting Kafka, as other uses can degrade the operational stability of your services. In Private Spaces not on the Common Runtime, enable access to the Zookeeper that’s associated with Kafka at add-on creation time. Enable Zookeeper access with the --enable-zookeeper option of the add-on creation command: heroku addons:create heroku-kafka -- --enable-zookeeper. You can also enable or disable Zookeeper access after creation with the heroku kafka:zookeeper enable and heroku kafka:zookeeper disable commands.
You can’t access Zookeeper in Shield Spaces.
After you provision a Kafka add-on, the cluster’s connection string config vars are available as new config vars in your app. See Connecting to a Kafka cluster for how to connect to your cluster.
Kafka is available in the Common Runtime, Private Spaces, and Shield Spaces. Provisioning Kafka for an app in a Private or Shield Space creates a Kafka cluster in an isolated data resource network attached to that Space.
Sharing Kafka Between Apps
Kafka works well when shared across many different code bases and projects within the same group. Structure your Kafka usage as a set of independent producers and consumers, set up as either multiple apps, or as process types of one or more apps.
$ heroku addons:attach my-originating-app::KAFKA -a other-app
Attaching ⛁ kafka-animated-39618 as KAFKA to ⬢ other-app... done
Setting KAFKA config vars and restarting ⬢ other-app... done, v1185
Viewing Cluster Information
Use the heroku kafka:info command to view the current state of your cluster. This command provides information on the resource’s name, creation date, plan, version, and activity metadata.
$ heroku kafka:info -a example-app
=== KAFKA_URL
Plan: heroku-kafka:standard-0
Status: available
Version: 3.7.1
Created: 2026-06-01 16:28:54 +0000
Topics: 84 topics, see heroku kafka:topics
Partitions: [··········] 417 / 12000 partition replicas (partitions × replication factor)
Messages: 5 message/s
Traffic: 32 byte/s in / 166 byte/s out
Data Size: [··········] 68.38 MB / 150.00 GB (0.04%)
Add-on: kafka-animated-39618
Removing the Add-on
Use the heroku addons:destroy command to delete your Apache Kafka on Heroku add-on, specifying the add-on name to delete:
This action destroys all associated data and you can’t undo it.
$ heroku addons:destroy kafka-animated-39618 -a example-app
› Warning: Destructive Action
› This command will affect the app ⬢ example-app
✔ To proceed, type example-app or re-run this command with --confirm example-app example-app
Destroying kafka-animated-39618 on ⬢ example-app... done