Webhooks allow you to automatically generate images and PDFs when events occur in external services like Typeform, Tally, Zapier, Make, n8n, or your own backend. Instead of making API calls with an API key, you use a unique webhook URL that handles authentication automatically.

Navigate to your Studio template's playground and go to the Webhooks tab. Click Add New to create a webhook.
Configure the following options:
| Option | Description |
|---|---|
| Webhook Name | A friendly name to identify this webhook (e.g., "Tally Form", "Zapier") |
| Response Format | Image format: PNG, JPG, JPEG, WebP, or PDF |
| Response Type | How the image is returned: url, base64, or binary |
| Max Renders | Limit total renders (leave empty for unlimited) |
| Signing Secret | Enable to verify webhook requests are authentic |
After creating the webhook, copy the Webhook URL:
https://api.orshot.com/v1/studio/webhook/wh_yourWebhookIdUse this URL as the webhook endpoint in your form builder or automation tool.
Field mappings connect incoming webhook data to your template's dynamic fields.
Auto-detection: Trigger the webhook once from your form or service. Orshot automatically detects available fields from the payload and shows them in the Field Mappings section.
Manual mapping: Select which incoming field maps to each template modification using the dropdowns.
Example mapping:
name → page1@headingemail → page1@subheadingavatar_url → page1@profileImageFor production use, enable Signing Secret to verify that webhook requests actually come from your configured service.
Orshot automatically detects and verifies signatures from popular services like Typeform, Tally, GitHub, Stripe, Slack, and any service using standard SHA256 HMAC signatures.
POST{
"name": "John Doe",
"title": "Software Engineer",
"avatar": "https://example.com/photo.jpg"
}The webhook returns the generated image based on your configured response type.
URL Response (default):
{
"data": {
"content": "https://storage.orshot.com/cloud/w-123/renders/images/abc123.png",
"type": "url",
"format": "png",
"responseTime": "1234.56ms"
}
}Base64 Response:
{
"data": {
"content": "data:image/png;base64,iVBORw0KGgo...",
"type": "base64",
"format": "png",
"responseTime": "1234.56ms"
}
}Binary Response: Returns the raw image file directly with appropriate content-type headers.
For multi-page templates, the response includes an array of pages:
URL Response:
{
"data": [
{
"page": 1,
"content": "https://storage.orshot.com/cloud/w-123/renders/images/page1.png"
},
{
"page": 2,
"content": "https://storage.orshot.com/cloud/w-123/renders/images/page2.png"
},
{
"page": 3,
"content": "https://storage.orshot.com/cloud/w-123/renders/images/page3.png"
}
],
"format": "png",
"type": "url",
"responseTime": "3456.78ms",
"totalPages": 3,
"renderedPages": 3
}Base64 Response:
{
"data": [
{ "page": 1, "content": "data:image/png;base64,iVBORw0KGgo..." },
{ "page": 2, "content": "data:image/png;base64,iVBORw0KGgo..." },
{ "page": 3, "content": "data:image/png;base64,iVBORw0KGgo..." }
],
"format": "png",
"type": "base64",
"responseTime": "3456.78ms",
"totalPages": 3,
"renderedPages": 3
}For PDF format, all pages are merged into a single file:
{
"data": {
"content": "https://storage.orshot.com/cloud/w-123/renders/images/document.pdf",
"type": "url",
"format": "pdf",
"responseTime": "2345.67ms"
}
}Contact support at hi@orshot.com or use the chat button in your Orshot dashboard for assistance.
