Zapier Handles 80% of Your Integrations. Here Is What to Do About the Other 20%.
Zapier handles 80% of your integration needs. The Slack integration handles real-time alerts. The Google Sheets integration handles reporting.
But then your CTO says: "We need form responses pushed directly into our data warehouse. And we need to auto-create tickets in our custom-built internal tool. And the data needs to include the AI sentiment score, the voice transcription, and the original audio file URL."
Zapier cannot do that. You need a webhook.
Webhooks are the raw API pipe between Sayify and your infrastructure. Every time a form response is submitted, Sayify sends a JSON payload to any URL you specify. Your backend receives it, processes it, and routes it anywhere: your data warehouse, your internal tools, your custom dashboards, your ML pipeline.
If you can receive an HTTP POST, you can integrate with Sayify.
What a Webhook Delivers
When a form response is submitted, Sayify sends an HTTP POST request to your configured URL with a JSON payload containing everything:
Core Fields
| Field | Type | Description |
|---|---|---|
response_uuid |
String | Unique identifier for this response |
form_uuid |
String | Which form this response belongs to |
form_name |
String | Human-readable form name |
submitted_at |
ISO 8601 | Submission timestamp |
respondent_email |
String | Respondent's email (if collected) |
respondent_name |
String | Respondent's name (if collected) |
Answers Array
Each answer in the answers array includes:
| Field | Type | Description |
|---|---|---|
question_prompt |
String | The question text |
question_type |
String | "voice", "text", "rating", "dropdown", etc. |
value |
Varies | The raw answer value |
voice_transcription |
String | AI-generated transcription (voice questions) |
voice_audio_url |
URL | Secure link to the original audio file |
sentiment |
String | "positive", "neutral", "negative" |
ai_summary |
String | AI evaluation summary |
keywords |
Array | Extracted keywords and topics |
AI Analysis Fields
| Field | Type | Description |
|---|---|---|
overall_sentiment |
String | Aggregate sentiment for the entire response |
urgency_score |
Integer | 1-10 urgency assessment |
ai_evaluation |
Object | Full AI analysis including summary, extracted data, red flags |
Setting Up a Webhook
In the Sayify Dashboard
- Open your form → Integrations tab
- Click Add Webhook
- Enter your endpoint URL (e.g.,
https://api.yourcompany.com/sayify-webhook) - Select which events trigger the webhook (new response, status change, etc.)
- Add any custom headers (API keys, auth tokens)
- Test the connection with a sample payload
- Activate
On Your Backend
Your endpoint needs to:
- Accept HTTP POST requests
- Parse the JSON body
- Return a 200 status code within 10 seconds
- Handle retries (Sayify retries failed deliveries up to 3 times)
Example: Node.js Express Handler
app.post('/sayify-webhook', (req, res) => {
const { response_uuid, answers, overall_sentiment, urgency_score } = req.body;
// Process the response
answers.forEach(answer => {
if (answer.question_type === 'voice' && answer.sentiment === 'negative') {
createSupportTicket({
title: `Negative feedback: ${answer.ai_summary}`,
transcription: answer.voice_transcription,
urgency: urgency_score,
audio_url: answer.voice_audio_url
});
}
});
res.status(200).json({ received: true });
});
Example: Python Flask Handler
@app.route('/sayify-webhook', methods=['POST'])
def handle_webhook():
data = request.json
sentiment = data.get('overall_sentiment')
urgency = data.get('urgency_score', 0)
if sentiment == 'negative' and urgency >= 8:
create_urgent_ticket(data)
elif sentiment == 'positive':
queue_testimonial_review(data)
return jsonify({'received': True}), 200
Five Webhook Workflows for Engineering Teams
1. Data Warehouse Pipeline
Push every response to BigQuery, Snowflake, or Redshift for long-term analysis:
- Webhook fires on every submission
- Your Lambda/Cloud Function transforms the payload
- Data inserts into your warehouse with structured columns
- Your BI tool (Looker, Metabase, Tableau) visualizes trends across thousands of responses
Why webhooks, not CSV exports: Real-time data pipeline. No manual exports. No stale reports.
2. Custom Internal Tooling
Your company has a custom-built customer dashboard. When a customer submits feedback:
- Webhook fires
- Your backend matches the respondent email to the customer record
- The feedback appears in the customer's profile in your internal tool
- Support team sees the feedback inline with the customer's full history
3. ML Pipeline for Sentiment Enrichment
Run your own sentiment model on voice transcriptions:
- Webhook delivers the voice transcription
- Your ML pipeline runs additional analysis (topic modeling, intent classification, entity extraction)
- Enriched data writes back to your database
- Custom dashboards show analysis from both Sayify AI and your own models
4. Automated Ticket Creation
Create tickets in your custom ticketing system (not Zendesk or Jira):
- Webhook fires on negative sentiment or high urgency
- Your backend creates a ticket with the AI summary, transcription, and audio link
- Ticket is assigned based on issue category
- SLA timer starts automatically
5. Real-Time Dashboard Feeds
Power a live customer satisfaction dashboard on a wall monitor:
- Webhook fires on every submission
- WebSocket pushes the new data point to your React dashboard
- Live NPS score updates, sentiment distribution shifts, response counter increments
- Your team sees customer pulse in real time
Webhook Security
Signature Verification
Every webhook request includes a signature header that you can verify to ensure the payload was sent by Sayify, not a spoofed request. Verify the signature using your webhook secret key before processing any data.
IP Allowlisting
If your firewall restrictions require it, configure IP allowlisting for Sayify's webhook server IPs.
HTTPS Only
Webhook endpoints must use HTTPS. Sayify will not deliver payloads to HTTP URLs. This ensures data integrity and prevents man-in-the-middle interception of voice transcriptions and customer data.
Authentication Headers
Add custom headers to your webhook configuration:
Authorization: Bearer your-api-keyX-API-Key: your-secret- Any custom header your backend requires
Error Handling and Retries
| Scenario | What Happens |
|---|---|
| Your endpoint returns 200 | Delivery successful. No retry |
| Your endpoint returns 4xx/5xx | Sayify retries up to 3 times with exponential backoff |
| Your endpoint times out (>10s) | Treated as a failure. Retries follow |
| Your endpoint is unreachable | Retries with backoff. Alert after multiple failures |
| All retries fail | Delivery marked as failed. Visible in the integrations dashboard |
Responses are never lost. Even if webhook delivery fails permanently, the data is always in your Sayify dashboard and accessible via other integrations (Slack, Sheets, Zapier).
Frequently Asked Questions
Can I send webhooks to multiple URLs?
Yes. Configure multiple webhook endpoints for the same form. Send to your data warehouse, your ticketing system, and your custom dashboard simultaneously.
What is the payload size limit?
Payloads are typically 5-50KB depending on the number of questions and voice transcription length. File attachments are delivered as URLs, not inline data, keeping payloads manageable.
Can I filter which responses trigger the webhook?
Yes. Use alert rules to control which responses fire the webhook. Only negative sentiment, only high urgency scores, only specific form sections.
Is there a webhook testing tool?
Yes. The webhook configuration page includes a "Send Test Payload" button that sends a sample JSON payload to your endpoint. Use tools like RequestBin or ngrok for initial testing.
Can I get the raw audio file, not just the transcription?
Yes. The payload includes a voice_audio_url field with a secure, time-limited URL to the original audio file stored on AWS S3.
What about rate limiting?
Sayify does not rate-limit webhook deliveries. If your form receives 1,000 responses in a minute, 1,000 webhooks fire. Ensure your endpoint can handle burst traffic.
Zapier Handles 80%. Webhooks Handle the Other 20%.
For most teams, Slack, Sheets, and Zapier cover everything. But when you need direct data pipeline integration, custom ticket creation, ML enrichment, or real-time dashboard feeds, webhooks give you raw, unfiltered access to every response.
Your engineering team gets a JSON payload with everything: answers, transcriptions, sentiment, keywords, urgency, and audio URLs. What they build with it is up to them.
Set Up Your First Webhook — Free plan available. No credit card required.
Related Reading
Ready to build smarter forms?
Start collecting voice, video, and structured feedback in under 2 minutes.
Get Started Free