---
title: "Update sender"
method: PATCH
path: "/v1/senders/{senderId}"
---

# Update sender

`PATCH /v1/senders/{senderId}`

## Path parameters

- `senderId` string, required

## Request body

- SenderUpdateRequest
  - `name` string
  - `enableVoice` boolean — Turn the voice channel on or off. The sender must already have a phone number provisioned for calls; enabling it otherwise returns 400 instead of storing a flag that changes nothing. Confirm with the `channels` array on the response.
  - `enableSmsOneway` boolean — Turn the one-way SMS channel on or off. Enabling needs nothing else and takes effect immediately; disabling removes the channel from the sender. Confirm with the `channels` array on the response.
  - `setAsDefault` boolean
  - `webhookUrl` string, uri, nullable — HTTPS URL for webhook events. Set to null to remove webhook.
  - `webhookEvents` WebhookEvent[] — Events to subscribe to.
  - `webhookActive` boolean — Whether the webhook is active.
  - `emailReceivingEnabled` boolean — Enable or disable inbound email receiving for this sender.
  - `emailCatchAllEnabled` boolean — Enable or disable domain catch-all. When enabled (with emailReceivingEnabled true), this sender receives email for any address at its domain. Ignored (treated as false) if receiving is not enabled.
  - `emailAddress` string, email — Attach or change the sender's email from-address (e.g. noreply@yourdomain.com). The domain must be a verified email domain in your project.
  - `emailDomainId` string — ID of the verified email domain to attach. Optional — resolved from `emailAddress`'s domain when omitted.
  - `emailFromName` string — Display name shown in the recipient's inbox for the email channel.
  - `webhookSignatureVersion` 'v1' | 'v1+v2' | 'v2' — Which `X-Zavu-Signature` scheme this receiver is sent. - `v1`: `v1=HMAC_SHA256(secret, body)`. The scheme used before this was configurable. Existing webhooks stay on it until you move them. - `v2`: `v2=HMAC_SHA256(secret, "{t}.{body}")`. The current scheme, and the default for new senders. It signs the timestamp together with the body. - `v1+v2`: both signatures, sharing one `t`. The migration setting: a receiver reading either one works, so you can deploy and confirm your new verifier before switching over. Moving from `v1` straight to `v2` returns `400`. Set `v1+v2` first. See https://docs.zavu.dev/guides/receiving-messages/signature-migration

## Response `200`

Sender updated.

- Sender
  - `id` string, required
  - `name` string, required
  - `phoneNumber` string, required — Phone number in E.164 format.
  - `channels` string[] — Channels this sender can actually send on right now, computed from its configuration. Empty means the sender cannot send or receive anything yet: a phoneNumber alone does not enable SMS or voice. Check this rather than inferring capability from phoneNumber or emailAddress.
  - `isDefault` boolean — Whether this sender is the project's default.
  - `webhook` SenderWebhook — Webhook configuration for the sender.
    - `url` string, uri, required — HTTPS URL that will receive webhook events.
    - `events` WebhookEvent[], required — List of events the webhook is subscribed to.
    - `secret` string — Webhook secret for signature verification. Only returned on create or regenerate.
    - `active` boolean, required — Whether the webhook is active.
    - `signatureVersion` 'v1' | 'v1+v2' | 'v2', required — Which `X-Zavu-Signature` scheme this receiver is sent. - `v1`: `v1=HMAC_SHA256(secret, body)`. The scheme used before this was configurable. Existing webhooks stay on it until you move them. - `v2`: `v2=HMAC_SHA256(secret, "{t}.{body}")`. The current scheme, and the default for new senders. It signs the timestamp together with the body. - `v1+v2`: both signatures, sharing one `t`. The migration setting: a receiver reading either one works, so you can deploy and confirm your new verifier before switching over. Moving from `v1` straight to `v2` returns `400`. Set `v1+v2` first. See https://docs.zavu.dev/guides/receiving-messages/signature-migration
  - `whatsapp` object — WhatsApp Business Account information. Only present if a WABA is connected.
    - `phoneNumberId` string — WhatsApp phone number ID from Meta.
    - `displayPhoneNumber` string — Display phone number.
    - `paymentStatus` object — Payment configuration status from Meta.
      - `setupStatus` string — Payment setup status (COMPLETE, NOT_STARTED, etc.).
      - `methodStatus` string — Payment method status (VALID, NONE, etc.).
      - `canSendTemplates` boolean — Whether template messages can be sent. Requires setupStatus=COMPLETE and methodStatus=VALID.
  - `emailAddress` string — From-address for the email channel, if configured.
  - `emailReceivingEnabled` boolean — Whether inbound email receiving is enabled for this sender.
  - `emailCatchAllEnabled` boolean — Whether catch-all receiving is enabled. When true (and emailReceivingEnabled is true), this sender receives email addressed to any local part at its domain, not just its own address. The original recipient is delivered in the message.inbound webhook's data.to.
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `400` — Invalid update.
- `401` — Unauthorized.
- `404` — Sender not found.

---

[API](https://skmtc.net/zavudev/apis/zavu-unified-messaging-layer-api.md) · [All operations](https://skmtc.net/zavudev/apis/zavu-unified-messaging-layer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zavudev/zavu-unified-messaging-layer-api/revisions/4dacdff2adf8/schema)
