Connecting your ACD

Erlangly scores adherence and runs the wallboard from agent states your ACD sends: available, on a call, after-call work, breaks, logged off. Five ACDs connect directly: Erlangly reads their agents' states and their queues' volumes itself, only reads, and connects out to them, so nothing on your network has to be reachable from the internet. Any other ACD, or a short script in front of it, sends states to the API. Tell us which ACD you run and we'll help you write it.

Start under Settings → Connections → Add a connection, and follow your ACD's page:

Another ACD, or a script

1. Add a connection

Under Settings → Connections → Add a connection, choose Another ACD, or a script. You get a token, shown once: keep it in the script or integration that sends the states.

2. Send agent states

POST /api/v1/agent_state_events
Authorization: Bearer <the connection's token>
Content-Type: application/json

{ "events": [
  { "agent_ref": "4411", "occurred_at": "2026-10-06T14:03:11Z",
    "state": "ON_CALL", "reason_code": null, "event_id": "abc-1" }
] }
  • Up to 500 events per request; send them as they happen, or every few seconds in batches.
  • agent_ref is the agent's ID in your ACD. event_id makes retries safe: a repeated ID is reported as a duplicate, not applied twice. Agent IDs, codes and event IDs are 255 characters at most.
  • Each event gets its own result: applied, duplicate, out_of_order (kept, but never moves someone's state backwards), unchanged (OFFLINE for someone logged in on another connection: logged in anywhere counts) or invalid with the reason.

3. Link agent IDs and map state codes

  • Agent IDs come with people: on each person's page, or in the people import. IDs nobody is linked to show up under the connection, where you can say who each one is.
  • Erlangly's states are AVAILABLE, ON_CALL, ACW, BREAK, AUX and OFFLINE. Your ACD's own codes show up under the connection to be mapped, by code or as CODE:REASON.

Volumes

The same token sends interval volumes to POST /api/v1/volume_intervals, with the columns of the volume import. A line of business gets its volumes from one connection: one that Erlangly reads from your ACD itself isn't open to another connection's token. If two clients share a line of business's code, send the ACD queue's ID instead.