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

  1. Log into your Sayify workspace at app.sayify.pro
  2. Navigate to API Management in the sidebar
  3. Click Create API Key
  4. Give it a name (e.g. "Zapier Integration")
  5. 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:

👉 Accept Zapier Invite

Step 3: Create Your First Zap

  1. In Zapier, click Create Zap
  2. For the trigger, search for "Sayify"
  3. 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
  4. Connect your Sayify account using the API key from Step 1
  5. Test the trigger — Zapier will pull sample data from your workspace
  6. Add an action (e.g. send a Slack message, add a row to Google Sheets, create a HubSpot contact)
  7. Turn on your Zap!

🔗 How It Works

Sayify uses REST Hooks — the industry-standard webhook pattern for Zapier:

  1. When you create a Zap, Zapier registers a webhook URL with Sayify via our API.
  2. When a triggering event occurs (response started or submitted), Sayify instantly POSTs the payload to Zapier's webhook URL.
  3. Zapier processes the data and runs your configured actions.
  4. 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:

  1. Zapier will prompt you for your API key
  2. Paste the key you created in API Management
  3. Zapier validates the key by calling our test endpoint
  4. 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_required is 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:

👉 Accept Zapier Invite

"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.submitted deliberately 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?


🎓 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.
Was this page helpful?
Report an issue →