SeatReaper

Connecting 3CX

Last verified 2026-11-04

SeatReaper reads the user extensions on a client's 3CX (number, name and email) and its call history (who called whom, when, and whether the call was answered). It never changes extensions, call flows or settings.

Each client has its own 3CX, so 3CX is connected per client, on the client's page.

What you need

  • 3CX version 20 or later. The Configuration API arrived in version 20.
  • An 8SC+ license (8 or more simultaneous calls). 3CX only offers the Configuration API from that size up.
  • A public address for the 3CX web client, such as https://client.my3cx.us or https://pbx.client.com:5001. SeatReaper does not connect to IP addresses or internal names.

Create the API client in 3CX

  1. Sign in to the client's 3CX Admin Console as a System Owner.
  2. Open Admin > Integrations > API and choose Add.
  3. Enter a Client ID. 3CX calls it the DN; any free number works, such as 900.
  4. Tick 3CX Configuration API Access.
  5. Pick the Department and set the Role to System Owner or System Admin, so SeatReaper can see every department's extensions. A narrower role only shows its own department.
  6. Choose Save. 3CX shows the API key (the client secret) once. Copy it.

Connect

An owner opens the client in SeatReaper, goes to Data sources > 3CX, enters the 3CX address, the client ID and the API key, and chooses Connect 3CX. SeatReaper checks them, saves the key encrypted and bound to that client, and runs the first sync. After that it syncs every day, and owners and techs can choose Sync now.

What SeatReaper reads

  • Extensions: every user extension. Hot desking profiles (numbers starting with HD) are left out. Ring groups, queues and IVRs are not users, so they are not read.
  • Call history: on each sync, newest first. The first sync reads back up to 200 days (the longest idle threshold) as far as it can in about a minute; a busy system can take a few daily syncs to read it all. After that each sync reads only the calls since the last one.

For each extension SeatReaper keeps only the time of its last call: the last call it made, or the last call it answered. A call that rang and was not answered does not count.

What SeatReaper flags

  • People who left: a Microsoft 365 user who is blocked, or has not signed in for the inactivity threshold, whose email is on an extension. The extension is added to that person's item, next to their Microsoft 365 licenses.
  • People no longer in Microsoft 365: an extension whose email is on the client's Microsoft 365 domains but matches no Microsoft 365 user.
  • Extensions nobody uses: an extension with no call made or answered for 90 days. This uses the same threshold as idle phone numbers, and waits until SeatReaper has read call history for the whole threshold. An extension added after the first sync counts from the day SeatReaper first saw it.

Extensions are matched to people by the email address on the extension, so keep emails filled in on 3CX users.

Prices and offboarding

  • Prices: 3CX licenses a whole system by simultaneous calls, not by extension, so there is no list price. Set what each extension costs you, or what you charge the client for it, as 3CX phone extension in the price book.
  • Offboarding: the person's extension is ticked for you when you offboard them, and confirmed once it is deleted in 3CX.
  • Billing check: map a PSA product to Extensions in 3CX in the billing check to compare what you bill with the extensions on the system.

Disconnect

An owner chooses Disconnect on the 3CX card. SeatReaper deletes the key, the extensions and the call history it kept. Delete the API client in 3CX to revoke access completely. Connecting the same client to a different 3CX address starts its extensions and call history over.

Troubleshooting

  • 3CX rejected the client ID or secret: check the client ID (the DN) and copy the API key again. A new API key replaces the old one.
  • 3CX did not recognize the request: the 3CX is older than version 20, or the address points somewhere else.
  • 3CX refused access: the API client needs 3CX Configuration API Access and a System Owner or System Admin role.
  • Could not be reached: the 3CX web client must be reachable from the internet on that address and port.

Still stuck?

Signed in? Send a request to support and follow it under My tickets. Or email support@seatreaper.com with the page you were on and what you expected to happen.