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 account on any plan (Free or above)
- 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
- Connect your Sayify account using the API key from Step 1
- Test the trigger — Zapier will pull sample data from your workspace
- 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.
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.",
"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. |
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. If you add or rename questions, 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?
- Webhooks — Custom webhook integration with nested JSON payloads.
- API Reference — Full REST API documentation.
- Key Concepts — Review all platform building blocks.
- Templates — Browse pre-built form templates to get started quickly.