API endpoint: Calls GET /{groupId}/participants. Returns an array of participant objects each containing wa_id, phone_number, and is_admin. Includes the business phone number itself if it is a participant.
When to Use
- Membership sync: A project management workflow periodically retrieves the group participant list and synchronises it against the project team table, adding or removing members to keep both in alignment.
- Admin verification: Before calling
group/updateParticipantRole or group/update, retrieve the participant list to confirm the business number still has is_admin: true.
- Offboarding member check: When an employee leaves, a workflow retrieves participants from all known groups and removes the former employee's phone number from any group where they appear.
- Participant count monitoring: A group capacity workflow checks the participant count periodically and sends an alert when it approaches the WhatsApp group limit (currently 1024).
- Pre-broadcast targeting: A targeted message workflow retrieves participants to build an individual send list so each member receives a personalised direct message rather than a group broadcast.
Configuration
Connection
| Field | Required | Description |
accessToken | Required | Permanent System User access token. Store in BizFirst Credentials Manager. |
phoneNumberId | Required | Numeric string ID of the business phone number (must be a group member). |
apiVersion | Optional | Meta Graph API version. Defaults to v18.0. |
Operation
| Field | Required | Description |
groupId | Required | The WhatsApp group ID. |
Sample Configuration
{
"resource": "group",
"operation": "get-members",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"groupId": "120363xxxxxxxxxx@g.us"
}
Validation Errors
| Error | Cause |
accessToken is required | The accessToken field is empty. |
phoneNumberId is required | No Phone Number ID supplied. |
groupId is required | No group ID provided. |
100 (Meta) | Group not found or phone number is not a group member. |
200 (Meta) | Insufficient permissions to read group members. |
Output
Success Port
| Field | Type | Description |
members | array | Array of participant objects. Each contains waId, phoneNumber, and isAdmin. |
count | number | Total number of participants. |
status | string | "success". |
rawResponse | string | Full raw JSON from the Meta Graph API. |
Error Port
| Field | Type | Description |
status | string | "failed" or "error". |
errorCode | string | Meta error code or "timeout". |
errorMessage | string | Human-readable error description. |
Sample Output
{
"members": [
{ "waId": "14155552671", "phoneNumber": "+14155552671", "isAdmin": true },
{ "waId": "447911123456", "phoneNumber": "+447911123456", "isAdmin": false },
{ "waId": "61412345678", "phoneNumber": "+61412345678", "isAdmin": false }
],
"count": 3,
"status": "success"
}
Expression Reference
| Value | Expression | Notes |
| All members | {{ $output.getParticipants.members }} | Pipe to SplitInBatches to process each member individually. |
| Member count | {{ $output.getParticipants.count }} | Compare to group capacity limit (1024) for monitoring. |
| Admin members only | {{ $output.getParticipants.members.filter(m => m.isAdmin) }} | Use in Function node to verify admin presence. |
| Member WA IDs | {{ $output.getParticipants.members.map(m => m.waId) }} | Use as the input list for group/removeParticipant operations. |
Node Policies & GuardRails
| Policy Area | Recommendation |
| Credential storage | Store the access token in BizFirst Credentials Manager. |
| Privacy compliance | The returned phone numbers are personal data. Handle in compliance with your jurisdiction's data protection requirements. Do not log the full member list in workflow execution records. |
| Admin check | Before performing admin-only operations, verify that the business phone number (your phoneNumberId) appears in the list with isAdmin: true. |
| Error port | Connect the error port. |
Examples
Offboarding Member Removal
{
"resource": "group",
"operation": "get-members",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"groupId": "{{ $item.groupId }}"
}
An employee offboarding workflow iterates all known groups via SplitInBatches. For each group, this node retrieves the participant list. A Function node checks whether the departing employee's phone number ($input.leavingEmployeePhone) appears in members. If found, the workflow calls group/removeParticipant to remove them from that group.
Group Capacity Alert
{
"resource": "group",
"operation": "get-members",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"groupId": "{{ $input.groupId }}"
}
Before adding new participants to a large group, this node retrieves the current participant count. An IfCondition checks whether {{ $output.getParticipants.count }} exceeds 900 (90% of the 1024 limit). If so, the workflow sends an alert to the group admin and halts the add operation until capacity is reviewed.