Pacing

Send at a pace your domain survives

Caps per sender, per domain, per recipient — stacked, and an email goes out when every rule that matches it agrees. What cannot go now waits in a queue you can read.

rate limitWarm-up
from *@northwind.io
1 per 2 minutes · sender
rate limitAccount cap
either *
4 per 4 minutes · this rule
Add rulerate limit · time lock

nora@northwind.io

1 waiting

jonas@northwind.io

sofia@northwind.io

now8 minutes ago
Whole account4 / 4 in the last 4 minutes

Both rules live. Mail arrives in bursts and leaves on a rhythm — the pile at each address is what the rules are holding this second.

Three senders under two live rules. Each address keeps its own cadence, and together they never cross the account cap.

The rules

Stack as many as you like

A rule is a number, a window, and what it counts per: 100 a day per sending address, 5 a day to any one person, 1 a minute across the whole account. Write as many as you want and stack them — an email goes out when every rule that matches it agrees, and waits in the queue until they do. You call send once.

One send, right nownora@northwind.iomarco@lindmetall.de
100 emails every day per sending address41 of 100
500 emails every day per sending domain118 of 500
5 emails every day per recipient1 of 5
20 emails every hour per recipient domain6 of 20
1 email every minute across everything this rule matchesfree in 12s

Four say go, one says not yet — so it waits, and leaves the second that rule frees. Queued, not refused: you called send once, and there is nothing to retry.

Every rule carries its own patterns — *@acme.com for a whole domain, billing@* for a local part wherever it turns up — so a rule only has a say over the mail you point it at, and * for every send. A rule with no patterns catches nothing.

In the console

Everything that is waiting, and what for

Pacing

QueueRulesTimes in Europe/Berlin

Right now

1,284 waiting. The next goes out Tomorrow 09:00, in 15h 12m, when Business hours lets it.

Waiting1,284
Arrived, last 24h1,510
Going out, next 24h940
Queue clearsThu 09:40

Held back by

Business hours812Warm-up340on its way132

Waiting

nora@northwind.io → sales@lindmetall.de

RFQ 4471 — 3mm brushed sheets

4mTomorrow 09:00 · 15h 12mBusiness hours

nora@northwind.io → m.faber@stahlhandel.at

Quote wk 38 — cutting

19mTomorrow 09:00 · 15h 12mBusiness hours

jonas@northwind.io → procurement@havik-bv.nl

Re: lead times on brushed stock

31mTomorrow 09:02 · 15h 14mWarm-up

jonas@northwind.io → s.kallio@pohjola-steel.fi

Quote 4468 — revised

58mTomorrow 09:04 · 15h 16mWarm-up
1,280 more behind these, in the order they go.

Nothing is dropped

A send that a rule holds is accepted, not refused. It sits in the queue and leaves the moment every rule that matches it agrees.

Which rule, not how many

The number held is the least useful thing on the page. The bar over it names the rule doing the holding, which is the one you would change.

Override by hand

Something urgent stuck behind a warm-up goes out on one click, or one call, whether or not the rule was ready for it.

In your code

Nothing to schedule, nothing to retry

1pacingRules.createwritten once, in code or in the console
await aiinbx.pacingRules.create({  name: "Warm the new domain",  kind: "limit",  match: [{ field: "from", pattern: "*@new.northwind.io" }],  limit: { scope: "from_domain", amount: 200, per_seconds: 3600 },})
2emails.sendaccepted either way, and honest about which
const email = await aiinbx.emails.send(payload) if (email.pacing) {  console.log(email.pacing.held_by, email.pacing.estimated_send_at)}
3the one that must not waitpassword resets, login codes, security alerts
await aiinbx.emails.send({  ...reset,  pacing: { skip: true, count: false },})

Around it

What else decides when mail leaves

Sending hours

The other kind of rule in the same list: a timezone and the hours mail may leave in it, so nothing lands at 3am on a Sunday.

Spread

Perfectly even gaps are one of the cheaper tells of automation. One dial from 0 to 100 varies them, at a little throughput.

One space per customer

A rule in a customer's space reads their mail alone and stacks under yours — they can tighten what they send, never loosen your cap.

Ceilings you start with

The domain every workspace starts with — <slug>.aiinbx.app — comes paced: 100 a day, 20 an hour, 10 a day to any one person. A domain of your own is held to none of it.

Give your product an inbox. The hard parts are already handled.

Get started