Overview
Webhook Integrations enable your Utari workers to respond automatically to events from external applications. When something happens in a third-party app—like a meeting ending, a form submission, or a payment completing—that app can trigger your Utari worker to process the information and take action, creating powerful automated workflows.
How Webhook Integrations Work
1. Event Occurs in External App
Something happens in the third-party application:
- Meeting recording completes (Fathom, Zoom)
- Form submitted (Typeform, Google Forms)
- Payment received (Stripe, PayPal)
- Email received (Gmail, SendGrid)
- Calendar event created (Google Calendar)
2. App Sends Webhook
The external app sends data to your Utari webhook URL with information about what happened.
3. Utari Worker Activated
Your configured worker receives the webhook data and executes your custom prompt.
4. Worker Takes Action
The worker processes the information and performs configured tasks:
- Extract and analyze data
- Update other systems
- Send notifications
- Create documents
- Trigger workflows
ℹ️ Note
Webhooks enable real-time automation—workers respond immediately when events occur, without manual intervention or scheduled checking.
Setting Up Webhook Integrations
Part 1: Configure Utari Worker
1. Choose or Create Worker
Select a worker for handling webhook events:
**Option A: Use Existing Worker** - Good for general-purpose automation - Can handle multiple webhook types**Option B: Create Dedicated Worker** (Recommended) - Specialized for specific webhook events - Tailored instructions for consistent handling - Easier to track and manage
Example: "Meeting Transcription Processor"
Purpose: Handle meeting recording webhooks from Fathom
2. Add Required Integration (If Needed)
If the webhook source requires API access:
1. Go to worker → Integrations → Browse Apps
2. Search for the service (e.g., "Fathom")
3. Click "Add" → "Create new connection"
4. Get API key from service:
- Log into third-party service
- Find API/Developer settings
- Generate new API key
- Copy key
5. Paste API key into Utari
6. Click "Connect"
7. Enable relevant tools
ℹ️ Note
Not all webhooks require integration. Some only send data without needing API access back to the service.
3. Create Webhook Trigger
Set up the webhook endpoint:
**Method 1: From Worker**
1. Go to worker → Triggers tab
2. Click "Create new trigger"
3. Select "Webhook trigger"
**Method 2: From Triggers Dashboard**
1. Go to Triggers → Add Trigger
2. Select "Webhook trigger"
3. Choose the worker
4. Configure Webhook Details
Trigger Name:
Give your webhook a descriptive name
Examples: "Fathom Meeting Processor" or "Typeform Submission Handler"
Description (Optional):
Brief description of what this webhook handles
Security:
Toggle "Require Secret Token" (Recommended)
- Enables security verification
- Ensures data comes from legitimate source
- Prevents unauthorized webhook calls
Webhook calls must include a secret token for authentication
5. Configure Prompt Template
Agent Instructions:
Define what your agent should do when a webhook is received**Basic Structure**:
Process the following [event type]. Extract:
- [Key information 1]
- [Key information 2]
- [Key information 3] Then:
1. [Action step 1]
2. [Action step 2]
3. [Action step 3] Do not ask for confirmation—execute automatically.
**Available Variables**:Use these placeholders in your template - they'll be replaced with actual webhook data:- `{{payload}}` - Full webhook payload as JSON
- `{{payload.field}}` - Specific field from payload (e.g., payload.title)
- `{{payload.nested.field}}` - Nested field access
- `{{timestamp}}` - When the webhook was received
- `{{trigger_name}}` - Name of this trigger**Example Template**:
Process the following meeting recording: Title: {{payload.meeting_title}}
Recording URL: {{payload.recording_url}} Please summarize the key points and action items.
**Model Selection**:Choose which model to use for processing webhooks- **Utari Basic** (Recommended for most webhook processing tasks)
6. Create Trigger
Click "Create Trigger"
You'll receive: - **Webhook URL**: Starts with `https://utari.up.railway.app/v1/triggers/...` - **Secret Token**: One-time display (if enabled)**IMPORTANT: Copy both immediately!**Example webhook URL:
https://utari.up.railway.app/v1/triggers/373a2...
The secret token should be included in the `x-webhook-secret` header
⚠️ Warning
Save the secret token now! It won't be shown again. You'll need to include it in the x-webhook-secret header when the third-party service calls your webhook.
Webhook URL and Secret Token
After creating your webhook trigger, you'll receive:
Webhook URL:
Configure your external service to send POST requests to this URL:
https://utari.up.railway.app/v1/triggers/[your-trigger-id]
Copy this URL and paste it into the webhook configuration of your third-party service (Fathom, Typeform, Stripe, etc.)
Secret Token:
If you enabled "Require Secret Token", include this in the x-webhook-secret header:
Example Request:
curl -X POST 'https://utari.up.railway.app/v1/triggers/373a2...' \
-H 'Content-Type: application/json' \
-H 'x-webhook-secret: sk_trigger_So1ECq1Dat9hxcPip0OMPq912fvL9rPwKbu8bph3sW8' \
-d '{"event": "example", "data": "your payload"}'
Part 2: Configure Third-Party App
1. Find Webhook Settings
In the third-party application:
Common locations:
- Settings → Webhooks
- Settings → Integrations → Webhooks
- Settings → API → Webhooks
- Developer → Webhooks
- Automation → Webhooks
2. Create New Webhook
1. Click "Add Webhook" or "Create Webhook"
2. Paste Utari webhook URL as destination
3. Select event types to trigger webhook
4. Configure additional settings (if available)
3. Select Trigger Events
Choose which events should activate the webhook:
Examples:
- Meeting completed
- Form submitted
- Payment received
- File uploaded
- Record created/updated Select only events you want to process
4. Add Secret Token (If Required)
Some services request authentication:
- Look for "Secret" or "Authentication" field
- Paste the secret token from Utari
- May be labeled as "Signing Secret" or "Verification Token"
- Should be sent in x-webhook-secret header Not all services support custom headers
5. Configure Data Scope
Select what data to send:
Common options:
- Full payload (all data)
- Transcript only
- Metadata only
- Custom fields Choose based on your processing needs
6. Save and Activate
Save the webhook configuration Webhook is now active!
Events will trigger your Utari worker automatically
Example Webhook Integrations
Meeting Recording Automation (Fathom Example)
Fathom Meeting Processor
Setup:
Worker: "Meeting Transcription Processor" Integration: Fathom (with API key) Trigger: Webhook - Meeting completed
Agent Instructions:
Process this completed meeting recording. The meeting data is: {{payload}} Steps:
1. Extract the transcript ID from the payload
2. Use the Fathom integration to retrieve full transcript
3. Analyze the transcript and extract:
- Key discussion points
- Action items and owners
- Decisions made
- Follow-up questions
4. Create a meeting summary document
5. Save to "Meeting Notes/[Date]/" folder
6. Send summary to #meetings Slack channel Execute automatically without asking for confirmation.
Result: Every meeting automatically processed and documented
Form Submission Processing
Typeform Lead Capture
Setup:
Worker: "Lead Qualification Bot" Integration: CRM (Salesforce/HubSpot) Trigger: Webhook - Form submitted
Agent Instructions:
Process this form submission: {{payload}} Extract:
- Name: {{payload.name}}
- Email: {{payload.email}}
- Company: {{payload.company}}
- Interest: {{payload.product_interest}} Actions:
1. Create new lead in CRM with extracted data
2. Research company on LinkedIn for additional context
3. Score lead based on:
- Company size
- Industry fit
- Product interest
4. If score > 7: Notify sales team via Slack immediately
5. If score 4-7: Add to nurture sequence
6. If score < 4: Add to general newsletter Log all actions in "Lead Processing Log" spreadsheet.
Result: Instant lead qualification and routing
Payment Processing
Stripe Payment Automation
Setup:
Worker: "Payment Processor" Integration: Email, Accounting system Trigger: Webhook - Payment succeeded
Agent Instructions:
Process successful payment: {{payload}} Payment details:
- Amount: {{payload.amount}}
- Customer: {{payload.customer_email}}
- Product: {{payload.product_name}} Tasks:
1. Send payment confirmation email to customer
2. Log transaction in accounting spreadsheet
3. If first payment: Send onboarding email sequence
4. If renewal: Extend subscription, send thank you
5. Notify finance team in Slack
6. Update customer record in CRM Execute immediately.
Result: Automatic payment processing and customer communication
Calendar Event Automation
Meeting Preparation Assistant
Setup:
Worker: "Meeting Prep Bot" Integration: Calendar, CRM, Email Trigger: Webhook - Event created with "Client Meeting" in title
Agent Instructions:
Prepare for upcoming meeting: {{payload}} Meeting details:
- Time: {{payload.start_time}}
- Attendees: {{payload.attendees}}
- Title: {{payload.title}} Preparation:
1. Extract company name from meeting title
2. Research company and attendees on LinkedIn
3. Check CRM for previous interactions
4. Gather relevant product materials
5. Create meeting prep document with:
- Attendee backgrounds
- Company context
- Previous conversation summary
- Suggested talking points
6. Email prep document to meeting owner Execute 24 hours before meeting.
Result: Automatic meeting preparation and briefings
Monitoring and Managing Webhooks
Viewing Webhook Activity
1. Access Trigger History
Go to: Worker → Triggers → Select webhook trigger or Go to: Triggers dashboard → Find webhook trigger
2. Review Recent Runs
See all webhook executions:
- Timestamp
- Status (success/failed)
- Execution duration
- Data received Click on individual run to see details
3. Examine Run Details
For each webhook execution: View:
- Prompt template used
- Payload data received
- Worker's response
- Actions taken
- Any errors Use this to debug and improve prompts
Refining Webhook Prompts
Be Specific
❌ Vague: "Process this data"
✅ **Specific**:
Process this meeting recording.
Extract transcript ID from payload.transcript_id.
Retrieve full transcript using Fathom integration.
Analyze for action items and decisions.
Create summary document.
Send to Slack #meetings channel.
Avoid Questions
❌ Asks for input:
I received meeting data. What should I do with it?
✅ **Direct execution**:
Process automatically without asking for confirmation.
Execute all steps immediately upon receiving webhook.
Handle Edge Cases
❌ Assumes success:
Get the transcript and summarize it
✅ **Handles errors**:
Get the transcript using the transcript_id.
If transcript not available yet, wait 30 seconds and retry.
If still unavailable after 3 attempts, log error and notify admin.
If successful, proceed with summarization.
Use Payload Variables
❌ Generic:
Process the meeting
✅ **Uses specific fields**:
Process meeting: {{payload.title}}
Date: {{payload.date}}
Duration: {{payload.duration}}
Participants: {{payload.attendees}} Use transcript_id: {{payload.transcript_id}} to retrieve full transcript
Webhook Security
Use Secret Tokens
Always enable secret token requirement to verify webhook authenticity
Validate Payload
Configure worker to validate expected data structure
Monitor Activity
Regularly review webhook logs for unusual patterns
Limit Scope
Only subscribe to events you actually need to process
HTTPS Only
Webhook URLs use HTTPS by default (utari.up.railway.app)
Error Handling
Include error handling in prompts for failed operations
Common Webhook Providers
Meeting & Communication
Supported Services:
- Fathom: Meeting recordings and transcripts
- Zoom: Meeting completed, recording available
- Google Meet: Recording uploaded
- Slack: Message posted, file shared
- Discord: Message sent, member joined
- Microsoft Teams: Meeting ended
Common Use Cases:
- Transcription and summarization
- Action item extraction
- Meeting notes distribution
- CRM updates from call notes
Forms & Surveys
Supported Services:
- Typeform: Form submitted
- Google Forms: Response received
- Jotform: Submission completed
- SurveyMonkey: Survey response
Common Use Cases:
- Lead capture and qualification
- Survey response analysis
- Customer feedback processing
- Registration automation
E-commerce & Payments
Supported Services:
- Stripe: Payment succeeded, subscription created
- PayPal: Payment received
- Shopify: Order created, fulfillment updated
- WooCommerce: New order
Common Use Cases:
- Order processing
- Payment confirmations
- Subscription management
- Customer onboarding
Project Management
Supported Services:
- Jira: Issue created/updated
- Asana: Task completed
- Trello: Card moved
- Monday.com: Item created
Common Use Cases:
- Status updates
- Cross-platform syncing
- Automated reporting
- Team notifications
CRM & Sales
Supported Services:
- Salesforce: Lead created, opportunity updated
- HubSpot: Contact created, deal stage changed
- Pipedrive: Deal moved
Common Use Cases:
- Lead enrichment
- Automated follow-ups
- Pipeline updates
- Sales notifications
Troubleshooting
Webhook not triggering
Check:
- Webhook URL copied correctly to third-party app
- URL starts with https://utari.up.railway.app/v1/triggers/
- Third-party app webhook is enabled/active
- Event type selected in third-party app
- Test webhook manually in third-party settings
- Check third-party app webhook logs for errors
- Verify worker is active in Utari
Worker asking for input instead of executing
Fix prompt to be more directive:
❌ Current: "What should I do with this data?"
✅ Updated: "Process automatically without confirmation. Execute these steps immediately: [specific steps]"
Add explicit instruction to not ask questions
Can't access specific data fields
Debug payload structure:
Check a recent webhook run in trigger history
View the raw payload received
Identify correct field names
Update prompt with correct variable syntax
Examples:
- {{payload.field}} for top-level fields
- {{payload.nested.field}} for nested fields
Note: If payload shows transcriptId but you used transcript_id, match the exact field name
Integration tools not available
Verify:
- Integration is connected in worker
- API key is valid and active
- Required tools are enabled
- Worker has permission to use integration
- Integration connection wasn't disconnected
Webhook timing issues
Consider:
- Some webhooks fire before data fully processed
- Add wait time: "Wait 30 seconds after receiving webhook"
- Implement retry logic for data retrieval
- Check if third-party offers "processing complete" event
Secret token authentication failing
Verify:
- Secret token is included in x-webhook-secret header
- Token was copied correctly (no extra spaces)
- Third-party service supports custom headers
- Token hasn't expired or been regenerated
If you lost the token, you'll need to create a new webhook trigger
Too many webhook triggers
Optimize:
- Filter events more specifically in third-party app
- Add conditional logic to prompt: "Only process if status equals completed"
- Consider batching: Process every N minutes instead of real-time
- Disable webhook temporarily if testing
Best Practices
Dedicated Workers
Create specialized workers for each webhook type for better control
Detailed Prompts
Write comprehensive prompts that handle all scenarios
Test Thoroughly
Test webhooks multiple times with different data before production
Monitor Regularly
Review webhook execution logs to catch issues early
Error Handling
Include fallback actions for when operations fail
Document Workflow
Keep notes on what each webhook does and why
Use Secret Tokens
Always enable secret token authentication
Iterative Improvement
Refine prompts based on actual execution results
Summary
You've successfully learned how to:
✅ Success
Set up webhook integrations between third-party apps and Utari
✅ Success
Configure workers to process webhook events automatically
✅ Success
Write effective webhook processing prompts with payload variables
✅ Success
Monitor and troubleshoot webhook executions
✅ Success
Apply security best practices with secret tokens
✅ Success
Create automated workflows triggered by external events
Webhook integrations transform Utari workers into event-driven automation engines that respond immediately to real-world triggers, creating seamless workflows across your entire application ecosystem.
Next Steps
Learn about other trigger types beyond webhooks
Explore available app integrations
Optimize workers for webhook processing
Connect additional services for webhook workflows
