Zapier
Add human review to your Zapier workflows.
Zapier connects your apps and automates workflows. This guide shows how to add human-in-the-loop review using Datashift's REST API with Webhooks by Zapier.
What you'll build
A workflow that captures form submissions and routes them through human review before adding to your CRM.
Prerequisites
- •A Datashift account with an API key
- •A Zapier account (Professional plan or higher for Webhooks)
- •A review queue created in Datashift
Architecture
The integration uses two Zaps:
1. Submit Zap
Captures data from your trigger app and submits it to Datashift for review.
2. Webhook Zap
Receives the review result from Datashift and continues the workflow.
Step 1: Create Webhook Zap
First, create a Zap to receive the review result:
Create a new Zap
Click "Create Zap" in your Zapier dashboard
Choose Webhooks by Zapier as trigger
Select "Catch Hook" as the trigger event
Copy the webhook URL
Zapier generates a unique URL like https://hooks.zapier.com/hooks/catch/...
Add Filter and Action steps
Filter by approval status, then add your CRM or notification action
Step 2: Register Webhook in Datashift
Go to Settings → Webhooks in Datashift:
Test the webhook by submitting a sample task so Zapier can detect the payload structure.
Step 3: Create Submit Zap
Create a second Zap that submits tasks for review:
Choose Your Trigger
Select your trigger app (e.g., Typeform, Google Forms, Airtable) and configure it.
Add Webhooks by Zapier Action
Add an action step using "Webhooks by Zapier" with event type "Custom Request".
Headers
Data (JSON)
{
"queue_key": "form-submissions",
"data": {
"name": "{{name}}",
"email": "{{email}}",
"company": "{{company}}",
"message": "{{message}}"
},
"metadata": {
"zap_id": "{{zap_id}}",
"submission_id": "{{id}}"
},
"summary": "Review submission from {{name}} at {{company}}"
}Map fields from your trigger step using Zapier's field picker.
Step 4: Configure Filter Step
In your webhook Zap, add a Filter step to route based on the review result:
For Approved Tasks
Filter condition:
data.reviews[].result (Text) Contains approvedThen add your CRM action (e.g., Create HubSpot Contact).
For Rejected Tasks
Create a separate Zap with the same webhook trigger but filter for "rejected" to send notifications.
Alternative: Using Paths
With Zapier's Paths feature (Professional plan), you can handle both outcomes in one Zap:
Complete Example
Here's how the complete flow looks:
Submit Zap
Webhook Zap
Webhook Payload Structure
The webhook sends this payload when a review completes:
{
"event": "task.reviewed",
"timestamp": "2026-02-26T10:35:00Z",
"data": {
"task": {
"id": "task_abc123",
"external_id": "sub_789",
"state": "reviewed",
"summary": "Review submission from Jane Smith at Acme Inc",
"data": {
"name": "Jane Smith",
"email": "jane@company.com",
"company": "Acme Inc",
"message": "Interested in your product"
},
"metadata": {
"zap_id": "12345",
"submission_id": "sub_789"
},
"sla_deadline": null,
"reviewed_at": "2026-02-26T10:35:00Z",
"created_at": "2026-02-26T10:30:00Z"
},
"queue": {
"key": "form-submissions",
"name": "Form Submissions",
"review_type": "approval"
},
"reviews": [{
"result": ["approved"],
"data": {},
"feedback": "Good lead, add to sales pipeline",
"reviewer": { "name": "Sales Team", "type": "human" },
"created_at": "2026-02-26T10:35:00Z"
}]
}
}Tips
Test the webhook first
Submit a sample task to Datashift and complete a review so Zapier can detect all available fields.
Use Formatter for data transformation
Add Formatter steps to extract or transform data from the nested JSON payload before using in actions.
Store IDs for correlation
Include the original submission ID in metadata to link the review result back to the source record.
Consider Zapier Tables
Use Zapier Tables to store pending submissions and update them when reviews complete.