Docs › Telephony › Set up telephony

Set up telephony (SIP line, extensions, call flow)

The-Y ships a built-in phone system (no 3CX/third-party system needed). You connect a SIP line from your provider, call right in the browser (softphone), and build the call routing — menus, queues, voicemail — as a visual flow. All from inside the CRM.

⏱ line approx. 10 min · Permission: settings.manage (admin) · Free: 200 outgoing call minutes/month, 2 simultaneous calls · Cloud Pro: 10 simultaneous calls · Paid: no plan limit · As of version 1.1.53

Telephony in The-Y CRM
The telephony area — lines, extensions, call flow.

How telephony is organised (since 1.1.53)

Telephony is split into two parts. The tabs at the top: My phone · Setup (Overview, Lines, Numbers, Extensions, Announcements & menus, Phone hours, Queues, Group calls, Music, Call flow, Phone templates, Brands) · Operation (Calls).

Your account's recordings: each account records its own phone announcements — in the browser or as a file. The card shows “x of y recorded” per area and what plays without a recording: callers then hear the standard English announcement, or none where there isn't one.

Quick start: the phone assistant (since 1.1.53)

At the top of Telephony → Setup the assistant asks: “What should happen when someone calls?” New accounts see it open right away, otherwise click “Start assistant”. In five steps it sets up the matching phone template — you see exactly how a call runs beforehand, and nothing existing is changed.

Phone assistant: What should happen when someone calls? Three answers
Three answers, three phone templates: Reception, Trades, Waiting line.
  1. Answer: “Someone in the office answers” (phone template “Reception”: everyone's phone rings at once, otherwise voicemail) · “I'm often on the road” (“Trades”: everyone's phone rings — your mobile too if you let it ring —, otherwise a WhatsApp callback by key or voicemail) · “Callers should wait until someone is free” (“Waiting line”: hold music with position, after 5 minutes and outside opening hours voicemail). For anything else: “All phone templates” or build the call route yourself.
  2. Line: if your SIP line is registered, it says calls arrive. Otherwise you connect a phone provider first or prepare the call route already.
  3. Number: a free number is preselected. A number that is already connected is only switched with a tick — the previous destination is kept. “None yet (connect later)” works too.
  4. Settings: opening hours (suggested from your opening hours, otherwise 09:00–17:00), voicemail and the greeting — record it right here.
  5. Check: “How a call runs” shows the route step by step. The check before saving blocks what can't work (e.g. no destination, no extension) and warns about gaps: no line or a line that isn't registered, keys without a greeting, an announcement without a recording, “hang up” as the fallback. Each finding has a “Fix →” link.

Afterwards the assistant tells you which number to dial from your mobile for a test call — with “Restore previous target” and a link to the call flow. Forms, phone templates and the call flow stay available for anyone who wants more detail.

Before you start — what you need

No provider yet? Under Telephony → Lines a guided helper shows suitable providers by country (e.g. Zadarma, sipgate for the DACH region, Twilio) with an explanation and a direct link.

Still deciding whether a browser-based phone system suits your team and what it costs per month? Virtual phone system for small business – with worked examples and limits.

Part A · Connect a SIP line (trunk)

  1. Open Lines. Telephony → Lines. If you have no line yet, the guided provider recommendation appears.
  2. Get a number + SIP details from the provider. Register a phone number there and note the SIP credentials (often "SIP settings" / "VoIP"): server/host, user/login, password.
  3. Enter the line. "+ Add line" and fill in:
    • Provider/Server (e.g. sip.provider.tld) & Port (usually 5060)
    • User & password (stored encrypted, write-only)
    • Register (on/off) & country code (e.g. 43 for Austria)
  4. Activate. Set the line to active. Outgoing calls (and incoming, once the number points to this SIP line at the provider) now run through your system.
  5. Check the status. The list shows whether the line is connected at the provider. If it doesn't say “Connected”, click “Check now” (see below).
Many providers expect numbers in +E.164 format (e.g. +4366012345678). "Number unreachable / 404" is usually a format issue — the system normalizes, but the provider side must accept the number in the right format. For incoming calls, link the phone number to your SIP line at the provider.

Line status & “Check now”

Under Telephony → Lines every line shows whether it is registered at the provider and when the CRM last checked (“Checked: …”). The CRM checks this on its own every minute.

“Check now” registers the line at the provider again and checks right away. If there's no result yet, look again in a minute.

Several lines

Part B · Extensions & browser softphone

  1. Create extensions. Telephony → Extensions: one extension per employee, or "Create for all team members" (auto-numbered from 100). Optionally assign to a person.
  2. Connect the softphone. The softphone at the bottom right automatically registers your own extension. With it you call right in the browser: answer, dial, hold, transfer (blind/attended), park (700, pick up with 701–720 — you only pick up parked calls of your own company). Without your own extension there is no softphone; the telephony page then shows how to get one.
  3. Click-to-call & screen-pop. A click on a phone number in the CRM starts the call. For incoming calls the contact card pops up (screen-pop) with the 360° history — plus a ringtone + system notification, even when the tab is in the background.
Testing multiple agents = multiple browsers/logins (each registers its own extension). Connect a device (desk phone/app) via "Connect device" on the extension (SIP/UDP credentials).
After an update: reload your browser. A tab that was already open before the update still has the old softphone. Reload the app once (Ctrl+F5 or Cmd+Shift+R) or close the tab and open it again. Only the current softphone sends the call ID that puts ringing, the missed call, a voicemail message and “1 for WhatsApp” into the same conversation (since version 1.1.41).

A second call during a call

One person, one call. If you are already on the phone — in the browser or on the desk phone — no further call rings for you:

There is no call waiting. While you are calling in the browser, your desk phone doesn't ring either — and vice versa.

Mobile rings too (since 1.1.52)

If you like, every call to an extension also rings the person's mobile — for direct calls, in group calls and in queues. So that the mobile's own voicemail can't take the call, the mobile first plays “Call from your phone system. Press 1 to accept.” Only after pressing 1 is the caller connected.

Since 1.1.53 everyone adds their private mobile number themselves — voluntary and removable at any time. Admins can't add or change it.

  1. Open My phone. Telephony → My phone → “My status” card → button “📱 Let my mobile ring too”. You need an extension of your own for this.
  2. Enter the mobile number — international, with + (e.g. +43664… instead of 0664…) —, tick “Mobile rings at the same time” and save. The button then shows “📱 My mobile rings too”.
  3. Remove: “Remove number” deletes the number right away; the mobile then no longer rings.
My phone → My status → My mobile rings too: mobile number, switch and privacy notes
“My mobile rings too”: enter the number, the “Mobile rings at the same time” switch, and what happens with the number.

What admins see: under Telephony → Extensions → “📱 Mobile” they only see whether a number is on file (shortened, e.g. “+43 … 67”) and whether the mobile rings too. With “Remove number” admins delete it, for example when someone leaves the company — only the person can add it again. When an extension is assigned to a different person, the previous person's number is removed (you are asked first). Numbers entered before 1.1.53 stay and keep ringing.

Announcement on the mobile (recommended, recorded by an admin): under Telephony → Extensions → “📱 Mobile” → “Announcement on the mobile” you record the sentence yourself or upload a file. Without your own recording the mobile plays the English standard prompt (“You have an incoming call. Press 1 to accept this call …”).

Part C · Phone numbers: where does each call go?

Under Telephony → Numbers you find your public phone numbers. For each number you decide where a call goes first — for example to a menu, a ring group, an extension or the opening hours.

Part D · Call flow (IVR, queues, voicemail)

Under Telephony → Call flow you build the routing as a visual flow — connect nodes, no technical knowledge required.

Never miss a call again: if nobody picks up, the caller can ask for a WhatsApp message with a key press — and you reply calmly in the inbox. → Guide “Press 1 for WhatsApp”

Greeting while it rings (group call)

The caller hears a greeting right away — for example “Thanks for calling, we'll be with you in a moment” — while your team's phones are already ringing. Whoever picks up is connected immediately, even in the middle of the greeting. If nobody picks up, the call moves on after the time you set, for example to your mobile.

  1. Create a greeting. Under Telephony → Announcements & menus create a greeting of your own: record it in the browser or upload a file.
  2. Open the group call. Telephony → Group calls (formerly “Ring groups”) → choose the group → section “🔊 Greeting while it rings” → tick “Play a greeting while the team's phones are already ringing” → under “Which greeting?” pick your greeting.
  3. After that the caller hears a ringing tone (ring … ring) or hold music — your choice.
  4. How long does it ring? Either a fixed time in seconds or “As long as the greeting” — the CRM measures the length when you save.
  5. Where next? Under “If nobody is free”, e.g. “external number (mobile)” or voicemail.

The timeline “What the caller experiences” shows you what happens before you save. An example with a 12-second greeting, ringing tone and 25 seconds of ring time:

Tip: choose “external number” with your mobile as the destination — the team rings first, and after the same time it's your turn.
The greeting while it rings only works with your own greetings (recorded in the browser or uploaded as a file).

Greeting on entry (queue)

A queue can greet the caller right away too: Telephony → Queues → open the queue → “Greeting on entry” → pick a greeting of your own. It plays while the team's phones are already ringing. After that the caller hears the hold music; the waiting announcement repeats as set.

Ringing during the greeting — with keys (since 1.1.51)

A group call can offer keys while the greeting plays, for example “1 for WhatsApp” or “9 for the queue”. Everyone's phone already rings while the greeting plays. If someone picks up, the greeting stops. If the caller presses a key, ringing stops for everyone and the call goes to that key's destination.

  1. Record a greeting that names the keys (e.g. “… press 1 for WhatsApp”) and pick it in the group call under “Greeting while it rings” (see above). Without a greeting the caller doesn't know which key to press — the app warns you.
  2. Add keys: Telephony → Group calls → edit the group → “Keys while ringing” → “+ Key”, choose the digit and destination (e.g. WhatsApp callback or a queue).
  3. Optionally: “Record calls” (the notice then plays before ringing) and “Members may log in and out themselves” (see below).
Group call with keys while ringing, recording and log in/out
Group call: key 1 → WhatsApp callback, key 9 → queue, recording and log in/out with a short code.
With keys or recording the phone system answers the call right away — the caller pays from the first second, as with a menu. Single digits 0–9 only. Without keys and without recording it rings as before (free for the caller until someone answers).

With keys or recording the priority per member applies too (0 = rings first): higher levels only ring when nobody in the lower level is free.

Log in and out per group: “My groups” and *45 (since 1.1.51)

If you're not available for a group right now, log out of it. That group then doesn't ring you; direct calls and other groups stay. This works in group calls and queues where an admin has switched on “Members may log in and out themselves”.

In queues and group calls with keys: if all members are logged out or on “do not disturb”, the call goes straight to the “If nobody is free” destination.

Queue: position, waiting time and callback (since 1.1.52)

Callers waiting in a queue hear, between the music, their place in line and roughly how long it takes — and can ask for a callback with a key press. Everything is off until you switch it on per queue: Telephony → Queues → edit the queue → “Announcements while waiting”.

Telephony → Queues → announcements while waiting
Announcements while waiting: position, waiting time, callback with key 2 and the recordings for them. The yellow notes show what is still missing.

The announcements are your own recordings. Under “Recordings for these announcements” you record the sentences in the browser or upload files — once per account, they apply to all queues. Where a matching sentence exists, the phone system uses the English standard voice until then:

AnnouncementWithout your own recording
Position (Q1–Q6) and numbers (Z2–Z10)English standard prompts (“You are number … in the queue”). Only once all sentences and numbers up to the limit are recorded does the phone system use your recordings — never half one language, half the other.
Waiting time (W1–W7)No announcement. Every level needs its own recording.
Callback offer (G12)No announcement — callers then don't learn about the key. The recording names the key; if you set a different key, record the sentence to match.
Callback confirmed (G13), number withheld (G14)English standard prompt.
The phone templates “Travel agency” and “Medical practice” create queues with position and a callback key right away, the “Waiting line” template a queue with position. What doesn't work yet is listed under Known issues.

Hold music per account and brand (since 1.1.51)

Under Telephony → Music you choose the music callers hear while waiting or on hold. Each account has its own music — other accounts never hear it. With several brands you pick a default music per brand.

  1. “Add music” and give it a name.
  2. Confirm the rights (“I have the rights to this music (collecting-society licence or similar)”) and add a file (MP3, WAV, M4A or OGG). Without confirming, no file can be uploaded.
  3. Default: since 1.1.52 new music only becomes the default with its first file — for the whole account or the brand, if there is no default with a file there yet. With “Use as default” you decide yourself where it applies (whole account or one brand).
  4. Per element (optional): your own music per queue, group call, menu (waiting for the key press), phone number or quietly under an announcement.
Telephony → Music: new hold music without a file
New music: first confirm the rights and add a file — only then does it play and can become the default.

Without music of your own, callers hear the server's standard music. Hold during a call plays the account's default music.

Voicemail: messages in the inbox, space on the phone

You switch voicemail on per extension (Telephony → Extensions, column “Mailbox (voicemail)”). When a caller leaves a message, it arrives as audio in the inbox — in the conversation of that call.

Part E · Phone templates: ready-made call routes (since 1.1.52)

Under Telephony → Phone templates you pick a ready-made call route and then only adjust it. You see right away how a call will run and what changes. There are six phone templates: Reception, Trades, Travel agency, Medical practice, Small office and — since 1.1.53 — Waiting line. Prefer to be guided? The phone assistant picks the right one with you.

TemplateHow a call runs
Reception (recommended)Opening hours → everyone rings for 20 s while the greeting plays (1 = WhatsApp, 9 = queue) → nobody: mobile (press 1 to accept) → voicemail. Closed: voicemail.
TradesOpening hours → everyone rings for 20 s → nobody free: menu “1 = WhatsApp, 2 = voicemail”. Closed: the same menu with its own greeting.
Travel agencyRinging with greeting → queue with music and position (max. 3 min, 2 = call back) → voicemail. “Travelling, emergency: 9” → on-call mobile. Closed: announcement, 9 for emergencies, voicemail.
Medical practiceOpening hours with lunch break → emergency notice → queue with position, waiting time and call-back key → voicemail. Closed: surgery hours, emergency notice, voicemail. The emergency notice in the script names the ambulance 144 in Austria and the emergency number 112 in Germany and other countries — based on the phone number or the account's country.
Small officeRinging with greeting (everyone, 20 s; optionally a mobile joins from second 10) → voicemail. Closed: voicemail.
Waiting line (since 1.1.53)Opening hours → queue with all extensions, hold music and position (every 60 s), at most 5 minutes → voicemail. Closed: voicemail. No greeting and no keys — nothing stays silent, even if you haven't recorded anything yet.
  1. Pick a template and the phone number it should apply to.
  2. Fill it in: opening hours (pre-filled from your opening hours, otherwise suggested 09:00–17:00), voicemail, WhatsApp callback, queue, mobile. You record greetings right in the form or pick an existing recording; the script is shown next to it.
  3. Check: “How a call runs” shows the route step by step, “Before / after” shows what changes for the number, and notes show what is still missing.
  4. “Apply template …” and confirm. Only new items are created; existing ones stay unchanged. A number that is already connected is only switched after you confirm — or you choose “create only”.
  5. Going back: right afterwards, “Restore previous target” switches the number back. Later you do this under Telephony → Numbers or in the call flow; the previous target is kept.
If a greeting has no recording yet, callers hear nothing at that point (a moment of silence in a menu, only the ringing tone in a group call). The preview shows this as “recording missing”.
Under “Goes well with” each template lists matching flows, e.g. “Missed call → WhatsApp, SMS or call back”. You switch those on separately under Settings → Flows. If the template already has “1 = WhatsApp”, don't also switch on the flow “Key 1 in the voice menu → WhatsApp” — otherwise the caller gets two messages.

Template “Reception”: it rings while the greeting plays

The recommended template for most businesses: during opening hours everyone's phone rings for 20 seconds while the greeting plays. The caller can press 1 (WhatsApp callback) or 9 (queue). If nobody picks up, a mobile rings (press 1 to accept), then voicemail. Outside opening hours the call goes straight to voicemail.

Template Reception: greeting while ringing, the “Record calls” switch (off by default) and “Apply template”
Template “Reception”: “How a call runs” and “Before / after”, before anything changes.

Base settings per brand (since 1.1.52)

If you have several brands, under Telephony → Brands you set once per brand what should apply in all its flows: hold music, opening hours (phone hours), language of the fixed announcements, WhatsApp account for “1 for WhatsApp”, voicemail and a short logo announcement (e.g. the brand name before every greeting).

Changes take effect right away

Whatever you save in telephony — announcements, menus, extensions, ring groups, queues and the destinations of your numbers — the phone system picks up on its own within a few seconds. You don't need to restart anything.

If applying ever fails, admins see the notice “The phone system isn't applying changes right now” with the last message at the top of the telephony pages. On crm.the-y.at just let us know; when self-hosting, see troubleshooting below.

Deleting items: you're asked first if they are still in use

If you want to delete an extension, menu, ring group, queue, announcement or opening hours that is still entered as a destination somewhere, the CRM asks first: “Still in use” — with a list of where, e.g. “Menu “Main menu”, key 1” or “Phone number +43 …”.

Simultaneous calls

Since version 1.1.46 each account has a limit on how many calls can run at the same time:

PlanSimultaneous calls
Free2
Cloud Pro10
Paid (your own server with a paid key)no plan limit
If the whole server is at capacity, callers hear “busy”. Self-hosted without a paid key, the Free limit applies. How to change it is under Self-hosting → phone system.

WhatsApp calls

Since version 1.1.45, WhatsApp calls also arrive in your phone system, with their own start destination per WhatsApp number under Telephony → Numbers → “WhatsApp numbers”. Meta does not allow forwarding them into the phone network – the phone system then uses the fallback. WhatsApp calls count towards the limit for simultaneous calls. Setup, conditions and costs: Set up WhatsApp calls.

Call list, recording & wallboard

Under Telephony → Calls there is one row per call — even if several phones rang in a group. If a colleague picks up, nobody else gets a false “missed”. Each row shows direction, duration, contact and “Open” (to the conversation) and has a “Call back” button.

StatusMeaning
answeredSomeone picked up.
missedAn incoming call nobody picked up.
missed – left a messageThe caller left a message on your voicemail. The message is attached to the conversation.
not reachedYou called, but nobody picked up.
Forwarded to … – answeredThe call was forwarded outside, e.g. to your mobile, and answered there. If the mobile's own voicemail picks up, that also counts as answered.
Forwarded to … – not answeredThe call was forwarded outside and nobody picked up there.
ended in menuThe call ended in a menu or announcement without ringing anyone — not a missed call.
rejected – limitAs many calls were already running as your plan allows. The caller heard the announcement or “busy” (Simultaneous calls).
rejected – limit · message leftAs above, then the caller left a message on your voicemail.
recoveredSince 1.1.53: the phone system restarted or the connection dropped briefly; the CRM added the call afterwards (e.g. from the recording). Such rows have fewer details, e.g. no voicemail note.

Since 1.1.53 the call list stays complete even if the phone system restarts, the connection drops briefly or a call lasts longer than two hours. Recordings are only deleted once they are safely stored. You also see your own calls under “My recent calls” on Telephony → My phone.

Desk phones and apps without a browser are matched by phone number as before.

Notice before recordings

Since version 1.1.46 the caller hears a notice before every recording. It is switched on from the start, also for WhatsApp calls. Since 1.1.51 you record the notice “This call is being recorded” yourself; without your own recording the caller only hears a tone.

Whether you need consent and how you inform people is up to you (no legal advice).

Troubleshooting

The line shows “Not connected”

The provider rejects the registration or doesn't answer. Check server/port, user and password exactly as in the provider dashboard; some providers require a specific realm/domain name. Save, then click “Check now”. The CRM can't tell whether the password is wrong or the provider just isn't answering — if checking your details doesn't help, ask your provider. If it says “Connected” but calls fail with "404", it's usually the number format (+E.164).

Calls on my second line don't arrive

All active lines take calls. Check that the line is active and shows “Connected”, and that the number points to this SIP line at the provider. You always call out through the line marked “Outgoing”.

A caller hears “busy” although someone is there

The extension is on a call right now (in the browser or on the desk phone). A second call then doesn't ring; it goes to the extension's fallback destination (“Ringing & voicemail”) or gets “busy”. Set the fallback to voicemail or a ring group, for example.

“Mailbox almost full” on the extensions page

Normally messages move to the inbox automatically and free up space on the phone. If you see a warning, that isn't working right now. On crm.the-y.at drop us a line at office@the-y.at. When self-hosting, see the next item.

Self-hosting with your own phone system: voicemail warning after updating to 1.1.40

For messages to move to “Old messages” after the import, the worker must be allowed to write to the voicemail folder. In your Compose file, the worker service has the line ./pbx/asterisk/voicemail:/pbx-voicemail — without :ro at the end. Then:

docker compose up -d --force-recreate worker

You set the period for old messages with PBX_VM_OLD_RETENTION_DAYS (default 30, 0 = never delete). Without object storage (MinIO) the worker doesn't import messages; they then stay on the phone and the warning appears.

No audio / one-way audio

This is almost always NAT/firewall: the RTP ports (media) must be open/forwarded. On the hosted version (crm.the-y.at) this is done. When self-hosting, open SIP (5060/udp) and the RTP range (e.g. 10000–10200/udp) and enter the public IP in the system.

The softphone is stuck on "Connecting…"

Usually a hard browser refresh (Ctrl/Cmd+F5) is enough — the softphone then re-registers. Also check whether an extension is assigned to you: without your own extension there is no softphone. Admins create one under Telephony → Extensions or assign an existing one.

I changed something, but calls still run the old way

Wait a few seconds and call again — the phone system applies changes on its own. If the telephony pages say “The phone system isn't applying changes right now”, waiting won't help: on crm.the-y.at drop us a line at office@the-y.at; when self-hosting, see the next item.

Self-hosting: changes don't arrive (one-time reload after updating to 1.1.32)

Applies if you run the phone system yourself (service asterisk in your Compose file). From 1.1.32 the worker reloads the phone system itself (via the AMI connection, about 3 s after saving); without AMI a small watcher in the Asterisk container takes over (about 20 s). After the update, once:

  1. Install the update and restart app + worker — the database is updated along the way.
  2. The telephony files aren't part of the images: take over pbx/asterisk/musiconhold.conf, pbx/asterisk/reload-watch.sh and pbx/asterisk/include/generated-000-placeholder-moh.conf, plus in the Compose file the worker mount ./pbx/asterisk/include:/pbx-include (+ PBX_INCLUDE_DIR) and entrypoint/command/environment of the asterisk service. Then:
    docker compose up -d --force-recreate asterisk worker
  3. Check: docker compose logs worker | grep pbx-reload shows “Asterisk hat die Änderungen übernommen” (the log line is in German). The AMI account needs write = system.
  4. Without AMI, reload once by hand — after that the watcher applies every further change:
    docker compose exec -T asterisk asterisk -rx "core reload"

Without the new musiconhold.conf, the greeting while it rings only plays the default hold music.

All calls reach the same destination although I have several numbers

Then the line doesn't tell us which number was dialled, and the destination of the topmost number (⭐) under Telephony → Numbers applies. With Zadarma the phone system recognises the dialled number automatically since version 1.1.32. With other providers, ask whether the line passes on the dialled number.

WhatsApp verification call: the greeting talks over the code

Route the number straight to a phone for the call — in the WhatsApp “Add number” assistant via “Put the code call straight through to me (10 min)”. How it works

The queue doesn't announce a waiting time

Every level (W1–W7) needs its own recording — missing levels aren't announced (see Queue: position, waiting time and callback). Also, the phone system only says something once at least 3 calls were answered in the last hour and the waiting time is over 1 minute. After a restart of the phone system this count is missing for up to an hour.

Self-hosting: remote calls don't work

For real calls over the internet your server must be publicly reachable (public IP + open SIP/RTP ports). A pure home/NAT server is only suitable for local tests. Details in the server requirements.

What's next