Skip to content

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.

Use CaseDescription
Custom integrationConnect to any service with an API
Data syncSend submissions to external databases or sheets
AutomationTrigger workflows in Zapier/Make’s 5000+ apps
Custom processingProcess data with your own code

Webhooks are configured per form in the form editor:

  1. Open your form in the form editor
  2. Open the Integrations tab
  3. Find the Zapier section
  4. Paste your webhook URL
  5. Toggle Enable Zapier integration on
  6. Click Test connection — a test request is sent to your URL so you can verify it arrives
  7. Save the form

From now on, every submission of that form is forwarded to the URL.

  1. In Zapier, create a new Zap
  2. Choose Webhooks by Zapier → Catch Hook as the trigger
  3. Copy the webhook URL Zapier shows
  4. Paste it into the form’s Zapier integration and test
  1. Create a scenario with a Webhooks → Custom webhook module
  2. Copy the URL it generates
  3. Paste it into the form’s Zapier integration and test

Any HTTPS endpoint that accepts POST requests works. Return a 200 status quickly, and process the data asynchronously.

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.
  • shop is your store’s myshopify.com domain.
  • submissionId identifies the submission in the app.
PracticeWhy
Return 200 quicklyAcknowledge receipt within a few seconds
Process asyncDon’t block the response with heavy work
Use HTTPSEncrypt data in transit
Validate dataCheck payload structure before processing
Log requestsMakes debugging easy

Example endpoint (Node.js):

app.post('/webhook/qivra', (req, res) => {
// Acknowledge immediately
res.status(200).send('OK');
// Process asynchronously
processSubmission(req.body);
});
IssueSolution
Test connection failsCheck the URL is a complete, valid HTTPS webhook URL
Nothing arrives in ZapierIn Zapier, make sure the Zap’s trigger step is switched on and you’ve pulled a sample
TimeoutYour endpoint must respond quickly — process data after responding
404 errorCheck the URL is correct and the hook still exists (Zapier URLs change if you recreate the hook)
Play