Crove Docs
Crove Docs
Crove Documentation

Getting Started

IntroductionQuick StartKey Concepts

Templates

Templates OverviewTemplate EditorVariablesExpressionsForm Builder

Documents

Documents OverviewCreating DocumentsFilling DocumentsE-SignaturesPDF Generation

API Reference

API OverviewAuthenticationTemplates APIDocuments APIRate Limits

Webhooks

Webhooks OverviewOutgoing WebhooksIncoming WebhooksWebhook Events

Integrations

Integrations OverviewZapier IntegrationAPI Keys

Account & Billing

Account OverviewTeam ManagementBilling & PlansWorkspace Settings

Outgoing Webhooks

Receive real-time HTTP notifications when events occur in your Crove documents.

Outgoing Webhooks

Outgoing webhooks send HTTP POST requests to your server when events happen in Crove. This lets you react to document events in real-time without polling the API.

Setting up a webhook

  1. Go to Settings > Webhooks
  2. Click Create Webhook
  3. Configure the webhook:
FieldDescription
TemplateWhich template triggers this webhook
URLYour server endpoint that receives the webhook
MethodHTTP method (POST, PUT, PATCH)
EventsWhich events trigger the webhook
HeadersCustom HTTP headers (e.g., authentication)
ActiveEnable/disable the webhook
  1. Click Save

Payload format

All webhooks send a JSON payload:

{
  "event": "document.completed",
  "documentId": "doc_abc123",
  "templateId": "tmpl_xyz789",
  "timestamp": "2026-02-18T14:30:00Z",
  "data": {
    "documentName": "Contract - Acme Corp",
    "completed": true,
    "responseData": {
      "clientName": "Acme Corporation",
      "contractAmount": 50000
    }
  }
}

Common payload fields

FieldTypeDescription
eventstringEvent type (e.g., document.completed)
documentIdstringID of the affected document
templateIdstringID of the template
timestampstringISO 8601 timestamp
dataobjectEvent-specific payload data

Custom headers

Add custom headers to authenticate webhook requests on your server:

Authorization: Bearer your_secret_token
X-Custom-Header: custom_value

This lets your server verify that incoming requests are genuinely from Crove.

Retry logic

If your server doesn't respond with a 2xx status code, Crove retries the webhook:

AttemptDelay
1st retry1 minute
2nd retry5 minutes
3rd retry30 minutes

After 3 failed attempts, the webhook delivery is marked as failed. You can view delivery logs in Settings > Webhooks.

Delivery logs

Each webhook has a delivery log showing:

  • Delivery timestamp
  • HTTP status code returned by your server
  • Response time
  • Success/failure status
  • Payload that was sent

Use delivery logs to debug integration issues.

Testing webhooks

Before going live, test your webhook setup:

  1. Use a service like webhook.site to get a temporary URL
  2. Set the test URL as your webhook endpoint
  3. Trigger an event (create a document, submit a response)
  4. Inspect the payload on webhook.site
  5. Once verified, update to your production URL

Example: Slack notification

Send a Slack message when a document is completed:

// Your webhook endpoint
app.post('/webhooks/crove', (req, res) => {
  const { event, data } = req.body;

  if (event === 'document.completed') {
    // Send Slack notification
    await fetch(SLACK_WEBHOOK_URL, {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        text: `Document "${data.documentName}" has been completed!`
      })
    });
  }

  res.status(200).json({ received: true });
});

Example: CRM sync

Update your CRM when a form response is submitted:

app.post('/webhooks/crove', async (req, res) => {
  const { event, data } = req.body;

  if (event === 'respondent.submitted') {
    // Sync data to your CRM
    await crmClient.updateContact({
      email: data.respondentEmail,
      fields: data.responseData
    });
  }

  res.status(200).json({ received: true });
});

Best practices

  1. Respond quickly — Return a 200 status immediately, then process the data asynchronously
  2. Verify the source — Use custom headers to authenticate webhook requests
  3. Handle duplicates — Webhooks may be delivered more than once; use documentId + event as an idempotency key
  4. Log everything — Store webhook payloads for debugging and audit purposes
  5. Use HTTPS — Always use an HTTPS endpoint for webhook URLs

Webhooks Overview

Receive real-time notifications and automate document creation with Crove webhooks.

Incoming Webhooks

Automatically create Crove documents when external systems send data to your webhook endpoint.

On this page

Outgoing WebhooksSetting up a webhookPayload formatCommon payload fieldsCustom headersRetry logicDelivery logsTesting webhooksExample: Slack notificationExample: CRM syncBest practices