API endpoint: Calls DELETE /{groupId}/participants/{phoneId} where phoneId is the participant's WhatsApp ID (wa_id). Retrieve the wa_id from group/getParticipants before calling this operation.
When to Use
- Employee offboarding: When an employee leaves the organisation, a workflow automatically removes their WhatsApp ID from all project and team groups to prevent access to business communications.
- Cohort completion: When a student completes or drops from a course, the LMS workflow removes them from the course study group.
- Project reassignment: When a team member is reassigned away from a project, the project management workflow removes them from the project WhatsApp group.
- Subscription lapse: When a customer's VIP subscription lapses, the membership management workflow removes them from the VIP WhatsApp group.
- Policy violation: A moderation workflow removes a participant from a group following a confirmed policy violation reported by the business's trust and safety process.
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 admin. |
apiVersion | Optional | Meta Graph API version. Defaults to v18.0. |
Operation
| Field | Required | Description |
groupId | Required | The WhatsApp group ID. |
participantId | Required | The participant's WhatsApp ID (wa_id from group/getParticipants). This is the numeric WhatsApp identifier, not a phone number string. |
Sample Configuration
{
"resource": "group",
"operation": "remove-member",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"groupId": "120363xxxxxxxxxx@g.us",
"participantId": "14155552671"
}
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. |
participantId is required | No participant WA ID provided. |
100 (Meta) | Group not found or participant is not a member of the group. |
200 (Meta) | Business phone number is not a group admin. |
Output
Success Port
| Field | Type | Description |
groupId | string | The group ID. |
status | string | "member_removed". |
rawResponse | string | Full raw JSON from the Meta Graph API. |
Error Port
| Field | Type | Description |
groupId | string | Group ID echoed from input. |
status | string | "failed" or "error". |
errorCode | string | Meta error code or "timeout". |
errorMessage | string | Human-readable error description. |
Sample Output
{
"groupId": "120363xxxxxxxxxx@g.us",
"status": "member_removed"
}
Expression Reference
| Value | Expression | Notes |
| Removal success | {{ $output.removeParticipant.status }} | Confirm "member_removed" before updating the local membership record. |
Node Policies & GuardRails
| Policy Area | Recommendation |
| Credential storage | Store the access token in BizFirst Credentials Manager. |
| WA ID retrieval | Always retrieve the wa_id via group/getParticipants immediately before calling this node. Do not rely on cached WA IDs — they may be stale. |
| Audit logging | Log every removal with the group ID, participant WA ID, phone number, removal reason, timestamp, and initiating workflow/user. Required for HR and compliance processes. |
| Not-found idempotency | A 100 not-found error when removing a participant who is already not in the group is safe to treat as success in offboarding workflows. |
| Error port | Connect the error port. |
Examples
Employee Offboarding — Cross-Group Removal
{
"resource": "group",
"operation": "remove-member",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"groupId": "{{ $item.groupId }}",
"participantId": "{{ $item.leavingEmployeeWaId }}"
}
An offboarding workflow first calls group/getMany to retrieve all groups. For each group, it calls group/getParticipants and checks whether the leaving employee's phone number appears. If found, the wa_id is extracted and passed to this node for removal. All removals are logged to the HR system with the exit timestamp.
Subscription Lapse Removal
{
"resource": "group",
"operation": "remove-member",
"accessToken": "{{ $credentials.whatsAppToken }}",
"phoneNumberId": "123456789012345",
"groupId": "{{ $env.VIP_GROUP_ID }}",
"participantId": "{{ $input.lapsedCustomerWaId }}"
}
When a customer's VIP subscription lapses, the membership system fires a webhook. The workflow retrieves the customer's wa_id from the customer table (stored when they were originally added to the group) and calls this node to remove them from the VIP group. A farewell message is sent to the customer via direct message before removal, informing them of their subscription status.