> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://myoperator.crisp.help/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# How do MyOperator Call Disposition Webhooks work?

|| Info Quick answer — A Call Disposition Webhook fires automatically when an agent adds a disposition to a call log in MyOperator. As part of the 2025 security update, all webhooks must now use HTTPS + POST + JSON and static parameters.

||| Warning GET, dynamic query strings, XML/form-data, and non-HTTPS URLs are deprecated. Any webhook using them becomes view-only.

## When should I use this guide?

Review this FAQ if you need to:

* Capture disposition data in your CRM
* Migrate an old GET-based webhook to the new POST standard
* View the complete field reference, sample payload, and troubleshooting steps

---

## 1. What is a Call Disposition Webhook?

A Disposition Webhook sends real-time call and disposition information from MyOperator to your application. Anytime an agent adds a disposition to a call log, MyOperator will automatically trigger a webhook to the URL you provide.

This helps you:

* Capture call + disposition data in your own database
* Trigger CRM actions (e.g., create lead, update ticket)
* Automate downstream workflows

---

## 2. What are Webhooks used for?

Webhooks notify your system whenever something happens in your MyOperator account. Examples include:

* Incoming call
* Missed call
* Call completed
* Disposition added

The Disposition Webhook is specifically triggered after an agent submits a disposition.

---

## 3. What’s new in the 2025 webhook update? (Important)

To improve security, reliability, and standardisation, MyOperator has simplified the webhook system.

### Supported Now (2025+)

* ✔ HTTPS URLs only
* ✔ POST method only
* ✔ JSON format only
* ✔ Static parameters only

### Deprecated Now

* ❌ GET method
* ❌ HTTP (non-HTTPS) URLs
* ❌ Dynamic query string parameters
* ❌ XML / form-data / text payloads
* ❌ Legacy log filters (Mobile/SMS via query params)

||| Warning If an existing webhook uses deprecated options, it becomes view-only. To modify, create a new webhook using the latest format.

---

## 4. When is a Disposition Webhook triggered?

The webhook fires when:

* A call is logged AND
* An agent adds one or more dispositions to the call

If multiple dispositions are added, multiple entries will appear in the `_dsp` array.

---

## 5. How do I add a Disposition Webhook?

### Step-by-step Setup:

1. Go to MyOperator Panel → API & Webhook → Calling Webhook
2. Click Add New Webhook
3. Select Disposition Webhook
4. Enter your HTTPS endpoint URL
5. POST + JSON will be pre-selected (default & mandatory)
6. (Optional) Add Custom Headers
7. (Optional) Add Basic Auth credentials
8. Click Save

Your webhook will now start receiving disposition data.

![Selecting Disposition webhook](https://content.api.getguru.com/files/view/0f7ca6dc-512f-4727-81a7-c9ff238a2515)

---

## 6. What format does the webhook send?

Disposition Webhooks always send:

* HTTPS POST request
* `Content-Type: application/json`
* Payload inside the key: `myoperator`

---

## 7. What security options are supported?

* ✔ Custom Headers — Useful for validating whether MyOperator sent the request.
* ✔ Basic Authentication — The webhook can include username & password using HTTP Basic Auth.

---

## 8. What were Query Parameters earlier? (And why deprecated?)

### Earlier (OLD System)

You could map call-log fields to query parameters like: `?caller_number=+919876543210`

### Why Deprecated?

* Not secure
* Error-prone
* Confusing when mixed with POST
* Inconsistent with industry standards

Replacement: information is now sent inside the JSON payload.

---

## 9. Full Query Parameter Field Reference (for legacy understanding)

(All of these must now be read from JSON instead.)

* Caller number with country code — `_cl`
* Caller number without country code — `_cr`
* Creation date of log (epoch) — `_ts`
* Event of log — `_ev`
* Status of log — `_su`
* UID — `_pm.ui`
* Company ID — `_ci`
* User phone number — `_ld._rr._ct`
* Department name — `_dn`
* Recording file name — `_fn`
* Recording URL — `_fu`
* Start time (epoch) — `_st`
* End time (epoch) — `_et`
* Push timestamp — `_ms`
* Unique caller ID — `_ai`
* Location — `_se`
* Dispositions — `_dsp` array
* Duration — `_dr`
* Duration (minutes) — `_drm`
* Department ID — `_di`
* Custom fields — `_pm` or user-defined

---

## 10. Complete Call Log Field Reference (ALL Fields Included)

### Core Call Fields

* `_an` — Anonymous User (1/0)
* `_ai` — Call Log ID
* `_cl` — Caller Number (formatted)
* `_cr` — Caller Number (raw)
* `_cm` — Contact Name
* `_cy` — Country Code
* `_ev` — Event Type
* `_fu` — Recording URL
* `_fn` — Recording File Name

### Timestamps

* `_ts` — Log timestamp (epoch)
* `_ms` — Log timestamp (ms)
* `_st` — Call start time
* `_et` — Call end time
* `_ss` — Duration (seconds)

### Status & Source

* `_ns` — Notification Status
* `_se` — Location (State, Country)
* `_su` — Call Status
* `_so` — Source
* `_ty` — Type (call/sms)

### Company / Department

* `_ci` — Company ID
* `_di` — Department ID
* `_dn` — Department Name

### Duration

* `_dr` — hh:mm:ss
* `_drm` — minutes

### Reference IDs

* `_ri` — Reference ID
* `_ji` — OBD Job ID
* `_ivid` — Public IVR ID
* `_cri` — Client Ref ID

### Leg / Agent Details

* `_ld._rst` — Ring start time
* `_ld._rr._na` — Agent name
* `_ld._rr._id` — Agent ID
* `_ld._rr._em` — Agent email
* `_ld._rr._ct` — Agent contact
* `_ld._rr._nr` — Agent contact (CC included)
* `_ld._su` — Leg status
* `_ld._st` — Leg start time
* `_ld._et` — Leg end time
* `_ld._dr` — Leg duration
* `_ld._ds` — Dial string
* `_ld._did` — Last Caller ID
* `_ld._ac` — Leg status (received/missed/transferred)

### Transfer Details

* `_ld._tt._na` — Transferred agent name
* `_ld._tt._id` — Transferred agent ID
* `_ld._tt._em` — Transferred agent email
* `_ld._tt._ct` — Transferred agent contact
* `_ld._tt._nr` — Transferred agent number (CC)

### PM (Meta Fields)

* `ui` — Call UID
* `is` — Starred
* `ic` — Is commented
* `ia` — Is archived
* `ib` — Is billable
* `vt` — View type

### Disposition Fields

* `_dsp._lb` — Disposition Level (1/2)
* `_dsp._na` — Disposition Name
* `_dsp._ag` — The agent who added
* `_dsp._ts` — Disposition timestamp

---

## 11. Troubleshooting

Webhook not firing?

* Check if your endpoint is HTTPS
* Ensure the webhook is not using deprecated settings
* Verify your server's SSL certificate
* Check response status in webhook logs

Receiving empty payload?

* You must parse the POST body, not GET
* Ensure your endpoint handles JSON correctly

Multiple dispositions?

Check `_dsp` array — it may contain multiple entries.

---

## 12. Migration Guide (Old → New)

| Old behavior | New requirement |
| ---- |
| GET method | ❌ Deprecated → Use POST |
| HTTP URL | ❌ Deprecated → Use HTTPS |
| Dynamic query params | ❌ Deprecated → Use JSON |
| Form-data / XML | ❌ Deprecated → Use JSON |
| Editable old webhooks | ❌ Locked to view-only |

To update: create a new webhook with POST + JSON + HTTPS.

---

## 13. Support

If you need help implementing or migrating your Disposition Webhook: [support@myoperator.com](mailto:support@myoperator.com)

---

Keywords: MyOperator Disposition Webhook, POST JSON, webhook update 2025, call disposition API