Skip to main content
When you integrate webhooks with the HoopAI platform, you need a reliable way to verify that payloads are being sent correctly before pointing them at your production endpoint. Webhook.site provides a free, temporary URL you can use to capture and inspect webhook deliveries in real time.

Setting up a test endpoint

1

Go to Webhook.site

Open Webhook.site in your browser. A unique URL is generated automatically β€” copy this URL.
2

Add the URL in Hoop

Navigate to Settings > Integrations > Webhooks in the Hoop platform. Create a new webhook or edit an existing one and paste your Webhook.site URL as the endpoint.
3

Select the events you want to test

Choose the specific events you want to receive β€” for example, contact.created, opportunity.status_changed, or appointment.booked. Start with one event type to keep testing focused.
4

Save and trigger the event

Save your webhook configuration, then perform the action in Hoop that triggers the event (such as creating a contact or booking an appointment).

Inspecting the payload

Once Hoop sends the webhook, it appears on Webhook.site within seconds. Review the following details:
FieldWhat to check
HTTP methodShould be POST for all Hoop webhooks
Content-Type headerShould be application/json
Request bodyThe JSON payload containing event data
Query stringAny parameters appended to the URL
TimestampConfirms the webhook fired when expected
Click on any request in Webhook.site to expand the full headers, body, and query string. You can use the built-in JSON formatter to make payloads easier to read.

Verifying headers and authentication

1

Check for the signature header

Hoop includes a signature header with each webhook delivery. Look for X-Hook-Signature or a similar header in Webhook.site’s request details. This allows your production endpoint to verify the request came from Hoop.
2

Compare the signature

If you have configured a webhook secret in Hoop, the signature is an HMAC hash of the payload using your secret key. Verify it matches what you expect by computing the hash locally.
If you do not see a signature header, confirm that you have set a webhook secret in Settings > Integrations > Webhooks within the Hoop platform.

Troubleshooting delivery failures

Confirm the URL is pasted correctly with no trailing spaces. Verify the webhook is enabled and that you triggered the correct event type. Check the webhook logs in Settings > Integrations > Webhooks > Logs for delivery status and error codes.
Some events only include a reference ID rather than the full object. You may need to use the Hoop API to fetch the complete record using the ID provided in the payload. Also confirm you selected the correct event type.
Hoop expects a 200 response from your endpoint. Webhook.site returns 200 by default, but if you customized the response, ensure it returns a success status. Hoop retries failed deliveries up to three times with exponential backoff.
Retries can cause duplicates if your endpoint was slow to respond. Always use the event ID in the payload to deduplicate on your receiving end. Hoop considers any response that takes longer than 30 seconds as a timeout.

Common webhook payload formats

Hoop webhooks follow a consistent structure:
{
  "event": "contact.created",
  "timestamp": "2026-03-05T14:30:00Z",
  "data": {
    "id": "abc123",
    "type": "contact",
    "attributes": {
      "firstName": "Jane",
      "lastName": "Doe",
      "email": "jane@example.com"
    }
  }
}
Webhook payload schemas can change when Hoop releases updates. Always validate incoming data against the current schema rather than hardcoding field positions.

Moving to production

Once you have verified your webhooks are firing correctly on Webhook.site:
  1. Replace the Webhook.site URL with your production endpoint URL
  2. Ensure your production server returns a 200 status within 30 seconds
  3. Implement signature verification using your webhook secret
  4. Add error handling and logging on your server
  5. Test one more delivery end-to-end before going live
Last modified on March 5, 2026