Scheduling means handing a message to the platform now with an instruction to send it later. The mechanism is simple. The hard part is that "later" means an instant, and what you usually care about is an hour in somebody else's day.

## How does scheduling work?

You supply the moment. The send API accepts a `scheduled_at` field alongside the message, and the platform holds the message until then. The [sending guide](/docs/guides/sms/sending-sms) covers the field alongside the rest of the payload.

Note what that is and is not. It is a point in time, the same instant everywhere on earth. It is not "9am", because 9am is a different instant in every time zone, and the API has no way to know which one you meant.

## So how do I send at 9am local?

By computing the instant per recipient, before you call.

There is no way around this and no field that does it for you, because the platform does not know where your recipients are. The work is: determine each recipient's time zone, convert your intended local hour into an instant for that zone, and schedule each group at its own instant. A campaign meant for 9am across twelve zones is twelve scheduled sends, not one.

The part that catches people is the input to that calculation. **A phone number's country code is not a time zone.** Several countries span many zones, so a national code narrows it to a range rather than a value. And a number tells you where it was issued, not where its owner is standing: a person keeps their number when they move, and number portability means the prefix can outlive the geography entirely.

If you hold a real time zone for the recipient, from their profile or their account settings, use that. Inferring one from the number is a guess, and it is worth knowing you are making a guess when the consequence is a message at 4am.

## Why does this matter beyond politeness?

Because some destinations restrict when messaging may happen, and the restriction is in local time.

Where Bird's country policy records quiet hours for a destination, they are expressed in the recipient's local hours, and sending is gated on them rather than merely discouraged. That turns the time-zone arithmetic above from a nicety into the thing that decides whether a send goes out. [What are SMS quiet hours](/explained/sms/what-are-sms-quiet-hours) covers where they apply and how Bird surfaces them, and the current per-destination position is on [the destinations page](/products/sms/destinations).

The consequence for design is that a scheduled campaign to an international list needs its per-zone split anyway. If you are already doing it for compliance, doing it for engagement is free.

## Does scheduling make a large send faster?

No, and expecting it to is a common planning error.

Scheduling decides when a send **starts**. It does not reserve capacity or pre-position anything. At the appointed instant the messages enter the same path as any other and drain at the route's throughput ceiling, so a campaign that takes forty minutes to clear takes forty minutes whether you scheduled it or triggered it by hand. [What is SMS throughput](/explained/sms/what-is-sms-throughput) covers the ceilings, and [what is bulk SMS](/explained/sms/what-is-bulk-sms) the arithmetic.

Two practical consequences. If a message must arrive by a particular moment, schedule the start early enough for the whole send to clear before it. And if you are scheduling to hit a local hour, remember that the last recipient receives theirs later than the first, which for a large enough send can cross the boundary you were aiming at.

## What should I check before scheduling a campaign?

Three things, none of them about the field itself.

- **That your time zone data is real** rather than inferred from a prefix, or that you have accepted the inference knowingly.
- **That the destination has no restriction** you are about to schedule straight through.
- **That the send fits** in the window between your instant and any deadline, at the route's rate rather than at your submission rate.