Building and running websites and apps on Vercel

UAE · India · US

Orders lost on busy days? When a queue on Vercel pays off, and what it costs

By Shivanath DevinarayananPublished 9 min read
Written forHead of digital, IT manager, or founder who owns the company website or web app, signs the hosting bill and answers client security questionnaires“Our site and web app live on an old server, and the security questionnaire is due.”

The short answer

When should a team move background work onto Vercel Queues, what does it cost to run, and what can go wrong while it is in Beta?

Move work to a queue when a slow or flaky step, such as a PDF, a WhatsApp message or a CRM update, makes requests fail or time out. Vercel Queues retries until the job is done, with at-least-once delivery, so every consumer must be safe to run twice. It is Beta. At Mindcat, we cap retries first.

A dispatcher at night beside a glowing parcel conveyor that splits into three chutes, a delivery scooter parked nearby

Takeaways

  1. 01Vercel Queues is Beta on all plans. Delivery is at-least-once and order is approximate, never strict.
  2. 02Write every consumer so it can run twice for one message without doing the work twice.
  3. 03As of 16 October 2026, operations cost $0.60 per million in Washington D.C. and $0.6816 in Mumbai.
  4. 04A rolled-back deployment keeps retrying its own messages for up to the retention period. Set maxDeliveries.

If orders, enquiry emails or CRM updates from your website or web app go missing on busy days, and your developer says a slow step timed out, this is for you. It is not for a site whose background work takes a second and loses nothing when it fails (run it in the request), or for a company whose platform team already runs its queues. If your site still runs on an old server, the queue comes after the move; our hosting page sets out what a move involves. A queue takes the slow step out of the visitor's request and keeps trying until it is done. Vercel Queues is one way to do that on Vercel, and it is in Beta.

What problem does a queue solve here?

It moves slow or failure-prone work off the visitor's request. The request saves a message and returns at once; a separate piece of code, the consumer, does the work, and a failure means a retry, not a lost job. Vercel's own list of uses: defer expensive work like emails, PDFs or external API calls; absorb traffic spikes; retry failed work; schedule tasks; drop duplicate publishes; and run separate pipelines from the same messages.

The failure it fixes is quiet. A courier's order webhook calls the label service, the label service is slow at lunchtime, the function times out, and the order never reaches the driver's app. Nobody sees an error page. The order just is not there.

For what Vercel Queues covers and where it fits in our builds, see the Vercel Queues page.

What does Vercel Queues promise, and what does it not?

Read both lists before you design the consumers. The promises are strong, and the gaps are exactly where bugs come from.

It promisesIt does not promise
Each message written to three availability zones before the send returnsStrict order: delivery is approximate write order, no FIFO
Retries until the handler succeeds or the message expiresExactly-once delivery: it is at-least-once
Duplicate publishes dropped by idempotency key, within min(retention, 24 hours)Strict data residency: messages may sit in a neighbouring region during an outage
A push consumer with no public URL, invoked only by the queueGeneral availability: it is Beta
Queues promises three-zone copies, retries, idempotency keys; it does not promise order, exactly once or strict residency
What Vercel Queues promises, and what it does not (Vercel docs, 16 October 2026).

At-least-once is the line that changes your code. In plain terms: now and then the same job arrives twice. Vercel says that in most cases a message is delivered once, but in rare events, such as an availability zone failover, a delivered message may come again. So a consumer that sends a WhatsApp update must check whether it already sent it. Setting a value is safe twice; adding to a count is not.

The limits, as of 16 October 2026: messages are kept from 60 seconds to 7 days (24 hours by default), a delay can be up to 7 days, a receive takes up to 10 messages, and a message can be up to 100 MB. After 32 attempts, retries move to a forced backoff.

Queues or Workflows: which one?

This one is a decision for your developer, so here is our rule to hand over. Vercel calls Queues "the lower-level primitive that powers Vercel Workflows." Our rule: use Queues when one message triggers one or more independent jobs. Use Workflows when a business process has steps that depend on each other, or must wait longer than 7 days.

A label PDF, a WhatsApp update and a CRM update are three separate jobs from one order: that is a queue with three consumer groups. An onboarding that waits for a signed document, then a payment, then a call is a workflow. Vercel's docs suggest Workflows over chaining delayed messages when you need to wait past the 7-day limit.

What does it cost to run?

Queues is billed per operation, and the price depends on the region. As of 16 October 2026, Vercel lists $0.60 per million operations in Washington D.C. (iad1) and $0.6816 per million in Mumbai (bom1). Hobby includes the first million; Hobby is also for non-commercial, personal use only, so a business runs on Pro.

For your developer, the detail behind the price. Five things count as operations: a send, a receive, a delete (the acknowledgement), a visibility change and a notify (a push delivery). Messages are metered in 4 KiB chunks, so a 12 KiB message counts as three. A send with an idempotency key counts double. The function that does the work is billed separately, at normal compute rates.

A sum, with our assumptions stated. With the order ID as the idempotency key, the send counts as 2. Each of three consumers adds at least a notify and a delete, so an order costs at least 8 operations before any retry; we budget 12. At 300,000 orders a month that is 3.6 million operations, about $2.45 (about AED 9) in Mumbai. Check the real count on the usage page in the first week.

Put that next to the rest of the bill. Pro is USD 20 a month (about AED 73) with one deploying seat and USD 20 of usage credit; extra deploying seats are USD 20 and viewer seats are free. The bigger line is the compute each consumer runs, billed at normal rates, and any model calls inside it. The assessment measures that line from your own traffic.

Why can a rolled-back deployment keep running?

Because messages stay pinned to the deployment that published them. This is the detail to read twice, and Vercel's docs state it plainly: promoting or rolling back to another deployment "does not stop deliveries to the old one."

So picture a bad release. It runs in production for ten minutes, publishes messages its consumers cannot handle, and you roll back. The old deployment's consumers "keep being invoked, and keep being retried," for up to the retention period, 24 hours by default. That is a day of failing compute from a release you thought you had undone.

After a rollback, the old deployment keeps retrying its messages, 24 hours by default, unless deleted or capped
Messages stay pinned to the deployment that sent them.

Vercel gives three fixes. Delete the bad deployment, and Vercel stops invoking its functions at once. Set maxDeliveries on the trigger, so a message that keeps failing is dropped after a set number of tries. Or return { acknowledge: true } from the retry callback for messages you know are bad. We set maxDeliveries before the first release, and add a dead-letter step so dropped messages are logged, not lost.

The same pinning helps you in a normal release: a new deployment never reads messages in an old format, so you can change the message shape without a migration.

What changes when a consumer calls a model?

Every retry can bill tokens again. At-least-once delivery is cheap for a consumer that sets a field. For one that calls a model, a repeat delivery is a second model call, and a retry loop is a token bill. So the model step needs its own rules.

  1. 01Store the model's result keyed by message ID before acting on it. On a repeat delivery, read the stored result instead of calling the model again.
  2. 02Give each model step its own consumer group, so its compute and its tokens can be metered as one step.
  3. 03Set a lower maxDeliveries on model steps than on cheap ones, and send what runs out to a person.
  4. 04Put IDs in the message, not phone numbers or order details. The consumer reads the rest from your own system, so the queue holds less personal data.

On lock-in: Vercel's poll mode lets a consumer read these queues "from any environment", outside Vercel too. Keep the send and receive calls behind one small module, and an exit path stays open while the product is in Beta.

What does this look like for a courier?

Here is a worked example, not a client. A courier and delivery company in Dubai takes orders from its site and from partner webhooks, with a spike at lunch. Each order needs a delivery label PDF, a WhatsApp update to the customer and an update in Salesforce.

  1. 01The order route validates the order, sends one message to an orders topic with the order ID as the idempotency key, and replies at once.
  2. 02Three consumer groups read the same topic: labels, WhatsApp updates and Salesforce updates. Each one retries on its own.
  3. 03Each consumer checks the order ID before acting, so a repeat delivery does nothing twice.
  4. 04Each trigger has maxDeliveries set. A message that runs out of tries is written to a failed-jobs table a dispatcher can see.
  5. 05The queue sits in Mumbai, the nearest of Vercel's 19 regions. There is none in the UAE or Saudi Arabia, so the messages carry order IDs only, and the order details stay in the courier's own system.
One order message fans out to three consumers: delivery label PDF, WhatsApp update, Salesforce update, each retried
A sample courier order fanned out to three consumer groups.

When a client's security questionnaire asks about this, the honest answers are: the queue is a Beta service; it runs in the region you picked; messages may sit in a neighbouring region during an outage; and messages hold IDs, not personal data. If a UAE or Saudi client's rules say their data must stay in the country, a queue in Mumbai can carry IDs only, and anything more is a no. Which other answers Vercel's own reports give, and which stay yours, is in our security questionnaire post.

If the courier's real problem is drivers getting jobs from WhatsApp, not lost webhooks, our Dispatch app may be the better answer, with no queue to build.

What do you check before you go live?

Five checks, each one cheaper before launch than after:

  1. 01Every consumer is safe to run twice for one message.
  2. 02Nothing depends on strict order, or messages carry a sequence number.
  3. 03maxDeliveries is set on every trigger, and failed messages land somewhere a person reads.
  4. 04The team knows a rollback does not stop old consumers, and who deletes a bad deployment.
  5. 05The region is chosen, and the client has agreed in writing where messages may be stored.

We are not a Vercel partner, and a Beta product goes into a client build only with that label on the plan. See our Vercel overview for what else we run there.

If your background work takes a second and a failure is visible to the person who caused it, you do not need a queue yet; run it in the request.

We call the method Preview every change. Here, that means every change to a consumer runs first on a preview link, a copy of the app only your team can open, with test orders, and reaches production only after someone has watched those orders arrive.

If jobs go missing when traffic spikes, send us the flow and where it runs today. The written assessment is free: it says whether you need a queue at all, what the month would cost, and who watches the failed-jobs list. The first build week is a fixed AED/SAR 14,900, credited in full if you sign the build within 60 days, and our Run plans cover watching that list after launch.

Filed under

Building and running websites and apps on Vercel@vercel/queuevercel background jobsvercel queues pricingat-least-once delivery
Useful to someone on your team?

FAQ

Questions teams ask next

Is Vercel Queues generally available?
No. Vercel's docs label it Beta: "Vercel Queues (Beta) are available on all plans." The consumer trigger type is queue/v2beta under experimentalTriggers in vercel.json, and the JavaScript SDK, @vercel/queue, was at version 0.8.0 on 16 October 2026. Plan for change, and keep the queue code behind one small module you can swap.
Does Vercel Queues guarantee order or exactly-once delivery?
Neither. Delivery is at-least-once, and Vercel says that in rare cases, such as availability zone failovers, a delivered message may be delivered again. Order is approximate write order with no FIFO guarantee, even with one consumer. Put a sequence number in the message if order matters, and make each consumer idempotent.
Can queue data stay in one region?
You pick a region when you create a queue and message data is stored there, replicated across three availability zones. But Vercel says strict data residency is not supported yet: during a regional outage, messages may sit in a neighbouring region for a while. Vercel lists 19 regions, none in the UAE or Saudi Arabia.
When should we use Workflows instead of Queues?
Vercel calls Queues the lower-level primitive that powers Workflows. Use Queues when you want direct control over publishing, consumers and routing. Use Workflows for multi-step business processes that need state between steps, or that must wait longer than a queue's 7-day delay limit.

Sources

  1. 01Vercel docs: Pro plan (seats, usage credit, included CDN)Accessed 16 Oct 2026
  2. 02Vercel docs: Vercel Queues (Beta)Accessed 16 Oct 2026
  3. 03Vercel docs: Vercel Queues concepts (durability, delivery, ordering, regions, deployments)Accessed 16 Oct 2026
  4. 04Vercel docs: Vercel Queues pricing and limitsAccessed 16 Oct 2026
  5. 05Vercel docs: Mumbai, India (bom1) regional pricingAccessed 16 Oct 2026
  6. 06Vercel docs: Washington D.C., USA (iad1) regional pricingAccessed 16 Oct 2026
  7. 07Vercel docs: RegionsAccessed 16 Oct 2026
Shivanath Devinarayanan, founder of Mindcat

Written by

Shivanath Devinarayanan

Founder, Mindcat Consulting · Salesforce MVP Hall of Fame

Runs 200+ agents in production. Reads every brief that comes in and signs the work that goes out.

About Shivanath

Build It, Preview It, Run It · the written assessment

We work in real estate and right now, leads go cold before anyone replies.

Industry
Problem

Brief: Real estate. Leads from portals and WhatsApp. Follow-up has no owner. An agent on a named process. A reviewer on the exceptions. From: /blog/vercel-queues-background-jobs.