Portal Community
Messaging stops immediately: Deregistration is not reversible without going through the full register/verify/code flow again. All in-flight messages will fail after deregistration. Ensure all queued messages are drained before calling this operation in a production context.

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredPermanent System User access token. Store in BizFirst Credentials Manager.
phoneNumberIdRequiredNumeric string ID of the phone number to deregister.
apiVersionOptionalMeta Graph API version. Defaults to v18.0.

Operation

FieldRequiredDescription
phoneNumberIdOptionalOverride the connection-level Phone Number ID. Useful when deregistering a number different from the connection default.

Sample Configuration

{
  "resource": "phone-number",
  "operation": "deregister",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345"
}

Validation Errors

ErrorCause
accessToken is requiredThe accessToken field is empty.
phoneNumberId is requiredNo Phone Number ID at connection or operation level.
100 (Meta)Invalid Phone Number ID or the number does not belong to this WABA.
200 (Meta)Insufficient permissions to deregister this number.
timeoutThe Meta Graph API did not respond within the configured timeout.

Output

Success Port

FieldTypeDescription
successbooltrue when deregistration was accepted by Meta.
statusstring"deregistered".
rawResponsestringFull raw JSON from the Meta Graph API.

Error Port

FieldTypeDescription
statusstring"failed" or "error".
errorCodestringMeta error code or "timeout".
errorMessagestringHuman-readable error description.

Sample Output

{
  "success": true,
  "status": "deregistered",
  "rawResponse": "{\"success\":true}"
}

Expression Reference

ValueExpressionNotes
Deregistration success{{ $output.deregisterPhone.success }}Gate the next migration or offboarding step on this boolean.
Status string{{ $output.deregisterPhone.status }}Log "deregistered" to the migration/offboarding audit trail.

Node Policies & GuardRails

Policy AreaRecommendation
Credential storageStore the access token in BizFirst Credentials Manager.
Message drainBefore deregistering in production, pause all message-sending workflows and wait for the queue to drain completely. Any messages sent after deregistration will fail silently on the receiving side.
Human approval gateRoute deregistration requests through a BizFirst HIL approval step before execution. Deregistering a production number is a high-impact, non-reversible operation.
Audit loggingLog every deregistration event to a permanent audit table with timestamp, phone number ID, WABA ID, and the initiating user identity. This record is critical for compliance and incident post-mortems.
Immediately follow with re-registrationIf the intent is WABA migration, call phone-number/register on the destination WABA immediately after a successful deregistration to minimise the window where the number is unavailable.

Examples

WABA Migration Deregister Step

{
  "resource": "phone-number",
  "operation": "deregister",
  "accessToken": "{{ $credentials.sourceWabaToken }}",
  "phoneNumberId": "{{ $input.phoneNumberId }}"
}

Step 1 of a WABA migration workflow. After an approved HIL step, this node deregisters the number from the source WABA. On success: true, the workflow immediately proceeds to phone-number/register with the destination WABA's token to minimise downtime. The migration audit log records the deregistration timestamp.

Security Incident Deregistration

{
  "resource": "phone-number",
  "operation": "deregister",
  "accessToken": "{{ $credentials.emergencyAdminToken }}",
  "phoneNumberId": "{{ $item.phoneNumberId }}"
}

An incident response workflow retrieves all phone numbers via phone-number/getMany, then uses SplitInBatches to iterate through each number and call this deregister node. After all numbers are deregistered, a Slack alert is sent to the security team confirming that no further messages can be sent from the compromised WABA.