Overview
Webhooks allow you to receive real-time HTTP notifications when events occur in LatentGEO. Configure your endpoint to receive POST requests with event payloads.Webhook Configuration
Create Webhook Config
POST/api/v1/webhooks/config
Creates a new webhook configuration.
HTTPS URL to receive webhook POST requests
Secret for signing payloads (16-256 characters). Used to generate HMAC-SHA256 signature.
List of events to subscribe to
Whether the webhook is active
Optional description (max 500 characters)
Webhook URLs must use HTTPS in production. HTTP is only allowed in debug mode.
Test Webhook
POST/api/v1/webhooks/test
Sends a test event to verify your endpoint.
Webhook URL to test
Webhook secret for signature verification
Event type to send
Whether test succeeded
HTTP status code returned by your endpoint
Response time in milliseconds
Error message (if test failed)
List Webhook Events
GET/api/v1/webhooks/events
Returns all available webhook event types.
Array of event type objects with descriptions
Webhook Events
Available Events
| Event | Description |
|---|---|
audit.created | Triggered when a new audit is created |
audit.started | Triggered when audit processing begins |
audit.completed | Triggered when audit finishes successfully |
audit.failed | Triggered when audit fails with an error |
audit.progress | Triggered at progress milestones (25%, 50%, 75%) |
report.generated | Triggered when audit report is generated |
pdf.ready | Triggered when PDF report is ready |
pagespeed.completed | Triggered when PageSpeed analysis completes |
geo.analysis.completed | Triggered when GEO tools analysis completes |
github.pr.created | Triggered when GitHub PR is created |
github.sync.completed | Triggered when GitHub sync completes |
competitor.analysis.completed | Triggered when competitor analysis completes |
Receiving Webhooks
Payload Structure
All webhook POST requests include:Event type
ISO 8601 timestamp
Unique delivery ID for idempotency
Event-specific payload data
HTTP Headers
Webhook requests include the following headers:| Header | Description |
|---|---|
X-Webhook-Signature | HMAC-SHA256 signature (if secret configured) |
X-Webhook-Event | Event type |
X-Webhook-Timestamp | Delivery timestamp |
Content-Type | application/json |
Signature Verification
If you configured a webhook secret, verify the signature:Python
TypeScript
Best Practices
- Verify signatures: Always verify the
X-Webhook-Signatureheader - Idempotency: Use
webhook_idto prevent duplicate processing - Retry handling: Implement exponential backoff for failed deliveries
- Timeouts: Respond within 5 seconds to avoid retries
- Logging: Log all webhook deliveries for debugging
Incoming Webhooks
GitHub Webhook
POST/api/v1/webhooks/github/incoming
Receives GitHub webhook events (push, pull_request, issues).
Requires
X-Hub-Signature-256 header for signature verification.GitHub webhook signature
GitHub event type
HubSpot Webhook
POST/api/v1/webhooks/hubspot/incoming
Receives HubSpot CRM events (contact.creation, contact.propertyChange, deal.creation).
Health Check
GET/api/v1/webhooks/health
Returns webhook service health status.
Service status (healthy)
Service name (webhook)
Number of supported event types
Current server timestamp
Error Codes
Invalid event type or JSON payload
Invalid webhook signature
Webhook secret not configured on server