> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryingrow.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Payload and delivery

import { Callout } from 'nextra/components';

This document details the structure of the webhook payload and the specifications for its delivery.

## Webhook Payload Structure

Ingrow sends signals in batches as a JSON payload in the body of the POST request. The payload has the following structure:

```json theme={null}
{
  "id": "abc123xyz",
  "name": "Sarah Johnson",
  "headline": "Senior Product Manager at TechCorp | AI & Machine Learning Enthusiast",
  "linkedinUrl": "https://www.linkedin.com/in/sarahjohnson",
  "totalInteractions": 12,
  "totalComments": 5,
  "latestActivityTimestamp": "2025-10-10T14:30:00Z",
  "latestActivityType": "comment",
  "score": 85.5,
  "sourceLinkedinProfileId": "def456uvw",
  "sourceLinkedinProfileUrl": "https://www.linkedin.com/in/johnsmith",
  "sourceLinkedinProfileName": "John Smith",
  "sourceLinkedinProfileHeadline": "VP of Engineering at StartupXYZ | Building the Future"
}
```

## Delivery Specifications

### Delivery Schedule

* **Primary Sync Window:** Most webhooks are delivered during the primary sync window, which is from **2:00 AM to 5:00 AM IST (Indian Standard Time)**.
* **Frequency:** Webhooks are sent continuously during this window as new signals are generated.
* **Rate Limit:** To prevent overwhelming your server, InGrow limits the delivery rate to a maximum of 10 records per second per webhook endpoint.

### Delivery Guarantees

* **Retry Logic:** If a webhook request to your endpoint fails (e.g., due to a server error), InGrow will attempt to retry the request up to three times with an exponential backoff strategy.
* **Timeout:** Each webhook request has a timeout of 30 seconds. If your server does not respond within this time, the request will be considered failed.
* **Expected Response:** Your endpoint should return an HTTP status code in the 200-299 range to indicate that the webhook was received successfully.

### Security Headers

If you have configured a secret header key and value, InGrow will include them as custom HTTP headers in each POST request. This allows your application to verify that the request is coming from InGrow.

```http theme={null}
POST /webhook HTTP/1.1
Host: your-api.com
Content-Type: application/json
X-Secret-Key: your-secret-value

{...payload}
```
