Help Integrations Contact Webhook Payload
A webhook payload is the structured data that a platform sends to your specified URL when a predefined event occurs, such as a new contact being created.


Austin Beveridge
Tennessee
, Goliath Teammate
A webhook payload is the structured data that a platform sends to your specified URL when a predefined event occurs, such as a new contact being created, an existing contact being updated, or a help request being submitted. In the context of help integrations, webhook payloads deliver real-time event information to external systems, allowing you to automate workflows, sync data across tools, and respond instantly to customer interactions without polling an API.
TL;DR
Webhook payloads in help integrations deliver event data (contact created, updated, ticket opened) as JSON to your endpoint URL in real time.
Each payload contains metadata about the event, a timestamp, and the full or partial object data depending on the event type and platform configuration.
Successful webhook handling requires validating the payload signature, parsing the JSON body, processing the data, and returning a 2xx HTTP status code to confirm receipt.
What Is a Webhook Payload in Help Integrations?
A webhook payload is an HTTP POST request sent by your help or contact management platform to a URL you specify, containing structured event data in JSON format. When an event triggers (for example, a customer submits a support ticket, a contact's email address changes, or a new contact is added), the platform packages all relevant details about that event into a payload and delivers it to your endpoint.
Unlike REST API calls where your application polls the server repeatedly asking "did anything happen?", webhooks are push-based: the platform tells your system the moment something changes. This makes webhooks more efficient, reduces server load, and enables real-time data synchronization and automated workflows.
Typical Webhook Payload Structure
Most help integration platforms structure payloads consistently, though specifics vary by service. A typical payload includes:
Event Metadata: Information identifying the webhook event itself, such as a unique event ID, the event type (contact.created, contact.updated, ticket.opened), and the timestamp in ISO 8601 format indicating when the event occurred.
Object Data: The full or partial representation of the resource that changed. For a contact creation event, this might include the contact's ID, name, email, phone, custom fields, and organization. For an update event, it may include only the fields that changed plus the object ID, depending on the platform's design.
Webhook Headers: HTTP headers sent with the POST request, often including a signature or token for authentication and verification, a content-type declaration (application/json), and a user-agent identifier.
Attempt Information: Some platforms include metadata about the delivery attempt itself, such as attempt number, retry logic details, or whether this is a replay of a previous failed delivery.
Common Help Integration Webhook Events
Contact Events: contact.created fires when a new contact record is added to the system; contact.updated fires when any field on an existing contact changes (email, phone, name, custom attributes); contact.deleted fires when a contact is removed.
Ticket or Support Request Events: ticket.created fires when a customer opens a new support request; ticket.updated fires when a ticket status, priority, or assigned agent changes; ticket.resolved or ticket.closed fires when a support case is completed.
Conversation Events: message.created fires when a new message is posted in a support conversation, allowing you to log interactions or trigger automated responses; conversation.started fires when a customer initiates contact.
Organization or Company Events: organization.created or organization.updated fire when company information is added or modified, useful for account-level automations.
Validating and Securing Webhook Payloads
Before processing any webhook payload, verify its authenticity to ensure the request came from your help platform and not from a malicious actor. Most platforms provide a signing mechanism.
Signature Verification: The platform typically signs each payload using a secret key you configure in your integration settings. A signature header (often named X-Webhook-Signature, X-Signature, or similar) is included in the request. Your server should compute an HMAC or similar hash of the raw request body using your secret key and compare it to the provided signature. Only process the payload if the signatures match.
Timestamp Validation: Check the timestamp included in the payload or headers (X-Timestamp or similar). Reject payloads with timestamps older than a set window (for example, more than 5 minutes old) to prevent replay attacks where an attacker resends an old valid webhook.
HTTPS Only: Always specify HTTPS endpoints for your webhooks, never HTTP. This encrypts the payload in transit and prevents interception.
Idempotency: Because networks are unreliable, platforms often retry failed deliveries. Store the event ID or a unique identifier from the payload in your database. If you receive the same event ID twice, skip processing and simply return success. This prevents duplicate data entry or duplicate workflow triggers.
Parsing and Processing Webhook Payloads
Once a payload is validated, extract and parse the JSON body. Most modern frameworks (Express.js, Django, Flask, Ruby on Rails, ASP.NET) include middleware to automatically parse JSON POST bodies into native objects.
Extracting Relevant Data: Identify which fields in the payload matter for your use case. If you are syncing contacts to your CRM, extract the contact ID, name, email, and any custom fields. If you are creating a support ticket in Jira, extract the ticket ID, description, and customer info from the payload.
Transforming Data: Map the incoming data to your internal schema. The platform's field names may not match your database column names, so write a transformation layer that converts the payload structure to your format.
Triggering Downstream Actions: After parsing, decide what to do. You might insert a new record into your database, call a third-party API (like Slack to notify a support team), update an existing record, trigger a workflow, or log the event for auditing.
Error Handling: If processing fails, log the error with the full payload for later investigation. Some platforms expect you to retry the webhook if you don't return a 2xx status code; others have independent retry mechanisms. Clarify your platform's behavior by checking its documentation.
Response Behavior and Expectations
After processing a webhook payload, return an HTTP response to the platform. A successful response is typically any 2xx status code (200 OK is most common). The platform interprets 2xx as "the webhook was delivered and processed successfully" and does not retry.
If you return a 4xx or 5xx status code, the platform usually marks the delivery as failed and may retry according to its retry policy (common patterns include exponential backoff: retry after 5 seconds, 30 seconds, 5 minutes, 1 hour, etc.).
The response body is typically ignored, though some platforms allow you to include a brief JSON response for logging or debugging purposes. Keep response times short (under 5 seconds ideally). If your processing will take longer, return 202 Accepted immediately and handle the payload asynchronously in a background job.
Common Pitfalls and Best Practices
Forgetting Signature Validation: Always verify the signature before processing. A webhook endpoint without validation is a security vulnerability and a vector for data corruption.
Blocking on Slow Operations: Do not call slow external APIs synchronously during webhook processing. Instead, queue the payload for asynchronous processing and return 200 immediately. Use a job queue (like Redis, RabbitMQ, or AWS SQS) to handle the work in the background.
Ignoring Idempotency: If you process the same event twice, you may create duplicate records or trigger duplicate notifications. Always check for duplicate event IDs.
Not Logging Payloads: Log incoming webhooks (especially during development) so you can debug misunderstandings about the payload structure. Mask sensitive data like personal emails or passwords before storing logs.
Hard-Coding Secrets in Code: Store webhook secrets in environment variables or a secrets manager, never in source code. Rotate secrets periodically and after any suspected breach.
Assuming Field Presence: Not every field will be present in every payload. Use defensive parsing: check for field existence before accessing deeply nested properties. Provide sensible defaults or skip processing if critical fields are missing.
Testing Webhook Payloads
Most platforms provide a testing interface in their integration settings. You can send a sample payload to your endpoint without triggering a real event, confirming your endpoint is reachable and processes the data correctly. Some platforms also provide a webhook delivery log or history, showing which payloads were sent, their status, and any error messages.
During development, tools like ngrok or localtunnel expose your local server to the internet so you can test webhook delivery against your development environment. For production, monitor your webhook endpoint's logs and health. Set up alerts if the endpoint stops responding or returns errors consistently.
Frequently Asked Questions
What happens if my webhook endpoint is down or slow?
If your endpoint is unreachable or does not respond within the platform's timeout window (typically 5 to 30 seconds), the platform marks the delivery as failed. Most platforms retry failed deliveries using an exponential backoff strategy, retrying every few seconds, then minutes, then hours. After a set number of retries or time window (often 24 to 72 hours), the platform stops retrying and may alert you. During this period, events are queued and will be delivered once your endpoint recovers. To avoid missed events, monitor your endpoint health and restore it quickly. If you expect an outage, some platforms allow you to pause webhooks temporarily.
Can I modify the webhook payload structure or add custom fields?
The payload structure is determined by the platform's API design and is the same for all users. However, many platforms allow you to configure which events trigger webhooks and, for some events, which fields are included. Check your integration settings for options to enable or disable specific event types. If you need custom data not in the standard payload, some platforms allow you to attach custom fields to contacts or tickets, and these fields will be included in the payload if configured. If the platform does not support your use case, you may need to supplement webhooks with API polling for additional data.
How do I debug a webhook that is not being delivered?
First, verify your endpoint URL is correct and publicly accessible. Test it with a simple curl request or a tool like Postman. Second, check your firewall or network configuration to ensure the platform's IP range is not blocked. Third, review the webhook delivery logs in your platform's integration dashboard; these logs typically show whether each delivery succeeded or failed and what error was returned. Fourth, ensure you are returning a 2xx status code from your endpoint. Fifth, confirm that the event you expect is actually configured to trigger webhooks. If all else fails, add logging to your webhook handler to see if requests are arriving at all; if not, the problem is upstream in the platform's delivery system and you may need to contact support.
Is it safe to expose a webhook endpoint publicly?
Yes, provided you implement proper security: always use HTTPS, always validate webhook signatures, implement idempotency checks to prevent duplicate processing, rate limit the endpoint to prevent abuse, and do not expose sensitive internal logic or error details in responses. Treat webhook endpoints like any other public API endpoint: they should be robust, validated, and secured. Never log or expose customer data in error responses. If your endpoint is compromised or you suspect malicious webhook submissions, regenerate your webhook secret immediately and review logs for suspicious activity.
Sources
U.S. Census Bureau, QuickFacts, housing, ownership, and local market context.
U.S. Department of Housing and Urban Development, official guidance on buying, financing, and distressed property.
GoliathData real-estate records, distressed-property and market data compiled from public records.
