Portal Community
Partial updates: Only fields included in the configuration are sent to the API. Omitted fields retain their current values. You do not need to re-supply all fields to update just one.

When to Use

Configuration

Connection

FieldRequiredDescription
accessTokenRequiredPermanent System User access token from Meta Business Manager. Store in BizFirst Credentials Manager.
phoneNumberIdRequiredNumeric string ID of the WhatsApp Business phone number whose profile you want to update.
apiVersionOptionalMeta Graph API version, e.g. v18.0. Defaults to v18.0.

Operation

At least one of the following fields must be provided. Omitted fields are not modified.

FieldRequiredDescription
aboutOptionalShort "About" status text visible on the business profile. Maximum 139 characters.
addressOptionalPhysical address of the business (street, city, postcode, country).
descriptionOptionalLonger business description displayed on the profile page.
emailOptionalBusiness contact email address. Must be a valid email format.
websitesOptionalJSON array of up to 2 website URLs (e.g. ["https://example.com", "https://shop.example.com"]). Providing an empty array clears all websites.
verticalOptionalIndustry category. Accepted values: AUTOMOTIVE, BEAUTY, CLOTHING, EDUCATION, ENTERTAINMENT, EVENT_PLANNING, FINANCE, GROCERY, GOVERNMENT, HEALTH, HOTEL, NONPROFIT, PROFESSIONAL_SERVICES, RETAIL, TRAVEL, RESTAURANT, OTHER.

Sample Configuration

{
  "resource": "profile",
  "operation": "updateBusiness",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "about": "Same-day delivery across the Bay Area. Chat to order!",
  "address": "456 Market Street, San Francisco, CA 94105",
  "email": "hello@bizfirstai.com",
  "websites": "[\"https://bizfirstai.com\", \"https://shop.bizfirstai.com\"]",
  "vertical": "RETAIL"
}

Validation Errors

ErrorCause
accessToken is requiredThe accessToken field is empty or missing.
phoneNumberId is requiredThe phoneNumberId field is empty or missing.
100 (Meta)Phone number ID not found or the token does not have access.
190 (Meta)Access token expired or invalid.
200 (Meta)Token lacks required permission scope.
131000 (Meta)The about text exceeds 139 characters.
131003 (Meta)More than 2 website URLs were provided.

Output

Success Port

Fires when Meta confirms the profile update. The output includes the values that were submitted (not the full current profile — use profile/getBusiness to read back the complete updated profile).

FieldTypeDescription
aboutstringThe submitted About text, or null if not included in the request.
addressstringThe submitted address, or null if not included.
descriptionstringThe submitted description, or null if not included.
emailstringThe submitted email, or null if not included.
websitesarrayThe submitted websites array, or null if not included.
verticalstringThe submitted vertical, or null if not included.
statusstring"updated" on success.
errorCodestringEmpty on success.
errorMessagestringEmpty on success.
rawResponsestringRaw JSON from Meta, typically {"success":true}.

Error Port

FieldTypeDescription
statusstring"failed" or "error".
errorCodestringMeta error code or BizFirst internal code.
errorMessagestringHuman-readable description of the failure.
rawResponsestringRaw API error JSON for diagnostics.

Sample Output

{
  "about": "Same-day delivery across the Bay Area. Chat to order!",
  "address": "456 Market Street, San Francisco, CA 94105",
  "description": null,
  "email": "hello@bizfirstai.com",
  "websites": ["https://bizfirstai.com", "https://shop.bizfirstai.com"],
  "vertical": "RETAIL",
  "status": "updated",
  "errorCode": null,
  "errorMessage": null,
  "rawResponse": "{\"success\":true}"
}

Expression Reference

ValueExpressionNotes
Status{{ $output.updateBusinessProfile.status }}"updated" confirms the API call succeeded.
Submitted email{{ $output.updateBusinessProfile.email }}Echoes back the submitted value. Null if email was not included in the update.
Submitted websites{{ $output.updateBusinessProfile.websites }}Array of submitted URLs.
Error code{{ $output.updateBusinessProfile.errorCode }}Non-null on error port. Check for 131000 if about is being set from user input.

Node Policies & GuardRails

Policy AreaRecommendation
About text lengthValidate about text length (max 139 chars) in an upstream Function node before calling this operation to avoid a 131000 rejection.
Website array limitThe websites field accepts at most 2 URLs. Validate the array length before passing. Pass an empty array [] to clear all websites.
Read-before-updateIf doing a partial update, retrieve the current profile first with profile/getBusiness to preserve existing fields that are not being changed.
Credential storageStore the access token in BizFirst Credentials Manager. Never paste it into node configuration as plain text.
Audit loggingLog all profile updates — which fields were changed, the previous values, new values, timestamp, and the triggering workflow — for change management records.
Error port handlingAlways connect the error port. Silent failures on profile updates can leave the public-facing business profile in an inconsistent state.

Examples

Tenant Onboarding — Initial Profile Setup

{
  "resource": "profile",
  "operation": "updateBusiness",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "{{ $input.phoneNumberId }}",
  "about": "{{ $input.aboutText }}",
  "address": "{{ $input.businessAddress }}",
  "description": "{{ $input.businessDescription }}",
  "email": "{{ $input.supportEmail }}",
  "websites": "{{ $input.websiteUrlsJson }}",
  "vertical": "{{ $input.industryVertical }}"
}

A tenant onboarding workflow collects business details from the onboarding form and sets all profile fields in one call. After success, it calls profile/getBusiness to read back the live profile and verify each field before marking the onboarding as complete.

Seasonal About Text Update

{
  "resource": "profile",
  "operation": "updateBusiness",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "about": "Holiday hours: Mon–Sat 9am–6pm. Closed Dec 25–26. Happy Holidays!"
}

A scheduled workflow fires on Dec 20 and sets the seasonal About text. A second scheduled workflow fires on Dec 27 and restores the standard About text from the configuration store. Only the about field is supplied — all other profile fields remain unchanged.

Post-Migration Website URL Update

{
  "resource": "profile",
  "operation": "updateBusiness",
  "accessToken": "{{ $credentials.whatsAppToken }}",
  "phoneNumberId": "123456789012345",
  "websites": "[\"https://new.bizfirstai.com\", \"https://shop.new.bizfirstai.com\"]"
}

A post-deployment workflow fires after a successful web migration. It updates the websites field with the new domain URLs. The old domain will continue to redirect but the profile now shows the canonical new URLs, ensuring consistency in WhatsApp search results.