Click to call
Inbound calls
Call logging
Caller lookup
Recordings
Your numbers, your agents
How it works
- The softphone is a web page served by your backend. Agents open it in a browser tab next to ClickUp. It is not installed inside ClickUp.
- When an agent signs in, the backend checks the credentials with Vobiz and sets up what the softphone needs in your Vobiz account.
- The browser registers with Vobiz as the agent’s SIP endpoint and places the call itself. Vobiz asks your backend’s
/answerURL what to do, and the backend tells it to dial the customer from your chosen caller ID. - For inbound calls, Vobiz asks the same URL, and the backend rings every agent signed in with that account.
- When the call ends, Vobiz reports the result and the recording to your backend, which writes the ClickUp task through the ClickUp API.
Prerequisites
Set up
Get the code
Configure the backend
backend/.env and set:/li/ in the list’s URL in ClickUp. Your Vobiz credentials do not go in .env: agents type them into the softphone. See Configuration reference for every setting.Start the backend
8092.Make it reachable over HTTPS
https://calling.example.com at port 8092 with your reverse proxy or load balancer.Check that Vobiz can reach you
<Response>. With nobody signed in, that is a short spoken message and <Hangup/>. An HTML page means the request is not reaching the backend, and every call will fail.Open the softphone and sign in
https://calling.example.com/ in a browser tab next to ClickUp and sign in (see below). Allow the microphone and wait for the badge to read READY. Share the same URL with your agents, for example in a ClickUp Doc your team uses.Place a test call
Sign in
The panel has two tabs: Vobiz account and SIP Direct. Use Vobiz account unless you have a reason not to.
The sign-in step.
Vobiz account (recommended)
- Open the Vobiz account tab.
- Enter your Auth ID (
MA_XXXXXXXX) and Auth Token from Console → API credentials. The Auth Token is not your Console login password. - Enter your Agent ID (pick one of the suggestions, or type your own) and click Log in.
- An application named
Vobiz ClickUp Calling, with answer URLhttps://calling.example.com/answerand hangup URLhttps://calling.example.com/hangup-callback. If your account already has an application with exactly that answer URL, it is reused. Applications this integration did not create are never changed. - One SIP endpoint per agent ID, with the alias
ClickUp-<agent ID>, attached to that application. The endpoint is reused on later sign-ins, and each sign-in gives it a new random SIP password that only that browser session receives.

Registered and ready to dial.
Choose a caller ID
The Choose a caller ID dropdown lists the active, voice-enabled numbers on your account. Outgoing calls show the number you pick. The backend refuses any number that is not on your account.
Selecting the outbound caller ID.
Enable inbound calls
Select a number and click Enable inbound calls to make calls to that number ring the softphone. This attaches the number to theVobiz ClickUp Calling application. You only need to do it once per number.
SIP direct
Use this if you want an agent to sign in as an endpoint you already manage, without entering account credentials in the softphone.- Open the SIP Direct tab.
- Enter the endpoint’s SIP Username and SIP Password (Console → Voice → Endpoints), and a Calling From (Caller ID) number in full international format, such as
+91XXXXXXXXXX. The number must be on the same Vobiz account as the endpoint. - Click Connect.
/answer:
- Console → Voice → Applications: create an application with answer URL
https://calling.example.com/answer(methodPOST) and hangup URLhttps://calling.example.com/hangup-callback. - Console → Voice → Endpoints: set the endpoint’s application to it.
- Console → Phone numbers: attach the caller ID number to the same application, so inbound calls to it ring this agent.
The same steps with the API
The same steps with the API
Agent IDs and profiles
The Agent ID decides which SIP endpoint an agent uses and which name appears on their call tasks. It is 1 to 30 letters, digits,- or _. Each agent who is signed in at the same time needs their own agent ID: signing in with one that is already in use signs the other browser out.
Agent profiles are optional. To have the panel suggest agent IDs, show a name on tasks, and assign each agent’s tasks to them in ClickUp, copy backend/agents.example.json to backend/agents.json and add an entry per agent, such as "priya": { "name": "Priya Sharma", "clickUpUserId": "81234567" }. The panel reads the list from the backend, so there is nothing to change in the page. clickUpUserId is the agent’s numeric ClickUp user ID; without it, that agent’s tasks are not assigned. An agent ID that is not in the file still works: its tasks show the ID and are not assigned.
Using it
Outbound calls
- Wait for the badge to read READY. The Call button stays disabled until the softphone has registered with Vobiz.
- Type the number in international format (for example
+91XXXXXXXXXX), or use the keypad, and click Call or press Enter. - While the call runs you see a timer and Mute and Hold buttons. The keypad sends tones, for menus.
- The ClickUp Task / Contact card shows the existing task for that number, with Open in ClickUp, or tells you a new task will be created.

An active call, with the ClickUp task card below it.
Inbound calls
After you enable inbound calls on a number, a call to it rings every agent who is signed in with that Vobiz account and shows READY. The panel shows the caller’s number, plays a ringtone, shows a desktop notification if you allowed them, and looks the caller up in ClickUp. Press Enter or click Accept to answer, Escape or Decline to decline. The first agent to answer gets the call. If no one answers within 20 seconds, the caller hears “no one is available” and the call ends.
The inbound prompt, with keyboard shortcuts.
What gets written to ClickUp
Every call your backend answers creates one task in the list set byCLICKUP_LIST_ID. This includes calls the customer did not pick up.
clickUpUserId, the task is assigned to that user; otherwise it is not assigned. If ClickUp refuses the user ID (for example, the user is not in the workspace), the task is created unassigned and the backend logs a warning.
The caller lookup during a call searches the same list for a task whose name or description contains the customer’s number, so tasks this integration created are found on the customer’s next call.
Recordings
Every call is recorded in your Vobiz account (MP3, up to one hour). On the task, Click to Play Call Recording streams the audio through your backend. The link is signed and expires afterRECORDING_URL_TTL_SECONDS (15 minutes by default).
In the panel, Call recordings & CDRs lists recent recordings on your account with a Play button that always gets a fresh link.

Recordings, with inline players.
Sync CDRs
The Sync CDRs button, next to refresh in Call recordings & CDRs, fetches the five most recent call records from your Vobiz account and creates a ClickUp task for each call that does not have one yet. Use it to backfill calls made outside the softphone. It is safe to click more than once: calls already logged by the softphone, by an earlier sync, or by a task in the list whose description contains the call UUID are skipped. When Vobiz has a recording for the call, the task gets the same signed playback link as any other call. Tasks for calls the backend did not handle itself are not assigned.Configuration reference
Set these inbackend/.env or as environment variables. These are all the settings the backend reads.
CLICKUP_API_TOKEN or CLICKUP_LIST_ID is missing, calls still work, but no tasks are created.
Deploying to production
- Use a stable HTTPS address and set
PUBLIC_BASE_URLto it. If the address changes, agents must sign in again, which creates an application for the new address, and you must click Enable inbound calls again for each inbound number. - Run exactly one instance. Sign-ins and in-progress calls are held in the backend’s memory.
- Keep
DATA_DIRon persistent storage. If it is lost, endpoints are found again by theirClickUp-<agent ID>alias, so this is not fatal. - Set
SIGNING_SECRETto a long random value and keep it the same across restarts and deploys. - After a restart, every agent must sign in again. Until someone from an account signs in, inbound calls to its numbers are turned away and its recording links do not play.
- Nothing to install in ClickUp. There is no ClickUp app to package or upload. Give agents the softphone URL.
Security and privacy
- Your Auth Token never leaves the server and is never stored on disk. It is never logged or sent back to the browser.
- SIP passwords for account sign-ins are random, new on every sign-in, and given only to the signed-in browser session. With SIP direct, the password stays in the browser.
- On disk, the backend keeps only
DATA_DIR/endpoints.json(which endpoint belongs to which account and agent ID) andDATA_DIR/synced-calls.json(which calls already have a ClickUp task), both with file mode0600. No passwords or tokens. - In the browser, the softphone keeps a session token (valid for 24 hours), the Auth ID, the agent ID and the numbers list.
- Each session sees only its own account: numbers, recordings, call records and caller IDs.
- Recording links are signed, expire, and can only play the account they belong to. The backend fetches the audio from Vobiz storage only.
- Only known origins may call the backend from a browser: the softphone page,
*.clickup.com,localhost, andALLOWED_ORIGINS. - Webhooks: the backend does not verify Vobiz webhook signatures. It only acts on calls it answered itself, and the call webhooks never return account data.
- ClickUp tasks are visible to everyone with access to the list, including customer numbers and recording links.
Troubleshooting
/answer returns an HTML page
/answer returns an HTML page
curl check in the setup steps returns <Response> XML."Invalid Vobiz Auth ID or Auth Token."
"Invalid Vobiz Auth ID or Auth Token."
"Could not reach Vobiz to check those credentials."
"Could not reach Vobiz to check those credentials."
api.vobiz.ai. Allow outbound HTTPS from the server, and leave VOBIZ_API_URL unset."Signed in to Vobiz, but setting up the softphone failed"
"Signed in to Vobiz, but setting up the softphone failed"
[provision] gives the reason. Check that the account is active.The badge reads OFFLINE and the status line says Not registered
The badge reads OFFLINE and the status line says Not registered
The badge never gets past REGISTERING
The badge never gets past REGISTERING
https:// address, allow the microphone, and reload.Calls stopped working after the server address changed
Calls stopped working after the server address changed
PUBLIC_BASE_URL, restart, sign in again, and click Enable inbound calls again.Calls fail although /answer works
Calls fail although /answer works
PUBLIC_BASE_URL was not set when you signed in, so the application was created with the address you opened the page on, such as http://localhost:8092. Set PUBLIC_BASE_URL, restart, and sign in again.The agent hears "This phone is not signed in" when dialling
The agent hears "This phone is not signed in" when dialling
The caller hears "This number cannot take calls right now"
The caller hears "This number cannot take calls right now"
Inbound calls do not reach the backend at all
Inbound calls do not reach the backend at all
"This account has no phone number to call from"
"This account has no phone number to call from"
No task appears in ClickUp
No task appears in ClickUp
CLICKUP_TASK_STATUS is not a status of that list. Check the backend log for [ClickUp] API error or ClickUp token not set, and fix the setting it names.A recording link in a task says it is invalid or expired
A recording link in a task says it is invalid or expired
RECORDING_URL_TTL_SECONDS, or SIGNING_SECRET changed since it was made. Play the recording from the softphone’s recordings list, which always makes a fresh link, and set a fixed SIGNING_SECRET."Sign in first" errors, or a recording asks you to sign in again
"Sign in first" errors, or a recording asks you to sign in again
Operating notes
- Sign in again after a backend restart. Sign-ins are held in memory.
- Run one backend instance. Each instance keeps its own state.
- Recording links in ClickUp last
RECORDING_URL_TTL_SECONDS(15 minutes by default). Older calls play from the softphone. - A Vobiz account sign-in gives you the caller ID dropdown, inbound enabling, recordings, task lookup, CDR sync and recording links on ClickUp tasks.
- Every call is recorded.
- Tasks are created by the token owner. To assign a task to the agent, set
clickUpUserIdon the agent’s profile. - All call tasks use one status.
- Caller lookup reads the first 100 tasks in the list and matches the number’s digits in the task name or description.
- Sync CDRs covers the five most recent calls, and checks the first 100 tasks in the list for an existing task.
- Use one browser for each agent ID.
- The softphone runs in its own browser tab, alongside ClickUp.
Next steps
- Source code on GitHub → - the backend, the softphone and the full README.
- SIP Endpoints → - the endpoints the softphone registers as.
- Call Detail Records → - the call records behind Sync CDRs.
- Other CRMs: HubSpot, Pipedrive, Zendesk, ServiceNow