R2 expands with event notifications, GCS migrations, and a lower-cost storage tier
Cloudflare has added three capabilities to its R2 object storage platform: event notifications in open beta, Google Cloud Storage (GCS) migration support in Super Slurper, and a new Infrequent Access storage class in private beta. The updates target common data workflows and aim to give developers more control over storage costs while keeping R2's zero egress fee model intact.
Event notifications for data-driven workflows
R2 buckets can now emit notifications when data changes. The feature, available in open beta, sends messages to a Cloudflare Queue whenever an object is created, updated, or deleted. Those messages are consumed by a Worker, where developers can trigger downstream logic such as transforming data for a warehouse or post-processing media files.
To enable notifications on a bucket, use the Wrangler CLI:
wrangler r2 bucket notification create <bucket_name> --event-type object-create --queue <queue_name>
During the beta period, some limitations apply. Details on setup and current constraints are available in the R2 event notifications documentation.
Super Slurper now migrates from Google Cloud Storage
Super Slurper, the data migration tool introduced last year for one-time transfers from AWS S3 to R2, now also supports Google Cloud Storage as a source. The service runs migrations without requiring users to provision VMs or implement custom retry logic. According to Cloudflare, thousands of developers have already used Super Slurper to move petabytes of data from S3.
To start a GCS-to-R2 migration from the Cloudflare dashboard:
- Navigate to R2 > Data Migration.
- Select Migrate files.
- Choose Google Cloud Storage as the source bucket provider.
- Enter the source bucket name and credentials, then select Next.
- Enter the destination R2 bucket name and credentials, then select Next.
- Review the migration details and select Migrate files.
Migration job status can be checked from the dashboard at any time.
Infrequent Access class cuts storage costs
Cloudflare has opened a private beta for a new Infrequent Access storage class aimed at data that is rarely read — long-tail user content, logs, and similar workloads. The class offers lower storage pricing while retaining the same performance and durability as standard R2 storage.
Objects can be uploaded directly to the Infrequent Access class using Workers:
# wrangler.toml
[[r2_buckets]]
binding = 'MY_BUCKET'
bucket_name = '<YOUR_BUCKET_NAME>'
# index.ts
export default {
async fetch(request: Request, env: Env): Promise<Response> {
if (request.method === "PUT") {
await env.MY_BUCKET.put("myobject", request.body, storageClass: "InfrequentAccess");
return new Response("Put object successfully!");
}
return new Response("Not a PUT!");
}
}
Alternatively, an object lifecycle policy can be set to transition data to Infrequent Access after a specified period. Cloudflare says it plans to eventually automate these transitions so users won't need to create lifecycle rules manually.
Pricing for Infrequent Access mirrors existing R2 pricing components: storage, Class A operations (writes and lists), Class B operations (reads), and a per-GB data retrieval fee. The retrieval charge is what makes the lower storage price possible, and it applies whenever data in this class is read. As with all R2 storage, no egress fees are incurred when data is accessed.
| Component | Price |
|---|---|
| Storage | $0.01 / GB-month |
| Class A Operations | $9.00 / million requests |
| Class B Operations | $0.90 / million requests |
| Data Retrieval (Processing) | $0.01 / GB |
| Egress (or Data Transfer) | $0 - No Charge |



