Skip to main content
Make and take phone calls in your browser, and log every call into ClickUp. Your agents open the Vobiz softphone next to ClickUp, sign in with your Vobiz account, and dial. Each call becomes a task in the ClickUp list you choose, with the call details and a link to the recording. You run the small backend that connects the softphone, Vobiz and ClickUp. Source code: vobiz-ai/Vobiz-ClickUp-Calling

Click to call

Dial from a softphone in the browser. Audio runs over WebRTC, with no desk phone or desktop app.

Inbound calls

Calls to your number ring every signed-in agent, with a prompt, ringtone and desktop notification.

Call logging

One ClickUp task per call, with direction, numbers, agent, duration, hangup cause and status.

Caller lookup

During a call, the panel shows the matching ClickUp task for the customer’s number.

Recordings

Every call is recorded. Tasks get a signed playback link, and recent recordings play from the panel.

Your numbers, your agents

Pick the caller ID from your account’s numbers. Each agent gets their own SIP endpoint.
Agents sign in with your Vobiz account (Auth ID and Auth Token) or with an existing SIP endpoint. Sync CDRs pulls your most recent call records into ClickUp, skipping calls that already have a task, and the softphone has mute, hold and a keypad for menu tones.

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 /answer URL 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

1

Get the code

Nothing to install: the backend uses only Node.js itself, and the SIP library ships with the softphone.
2

Configure the backend

Edit backend/.env and set:
The list ID is the number after /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.
3

Start the backend

It listens on port 8092.
4

Make it reachable over HTTPS

Point https://calling.example.com at port 8092 with your reverse proxy or load balancer.
For a quick trial without a domain, run npm run tunnel in a second terminal. It starts a Cloudflare quick tunnel (install cloudflared first, for example brew install cloudflared) and the backend uses its URL when PUBLIC_BASE_URL is not set. Quick-tunnel URLs change every time, so do not use one in production.
5

Check that Vobiz can reach you

The second command must return XML that starts with <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.
6

Open the softphone and sign in

Open 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.
7

Place a test call

Type a number and click Call. When the call ends, a task appears in your ClickUp list.

Sign in

The panel has two tabs: Vobiz account and SIP Direct. Use Vobiz account unless you have a reason not to.
Vobiz Calling for ClickUp panel with the Vobiz account and SIP direct tabs and empty Auth ID and Auth Token fields

The sign-in step.

  1. Open the Vobiz account tab.
  2. Enter your Auth ID (MA_XXXXXXXX) and Auth Token from Console → API credentials. The Auth Token is not your Console login password.
  3. Enter your Agent ID (pick one of the suggestions, or type your own) and click Log in.
The backend checks the credentials with Vobiz, then sets up your account automatically:
  • An application named Vobiz ClickUp Calling, with answer URL https://calling.example.com/answer and hangup URL https://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.
Your Auth Token never leaves the server and is never stored on disk. It is held in the backend’s memory only while the server runs.
The panel showing a green READY badge and a Registered as line

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.
The caller ID dropdown listing the Vobiz numbers on the 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 the Vobiz ClickUp Calling application. You only need to do it once per number.
A number can belong to only one application, so this moves the number off the application it is on now. Before anything changes, the panel tells you which application that is and asks you to confirm. Signing in never moves a number by itself.

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.
  1. Open the SIP Direct tab.
  2. 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.
  3. Click Connect.
The browser registers with Vobiz directly. The SIP password is never sent to your backend. Remember these keeps the username and caller ID in this browser, never the password. Before you use SIP direct, connect the endpoint and the number to an application whose answer URL is your backend’s /answer:
  1. Console → Voice → Applications: create an application with answer URL https://calling.example.com/answer (method POST) and hangup URL https://calling.example.com/hangup-callback.
  2. Console → Voice → Endpoints: set the endpoint’s application to it.
  3. Console → Phone numbers: attach the caller ID number to the same application, so inbound calls to it ring this agent.
Included with a Vobiz account sign-in: the caller ID dropdown, Enable inbound calls, the recordings list and playback, the ClickUp task lookup during calls, and Sync CDRs. SIP direct logs calls to ClickUp, without a recording link.

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

  1. Wait for the badge to read READY. The Call button stays disabled until the softphone has registered with Vobiz.
  2. Type the number in international format (for example +91XXXXXXXXXX), or use the keypad, and click Call or press Enter.
  3. While the call runs you see a timer and Mute and Hold buttons. The keypad sends tones, for menus.
  4. 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.
Outgoing calls ring for up to 30 seconds and can last up to 4 hours.
Live call view showing a Hang up button, a running timer, and the ClickUp task / contact card

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 panel with an incoming-call card showing the calling number with Accept and Decline buttons and the hint Enter to accept, Escape to decline

The inbound prompt, with keyboard shortcuts.

Test Inbound Call shows you the incoming-call prompt, ringtone and shortcuts without a real call. Nothing is dialled and nothing is written to ClickUp.

What gets written to ClickUp

Every call your backend answers creates one task in the list set by CLICKUP_LIST_ID. This includes calls the customer did not pick up. The task is created when Vobiz reports the call result. When the recording is ready, the same task is updated with the playback link. Tasks are created by the ClickUp user who owns the API token. When the agent’s profile has a 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 after RECORDING_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.
The Call recordings and CDRs section listing timestamped entries with durations and play buttons

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 in backend/.env or as environment variables. These are all the settings the backend reads. If CLICKUP_API_TOKEN or CLICKUP_LIST_ID is missing, calls still work, but no tasks are created.
CLICKUP_API_TOKEN carries everything its owner can access in ClickUp. Create it on a dedicated ClickUp user with access to the call list only.

Deploying to production

  • Use a stable HTTPS address and set PUBLIC_BASE_URL to 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_DIR on persistent storage. If it is lost, endpoints are found again by their ClickUp-<agent ID> alias, so this is not fatal.
  • Set SIGNING_SECRET to 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) and DATA_DIR/synced-calls.json (which calls already have a ClickUp task), both with file mode 0600. 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, and ALLOWED_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

The request is not reaching the backend (proxy, firewall or tunnel error page). Fix the route to port 8092 until the curl check in the setup steps returns <Response> XML.
Vobiz refused the credentials. Copy both again from Console → API credentials. The Auth Token is not your login password.
The backend cannot reach api.vobiz.ai. Allow outbound HTTPS from the server, and leave VOBIZ_API_URL unset.
Vobiz refused to create the application or the endpoint. The backend log line starting [provision] gives the reason. Check that the account is active.
The agent ID was signed in from another tab or browser, which replaced this one’s SIP password, or (SIP direct) the username or password is wrong. Sign out and sign in again, and give each agent their own agent ID. On SIP direct, check the endpoint’s credentials.
No microphone access, or the page is not on HTTPS. Open the softphone at its https:// address, allow the microphone, and reload.
Your Vobiz application still points to the old answer URL. Set PUBLIC_BASE_URL, restart, sign in again, and click Enable inbound calls again.
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 SIP endpoint placing the call is not signed in on this backend, usually after a restart. Sign in to the softphone again.
No one from that Vobiz account has signed in since the backend started, or (SIP direct) no agent’s caller ID matches the dialled number. Have an agent sign in.
The number is not attached to the integration’s application. Click Enable inbound calls for the number, or on SIP direct attach it in the Console.
The account has no active, voice-enabled number. Add a number in the Vobiz Console, then sign in again.
The token or list is not set, the token’s user cannot write to the list, or 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.
The session expired (after 24 hours) or the backend restarted. 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 clickUpUserId on 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