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

Incoming Webhooks

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

Incoming Webhooks

Incoming webhooks let external systems send data to Crove to automatically create documents. When your CRM, form builder, or any other system sends a POST request to the webhook URL, Crove creates a document from a template and pre-fills it with the received data.

Setting up an incoming webhook

  1. Go to Settings > Webhooks
  2. Click Create Incoming Webhook
  3. Configure the webhook:
FieldDescription
NameA descriptive name for the webhook
TemplateThe template to use for document creation
Field mappingMap incoming data fields to template variables
ActionWhat to do (currently: Create Document)
Auto-nameExpression for automatic document naming
  1. Save the webhook and copy the generated URL

Webhook URL

Each incoming webhook gets a unique URL:

https://crove.app/api/webhooks/incoming/{webhook_slug}

Send POST requests with JSON data to this URL.

Field mapping

Map incoming payload fields to your template variables:

Simple mapping

// Incoming payload
{
  "customer_name": "Acme Corporation",
  "customer_email": "john@acme.com",
  "deal_value": 50000
}
Field mapping:
  customer_name  →  clientName
  customer_email →  clientEmail
  deal_value     →  contractAmount

Nested data

Access nested fields using dot notation:

// Incoming payload
{
  "contact": {
    "name": "John Smith",
    "email": "john@acme.com"
  },
  "deal": {
    "amount": 50000,
    "currency": "USD"
  }
}
Field mapping:
  contact.name   →  clientName
  contact.email  →  clientEmail
  deal.amount    →  contractAmount

Auto-naming

Use expressions to generate document names automatically from the incoming data:

"Contract - " + customer_name + " - " + date

This creates documents named like "Contract - Acme Corporation - 2026-02-18".

Sample data

When setting up field mapping, you can provide sample data to test the mapping:

  1. Paste a sample JSON payload
  2. Crove shows how the data maps to template variables
  3. Adjust the mapping until it's correct
  4. Save and go live

Example: CRM integration

Create a contract when a deal is closed in your CRM:

# Your CRM sends this when a deal closes
curl -X POST https://crove.app/api/webhooks/incoming/your_webhook_slug \
  -H "Content-Type: application/json" \
  -d '{
    "deal_name": "Enterprise Deal",
    "company": "Acme Corporation",
    "contact_email": "john@acme.com",
    "value": 50000,
    "close_date": "2026-02-18"
  }'

Crove creates a new document from your contract template with all the fields pre-filled.

Example: Website form

Create a document when someone submits a form on your website:

// Your form submission handler
async function handleFormSubmit(formData) {
  // Send to Crove incoming webhook
  await fetch('https://crove.app/api/webhooks/incoming/your_webhook_slug', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      name: formData.name,
      email: formData.email,
      company: formData.company,
      service: formData.selectedService,
    }),
  });
}

Response

The incoming webhook returns:

Success (201)

{
  "success": true,
  "documentId": "doc_new789",
  "message": "Document created successfully"
}

Error (400)

{
  "success": false,
  "error": "Missing required field: customer_name"
}

Best practices

  1. Validate on your end — Ensure required data is present before sending to the webhook
  2. Test with sample data — Use the sample data feature to verify field mapping
  3. Use descriptive auto-names — Include key identifiers (company name, date) in auto-naming
  4. Monitor document creation — Check the Documents page to verify webhooks are working
  5. Handle errors — Check the response from the webhook and handle errors in your system

Outgoing Webhooks

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

Webhook Events

Complete reference of all webhook event types fired by Crove.

On this page

Incoming WebhooksSetting up an incoming webhookWebhook URLField mappingSimple mappingNested dataAuto-namingSample dataExample: CRM integrationExample: Website formResponseSuccess (201)Error (400)Best practices