When to Use
- Profile audit workflows: A compliance workflow retrieves the business profile for all registered phone numbers and verifies that the description, address, and email are accurate and up to date — flagging any fields that are missing or outdated.
- Onboarding verification: During new client onboarding, a workflow fetches the business profile to confirm that the WhatsApp Business account has been fully configured before activating messaging features.
- Multi-tenant profile sync: A SaaS platform that manages WhatsApp accounts for multiple tenants periodically fetches each tenant's profile and syncs the data to a CRM for reference.
- Profile change detection: A monitoring workflow compares the live profile data against the last known values stored in a database and sends an alert if any field has changed (indicating an unexpected manual update).
- Public profile display: A customer portal workflow fetches the business profile to display current contact information (email, website) to end users browsing a business directory.
Configuration
Connection
| Field | Required | Description |
accessToken | Required | Permanent System User access token from Meta Business Manager. Store in BizFirst Credentials Manager. |
phoneNumberId | Required | Numeric string ID of the WhatsApp Business phone number whose profile you want to retrieve. |
apiVersion | Optional | Meta Graph API version, e.g. v18.0. Defaults to v18.0. |
Operation
This operation has no additional fields beyond the connection parameters. The node uses the phoneNumberId from the connection section to identify the business profile to retrieve.
| Field | Required | Description |
| No additional operation fields required. |
Sample Configuration
{
"resource": "profile",
"operation": "getBusiness",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345"
}
Validation Errors
| Error | Cause |
accessToken is required | The accessToken field is empty or missing. |
phoneNumberId is required | The phoneNumberId field is empty or missing. |
100 (Meta) | Phone number ID not found or the token does not have access to it. |
190 (Meta) | Access token expired or invalid. |
200 (Meta) | Insufficient permissions. Token requires whatsapp_business_management scope. |
Output
Success Port
Fires when the business profile is successfully retrieved. Fields may be null if not configured in Meta Business Manager.
| Field | Type | Description |
about | string | The business "About" status text shown on the profile (max 139 chars). |
address | string | Business physical address. |
description | string | Longer business description shown on the profile page. |
email | string | Business contact email address. |
profilePictureUrl | string | URL of the business profile picture. Publicly accessible. |
websites | array | Array of up to 2 website URLs associated with the business. |
vertical | string | Industry category. Examples: RETAIL, FINANCE, HEALTH, EDUCATION, ENTERTAINMENT, HOSPITALITY, NOT_A_BIZ. |
status | string | "success" on success. |
errorCode | string | Empty on success. |
errorMessage | string | Empty on success. |
rawResponse | string | Full raw JSON response from Meta. |
Error Port
| Field | Type | Description |
status | string | "failed" or "error". |
errorCode | string | Meta error code. |
errorMessage | string | Human-readable description. |
rawResponse | string | Raw API error JSON for diagnostics. |
Sample Output
{
"about": "Your trusted partner for fast, reliable deliveries.",
"address": "123 Commerce Street, San Francisco, CA 94105",
"description": "BizFirstAI Commerce provides same-day and next-day delivery across the Bay Area. We partner with 500+ local businesses.",
"email": "support@bizfirstai.com",
"profilePictureUrl": "https://pps.whatsapp.net/v/t61.29466-19/...",
"websites": ["https://bizfirstai.com", "https://shop.bizfirstai.com"],
"vertical": "RETAIL",
"status": "success",
"errorCode": null,
"errorMessage": null,
"rawResponse": "{\"data\":[{\"about\":\"Your trusted partner...\",\"address\":\"123 Commerce...\",\"description\":\"BizFirstAI Commerce...\",\"email\":\"support@bizfirstai.com\",\"profile_picture_url\":\"https://pps.whatsapp.net/...\",\"websites\":[\"https://bizfirstai.com\",\"https://shop.bizfirstai.com\"],\"vertical\":\"RETAIL\"}]}"
}
Expression Reference
| Value | Expression | Notes |
| About text | {{ $output.getBusinessProfile.about }} | Short status/tagline. Null if not set. |
| Address | {{ $output.getBusinessProfile.address }} | Physical address. Use for display or validation. |
| Description | {{ $output.getBusinessProfile.description }} | Full business description text. |
| Email | {{ $output.getBusinessProfile.email }} | Contact email. Null if not configured. |
| Profile picture URL | {{ $output.getBusinessProfile.profilePictureUrl }} | Publicly accessible. Null if no picture is set. |
| Websites | {{ $output.getBusinessProfile.websites }} | Array of URLs. Use .websites[0] for the primary website. |
| Vertical (industry) | {{ $output.getBusinessProfile.vertical }} | Industry category string. |
| Status | {{ $output.getBusinessProfile.status }} | "success" on success. |
Node Policies & GuardRails
| Policy Area | Recommendation |
| Null field handling | All profile fields except status may be null if not configured. Always use null-safe expressions and provide fallback values in downstream nodes that display profile data. |
| Credential storage | Store the access token in BizFirst Credentials Manager. Never paste it into node configuration as plain text. |
| Caching | The business profile changes infrequently. Cache the result for 1 hour in workflow session variables to avoid redundant API calls when profile data is needed multiple times in a workflow run. |
| Error port handling | Always connect the error port. A 200 permissions error indicates the token scope needs updating in Meta Business Manager. |
| Profile picture URL | The profile picture URL is a dynamic WhatsApp CDN URL. Do not store it long-term — URLs can change. Fetch fresh when needed. |
Examples
Profile Completeness Check
{
"resource": "profile",
"operation": "getBusiness",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345"
}
A new tenant setup workflow calls this node and checks each output field in a Function node. If any required field (address, email, description) is null, it sends a notification to the account owner with a list of missing fields and a link to Meta Business Manager to complete the profile setup.
Profile Change Detection
{
"resource": "profile",
"operation": "getBusiness",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345"
}
A daily monitoring workflow fetches the live profile and compares each field against values stored in a database table. If any field has changed, it creates an audit log entry recording the old value, new value, detection timestamp, and triggers a Slack alert for the account manager to review the change.
Multi-Account Profile Sync
// Loop node iterates over all managed phone number IDs
{
"resource": "profile",
"operation": "getBusiness",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "{{ $loop.currentItem.phoneNumberId }}"
}
A multi-tenant management workflow iterates over all registered phone number IDs and retrieves each profile. The collected data is upserted into a central CRM as a "WhatsApp Business Profile" record linked to each tenant account, giving the support team a single view of all managed WhatsApp profiles.