Webhook Integration
Webhooks send your form submission data to any external service the moment a customer submits. In Qivra Form Builder, webhooks are powered by the Zapier integration — a per-form webhook URL that works with Zapier, Make (Integromat), or any custom endpoint.
Why use webhooks?
Section titled “Why use webhooks?”| Use Case | Description |
|---|---|
| Custom integration | Connect to any service with an API |
| Data sync | Send submissions to external databases or sheets |
| Automation | Trigger workflows in Zapier/Make’s 5000+ apps |
| Custom processing | Process data with your own code |
Setting up the webhook
Section titled “Setting up the webhook”Webhooks are configured per form in the form editor:
- Open your form in the form editor
- Open the Integrations tab
- Find the Zapier section
- Paste your webhook URL
- Toggle Enable Zapier integration on
- Click Test connection — a test request is sent to your URL so you can verify it arrives
- Save the form
From now on, every submission of that form is forwarded to the URL.
Where to get a webhook URL
Section titled “Where to get a webhook URL”Zapier
Section titled “Zapier”- In Zapier, create a new Zap
- Choose Webhooks by Zapier → Catch Hook as the trigger
- Copy the webhook URL Zapier shows
- Paste it into the form’s Zapier integration and test
Make (Integromat)
Section titled “Make (Integromat)”- Create a scenario with a Webhooks → Custom webhook module
- Copy the URL it generates
- Paste it into the form’s Zapier integration and test
Your own API
Section titled “Your own API”Any HTTPS endpoint that accepts POST requests works. Return a 200 status quickly, and process the data asynchronously.
Webhook payload
Section titled “Webhook payload”Each submission is sent as a JSON POST. The payload is flat — your form’s fields at the top level, plus shop and submission identifiers:
{ "name": "John Doe", "email": "john@example.com", "message": "Hello!",
"shop": "your-store.myshopify.com", "submissionId": 12345}- Field keys are your form’s field IDs — check a test request to see the exact keys for your form.
shopis your store’s myshopify.com domain.submissionIdidentifies the submission in the app.
Handling webhooks on your side
Section titled “Handling webhooks on your side”| Practice | Why |
|---|---|
| Return 200 quickly | Acknowledge receipt within a few seconds |
| Process async | Don’t block the response with heavy work |
| Use HTTPS | Encrypt data in transit |
| Validate data | Check payload structure before processing |
| Log requests | Makes debugging easy |
Example endpoint (Node.js):
app.post('/webhook/qivra', (req, res) => { // Acknowledge immediately res.status(200).send('OK');
// Process asynchronously processSubmission(req.body);});Troubleshooting
Section titled “Troubleshooting”| Issue | Solution |
|---|---|
| Test connection fails | Check the URL is a complete, valid HTTPS webhook URL |
| Nothing arrives in Zapier | In Zapier, make sure the Zap’s trigger step is switched on and you’ve pulled a sample |
| Timeout | Your endpoint must respond quickly — process data after responding |
| 404 error | Check the URL is correct and the hook still exists (Zapier URLs change if you recreate the hook) |