{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Webhooks","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"webhooks","__idx":0},"children":["Webhooks"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Hunty can deliver real-time event notifications to your server via webhooks. When a subscribed event occurs, Hunty sends an HTTP ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," request to your configured endpoint with a JSON payload."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"important","__idx":1},"children":["Important"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Full entity payload"]}," — When an event fires, Hunty sends the complete state of the related entity (e.g., the full candidate object or the corresponding module). There is no partial delta: your handler always receives the latest snapshot."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Idempotency"]}," — Every webhook call includes an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotencyId"]}," field in the payload. Treat it as a unique request key and use it to deduplicate events on your end, preventing reprocessing if the same delivery is retried."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["HTTP POST"]}," — All webhook calls are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," requests to the URL configured per event. We strongly recommend protecting your endpoint with an API Key (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/authentication"},"children":["Authentication & API Keys"]},")."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-it-works","__idx":2},"children":["How It Works"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You register a webhook endpoint URL for one or more events."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When an event fires, Hunty sends a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," request to your URL with the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["full entity payload"]}," wrapped in a versioned envelope (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WebhookTriggerEventV1DTO"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WebhookTriggerEventV2DTO"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your endpoint must respond with an HTTP ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2xx"]}," status within the configured timeout (maximum: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["60 seconds"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the request times out or returns a non-2xx response, Hunty retries the delivery using ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["exponential backoff"]}," — use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotencyId"]}," to avoid reprocessing."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"payload-structure","__idx":3},"children":["Payload Structure"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Hunty uses two message envelope versions. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]}," field indicates which schema was used."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"v1-pascalcase-fields","__idx":4},"children":["V1 (PascalCase fields)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"WebhookId\": \"wh_abc123\",\n  \"IdempotencyId\": \"a3f2c1d4-5e6f-...\",\n  \"Domain\": \"candidate\",\n  \"Event\": \"CandidateStatusTransitionedEvent\",\n  \"Version\": 1,\n  \"Timestamp\": 1713384000000,\n  \"Payload\": { }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["WebhookId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unique identifier of the webhook subscription"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IdempotencyId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unique ID for this delivery — use as deduplication key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Domain"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Entity domain (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["candidate"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Event"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Event name (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CandidateStatusTransitionedEvent"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Version"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]}," for this schema"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Timestamp"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unix timestamp in milliseconds of when the event fired"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Payload"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["object"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Full entity snapshot"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"v2-camelcase-fields","__idx":5},"children":["V2 (camelCase fields)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"webhookId\": \"wh_abc123\",\n  \"idempotencyId\": \"a3f2c1d4-5e6f-...\",\n  \"domain\": \"candidate\",\n  \"event\": \"CandidateStatusTransitionedEvent\",\n  \"version\": 2,\n  \"timestamp\": 1713384000000,\n  \"payload\": { }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["webhookId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unique identifier of the webhook subscription"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotencyId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unique ID for this delivery — use as deduplication key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["domain"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Entity domain (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["candidate"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["event"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Event name (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CandidateStatusTransitionedEvent"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Always ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2"]}," for this schema"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["timestamp"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unix timestamp in milliseconds of when the event fired"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["object"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Full entity snapshot"]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The two versions are structurally identical — they only differ in field name casing. Check the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["version"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Version"]}," field to determine which schema your subscription uses."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication","__idx":6},"children":["Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each webhook subscription includes an authentication header that Hunty will send with every request, allowing you to verify the request originates from Hunty:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"<your-header-name>: <your-api-key>\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You define both the header name and its value during the subscription request."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"requesting-a-webhook-subscription","__idx":7},"children":["Requesting a Webhook Subscription"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To subscribe to one or more webhook events, send an email with the following details:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["To:"]}," comite-seguridad@hunty.com"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["CC:"]}," santiago@hunty.com, enzo.garcia@hunty.com"," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Subject:"]}," ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Solicitud Suscripción Webhook - <companyId>"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Body must include one block per event subscription:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Event(s):"]}," The event name(s) you want to subscribe to (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CandidateStatusTransitionedEvent"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Webhook URL:"]}," Your endpoint that will receive the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," requests"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authentication header name:"]}," The header Hunty should use to authenticate requests (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-auth-api-key"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Key:"]}," The value Hunty should send in that header"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Timeout"]}," ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["(optional)"]},": Maximum seconds Hunty should wait for your endpoint to respond before retrying. Maximum allowed value: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["60 seconds"]},". Defaults to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["60 seconds"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Example email body:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"Hi,\n\nWe would like to subscribe to the following webhook event:\n\nEvent: CandidateStatusTransitionedEvent\nWebhook URL: https://your-domain.com/webhooks/hunty\nAuthentication header: x-auth-api-key\nAPI Key: your_secret_key\nTimeout: 30\n\nThank you.\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"retry-policy","__idx":8},"children":["Retry Policy"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a webhook delivery fails (timeout or non-2xx response), Hunty retries automatically using ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["exponential backoff"]},":"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Minimum backoff duration"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["10 seconds"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maximum backoff duration"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["600 seconds"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each retry interval grows exponentially from 10 s up to the 600 s cap. Because retries can occur, always use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotencyId"]}," to deduplicate deliveries on your end."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"automatic-failure-handling","__idx":9},"children":["Automatic Failure Handling"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Hunty monitors the health of each webhook endpoint. If your endpoint fails to respond successfully for an extended period, Hunty will automatically stop delivering events to it."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"how-it-works-1","__idx":10},"children":["How it works"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Each webhook has a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["grace period"]}," (default: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["6 hours"]},") that starts counting from the first consecutive failure."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Every failed delivery (timeout or non-2xx response) increments the failure counter and records the timestamp of the first failure."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["single successful delivery"]}," (2xx response) resets the failure counter and the grace period timer back to zero."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If failures continue for the entire duration of the grace period without a single successful delivery, Hunty ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["automatically stops"]}," the webhook — no further events will be delivered to that endpoint."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-happens-when-a-webhook-is-stopped","__idx":11},"children":["What happens when a webhook is stopped"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Deliveries stop immediately"]}," — Hunty will not attempt to send any new events to your endpoint."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Events are not replayed"]}," — Any events that occur while the webhook is stopped are ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["permanently lost"]}," for that subscription. Hunty does not queue or replay missed events once the webhook is reactivated."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Other webhooks are not affected"]}," — If you have multiple webhook subscriptions, only the failing one is stopped."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"reactivating-a-stopped-webhook","__idx":12},"children":["Reactivating a stopped webhook"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To reactivate a stopped webhook, contact the Hunty team. Once reactivated:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The failure counter and grace period timer reset to zero."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Deliveries resume for ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["new events only"]}," — events that occurred during the stopped period are not re-sent."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"recommendations","__idx":13},"children":["Recommendations"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Ensure high availability"]}," — Your webhook endpoint should be highly available. Transient failures (e.g., a brief server restart) will not stop your webhook as long as they resolve within the 6-hour grace period."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Return 2xx promptly"]}," — Respond with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2xx"]}," status as quickly as possible, even if you process the event asynchronously. This prevents timeouts from counting as failures."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Monitor your integration"]}," — If you stop receiving webhook events unexpectedly, your endpoint may have been automatically stopped due to repeated failures. Contact the Hunty team to verify the status and reactivate if needed."]}]}]},"headings":[{"value":"Webhooks","id":"webhooks","depth":1},{"value":"Important","id":"important","depth":2},{"value":"How It Works","id":"how-it-works","depth":2},{"value":"Payload Structure","id":"payload-structure","depth":2},{"value":"V1 (PascalCase fields)","id":"v1-pascalcase-fields","depth":3},{"value":"V2 (camelCase fields)","id":"v2-camelcase-fields","depth":3},{"value":"Authentication","id":"authentication","depth":2},{"value":"Requesting a Webhook Subscription","id":"requesting-a-webhook-subscription","depth":2},{"value":"Retry Policy","id":"retry-policy","depth":2},{"value":"Automatic Failure Handling","id":"automatic-failure-handling","depth":2},{"value":"How it works","id":"how-it-works-1","depth":3},{"value":"What happens when a webhook is stopped","id":"what-happens-when-a-webhook-is-stopped","depth":3},{"value":"Reactivating a stopped webhook","id":"reactivating-a-stopped-webhook","depth":3},{"value":"Recommendations","id":"recommendations","depth":3}],"frontmatter":{"seo":{"title":"Webhooks"}},"lastModified":"2026-05-05T20:18:43.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/webhooks","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}