Portal Community
Completes the verification flow: This operation calls POST /{phoneNumberId}/verify_code with the code field. On success, Meta sets code_verification_status to VERIFIED for the number, enabling it to send messages.

When to Use

Configuration

Connection

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

Operation

FieldRequiredDescription
phoneNumberIdOptionalOverride the connection-level Phone Number ID.
codeRequiredThe 6-digit verification code received via SMS or voice call on the physical device.

Sample Configuration

{
  "resource": "phone-number",
  "operation": "verify-code",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "code": "{{ $input.verificationCode }}"
}

Validation Errors

ErrorCause
accessToken is requiredThe accessToken field is empty.
phoneNumberId is requiredNo Phone Number ID at connection or operation level.
code is requiredNo verification code was provided.
132015 (Meta)Wrong verification code — the 6-digit code does not match what Meta sent.
132016 (Meta)Verification code expired — the code was not submitted within the validity window (typically 10 minutes).
100 (Meta)Invalid Phone Number ID.

Output

Success Port

FieldTypeDescription
successbooltrue when the code was accepted and the number is now verified.
statusstring"verified".
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": "verified",
  "rawResponse": "{\"success\":true}"
}

Expression Reference

ValueExpressionNotes
Verification success{{ $output.verifyCode.success }}Gate provisioning completion steps on this boolean.
Status string{{ $output.verifyCode.status }}Log to provisioning audit trail: expected "verified".

Node Policies & GuardRails

Policy AreaRecommendation
Credential storageStore the access token in BizFirst Credentials Manager.
Code handlingNever log or store the 6-digit verification code in any database or workflow variable after use. It is single-use and time-limited — treat it like a one-time password.
Expiry handlingIf a 132016 expired code error is returned, route back to phone-number/requestVerificationCode to request a fresh code. Do not retry with the same expired code.
Wrong code handlingOn a 132015 wrong code error, prompt the operator to re-enter carefully. After three failed attempts, initiate a fresh code request rather than continuing to retry the same code.
Post-verification confirmationAfter a successful verify, call phone-number/get to confirm codeVerificationStatus is VERIFIED before marking the provisioning workflow complete.

Examples

HIL-Driven Verification Completion

{
  "resource": "phone-number",
  "operation": "verify-code",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "{{ $workflow.phoneNumberId }}",
  "code": "{{ $approval.verificationCode }}"
}

The provisioning workflow pauses at a BizFirst HIL (Human-in-the-Loop) node after phone-number/requestVerificationCode. The operator enters the SMS code into the approval form. The HIL node resumes the workflow with $approval.verificationCode set to the entered code, which this node submits to Meta. On success: true, the workflow marks the number as active in the provisioning database.

Re-Verification After Deregister/Register Cycle

{
  "resource": "phone-number",
  "operation": "verify-code",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "{{ $input.phoneNumberId }}",
  "code": "{{ $input.smsCode }}"
}

A phone number migration workflow deregisters a number, migrates it to a new WABA, registers it there, requests a verification code (SMS), then calls this node with the code collected from the physical device to restore the number to verified status. After success, a phone-number/get confirms the new status.