---
title: Queues Changelog
image: https://edgetunnel-b2h.pages.dev/cf-twitter-card.png
---

> Documentation Index  
> Fetch the complete documentation index at: https://edgetunnel-b2h.pages.dev/changelog/llms.txt  
> Use this file to discover all available pages before exploring further. 

[Skip to content](#%5Ftop) 

# Changelog

New updates and improvements at Cloudflare.

[ Subscribe to RSS ](https://edgetunnel-b2h.pages.dev/changelog/rss/index.xml) [ View RSS feeds ](https://edgetunnel-b2h.pages.dev/fundamentals/new-features/available-rss-feeds/) 

Queues

![hero image](https://edgetunnel-b2h.pages.dev/_astro/hero.CVYJHPAd_26AMqX.svg) 

Jul 15, 2026
1. ### [Subscribe to Email Sending events with Queues](https://edgetunnel-b2h.pages.dev/changelog/post/2026-07-15-event-subscriptions/)  
[ Email Service ](https://edgetunnel-b2h.pages.dev/email-service/)[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
You can now subscribe to **[Email Sending](https://edgetunnel-b2h.pages.dev/email-service/api/send-emails/) events** through [Queues event subscriptions](https://edgetunnel-b2h.pages.dev/queues/event-subscriptions/) and receive outbound transactional email lifecycle events on a queue. Each subscription is scoped to one sending domain — either the zone apex, such as `example.com`, or a verified sending subdomain, such as `send.example.com`.  
Six event types are published: `message.delivered`, `message.deferred`, `message.bounced`, `message.failed`, `message.rejected`, and `message.complained`. Use them to track deliverability, react to bounces and complaints, and drive suppression or retry logic. Email Routing events are not published on this source.  
Each event includes the message details, delivery status, and SMTP response:  
```json  
{  
  "type": "cf.email.sending.message.delivered",  
  "source": {  
    "type": "email.sending",  
    "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",  
    "domain": "example.com"  
  },  
  "payload": {  
    "messageId": "0101018f7d0c4d9a-msg-deadbeef",  
    "recipient": "user@example.net",  
    "terminal": true,  
    "delivery": {  
      "status": "delivered",  
      "smtpStatusCode": "250"  
    }  
  }  
}  
```  
Refer to [Event subscriptions](https://edgetunnel-b2h.pages.dev/email-service/platform/event-subscriptions/) to see all event types and example payloads.

Jun 04, 2026
1. ### [Billable usage and budget alerts now in product sidebars](https://edgetunnel-b2h.pages.dev/changelog/post/2026-06-04-billable-usage-product-sidebar/)  
[ Cloudflare Fundamentals ](https://edgetunnel-b2h.pages.dev/fundamentals/)[ Workers ](https://edgetunnel-b2h.pages.dev/workers/)[ D1 ](https://edgetunnel-b2h.pages.dev/d1/)[ R2 ](https://edgetunnel-b2h.pages.dev/r2/)[ KV ](https://edgetunnel-b2h.pages.dev/kv/)[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)[ Vectorize ](https://edgetunnel-b2h.pages.dev/vectorize/)[ Durable Objects ](https://edgetunnel-b2h.pages.dev/durable-objects/)[ Containers ](https://edgetunnel-b2h.pages.dev/containers/)  
Pay-as-you-go customers can now view billable usage and create [budget alerts](https://edgetunnel-b2h.pages.dev/changelog/post/2026-04-13-billable-usage-dashboard-and-budget-alerts/) directly from the product overview pages for [Workers & Pages](https://edgetunnel-b2h.pages.dev/workers/), [D1](https://edgetunnel-b2h.pages.dev/d1/), [R2](https://edgetunnel-b2h.pages.dev/r2/), [Workers KV](https://edgetunnel-b2h.pages.dev/kv/), [Queues](https://edgetunnel-b2h.pages.dev/queues/), [Vectorize](https://edgetunnel-b2h.pages.dev/vectorize/), [Durable Objects](https://edgetunnel-b2h.pages.dev/durable-objects/), and [Containers](https://edgetunnel-b2h.pages.dev/containers/). A new sidebar widget shows current-period spend and the billing cycle date range, alongside a button to create a budget alert.  
The widget pulls from the same data as the [Billable Usage dashboard](https://edgetunnel-b2h.pages.dev/changelog/post/2026-04-13-billable-usage-dashboard-and-budget-alerts/) and aligns to your billing cycle (or the current day on Free plans), so the numbers match your invoice. Enterprise contract accounts are not yet supported.  
![Billable usage widget in the Durable Objects product sidebar showing current-period spend and a breakdown by service](https://edgetunnel-b2h.pages.dev/_astro/2026-06-04-billable-usage-product-sidebar.BUuIokn__ZAx1o6.webp)  
Selecting **Create budget alert** opens the budget alert flow inline so you can set a dollar threshold in the same place you are reviewing usage. Budget alerts apply to your total account-level spend across all products, not just the product page you create them from.  
For more information, refer to the [Usage-based billing documentation](https://edgetunnel-b2h.pages.dev/billing/).

May 19, 2026
1. ### [Event subscriptions for Artifacts lifecycle events](https://edgetunnel-b2h.pages.dev/changelog/post/2026-05-19-event-subscriptions/)  
[ Artifacts ](https://edgetunnel-b2h.pages.dev/artifacts/)[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
You can now receive [event notifications](https://edgetunnel-b2h.pages.dev/queues/event-subscriptions/) for [Artifacts](https://edgetunnel-b2h.pages.dev/artifacts/) repository changes and consume them from a Worker to build commit-driven automation.  
This allows you to:

  * Run custom workflows when a repository is created or imported
  * Kick off a build and deploy a change when an agent pushes to a repo
  * Trigger a review agent on every push  
Available events include:

  * **Account-level events** (`artifacts` source) — `repo.created`, `repo.deleted`, `repo.forked`, `repo.imported`
  * **Repository-level events** (`artifacts.repo` source) — `pushed`, `cloned`, `fetched`  
To learn more, refer to [Artifacts documentation](https://edgetunnel-b2h.pages.dev/artifacts/guides/event-subscriptions/).

Apr 28, 2026
1. ### [Realtime backlog metrics now available for Queues](https://edgetunnel-b2h.pages.dev/changelog/post/2026-04-28-improved-queues-metrics/)  
[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
[Queues](https://edgetunnel-b2h.pages.dev/queues/), Cloudflare's managed message queue, now exposes realtime backlog metrics via the dashboard, REST API, and JavaScript API. Three new fields are available:

  * **`backlog_count`** — the number of unacknowledged messages in the queue
  * **`backlog_bytes`** — the total size of those messages in bytes
  * **`oldest_message_timestamp_ms`** — the timestamp of the oldest unacknowledged message  
The following endpoints also now include a `metadata.metrics` object on the result field after successful message consumption:

  * `/accounts/{account_id}/queues/{queue_id}/messages/pull`
  * `/accounts/{account_id}/queues/{queue_id}/messages`
  * `/accounts/{account_id}/queues/{queue_id}/messages/batch`  
#### Javascript APIs  
Call `env.QUEUE.metrics()` to get realtime backlog metrics:

**TypeScript**  
```ts  
const {  
  backlogCount, // number  
  backlogBytes, // number  
  oldestMessageTimestamp, // Date | undefined  
} = await env.QUEUE.metrics();  
```  
`env.QUEUE.send()` and `env.QUEUE.sendBatch()` also now return a metrics object on the response.  
You can also query these fields via the [GraphQL Analytics API](https://edgetunnel-b2h.pages.dev/analytics/graphql-api/) or view realtime backlog on the [dashboard ↗](https://dash.cloudflare.com/?to=/:account/workers/queues).  
![Queues realtime backlog](https://edgetunnel-b2h.pages.dev/_astro/2026-04-28-queues-metrics.BYi0hgrD_149xlT.webp)  
For more information, refer to [Queues metrics](https://edgetunnel-b2h.pages.dev/queues/observability/metrics/).

Feb 04, 2026
1. ### [Cloudflare Queues now available on Workers Free plan](https://edgetunnel-b2h.pages.dev/changelog/post/2026-02-04-queues-free-plan/)  
[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
[Cloudflare Queues](https://edgetunnel-b2h.pages.dev/queues) is now part of the Workers free plan, offering guaranteed message delivery across up to **10,000 queues** to either [Cloudflare Workers](https://edgetunnel-b2h.pages.dev/workers) or [HTTP pull consumers](https://edgetunnel-b2h.pages.dev/queues/configuration/pull-consumers). Every Cloudflare account now includes **10,000 operations per day** across reads, writes, and deletes. For more details on how each operation is defined, refer to [Queues pricing ↗](https://edgetunnel-b2h.pages.dev/workers/platform/pricing/#queues).  
All features of the existing Queues functionality are available on the free plan, including unlimited [event subscriptions](https://edgetunnel-b2h.pages.dev/queues/event-subscriptions/). Note that the maximum retention period on the free tier, however, is 24 hours rather than 14 days.  
If you are new to Cloudflare Queues, follow [this guide ↗](https://edgetunnel-b2h.pages.dev/queues/get-started/) or try one of our [tutorials](https://edgetunnel-b2h.pages.dev/queues/tutorials/) to get started.

Jan 09, 2026
1. ### [Get notified when your Workers builds succeed or fail](https://edgetunnel-b2h.pages.dev/changelog/post/2025-12-11-builds-event-subscriptions/)  
[ Workers ](https://edgetunnel-b2h.pages.dev/workers/)[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
You can now receive notifications when your Workers' builds start, succeed, fail, or get cancelled using [Event Subscriptions](https://edgetunnel-b2h.pages.dev/queues/event-subscriptions/).  
[Workers Builds](https://edgetunnel-b2h.pages.dev/workers/ci-cd/builds/) publishes events to a [Queue](https://edgetunnel-b2h.pages.dev/queues/) that your Worker can read messages from, and then send notifications wherever you need — Slack, Discord, email, or any webhook endpoint.  
You can deploy [this Worker ↗](https://github.com/cloudflare/templates/tree/main/workers-builds-notifications-template) to your own Cloudflare account to send build notifications to Slack:  
[![Deploy to Cloudflare](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/cloudflare/templates/tree/main/workers-builds-notifications-template)  
The template includes:

  * Build status with Preview/Live URLs for successful deployments
  * Inline error messages for failed builds
  * Branch, commit hash, and author name  
![Slack notifications showing build events](https://edgetunnel-b2h.pages.dev/_astro/builds-notifications-slack.rcRiU95L_169ufw.webp)  
For setup instructions, refer to the [template README ↗](https://github.com/cloudflare/templates/tree/main/workers-builds-notifications-template#readme) or the [Event Subscriptions documentation](https://edgetunnel-b2h.pages.dev/queues/event-subscriptions/manage-event-subscriptions/).

Aug 19, 2025
1. ### [Subscribe to events from Cloudflare services with Queues](https://edgetunnel-b2h.pages.dev/changelog/post/2025-08-19-event-subscriptions/)  
[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
You can now subscribe to events from other Cloudflare services (for example, [Workers KV](https://edgetunnel-b2h.pages.dev/kv/), [Workers AI](https://edgetunnel-b2h.pages.dev/workers-ai), [Workers](https://edgetunnel-b2h.pages.dev/workers)) and consume those events via [Queues](https://edgetunnel-b2h.pages.dev/queues/), allowing you to build custom workflows, integrations, and logic in response to account activity.  
![Event subscriptions architecture](https://edgetunnel-b2h.pages.dev/_astro/queues-event-subscriptions.3aVidnXJ_Z2p3fRA.webp)  
Event subscriptions allow you to receive messages when events occur across your Cloudflare account. Cloudflare products can publish structured events to a queue, which you can then consume with [Workers](https://edgetunnel-b2h.pages.dev/workers/) or [pull via HTTP from anywhere](https://edgetunnel-b2h.pages.dev/queues/configuration/pull-consumers/).  
To create a subscription, use the dashboard or [Wrangler](https://edgetunnel-b2h.pages.dev/workers/wrangler/commands/queues/#queues-subscription-create):  
```bash  
npx wrangler queues subscription create my-queue --source r2 --events bucket.created  
```  
An event is a structured record of something happening in your Cloudflare account – like a Workers AI batch request being queued, a Worker build completing, or an R2 bucket being created. Events follow a consistent structure:

**Example R2 bucket created event**  
```json  
{  
  "type": "cf.r2.bucket.created",  
  "source": {  
    "type": "r2"  
  },  
  "payload": {  
    "name": "my-bucket",  
    "location": "WNAM"  
  },  
  "metadata": {  
    "accountId": "f9f79265f388666de8122cfb508d7776",  
    "eventTimestamp": "2025-07-28T10:30:00Z"  
  }  
}  
```  
Current [event sources](https://edgetunnel-b2h.pages.dev/queues/event-subscriptions/events-schemas/) include [R2](https://edgetunnel-b2h.pages.dev/r2/), [Workers KV](https://edgetunnel-b2h.pages.dev/kv/), [Workers AI](https://edgetunnel-b2h.pages.dev/workers-ai/), [Workers Builds](https://edgetunnel-b2h.pages.dev/workers/ci-cd/builds/), [Vectorize](https://edgetunnel-b2h.pages.dev/vectorize/), [Super Slurper](https://edgetunnel-b2h.pages.dev/r2/data-migration/super-slurper/), and [Workflows](https://edgetunnel-b2h.pages.dev/workflows/). More sources and events are on the way.  
For more information on event subscriptions, available events, and how to get started, refer to our [documentation](https://edgetunnel-b2h.pages.dev/queues/event-subscriptions/).

May 09, 2025
1. ### [Publish messages to Queues directly via HTTP](https://edgetunnel-b2h.pages.dev/changelog/post/2025-05-09-publish-to-queues-via-http/)  
[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
You can now publish messages to [Cloudflare Queues](https://edgetunnel-b2h.pages.dev/queues/) directly via HTTP from any service or programming language that supports sending HTTP requests. Previously, publishing to queues was only possible from within [Cloudflare Workers](https://edgetunnel-b2h.pages.dev/workers/). You can already consume from queues via Workers or [HTTP pull consumers](https://edgetunnel-b2h.pages.dev/queues/configuration/pull-consumers/), and now publishing is just as flexible.  
Publishing via HTTP requires a [Cloudflare API token](https://edgetunnel-b2h.pages.dev/fundamentals/api/get-started/create-token/) with `Queues Edit` permissions for authentication. Here's a simple example:  
```bash  
curl "https://api.cloudflare.com/client/v4/accounts/<account_id>/queues/<queue_id>/messages" \
  -X POST \
  -H 'Authorization: Bearer <api_token>' \
  --data '{ "body": { "greeting": "hello", "timestamp":  "2025-07-24T12:00:00Z"} }'  
```  
You can also use our [SDKs](https://edgetunnel-b2h.pages.dev/fundamentals/api/reference/sdks/) for TypeScript, Python, and Go.  
To get started with HTTP publishing, check out our [step-by-step example](https://edgetunnel-b2h.pages.dev/queues/examples/publish-to-a-queue-via-http/) and the full API documentation in our [API reference](https://edgetunnel-b2h.pages.dev/api/resources/queues/subresources/messages/methods/push/).

Apr 17, 2025
1. ### [Increased limits for Queues pull consumers](https://edgetunnel-b2h.pages.dev/changelog/post/2025-04-17-pull-consumer-limits/)  
[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
[Queues pull consumers](https://edgetunnel-b2h.pages.dev/queues/configuration/pull-consumers/) can now pull and acknowledge up to **5,000 messages / second per queue**. Previously, pull consumers were rate limited to 1,200 requests / 5 minutes, aggregated across all queues.  
Pull consumers allow you to consume messages over HTTP from any environment—including outside of [Cloudflare Workers](https://edgetunnel-b2h.pages.dev/workers). They’re also useful when you need fine-grained control over how quickly messages are consumed.  
To setup a new queue with a pull based consumer using [Wrangler](https://edgetunnel-b2h.pages.dev/workers/wrangler/), run:

**Create a queue with a pull based consumer**  
```sh  
npx wrangler queues create my-queue  
npx wrangler queues consumer http add my-queue  
```  
You can also configure a pull consumer using the [REST API](https://edgetunnel-b2h.pages.dev/api/resources/queues/subresources/consumers/methods/create/) or the Queues dashboard.  
Once configured, you can pull messages from the queue using any HTTP client. You'll need a [Cloudflare API Token](https://edgetunnel-b2h.pages.dev/fundamentals/api/get-started/create-token/) with `queues_read` and `queues_write` permissions. For example:

**Pull messages from a queue**  
```bash  
curl "https://api.cloudflare.com/client/v4/accounts/${CF_ACCOUNT_ID}/queues/${QUEUE_ID}/messages/pull" \
--header "Authorization: Bearer ${API_TOKEN}" \
--header "Content-Type: application/json" \
--data '{ "visibility_timeout": 10000, "batch_size": 2 }'  
```  
To learn more about how to acknowledge messages, pull batches at once, and setup multiple consumers, refer to the [pull consumer documentation](https://edgetunnel-b2h.pages.dev/queues/configuration/pull-consumers).  
As always, Queues doesn't charge for data egress. Pull operations continue to be billed at the [existing rate](https://edgetunnel-b2h.pages.dev/queues/platform/pricing), of $0.40 / million operations. The increased limits are available now, on all new and existing queues. If you're new to Queues, [get started with the Cloudflare Queues guide](https://edgetunnel-b2h.pages.dev/queues/get-started).

Mar 27, 2025
1. ### [New Pause & Purge APIs for Queues](https://edgetunnel-b2h.pages.dev/changelog/post/2025-03-25-pause-purge-queues/)  
[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
[Queues](https://edgetunnel-b2h.pages.dev/queues/) now supports the ability to pause message delivery and/or purge (delete) messages on a queue. These operations can be useful when:

  * Your consumer has a bug or downtime, and you want to temporarily stop messages from being processed while you fix the bug
  * You have pushed invalid messages to a queue due to a code change during development, and you want to clean up the backlog
  * Your queue has a backlog that is stale and you want to clean it up to allow new messages to be consumed  
To pause a queue using [Wrangler](https://edgetunnel-b2h.pages.dev/workers/wrangler/), run the `pause-delivery` command. Paused queues continue to receive messages. And you can easily unpause a queue using the `resume-delivery` command.

**Pause and resume a queue**  
```bash  
$ wrangler queues pause-delivery my-queue  
Pausing message delivery for queue my-queue.  
Paused message delivery for queue my-queue.  
$ wrangler queues resume-delivery my-queue  
Resuming message delivery for queue my-queue.  
Resumed message delivery for queue my-queue.  
```  
Purging a queue permanently deletes all messages in the queue. Unlike pausing, purging is an irreversible operation:

**Purge a queue**  
```bash  
$ wrangler queues purge my-queue  
✔ This operation will permanently delete all the messages in queue my-queue. Type my-queue to proceed. … my-queue  
Purged queue 'my-queue'  
```  
You can also do these operations using the [Queues REST API](https://edgetunnel-b2h.pages.dev/api/resources/queues/), or the dashboard page for a queue.  
![Pause and purge using the dashboard](https://edgetunnel-b2h.pages.dev/_astro/pause-purge.SQ7B3RCF_2dqU5K.webp)  
This feature is available on all new and existing queues. Head over to the [pause and purge documentation](https://edgetunnel-b2h.pages.dev/queues/configuration/pause-purge) to learn more. And if you haven't used Cloudflare Queues before, [get started with the Cloudflare Queues guide](https://edgetunnel-b2h.pages.dev/queues/get-started).

Feb 14, 2025
1. ### [Customize queue message retention periods](https://edgetunnel-b2h.pages.dev/changelog/post/2025-02-14-customize-queue-retention-period/)  
[ Queues ](https://edgetunnel-b2h.pages.dev/queues/)  
You can now customize a queue's message retention period, from a minimum of 60 seconds to a maximum of 14 days. Previously, it was fixed to the default of 4 days.  
![Customize a queue's message retention period](https://edgetunnel-b2h.pages.dev/_astro/customize-retention-period.CpK7s10q_19dmJh.webp)  
You can customize the retention period on the settings page for your queue, or using Wrangler:

**Update message retention period**  
```bash  
$ wrangler queues update my-queue --message-retention-period-secs 600  
```  
This feature is available on all new and existing queues. If you haven't used Cloudflare Queues before, [get started with the Cloudflare Queues guide](https://edgetunnel-b2h.pages.dev/queues/get-started).

```json
{"@context":"https://schema.org","@type":"BlogPosting","@id":"https://edgetunnel-b2h.pages.dev/changelog/product/queues/#page","headline":"Queues Changelog | Cloudflare Docs","url":"https://edgetunnel-b2h.pages.dev/changelog/product/queues/","inLanguage":"en","image":"https://edgetunnel-b2h.pages.dev/cf-twitter-card.png","publisher":{"@type":"Organization","name":"Cloudflare","url":"https://www.cloudflare.com/"},"isPartOf":{"@type":"WebSite","@id":"https://edgetunnel-b2h.pages.dev/#website","name":"Cloudflare Docs","url":"https://edgetunnel-b2h.pages.dev/"}}
```
