Webhooks
Send member data to any URL when events happen in GroupCRM. Connect to Zapier, Make, n8n, GoHighLevel, or your own backend.
Setup
- Go to Integrations in the dashboard
- Click Add Webhook
- Enter your webhook URL (from Zapier, Make, or your server)
- Select which events to listen for
- Click Save
Use Test to send a sample payload and confirm your endpoint receives it.
Events
| Event | When it fires |
|---|---|
member.captured | A new join request is captured (every group not set to Off) |
member.approved | A member is approved by GroupCRM (auto-approve or from the Pending Requests page) |
member.declined | A member is declined by GroupCRM (auto-decline or from the Pending Requests page) |
Requests you approve or decline directly on Facebook don't fire member.approved or member.declined.
Payload
Each request is an HTTP POST with a JSON body:
{
"event": "member.approved",
"timestamp": "2026-01-15T10:30:00.000Z",
"delivery_id": "clx123abc",
"data": {
"first_name": "Jane",
"last_name": "Doe",
"group_id": "123456789",
"group_name": "My Facebook Group",
"joined_facebook": "2020-03-15",
"member_profile_url": "https://facebook.com/jane.doe",
"questions": ["What is your email?", "How did you find us?"],
"answers": ["jane@example.com", "Instagram"],
"location": "New York, NY",
"approve_date": "2026-01-15T10:30:00.000Z",
"accepted_by": "Group auto-approval settings",
"email": "jane@example.com",
"phone": "+15551234567"
}
}Request signing
When signing is enabled (default), each request includes:
| Header | Description |
|---|---|
X-GroupCRM-Event | Event name (e.g. member.approved) |
X-GroupCRM-Delivery-Id | Unique delivery ID for idempotency |
X-GroupCRM-Timestamp | Unix timestamp used in the signature |
X-GroupCRM-Signature | t={timestamp},v1={hmac} |
Verify by computing HMAC-SHA256 of {timestamp}.{raw_body} using your webhook secret.
Your signing secret is shown when editing a webhook in the dashboard.
Retries
Your endpoint must respond with a 2xx status within 10 seconds. Failed deliveries (network errors, timeouts, or any non-2xx response) are retried automatically: up to 3 attempts in total, 5 minutes and then 30 minutes after the previous failure. View delivery history and manually retry from the Integrations page.
Payload fields
| Field | Description |
|---|---|
first_name | Member's first name |
last_name | Member's last name |
group_id | Facebook group ID |
group_name | Group display name |
joined_facebook | When they joined Facebook |
member_profile_url | Link to their Facebook profile |
questions | Membership questions asked |
answers | Member's answers to each question |
location | Location from profile (if available) |
email | Email extracted from the answers (if found) |
phone | Phone number extracted from the answers (if found) |
approve_date | When the event was sent |
accepted_by | What triggered the event: the setting or rule that decided, Manual action for dashboard actions, or Lead captured |
Connect to Zapier
- In Zapier, create a new Zap with Webhooks by Zapier as the trigger
- Choose Catch Hook
- Copy the webhook URL Zapier provides
- Paste it into GroupCRM → Integrations → Add Webhook
- Select your events and save
- Back in Zapier, click Test trigger. GroupCRM sends a test payload
Connect to Make
Same flow as Zapier: use Make's Custom webhook module as the trigger and paste the URL into GroupCRM.
Connect to n8n
Add a Webhook node as the trigger with the HTTP method set to POST, copy its production URL, and paste it into GroupCRM → Integrations → Add Webhook. Activate the workflow so the production URL accepts requests.
Connect to GoHighLevel
In GoHighLevel, create a workflow with the Inbound Webhook trigger, copy the webhook URL, and paste it into GroupCRM → Integrations → Add Webhook. Send a test from GroupCRM so GoHighLevel can map the fields (for example data.email, data.first_name, data.phone) to a contact.
Monitoring
The Integrations page shows call stats for each webhook: total calls, successful calls, last called time, and any errors.
Related
- Google Sheets: built-in spreadsheet export
- Lead Capture: how contact info is extracted from answers