Portal Community
Same QR image, new text: This operation calls POST /{phoneNumberId}/message_qrdls/{qrCodeId} with a new prefilled_message. The QR code graphic and deep link URL remain the same — no reprint or redistribution of physical materials is required. The new message is effective immediately upon success.

When to Use

Configuration

Connection

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

Operation

FieldRequiredDescription
qrCodeIdRequiredThe QR code identifier (the code string returned by qr-code/create).
prefilledMessageRequiredNew prefilled message text. Replaces the current text immediately. Max 512 characters.

Sample Configuration

{
  "resource": "qrcode",
  "operation": "update",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "qrCodeId": "4RNL66ENMHZJ7A1",
  "prefilledMessage": "Hi! I'd like to know more about your back-to-school offers."
}

Validation Errors

ErrorCause
accessToken is requiredThe accessToken field is empty.
phoneNumberId is requiredNo Phone Number ID supplied.
qrCodeId is requiredNo QR code identifier provided.
prefilledMessage is requiredNo new prefilled message text was provided.
prefilledMessage too longThe message text exceeds 512 characters.
100 (Meta)QR code not found or does not belong to this phone number.

Output

Success Port

FieldTypeDescription
codestringThe QR code identifier.
prefilledMessagestringThe new prefilled message text as stored.
deepLinkUrlstringThe deep link URL (unchanged from creation).
statusstring"updated".
rawResponsestringFull raw JSON from the Meta Graph API.

Error Port

FieldTypeDescription
codestringThe QR code identifier echoed from input.
statusstring"failed" or "error".
errorCodestringMeta error code or "timeout".
errorMessagestringHuman-readable error description.

Sample Output

{
  "code": "4RNL66ENMHZJ7A1",
  "prefilledMessage": "Hi! I'd like to know more about your back-to-school offers.",
  "deepLinkUrl": "https://wa.me/qr/4RNL66ENMHZJ7A1",
  "status": "updated"
}

Expression Reference

ValueExpressionNotes
Update success{{ $output.updateQr.status }}Confirm "updated" before recording the change in the campaign database.
New message text{{ $output.updateQr.prefilledMessage }}Store the confirmed new text in the QR code inventory record.
Deep link (unchanged){{ $output.updateQr.deepLinkUrl }}Confirms the URL has not changed — no asset redistribution needed.

Node Policies & GuardRails

Policy AreaRecommendation
Credential storageStore the access token in BizFirst Credentials Manager.
Physical materials noteBecause the QR image is unchanged, updating the prefilled message on a code used in printed materials changes the user experience without any reprint. Communicate this to marketing teams who manage physical collateral.
Audit trailLog every update with the old and new prefilled message text, the QR code ID, timestamp, and the initiating workflow/user. This is essential for content compliance audits.
Character limitValidate the new prefilled message length before calling this node. Meta rejects messages over 512 characters — validate in a Function node first to avoid wasted API calls.
Error portConnect the error port. A 100 not-found error may indicate the QR code was deleted externally — reconcile the database accordingly.

Examples

Seasonal Campaign Message Refresh

{
  "resource": "qrcode",
  "operation": "update",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "qrCodeId": "{{ $input.permanentDisplayQrCode }}",
  "prefilledMessage": "Hi! Tell me about your {{ $input.seasonName }} offers."
}

A seasonal content scheduler fires at the start of each season. The workflow retrieves the permanent display QR code ID from the database and updates its prefilled text to the new season message. Marketing teams receive a confirmation notification that the QR codes on all permanent in-store displays now carry the updated seasonal text without needing a reprint.

Compliance Remediation Update

{
  "resource": "qrcode",
  "operation": "update",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "qrCodeId": "{{ $item.qrCode }}",
  "prefilledMessage": "{{ $item.approvedReplacementMessage }}"
}

A content compliance sweep identifies QR codes with non-compliant prefilled text. A SplitInBatches node iterates each offending code and calls this update node with the pre-approved replacement message from the compliance database. Each update is logged to the compliance audit trail with old and new message content.