Skip Navigation
Show nav
Heroku Dev Center Dev Center
  • Get Started
  • Documentation
  • Changelog
  • Search
Heroku Dev Center Dev Center
  • Get Started
    • Node.js
    • Ruby on Rails
    • Ruby
    • Python
    • Java
    • PHP
    • Go
    • Scala
    • Clojure
    • .NET
  • Documentation
  • Changelog
  • More
    Additional Resources
    • Home
    • Elements
    • Products
    • Pricing
    • Careers
    • Help
    • Status
    • Events
    • Podcasts
    • Compliance Center
    Heroku Blog

    Heroku Blog

    Find out what's new with Heroku on our blog.

    Visit Blog
  • Log in or Sign up
View categories

Categories

  • Heroku Architecture
    • Compute (Dynos)
      • Dyno Management
      • Dyno Concepts
      • Dyno Behavior
      • Dyno Reference
      • Dyno Troubleshooting
    • Stacks (operating system images)
    • Networking & DNS
    • Platform Policies
    • Platform Principles
    • Buildpacks
  • Developer Tools
    • AI Tools
    • Command Line
    • Heroku VS Code Extension
  • Deployment
    • Deploying with Git
    • Deploying with Docker
    • Deployment Integrations
  • Continuous Delivery & Integration (Heroku Flow)
    • Continuous Integration
  • Language Support
    • Node.js
      • Node.js Behavior in Heroku
      • Working with Node.js
      • Troubleshooting Node.js Apps
    • Ruby
      • Rails Support
        • Working with Rails
      • Working with Bundler
      • Working with Ruby
      • Ruby Behavior in Heroku
      • Troubleshooting Ruby Apps
    • Python
      • Working with Python
      • Background Jobs in Python
      • Python Behavior in Heroku
      • Working with Django
    • Java
      • Java Behavior in Heroku
      • Working with Java
      • Working with Maven
      • Working with Spring Boot
      • Troubleshooting Java Apps
    • PHP
      • Working with PHP
      • PHP Behavior in Heroku
    • Go
      • Go Dependency Management
    • Scala
    • Clojure
    • .NET
      • Working with .NET
  • Databases & Data Management
    • Heroku Postgres
      • Postgres Basics
      • Postgres Getting Started
      • Postgres Performance
      • Postgres Data Transfer & Preservation
      • Postgres Availability
      • Postgres Special Topics
      • Migrating to Heroku Postgres
      • Heroku Postgres Advanced (Limited GA)
    • Heroku Key-Value Store
    • Apache Kafka on Heroku
    • Other Data Stores
  • AI
    • Inference Essentials
    • Inference API
    • Inference Quick Start Guides
    • AI Models
    • Tool Use
    • AI Integrations
    • Vector Database
  • Monitoring & Metrics
    • Logging
  • App Performance
  • Add-ons
    • All Add-ons
  • Collaboration
  • Security
    • App Security
    • Identities & Authentication
      • Single Sign-on (SSO)
    • Private Spaces
      • Infrastructure Networking
    • Compliance
  • Heroku Enterprise
    • Enterprise Accounts
    • Enterprise Teams
  • Patterns & Best Practices
  • Extending Heroku
    • Platform API
    • App Webhooks
    • Heroku Labs
    • Building Add-ons
      • Add-on Development Tasks
      • Add-on APIs
      • Add-on Guidelines & Requirements
    • Building CLI Plugins
    • Developing Buildpacks
    • Dev Center
  • Accounts & Billing
  • Troubleshooting & Support
  • Integrating with Salesforce
    • Heroku AppLink
      • Working with Heroku AppLink
      • Heroku AppLink Reference
      • Getting Started with Heroku AppLink
    • Heroku Connect (Salesforce sync)
      • Heroku Connect Administration
      • Heroku Connect Reference
      • Heroku Connect Troubleshooting
    • Other Salesforce Integrations
  • Databases & Data Management
  • Heroku Postgres
  • Heroku Postgres Advanced (Limited GA)
  • Heroku Postgres Advanced Quotas (Limited GA)

Heroku Postgres Advanced Quotas (Limited GA)

Table of Contents [expand]

  • Storage Quotas and Thresholds
  • Configure Quotas and Thresholds
  • View Quotas and Thresholds
  • Resolving Exceeded Thresholds
  • Additional Reading

Last updated May 18, 2026

Heroku Postgres Advanced is in limited general availability. To start creating and using Advanced databases, open a ticket with Heroku Support to request access. Subscribe to our changelog to stay informed of when Heroku Postgres Advanced is generally available.

You can set quotas and thresholds on Heroku Postgres Advanced to prevent going over certain database limits. This article describes the types of quotas you can set, types of actions you can trigger, and how to set and view quotas.

You can only set quotas and thresholds on Postgres Advanced databases. For information about storage capacity on non-Advanced plans, see Heroku Postgres Over Plan Capacity.

Storage Quotas and Thresholds

All Advanced databases include 100 GB of storage at no cost and you can use up to 100 TB of storage. Heroku charges for the additional storage you use over your included storage amount. To avoid going over the storage limit and incurring extra costs, configure quota thresholds on your storage usage.

Storage Threshold Types

You can set a warning threshold and a critical threshold in GB:

Threshold Description
warning Get an email notification when exceeding the configured threshold and get alerts in the CLI.
critical Get the configured enforcement action when exceeding the threshold.

Storage Enforcement Actions

You can select an enforcement action if you reach your critical threshold limit:

Enforcement Action Description
restrict We send an email and give a 7 day grace period for you to bring the database below limits. After 7 days if the database is still exceeding the threshold, we apply the restrict action.

After the grace period, we revoke CREATE and INSERT privileges and the database is limited to one connection. You can still read or delete the data in the database. Use this limited connection to bring your database into compliance and retain access to your data. Heroku restores full access when usage is below 80% of the configured threshold.
notify We send an email notifying your database has exceeded its critical threshold. The database storage can continue increasing and incurs costs if it exceeds the 100 GB included storage amount.
none We don’t send a notification or restrict database access. The database storage can continue increasing and incurs costs if it exceeds the 100 GB included storage amount.

Configure Quotas and Thresholds

To configure storage thresholds and an enforcement action on your database, use the heroku data:pg:quotas:update command. This example sets a warning threshold of 80 GB, a critical threshold of 95 GB, and an enforcement action of Notify if storage usage is over 95 GB.

$ heroku data:pg:quotas:update DATABASE -a example-app --type storage --warning 80 --critical 90 --enforcement-action notify
Updating storage quota on ⛁ DATABASE... done
=== Storage

Warning:            80.00 GB
Critical:           95.00 GB
Enforcement Action: Notify
Enforcement:        10.07 GB / 95.00 GB (10.60 %) (Within configured quotas)

View Quotas and Thresholds

You can also view your quotas with the data:pg:quotas command:

$ heroku data:pg:quotas DATABASE -a example-app
=== Storage

Warning:            80.00 GB
Critical:           90.00 GB

Enforcement Action: Notify
Enforcement:        10.07 GB /95.00 GB (10.60 %) (Within configured quotas)

Resolving Exceeded Thresholds

If you exceed your configured thresholds and want to either stop receiving notifications, avoid disruption to your service if you’re in the grace period, or restore full access after having your database restricted, you can either:

  • Delete data to get below your exceeded threshold
  • Optimize storage to get below your exceeded threshold
  • Adjust storage threshold elections

If you set an enforcement action of restrict, we restrict database access after the grace period and you can’t use DROP TABLE or DROP INDEX to reduce your storage usage. Use DELETE and TRUNCATE instead.

Delete Data

You can delete data by removing unnecessary data, old logs, or unused records in a psql session.

Use DELETE to delete rows in a table. For example, to delete records older than 30 days in a logs table:

$ heroku pg:psql HEROKU_POSTGRESQL_COBALT -a example-app
example-app::HEROKU_POSTGRESQL_COBALT=> DELETE FROM logs WHERE created_at < (now() - '30 days'::interval);

Use DROP TABLE to remove a table. For example, to drop the orders and transactions tables:

$ heroku data:pg:psql HEROKU_POSTGRESQL_COBALT -a example-app
example-app::HEROKU_POSTGRESQL_COBALT=> DROP TABLE orders, transactions;

Use TRUNCATE to delete all rows from a table. For example, to delete all rows from the logs table:

$ heroku data:pg:psql HEROKU_POSTGRESQL_COBALT -a example-app
example-app::HEROKU_POSTGRESQL_COBALT=> TRUNCATE TABLE logs;

Optimize Storage

You can optimize storage on your database by dropping unused indexes or archiving historical records in a psql session.

Use DROP INDEX to remove an index. For example, to drop an index named user_email_idx:

$ heroku data:pg:psql HEROKU_POSTGRESQL_COBALT -a example-app
example-app::HEROKU_POSTGRESQL_COBALT=> DROP INDEX CONCURRENTLY user_email_idx;

Adjust Thresholds

You can reconfigure your storage thresholds to get out of the exceeded range.

Additional Reading

  • Heroku Postgres Advanced category
  • Getting Started with Heroku Postgres Advanced

Feedback

Log in to submit feedback.

Information & Support

  • Getting Started
  • Documentation
  • Changelog
  • Compliance Center
  • Training & Education
  • Blog
  • Support Channels
  • Status

Language Reference

  • Node.js
  • Ruby
  • Java
  • PHP
  • Python
  • Go
  • Scala
  • Clojure
  • .NET

Other Resources

  • Careers
  • Elements
  • Products
  • Pricing
  • RSS
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku Blog
    • Heroku News Blog
    • Heroku Engineering Blog
  • Twitter
    • Dev Center Articles
    • Dev Center Changelog
    • Heroku
    • Heroku Status
  • Github
  • LinkedIn
  • © 2026 Salesforce, Inc. All rights reserved. Various trademarks held by their respective owners. Salesforce Tower, 415 Mission Street, 3rd Floor, San Francisco, CA 94105, United States
  • heroku.com
  • Legal
  • Terms of Service
  • Privacy Information
  • Responsible Disclosure
  • Trust
  • Contact
  • Cookie Preferences
  • Your Privacy Choices