Connect Sayify.pro to 5,000+ apps using Zapier with real-time webhook triggers. Complete setup guide and payload reference.
Zapier Integration
Connect your Sayify workspace to 5,000+ apps through Zapier — no code required. Sayify uses the REST Hook pattern, so your Zaps trigger instantly when events happen. No polling delays.
Prerequisites
Before setting up Zapier, make sure you have:
- A Sayify.pro workspace on a plan that includes Zapier integrations
- An API key created in your workspace (see API Keys docs)
- A Zapier account (free tier works)
Getting Started
Step 1: Create an API Key
- Log into your Sayify workspace at app.sayify.pro
- Navigate to API Management in the sidebar
- Click Create API Key
- Give it a name (e.g. "Zapier Integration")
- Copy the key — you'll need it in the next step
* Tip:* API keys are scoped to a single workspace. If you have multiple workspaces, create separate keys for each one.
Step 2: Accept the Zapier Invite
Sayify is currently in Preview on Zapier. Accept the invite to add Sayify to your Zapier account:
Step 3: Create Your First Zap
- In Zapier, click Create Zap
- For the trigger, search for "Sayify"
- Choose a trigger event:
- New Response Started — fires when someone begins filling out your form
- New Response Submitted — fires when a response is fully submitted
- Select the Sayify form whose fields you want to map
- Connect your Sayify account using the API key from Step 1
- Test the trigger — Zapier will pull sample data for the selected form
- Add an action (e.g. send a Slack message, add a row to Google Sheets, create a HubSpot contact)
- Turn on your Zap!
How It Works
Sayify uses REST Hooks — the industry-standard webhook pattern for Zapier:
- When you create a Zap, Zapier registers a webhook URL with Sayify via our API.
- When a triggering event occurs (response started or submitted), Sayify instantly POSTs the payload to Zapier's webhook URL.
- Zapier processes the data and runs your configured actions.
- When you turn off or delete a Zap, Zapier unregisters the webhook.
This means zero polling — triggers are instant with no delays.
Authentication
Sayify uses API Key authentication. When connecting your Sayify account in Zapier:
- Zapier will prompt you for your API key
- Paste the key you created in API Management
- Zapier validates the key by calling our test endpoint
- Once verified, your workspace is connected
Your API key is securely stored by Zapier and sent with every request as a Bearer token.
Available Triggers
| Trigger | Event Key | When It Fires |
|---|---|---|
| New Response Started | response.started |
A respondent opens your intake link and begins a session. |
| New Response Submitted | response.submitted |
A respondent completes all questions and submits. Includes AI insights. |
Payload Format
Zapier receives flattened payloads with __-delimited keys for optimal field mapping. Below are the complete field references for both triggers.
Zapier field mapping is static per Zap. To get exact question, custom extraction, and use-case metric fields, configure the trigger for one specific Sayify form. A workspace-wide Zap can only safely use common fields because different forms produce different responses__*, custom_fields__*, and use_case_metrics__* keys.
response.started Payload
{
"event": "response.started",
"timestamp": "2026-02-17T10:13:15.123Z",
"session__uuid": "abc123-session-uuid-456",
"session__link_name": "Product Feedback Survey",
"session__link_slug": "product-feedback",
"session__link_uuid": "def789-link-uuid-012",
"session__started_at": "2026-02-17T10:13:15.123Z",
"respondent__ip_address": "192.0.2.1",
"respondent__user_agent": "Mozilla/5.0 ...",
"respondent__location__country": "US",
"respondent__location__city": "San Francisco",
"workspace__uuid": "workspace-uuid-123",
"workspace__name": "Acme Corp"
}
Field Reference
| Field | Type | Description |
|---|---|---|
event |
string | Always response.started. |
timestamp |
string | ISO 8601 timestamp of the event. |
session__uuid |
string | Unique session identifier. |
session__link_name |
string | Name of the intake link. |
session__link_slug |
string | URL slug of the intake link. |
session__link_uuid |
string | UUID of the intake link. |
session__started_at |
string | When the session started (ISO 8601). |
respondent__ip_address |
string | Respondent's IP address. |
respondent__user_agent |
string | Respondent's browser user agent. |
respondent__location__country |
string | Country code (e.g. US). May be null. |
respondent__location__city |
string | City name (e.g. San Francisco). May be null. |
workspace__uuid |
string | Workspace identifier. |
workspace__name |
string | Workspace display name. |
response.submitted Payload
The full payload includes session metadata, per-question responses with AI insights, and overall evaluation. All fields use __ separators.
{
"event": "response.submitted",
"timestamp": "2026-02-17T10:13:30.794Z",
"session__uuid": "abc123-session-uuid-456",
"session__link_name": "Product Feedback Survey",
"session__link_slug": "product-feedback",
"session__link_uuid": "def789-link-uuid-012",
"session__started_at": "2026-02-17T10:13:15.123Z",
"session__completed_at": "2026-02-17T10:13:30.794Z",
"session__duration_seconds": 15.67,
"respondent__ip_address": "192.0.2.1",
"respondent__user_agent": "Mozilla/5.0 ...",
"respondent__location__country": "US",
"respondent__location__city": "San Francisco",
"workspace__uuid": "workspace-uuid-123",
"workspace__name": "Acme Corp",
"metadata__total_questions": 4,
"metadata__answered_questions": 4,
"metadata__average_response_time": "5s",
"metadata__completion_percentage": 100,
"ai_evaluation__clarity_score": 85,
"ai_evaluation__completion_status": "complete",
"ai_evaluation__follow_up_count": 1,
"ai_evaluation__insights__sentiment_score": 8,
"ai_evaluation__insights__urgency_level": "medium",
"ai_evaluation__insights__feature_mention": "analytics, dashboard, export, charts",
"ai_evaluation__insights__action_required": "follow_up_call",
"ai_evaluation__insights__persona_tag": "power_user",
"ai_evaluation__insights__executive_summary": "User loves analytics but needs better export options.",
"use_case": "lead_qualification",
"extracted_data__company_size": "Mid-Market",
"custom_fields__decision_process": "Finance approval required",
"use_case_metrics__lead_score": 88,
"use_case_metrics__icp_fit": "Strong Fit",
"use_case_key_points__buying_signals": "Asked about implementation timeline",
"Metric:lead_score": 88,
"Field:decision_process": "Finance approval required",
"responses__overall_experience": "I love the analytics feature!",
"responses__overall_experience__question": "How would you rate your overall experience?",
"responses__overall_experience__response_type": "voice",
"responses__overall_experience__clarity_score": 87,
"responses__overall_experience__sentiment_score": 8,
"responses__overall_experience__executive_summary": "User loves current features but needs export functionality",
"responses__overall_experience__followup_1": "PDF and PowerPoint would be great",
"responses__overall_experience__followup_1__question": "What specific export formats would you like?",
"responses__feature_rating": 9,
"responses__feature_rating__question": "Rate our analytics feature",
"responses__feature_rating__response_type": "rating",
"responses__feature_rating__rating_max": 10,
"responses__feature_rating__rating_scale": "stars",
"responses__improvement_suggestions": "Add more customization options for charts",
"responses__improvement_suggestions__question": "What can we improve?",
"responses__improvement_suggestions__response_type": "text"
}
Static Fields (Always Present)
| Field | Type | Description |
|---|---|---|
event |
string | Always response.submitted. |
timestamp |
string | ISO 8601 timestamp. |
session__uuid |
string | Unique session identifier. |
session__link_name |
string | Intake link name. |
session__link_slug |
string | Intake link URL slug. |
session__link_uuid |
string | Intake link UUID. |
session__started_at |
string | Session start time. |
session__completed_at |
string | Session completion time. |
session__duration_seconds |
number | Total session duration in seconds. |
respondent__ip_address |
string | Respondent's IP. |
respondent__user_agent |
string | Browser user agent. |
respondent__location__country |
string | Country code. May be null. |
respondent__location__city |
string | City name. May be null. |
workspace__uuid |
string | Workspace identifier. |
workspace__name |
string | Workspace display name. |
Metadata Fields
| Field | Type | Description |
|---|---|---|
metadata__total_questions |
integer | Total questions in the form. |
metadata__answered_questions |
integer | Number of questions answered. |
metadata__average_response_time |
string | Average time per answer (e.g. 26s). |
metadata__completion_percentage |
integer | Completion percentage (0–100). |
Overall AI Evaluation
These fields reflect the aggregate analysis across all answers in the session.
| Field | Type | Description |
|---|---|---|
ai_evaluation__clarity_score |
integer (0–100) | Overall clarity of all responses. |
ai_evaluation__completion_status |
string | complete, partial, or incomplete. |
ai_evaluation__follow_up_count |
integer | Number of AI follow-up questions asked. |
ai_evaluation__insights__sentiment_score |
integer/string | Overall sentiment score (0–10 or label). |
ai_evaluation__insights__urgency_level |
string | low, medium, or high. |
ai_evaluation__insights__feature_mention |
string | Comma-separated list of mentioned features. |
ai_evaluation__insights__action_required |
string / null | Suggested follow-up action. |
ai_evaluation__insights__persona_tag |
string / null | AI-classified respondent persona. |
ai_evaluation__insights__executive_summary |
string | One-line overall summary. |
Use Case, Metrics, and Custom Fields
These fields are included on response.submitted after Sayify finishes AI case enrichment. They are flattened for Zapier field mapping.
| Field Pattern | Type | Description |
|---|---|---|
use_case |
string | Form use-case key, such as lead_qualification, when configured. |
extracted_data__<key> |
string/number/boolean | AI-extracted field values from the case. Confidence wrappers are flattened to values. |
custom_fields__<key> |
string/number/boolean | Custom extraction fields configured for the form plus custom fields found in AI extraction. |
use_case_metrics__<key> |
string/number/boolean | Use-case-specific metrics, such as lead_score, icp_fit, or buyer_intent. |
use_case_key_points__<key> |
string | Use-case key point arrays converted to comma-separated strings for Zapier. |
Metric:<key> |
string/number/boolean | Legacy Zapier-compatible alias for use-case metrics. |
Field:<key> |
string/number/boolean | Legacy Zapier-compatible alias for extracted data fields. |
Per-Question Response Fields
Each question generates dynamic fields using the pattern responses__<field_key>__<property>. The <field_key> is the unique key defined for each question in your form.
| Field Pattern | Type | When Present | Description |
|---|---|---|---|
responses__<key> |
string/number | Always | The respondent's answer value. |
responses__<key>__question |
string | Always | The question prompt that was shown. |
responses__<key>__response_type |
string | Always | One of: voice, text, rating, voice_text_fallback, multiple_choice, yes_no, date, email, number, file_upload, image_choice. |
responses__<key>__audio_url |
string | Voice only | URL to the audio recording. |
responses__<key>__transcript |
string | Voice only | Full transcription. |
responses__<key>__rating_max |
integer | Rating only | Maximum rating value. |
responses__<key>__rating_scale |
string | Rating only | Scale type (e.g. stars, nps). |
responses__<key>__selected_card_label |
string | Image choice only | Selected card label. |
responses__<key>__selected_card_media_url |
string | Image choice only | Selected card image URL. |
responses__<key>__clarity_score |
integer | Voice/Text with AI | AI clarity score for this answer. |
responses__<key>__completion_status |
string | Voice/Text with AI | AI completion status for this answer. |
responses__<key>__sentiment_score |
integer | Voice/Text with AI | Sentiment score for this answer (0–10). |
responses__<key>__urgency_level |
string | Voice/Text with AI | Urgency level for this answer. |
responses__<key>__executive_summary |
string | Voice/Text with AI | AI summary for this answer. |
responses__<key>__action_required |
boolean/string | Voice/Text with AI | Suggested action for this answer. |
responses__<key>__persona_tag |
string | Voice/Text with AI | AI persona classification. |
responses__<key>__followup_1 |
string | If follow-ups exist | First follow-up answer value. |
responses__<key>__followup_1__question |
string | If follow-ups exist | First follow-up question text. |
responses__<key>__followup_2 |
string | If 2+ follow-ups | Second follow-up answer value. |
responses__<key>__followup_2__question |
string | If 2+ follow-ups | Second follow-up question text. |
Example Zaps
Here are popular automations you can build with Sayify + Zapier:
New Response → Slack Notification
Get instant Slack messages when feedback arrives:
- Trigger: Sayify — New Response Submitted
- Action: Slack — Send Channel Message
- Message template:
New feedback from {{respondent__ip_address}} on "{{session__link_name}}": {{ai_evaluation__insights__executive_summary}}
New Response → Google Sheets Row
Log every response to a spreadsheet for reporting:
- Trigger: Sayify — New Response Submitted
- Action: Google Sheets — Create Spreadsheet Row
- Map fields: Link Name, Timestamp, Answer Values, Sentiment Score
Negative Feedback → HubSpot Task
Automatically create follow-up tasks for unhappy customers:
- Trigger: Sayify — New Response Submitted
- Filter: Only continue if
ai_evaluation__insights__sentiment_score≤ 3 - Action: HubSpot — Create Task
- Task: "Follow up on negative feedback: {{ai_evaluation__insights__executive_summary}}"
New Response → Trello Card
Turn action items into trackable cards:
- Trigger: Sayify — New Response Submitted
- Filter: Only continue if
ai_evaluation__insights__action_requiredis not empty - Action: Trello — Create Card
- Card title: "Action: {{ai_evaluation__insights__executive_summary}}"
Troubleshooting & FAQ
"I can't find Sayify in Zapier"
Sayify is currently in Preview mode. You need to accept the invite link first:
"My API key isn't working"
- Make sure you're pasting the full key (starts with
sk_live_) - Check that the key hasn't been revoked in API Management
- API keys are workspace-specific — make sure you're using the key for the correct workspace
"No sample data is returned when testing"
This is normal if your workspace is new. Create a test intake link, submit a test response, and try again. Zapier pulls sample data from your workspace to detect available fields.
"Some response fields are missing"
Per-question fields are dynamic — they depend on the questions in your form. Select the exact form in the Zap trigger, then test the trigger again. If you add or rename questions, change the use case, or edit custom extraction fields, re-test your Zap trigger to pick up the new fields.
"Trigger isn't firing"
- Ensure your Zap is turned on
- Check that your intake link status is Active
- Verify your API key is valid (not revoked)
- Wait 30-60 seconds —
response.submitteddeliberately waits for AI evaluation to complete before firing
Differences from Custom Webhooks
| Feature | Zapier | Custom Webhooks |
|---|---|---|
| Payload format | Flattened (__ separators) |
Nested JSON |
| Setup | No-code, GUI-based | Requires a server/endpoint |
| Retry logic | Managed by Zapier | Managed by Sayify (5 retries) |
| Auth | API key via Zapier auth flow | HMAC signature verification |
| Best for | Connecting to 5,000+ apps | Custom server-side processing |
See the Webhooks documentation for the nested JSON format used by custom webhooks.
Support
Need help with your Zapier integration?
- Email: support@sayify.pro
- Docs: sayify.pro/docs
- Status: status.sayify.pro
What's Next?
- Integrations — One-stop setup guide for Slack, Google Sheets, Zapier, and webhooks.
- Webhooks — Custom webhook integration with nested JSON payloads.
- Google Sheets Integration — Append enriched responses to spreadsheets.
- Slack Integration — Send team notifications to Slack channels.
- API Reference — Full REST API documentation.
- Key Concepts — Review all platform building blocks.
- Templates — Browse pre-built form templates to get started quickly.