Documentation Index
Fetch the complete documentation index at: https://docs.firstpromoter.com/llms.txt
Use this file to discover all available pages before exploring further.
How delivery works
- An event occurs in your FirstPromoter account.
- FirstPromoter sends a
POSTrequest to each webhook URL configured on the matching campaign. - Your endpoint must respond within the request timeout with an HTTP status code.
- A
2xxresponse acknowledges the delivery. Any other response is treated as a failure.
Setting up webhook URLs
In v1, webhook URLs are configured per campaign. Navigate to Settings → Campaigns → [your campaign] → Webhooks and add a URL for each event you want to receive. Up to 3 webhook URLs can be configured per campaign:- Default webhook URL — receives all standard events (
lead_signup,lead_becomes_referral,new_customer,lead_cancelled,promoter_signed_up,promoter_accepted,reward_created). - Fulfilment webhook URL — receives
fulfilment_pendingevents only.
Retry behaviour
If your endpoint does not respond with a success status, FirstPromoter will retry the delivery. Retry behaviour varies by event type:| Event | Retries |
|---|---|
fulfilment_pending | Up to 7 retries spread throughout the day |
| All other events | No automatic retries |
fulfilment_pending, if your endpoint is unavailable at the time of delivery the event will not be re-sent. Make sure your endpoint is reliably available or use the fulfilment_pending response protocol to keep rewards in a pending state until you are ready.
The fulfilment_pending response protocol
Thefulfilment_pending event has special response semantics. The HTTP status code your endpoint returns controls what happens to the reward in FirstPromoter:
| Your response | Outcome |
|---|---|
200 OK | Reward is marked as fulfilled. No further retries. |
2xx (except 200) | Reward stays pending. No retry is scheduled — the event will fire again on the next fulfilment check. |
| Any other status | Error — FirstPromoter retries up to 7 times throughout the day. If all retries fail, has_issues is set to true on the reward. |