Change Log
Receives Dialpad Change Log (admin/audit change) events at a Monad-hosted endpoint. You register a Dialpad webhook + change-log subscription that point at this input's ingest URL; Dialpad pushes each change-log event to Monad, where it is verified against its HS256-signed JWT and emitted as the raw change-log event.
Sync Type: Push (Webhook)
Overview
Dialpad's Change Log captures admin/audit change events — who changed what configuration in a Dialpad company: operator and user management, device and phone number changes, group/department and IVR/call-routing changes, recording policy, CallAI settings, and more. This input is a webhook receiver: Dialpad pushes change-log events to a Monad-hosted endpoint as they occur; Monad never polls a Dialpad API for this data.
Why a webhook, not a poll
Dialpad exposes change-log events only through its event-subscription/webhook mechanism — there is no API to list or replay historical change-log events. The webhook push is the only programmatic feed of this data.
You set the integration up by creating a webhook and a change-log subscription in Dialpad (portal or API) that point at this input's Monad ingest URL. See the Setup Walk-through below.
This input does not collect Dialpad's Stats/analytics API data (call/SMS usage metrics), and it does not collect login/authentication events — Dialpad has no login/auth event feed exposed via event subscriptions.
Prerequisites
Before configuring this input, you need:
- Access to create a webhook and change-log subscription in Dialpad — the portal, or
POST /api/v2/webhooksandPOST /api/v2/subscriptions/changelogusing a company-admin API key or OAuth token with thechange_logscope. See Dialpad OAuth. - This input's Monad ingest URL, to use as the webhook's
hook_url(see the walk-through for how to build it). - A shared secret configured on both sides — set as the webhook's
secretin Dialpad, and entered as this input's Webhook Secret.
Authentication
This input does not authenticate to Dialpad — Dialpad delivers events to Monad's ingest URL, and Monad authenticates each delivery. Dialpad webhooks support only a hook_url and a secret (no custom headers), so no Monad API key is ever embedded in a delivery. Instead:
- Endpoint access: the per-pipeline Monad ingest URL is the access boundary Dialpad delivers to.
- Payload integrity: when Webhook Secret is set, Dialpad signs every delivery as an HS256 JWT, and this input verifies the signature before emitting the event. The value entered here must match the
secretconfigured on the Dialpad webhook, or every delivery is rejected as an invalid signature. Strongly recommended; if the webhook is created without a secret, Dialpad sends unencoded JSON and no signature is verified.
Configuration
| Secret | Type | Required | Description |
|---|---|---|---|
| Webhook Secret | secret | Recommended | The shared secret set on the Dialpad webhook. Dialpad signs each delivery as an HS256 JWT with it, and this input verifies the signature before emitting the event. Must match the secret on the Dialpad webhook. Leave empty only if the webhook has no secret (unencoded JSON delivery). |
Setup Walk-through
You create the webhook and change-log subscription in Dialpad and point them at this input.
-
Create a Dialpad — Change Log input and add it to a pipeline.
-
Decide on a webhook secret and enter it in Webhook Secret.
-
Copy the Pipeline ID from the pipeline details page. Your ingest URL is:
https://app.monad.com/api/v2/http/send/{pipeline_id} -
Using a company-admin API key or OAuth token with the
change_logscope, call Dialpad's Webhooks — Create endpoint:CodeNote the returned webhook
idin the response — you'll need it asendpoint_idin the next step. -
Call Dialpad's Change Log Event Subscription — Create endpoint:
Code
A change-log subscription captures all change-log events for the company — Dialpad has no server-side action-type filter, and this input emits every event. Filter by action downstream in your Monad pipeline if you need to narrow them.
One subscription per company
Each Dialpad company needs its own webhook, secret, and change-log subscription. If you manage multiple Dialpad companies, create a separate Monad input for each one.
Record Fields
Each record is one Dialpad change-log event, passed through close to verbatim:
| Field | Description |
|---|---|
action | The action-type code for the change (e.g. operator_removed). See Change Log Action Types. |
additional_data | Action-specific details. Not standardized across actions and treated as opaque — shape may change without notice. |
changed_by | The admin/user who made the change (name, id, type). Redacted when the change was made by Dialpad support. |
date | Unix timestamp in milliseconds (UTC) when the change occurred. Used as the record's timestamp. |
note | A human-readable description of the change. Not standardized — don't parse it programmatically. |
target | The resource that was changed (type, id). |
Dialpad's change-log payload has no unique event ID field.
Sample Record
Code
Limitations
- No backfill. Change-log subscriptions are forward-only; only events that occur after the subscription is created are delivered.
- No action filtering at ingest. Dialpad delivers every change-log action to the subscription and this input emits them all; filter by
actiondownstream in your Monad pipeline if you need to narrow them. - One subscription per company. A single webhook/subscription/secret covers one Dialpad company. Multiple companies each need their own Monad input instance.
- No Stats/analytics data. This input covers admin/audit change events only, not Dialpad's call/SMS usage Stats API.
- No login/authentication events. Dialpad exposes no login/auth event feed via event subscriptions.
Troubleshooting
Common Issues
-
Deliveries rejected
- Confirm Webhook Secret in Monad exactly matches the
secreton the Dialpad webhook. A mismatch — or a secret configured on only one side — causes every delivery to fail signature verification.
- Confirm Webhook Secret in Monad exactly matches the
-
No data arriving
- Confirm the change-log subscription was created with
enabled: trueand the correctendpoint_id(the webhook'sid, not the pipeline ID). - Confirm the webhook's
hook_urlexactly matches this pipeline's Monad ingest URL.
- Confirm the change-log subscription was created with
-
Missing historical events
- Expected. Change-log subscriptions have no backfill; only events after subscription creation are delivered.
Related Articles
- Change Log Events
- Change Log Action Types
- Event Subscriptions
- OAuth
- Webhooks — Create
- Change Log Event Subscription — Create