Make and n8n
Call the Groupilot API from Make or n8n with the HTTP module, and receive webhooks with a Custom webhook or a Webhook node.
No official module exists yet. The generic HTTP modules do everything, with one header.
Make
Call the API
Add an HTTP, Make a request module:
| Field | Value |
|---|---|
| URL | https://app.groupilot.com/api/v1/events (or any endpoint) |
| Method | GET, POST, PUT, PATCH |
| Headers | Authorization = Bearer gp_live_… and Content-Type = application/json |
| Body type | Raw, content type JSON |
| Parse response | Yes |
Example body to create a one-off event:
{
"name": "{{1.webinar_title}}",
"slug": "{{lower(replace(1.webinar_title; " "; "-"))}}",
"type": "punctual",
"community": { "days_before": 5 }
}Then a second HTTP module to POST /v1/events/{{2.id}}/occurrences with { "scheduled_at_local": "{{formatDate(1.start; "YYYY-MM-DDTHH:mm")}}" }, and a third to PUT /v1/events/{{2.id}}/sequence with { "sequence_id": "9f1c…" }. Map smart_link from the first response into your email tool or your CRM field.
Receive new members
Add a Webhooks, Custom webhook module, copy its URL and paste it as the member webhook of the event in Groupilot (or as an outbound webhook endpoint for the whole project). Click Send a test in Groupilot so Make learns the structure. Then map data.member.phone and data.member.name into your CRM module. See Webhooks for the payloads.
Store the Groupilot id of each message in a data store if your CRM cannot deduplicate by phone: a member can be delivered twice.
n8n
Call the API
Add an HTTP Request node:
- Method and URL as above.
- Authentication: Generic credential type, Header Auth, name
Authorization, valueBearer gp_live_…. Save it as a credential rather than typing the key in the node. - Send body: JSON, with an expression per field.
{
"external_id": "{{ $json.sequence_id }}",
"name": "{{ $json.sequence_name }}",
"messages": {{ JSON.stringify($json.messages) }},
"apply_to_pending_jobs": true
}Send that to PUT https://app.groupilot.com/api/v1/sequences/sync to push a sequence built in n8n. See Sync your sequences.
Receive webhooks
Add a Webhook node, method POST, path of your choice, Respond immediately. Use the production URL in Groupilot, not the test URL. To check the signature, add a Crypto node (HMAC, SHA256, your secret) over {{ $json.headers['x-groupilot-signature'].split('t=')[1].split(',')[0] }}.{{ $json.body }} with raw body enabled on the Webhook node, and an IF comparing it with v1. Optional when the URL is secret.
Rate limits to respect
Make and n8n retry on errors by default. Keep that, but add a pause of a few seconds between calls in loops: reads are limited to 120 per minute per key, writes to 30 per minute. A 429 carries Retry-After in seconds. See Limits and errors.