Webhooks

Send job data to external services

Webhooks let you integrate PoolFlow with other systems. When something happens in PoolFlow, we send data to a URL you specify.

What are webhooks?

Webhooks are HTTP callbacks. When an event occurs (like a new booking), PoolFlow sends a POST request to your server with details about the event.

Use webhooks to:
- Sync data to your CRM
- Send custom notifications
- Update your website
- Trigger automations in Zapier or Make
- Build custom integrations

Setting up webhooks

  1. Go to Settings → Developer
  2. Click Add Webhook Endpoint
  3. Enter your endpoint URL
  4. Select which events to receive
  5. Save

Available events

Job events

  • job.created — New booking submitted
  • job.lead_captured — Lead submitted during hibernation
  • job.services_selected — Customer selected services (before payment)
  • job.paid — Payment successfully captured
  • job.quote_sent — Quote emailed to customer
  • job.quote_approved — Customer approved a quote
  • job.quote_expired — Quote expired without payment

Order events

  • order.completed — Job marked as complete

Webhook payload

Each webhook sends JSON with:

{
  "event": "job.paid",
  "timestamp": "2024-01-15T10:30:00Z",
  "data": {
    "id": 12345,
    "customer_name": "John Smith",
    "customer_email": "[email protected]",
    "address": "123 Pool Lane",
    "total_cents": 15000,
    "services": ["Weekly Cleaning"],
    ...
  }
}

The data object varies by event type and includes relevant details.

Security

HMAC verification

Each webhook includes a signature header for verification. Use your webhook secret to verify that requests really came from PoolFlow.

The signature is in the X-PoolFlow-Signature header.

HTTPS required

Webhook endpoints must use HTTPS for secure transmission.

Delivery

Timeouts

Webhooks timeout after 10 seconds. Your endpoint should respond quickly and do heavy processing asynchronously.

Retries

Failed webhooks (non-2xx response or timeout) are retried:
- 1st retry: 1 minute later
- 2nd retry: 5 minutes later
- 3rd retry: 30 minutes later
- 4th retry: 2 hours later
- 5th retry: 24 hours later

After 5 failures, the endpoint is disabled. You'll get an email notification.

Re-enabling

Go to Settings → Developer to re-enable a disabled endpoint after fixing the issue.

Testing webhooks

Click Test next to any endpoint to send a test event. This helps verify your integration before real events flow.

Use cases

Sync to CRM

Send customer data to HubSpot, Salesforce, or your custom CRM when new bookings come in.

Custom notifications

Trigger a Slack message or text alert for specific event types.

Website updates

Update your website's booking count or testimonials automatically.

Zapier/Make

Connect PoolFlow to thousands of apps using webhook triggers in automation platforms.

Tips

Respond quickly

Return 200 immediately, then process async. Slow endpoints cause timeouts and retries.

Log everything

Keep logs of received webhooks for debugging. Include the event ID and timestamp.

Handle duplicates

Due to retries, you might receive the same event twice. Use the event ID to deduplicate.

Start with test mode

Test your integration thoroughly before going live. Use the test button to simulate events.

More in Integrations

Was this helpful?

Let us know if we can improve this article.

Send feedback