Concurrency
How many calls your account runs at once, how many numbers ring beside them, what happens to calls beyond that, how your lines are shared between campaigns and agents, and where to see your limit.
Concurrency is how many calls your account has in conversation at the same time. Each answered call holds one line, from the moment it is answered until it has ended and its result is recorded — so a three-minute conversation holds its line for three minutes. Calls that are still ringing don't hold a line: Graine rings more numbers than you have free lines, so your lines fill with people who picked up. Your line limit is what decides how fast a campaign works through its list.
Your line limit
| Account | Lines |
|---|---|
| New account | 100 conversations at once. Calls placed one at a time — from the API, a workflow or a test call — run up to 3 at once per agent while no campaign is dialling. A campaign can use all 100. |
| Enterprise | Set by Graine to fit your volumes and your phone numbers, and raised on request. |
| Sub-accounts | Each has a limit of its own, set by your Admins on the Sub-accounts page, up to your organization's own limit. See Sub-accounts. |
| Inbound calls | Never refused and never queued. They use lines too, so while many inbound calls are live, fewer outbound calls start. |
Calls ringing beside your lines
Most numbers don't answer: some are busy, some ring out, some are switched off. So Graine rings more numbers than you have free lines — the fewer of your calls are answered, the more numbers ring for each free line:
- It looks at your calls from the last two hours. If 1 in 4 was answered, about 4 numbers ring for each free line.
- It rings at least 1.2 and at most 6 numbers for each free line. Until your account has made 50 calls in the last two hours, it rings 2.
- While every line is in conversation, no new numbers ring. Ringing starts again as soon as a line frees.
- Every call that's answered is connected — nobody who picks up is hung up on — even when that briefly puts you over your limit.
Ringing calls are shared between your campaigns the same way as your lines (below), and a campaign's own Lines setting caps its ringing calls in the same proportion.
Calls over your limit wait their turn
A call that doesn't fit your limit is queued, not refused, and dials as soon as a line frees. Waiting never uses up one of a contact's tries.
- Campaigns. Contacts wait in the campaign's queue and are called as lines free. A list of 50,000 contacts on a 20-line account runs from start to finish — it simply paces itself.
- Calls placed one at a time — from the API, a workflow or a dashboard test
call — wait in their own queue and go ahead of campaign dials, so a busy
campaign never holds them back. Campaigns always keep at least a fifth of your
lines. Through the API, such a call is answered
202withreason: "waiting_for_a_free_line"; don't send it again.
Queued calls still respect calling hours: a call that is waiting when the hours close dials when they open again.
How your lines are shared
Your limit is one pool, shared by everything your account is calling.
Between campaigns. Every campaign with contacts ready to call is guaranteed an equal share of the pool, and an equal share of the numbers ringing. A campaign can also borrow what no other campaign needs, so a campaign running alone uses the whole pool. Nothing is cut off mid-call to rebalance: as calls end, new lines go where they are owed.
| Your limit is 40, and… | Campaign A | Campaign B |
|---|---|---|
| both have plenty of contacts ready | 20 | 20 |
| B has only 5 contacts ready | 35 | 5 |
| B is paused, or has finished | 40 | — |
Between agents. While campaigns are dialling, your limit is split evenly across the agents whose campaigns have contacts ready. Each of those agents may use its share, or its per-agent limit if that is larger, and your account limit always caps the total. One campaign on one agent can use your whole limit.
Your own cap on a campaign. To keep a campaign below your account limit, set Lines in the campaign's settings. It caps the campaign's conversations, and the numbers it rings in proportion. A cap can only lower what a campaign uses — it never takes lines from another campaign or raises one past your account's limit.
Each phone network is paced on its own
Your numbers can be on different phone networks — the provider behind each number — and Graine watches each one separately. When a network starts turning calls away because it can't take them that fast, Graine slows dialling on that network only, finds the pace it accepts, and brings the pace back up on its own as soon as the network keeps up again — usually within a few minutes.
- One network's trouble doesn't hold up the others. Campaigns calling through your other networks keep dialling at your usual pace, and can use the lines the slowed network leaves free.
- A campaign with numbers on more than one network dials through the one with room while the other is slowed.
- Waiting costs nothing. A call held back for its network's pace goes back to the queue; it isn't one of the contact's tries.
While a campaign is held back this way, its page says "Limited by the pace the phone network is accepting right now."
| Your limit is 40, and… | Campaign A — network 1 | Campaign B — network 2 |
|---|---|---|
| both networks are taking calls | 20 | 20 |
| network 1 turns calls away for pace | what network 1 accepts | the lines A leaves free, too |
| network 1 keeps up again | back to 20 | 20 |
When the phone network turns a call away
Now and then the phone network turns a call away the moment it is placed, before it rings — for example when it won't take calls that fast just then. Nobody's phone rang, so it isn't counted: the contact goes back to the queue without using up one of its tries (up to three times for each contact). A network turning calls away because they come too fast doesn't count towards those three — that is about the pace, not the number. A call that rings and gets a busy signal or no answer is a real try, and is retried by the campaign's retry settings.
More lines only help if your phone numbers can carry them. When you ask for a higher limit, we check that your numbers can take the extra calls, so the increase turns into more conversations rather than more turned-away calls.
How to see your lines
Billing shows Calls at once — your account's limit, with the per-agent limit next to it.
A running campaign's page shows Calling now — how many of your lines it has in conversation, each call in progress, and what is limiting it right now, for example "Limited by the organisation limit."
Through the API, GET /v2/user/me returns your limits and the calls in
conversation right now under concurrency — see Rate limits & concurrency.
Getting more lines
Choose Talk to us in the dashboard's sidebar. Graine raises your limit with nothing to change on your side, and the new limit applies within a minute — including to campaigns already running.

