Connect calls (connect two numbers)
Join any two phone numbers in one call from your own system: Lodgestory rings the first, rings the second the moment the first answers, and connects them — both see one of your business numbers.
TL;DR
- What it is — an API call that connects two outside numbers. Customer 1 is rung first; as soon as they answer, customer 2 is rung and the two are connected. No agent is involved.
- Who it's for — teams whose own systems decide who should talk to whom: a booking platform connecting a guest with a host, a sales app connecting a rep's mobile with a lead, a support tool connecting a field technician with a customer.
- Top outcome — two people talk on your business number, neither sees the other's real number, and the call is logged, recorded and reported like any other call — with what happened on each side.
At a glance
| Availability | Switched on per organisation by your account team. Lodgestory Voice numbers. |
| How calls are placed | Through the public API, or by an AI assistant connected to your workspace. There is no button in the CRM to place one. |
| Caller ID | One of your Lodgestory Voice numbers — your account's default, or one picked from a list you send with each call: in turn, at random, or the number the same customer 2 saw last time. Both people see it. |
| Recording | On by default, from the moment the two are connected. Can be turned off per call. Transcribed when transcription is on for your account. |
| Talk time limit | Up to 4 hours per call (1 hour unless you ask for another limit). |
| Who sees them | Account Owners and Admins, in Calls, reports, webhooks and the API. Connect calls have no agent, so team members do not see them in their own call list. |
| Automations | Connect calls never start an automation and never create a lead. |
| API | Yes — POST /api/wp-crm/voice/{organisationId}/calls/connect. |
How to find it
Connect calls are placed from your own system. Once placed, they appear in Calls (sidebar → Calls) with a Connect tag, and under Filters → Call type → Connect calls.
📸 [SCREENSHOT: connect-calls-log.png — Calls list with two connect calls: "Meera Iyer ⇄ Kabir Shah · Connected" and "+91 93111 00006 ⇄ Neha Gupta · Customer 2 didn't answer"]
What are connect calls?
The problem it solves
Some conversations are between two people who are not your agents: a guest and the host of the home they booked, a field technician and the customer whose AC they are fixing, a sales rep on their own mobile and a lead your app just assigned to them. You want them to talk, but you do not want them swapping personal numbers, and you want a record of the call.
Connect calls put your business number in the middle. Your system sends two numbers to Lodgestory. Lodgestory rings the first person; the moment they answer, it rings the second and connects them. Both phones show your business number. When the call ends you get a full record: who answered, who didn't, for how long they talked, who hung up, the recording and the transcript.
What you get
- One API call, two phones connected. No agent, no app on either phone.
- Caller ID from a pool of your numbers — rotate through them, pick at random, or keep each customer 2 on the number they already know.
- What happened on each side. Customer 1 didn't answer, was busy or couldn't be reached; customer 2 didn't answer, was busy, or customer 1 hung up while customer 2 was ringing — every outcome is recorded separately for each person.
- Your own reference on the call — an order or booking id you send with the call comes back on every webhook and in the call record, and you can look calls up by it.
- Recording from the moment both are connected, so it holds the conversation and nothing else.
- A talk-time limit you set per call.
- Safe retries. Send the same request again with the same
Idempotency-Keyand you get the same call back instead of a second one.
How it's different
- From click-to-call — click-to-call rings one of your agents first. A connect call rings two outside numbers; nobody on your team has to be on it.
- From Masked Connect — Masked Connect connects a customer who calls in to the right person. A connect call is started by your system and goes out to both people.
Customer scenarios
- Guest and host. A guest of Acme Hotels' holiday homes taps "Call host" in the booking app. The app sends the guest's number as customer 1 and the host's as customer 2. The guest's phone rings showing Acme Hotels' number; the moment they answer, the host's phone rings. Neither sees the other's number. The booking id travels with the call as its reference.
- Sales rep on their own mobile. A lead fills a form. Your app sends the rep's mobile as customer 1 and the lead as customer 2. The rep answers first and hears the lead's phone ring — exactly like a normal call.
- Same customer, same number. A delivery partner always sees the same Acme Hotels number for the same customer, because calls use the sticky choice from your pool of numbers.
How it fits with Lodgestory Voice
- Your numbers are the caller ID, picked from the numbers on your Lodgestory Voice account.
- The do-not-call list applies to both numbers.
- Calls, reports, webhooks and the API all show connect calls, with each side's outcome.
- Your call limits apply: each connect call counts as one call against your daily and monthly caps.
Core concepts
| Term | Meaning |
|---|---|
| Customer 1 | The number rung first (fromNumber). In the call record it is the caller. |
| Customer 2 | The number rung once customer 1 answers (toNumber). In the call record it is the called number and the customer. |
| Number pool | The list of your numbers a call may show (callingNumberIds). |
| In turn / random / sticky | How one number is picked from the pool: each in turn (ROUND_ROBIN, the default), any at random (RANDOM), or the number customer 2 saw last time from this pool, within 90 days (STICKY). |
| Reference | Your own id for the call (reference) — returned on every webhook and searchable. |
| Talk time limit | The longest the two may talk (maxDurationSec), counted from the moment they are connected. |
| Outcome | How the call went, per person: answered, didn't answer, busy, couldn't be reached, call ended while ringing, or not dialled. |
How it works
- Your system sends the request with the two numbers.
- Lodgestory checks it — connect calls on for your organisation, within your call caps, both numbers allowed for your organisation and not on the do-not-call list — and picks the number to call from.
- Customer 1's phone rings, showing your number.
- Customer 1 answers, and customer 2's phone rings at once. Customer 1 hears what any caller hears: customer 2's ringing or caller tune, or the network's message when that phone is switched off or busy.
- Customer 2 answers and the two are connected. Recording starts now. The talk-time limit counts from now.
- Either side hangs up (or you end it through the API, or the talk-time limit is reached) and the call record is completed with each side's outcome.
Customer 2 is rung as soon as customer 1's line answers. If customer 1's voicemail answers, customer 2 is connected to that voicemail.
What each outcome looks like
| What happened | Call status | Customer 1 | Customer 2 | Ended by |
|---|---|---|---|---|
| Both talked | Completed | Answered | Answered | Customer 1, customer 2, the API, or the talk time limit |
| Customer 1 didn't answer, was busy, or couldn't be reached | No answer / Busy / Failed | Didn't answer / Busy / Couldn't be reached | Not dialled | System or customer 1 |
| You ended the call while customer 1 was ringing | Cancelled | Call ended while ringing | Not dialled | The API |
| Customer 1 hung up while customer 2 was ringing | Cancelled | Answered | Call ended while ringing | Customer 1 |
| Customer 2 didn't answer | No answer | Answered | Didn't answer | System |
| Customer 2 was busy, rejected the call, or couldn't be reached | Busy / Failed | Answered | Busy / Couldn't be reached | Customer 2 or system |
| You ended the call while customer 2 was ringing | Cancelled | Answered | Call ended while ringing | The API |
Talk time is the time the two were connected. The call's answered time is when customer 1 answered; customer 2's own answered time is when the two were connected.
Features in depth
Choosing the caller ID
Send nothing, and the call shows your account's default number. Send callingNumberIds — up to 50 numbers from GET /api/wp-crm/voice/{organisationId}/numbers, all on one voice account — and one is picked by callerIdStrategy. A number that is switched off is skipped and listed in the response under skippedCallingNumberIds. If the first number picked can no longer be used, the next one in the pool is tried once.
In the call log
Calls shows a connect call with a Connect tag, the two people as Customer 1 ⇄ Customer 2 (names when they are your contacts), and a line naming the side that decided the outcome — Connected, Customer 2 didn't answer, Customer 1 hung up while customer 2 rang. Filters → Call type lists Connect calls or Other calls. The detail sheet shows both people with their outcome, a timeline (customer 1 rung, customer 1 answered, customer 2 rung, connected, ended), the caller ID, your reference and the talk time limit. There is no Call back on a connect call.
If you send a wpCrmChatsId, the call's cards appear in that conversation as Connect call. Without one, the call is linked to customer 2's conversation when there is one.
Recording and transcripts
The recording starts when both are connected. Transcripts label the two people Customer 1 and Customer 2.
Webhooks
call.answered fires when the two are connected; call.completed (they talked) or call.missed (they didn't) fires when the call ends, followed by call.recording_available and call.transcript_available. On a connect call call_type is connect, reference is your reference, and connect carries each side's outcome. See the Webhooks API reference.
Reports
The Call Log report marks each call Connect or Standard under Call Type, with Reference, Customer 1 Outcome, Customer 2 Outcome and Ended By (Party) columns. See Reports.
What does not apply
Transfer, hold and listening in are for calls with an agent, so they are not available on a connect call. Connect calls never start an automation, never create a lead, and never count as calling back a missed call in Calls → Team day metrics.
Roles & permissions
| Role | What they can do |
|---|---|
| Account Owner / Admin | Place connect calls through the API (also as a bot user), see them in Calls, reports and the API. |
| Team member | Does not see connect calls in their own call list (they have no agent). |
Limits a user will run into
- Switched on per organisation, with a limit on how many connect calls can be in progress at once. Ask your account team for both.
- Your daily and monthly call caps — each connect call counts once.
- Allowed number prefixes — both numbers must start with a prefix allowed for your organisation.
- The do-not-call list applies to both numbers.
- Your own numbers cannot be dialled. A number that is one of the business numbers on Lodgestory cannot be customer 1 or customer 2.
- Ring time: 10 to 120 seconds for each person (30 by default).
- Talk time: 1 minute to 4 hours (1 hour by default).
- Rate: connect calls start at a steady pace across Lodgestory; a burst is refused for a second and can be retried.
- On US numbers, your telephony provider can present the number set on your account instead of the one picked from your pool.
Errors & FAQ
| Error | What it means | What to do |
|---|---|---|
CONNECT_CALLS_DISABLED | Connect calls are not on for your organisation. | Ask your account team. |
INVALID_NUMBER, SAME_NUMBER | A number is not a full international number, or both are the same. | Send numbers like +919876543210. |
NUMBER_NOT_ALLOWED | The number's prefix is not allowed for your organisation (side says which). | Ask your account team to allow it. |
NUMBER_ON_DNC | The number is on your do-not-call list (side says which). | Remove it from the list if the person agreed to be called. |
NUMBER_IS_PLATFORM_DID | The number is a business number on Lodgestory. | Use the person's own number. |
CALLING_NUMBER_NOT_FOUND, POOL_SPANS_ACCOUNTS, CALLER_ID_NOT_OWNED | The caller-ID numbers are unknown, on different voice accounts, or no longer yours. | Use ids from GET …/numbers, all on one account. |
CONNECT_CONCURRENCY_LIMIT | Your organisation has its limit of connect calls in progress. | Retry when one ends. |
CONNECT_RATE_LIMIT | Too many connect calls are starting at this moment. | Retry after a second. |
VOICE_TIMEOUT, VOICE_ERROR | Lodgestory Voice did not confirm the call. It may still happen. | Follow it with the callLogId in the error, or retry with the same Idempotency-Key — you get that call back, never a second one. |
CONNECT_CALLS_UNAVAILABLE | Connect calls are not available on your voice service yet. Nothing was dialled. | Ask your account team. |
IDEMPOTENCY_KEY_REUSED | The Idempotency-Key was already used for a different request in the last 24 hours. | Use a new key for a new call. |
Can I place a connect call from the CRM? No — connect calls are placed by your systems through the API, or by an AI assistant connected to your workspace.
Does customer 1 hear ringing while customer 2's phone rings? Yes — they hear what any caller hears: customer 2's ringing or caller tune, or the network's message if that phone is off or busy.
What if customer 1's voicemail answers? Customer 2 is then connected to that voicemail. Keep the first number one that is likely to be answered by a person — for example your team member's phone.
Can customer 2 call back? Yes. If customer 2 calls the number they saw, the call follows that number's normal routing.
API
Place a connect call — POST /api/wp-crm/voice/{organisationId}/calls/connect (Account Owner, Admin or bot user). Send an Idempotency-Key header (1–255 printable characters, no spaces) to make retries safe: the same key with the same request returns the same call for 24 hours (HTTP 200 with Idempotent-Replayed: true); the same key with a different request is refused.
| Field | Required | Description |
|---|---|---|
fromNumber | Yes | Customer 1, rung first. International format. |
toNumber | Yes | Customer 2, rung once customer 1 answers. |
callingNumberIds | No | 1–50 of your numbers to show as caller ID, all on one voice account. Your account's default number when left out. |
callerIdStrategy | No | ROUND_ROBIN (default), RANDOM or STICKY. |
callingAccountId | No | The voice account to call from. Needed when your organisation has more than one and you send no callingNumberIds. |
fromRingTimeout, toRingTimeout | No | Seconds each phone rings, 10–120 (default 30). |
maxDurationSec | No | Longest talk time in seconds, 60–14400 (default 3600). |
record | No | false to skip the recording. |
reference | No | Your id for the call: letters, digits, : . _ -, up to 64 characters. |
wpCrmChatsId | No | A conversation to show the call in. |
{
"fromNumber": "+919876543210",
"toNumber": "+919812345678",
"callingNumberIds": ["b1b2c3d4-0000-0000-0000-000000000001", "b1b2c3d4-0000-0000-0000-000000000002"],
"callerIdStrategy": "STICKY",
"maxDurationSec": 1800,
"reference": "booking-4821"
}The response (HTTP 201):
{
"callLogId": "d1e2f3a4-0000-0000-0000-000000000001",
"status": "INITIATED",
"callerId": "+918045600001",
"reference": "booking-4821",
"skippedCallingNumberIds": []
}Follow the call with GET /api/wp-crm/voice/{organisationId}/calls/{callLogId} or the call.* webhooks. GET …/calls?callType=connect lists connect calls and GET …/calls?reference=booking-4821 finds one by your reference. End it with POST …/calls/{callLogId}/hangup. The full request and response schemas are in the API reference.
Changelog
- Oct 2026 — Launch: connect two outside numbers through the API, caller ID from a pool of numbers (in turn, random or sticky), outcomes for each side, recording from the connection, talk-time limit, your own reference, safe retries, and connect calls in Calls, reports, webhooks and AI assistants.
Related modules
- Masked Connect — connect a customer who calls in to the right person, with both numbers hidden.
- Calls — where connect calls appear.
- Webhooks API reference — the
call.*events. - Call Recording & Voicemail — where recordings land.
- Lodgestory Voice overview — the overall picture.
Updated about 1 hour ago
