Workflows
Automate your processes with powerful workflow automation and 40+ integrations
Introduction to Workflows
Workflows are automation pipelines that execute actions based on triggers. They allow you to automate repetitive tasks, integrate with external services, and create powerful automation sequences. The workflow system uses a visual node-based editor where you connect triggers to actions to build complex automation logic.
Understanding Workflows
Core Concepts
A workflow consists of three main elements:
- Triggers - Events that start the workflow (experiment changes, schedules, webhooks)
- Actions - Operations performed when the workflow runs (send notifications, call APIs, update records)
- Logic Nodes - Control flow elements like conditional branching
How Workflows Execute
- A trigger event occurs (e.g., experiment status changes)
- The system finds all active workflows matching the trigger conditions
- Nodes execute in topological order (respecting dependencies)
- Each node receives context data from previous nodes
- Results are stored for review and debugging
Creating a Workflow
To create a new workflow:
- Navigate to the Workflows section from the sidebar
- Click Create Workflow
- Give your workflow a descriptive name
- Add a trigger node to define what starts the workflow
- Add action nodes for the operations to perform
- Connect nodes by dragging from output to input handles
- Configure each node's settings
- Save and activate the workflow
Workflow Properties
| Property | Description |
|---|---|
| Name | Human-readable identifier (auto-generates URL slug) |
| Active | Enable/disable the workflow |
| Icon | Visual identifier for the workflow |
| Icon Color | Color coding for organization |
Trigger Nodes Reference
Triggers define what starts your workflow. Each workflow must have exactly one trigger node.
Manual Trigger
Start workflows manually with a button click.
| Property | Description |
|---|---|
| Description | "When clicking 'Execute workflow'" |
| Configuration | No additional configuration required |
Usage:
- Add a manual trigger node to your workflow
- Go to the workflow page
- Click Execute to run the workflow on demand
Use cases: Testing workflows, on-demand reports, manual data syncs.
Schedule Trigger
Run workflows automatically on a time-based schedule.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | schedule | Name to reference this trigger's data |
| Frequency | Enum | Yes | - | DAILY, WEEKLY, or MONTHLY |
| Hour | Number | Yes | 9 | Hour of day (0-23) |
| Day of Week | Number | Conditional | - | Day (0=Sunday to 6=Saturday), required if Weekly |
| Day of Month | Number | Conditional | - | Day (1-31), required if Monthly |
| Timezone | String | Yes | UTC | Timezone for schedule |
| Enabled | Boolean | Yes | true | Whether schedule is active |
Available Timezones:
- UTC
- America/New_York, America/Chicago, America/Denver, America/Los_Angeles
- Europe/London, Europe/Paris, Europe/Berlin
- Asia/Tokyo, Asia/Shanghai
- Australia/Sydney
Common Schedule Examples:
| Schedule | Frequency | Hour | Day |
|---|---|---|---|
| Daily at 9am | DAILY | 9 | - |
| Every Monday at 8am | WEEKLY | 8 | 1 (Monday) |
| First of month at midnight | MONTHLY | 0 | 1 |
Webhook Trigger
Trigger workflows via HTTP POST requests to a unique endpoint.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Require Signature | Boolean | No | true | Validate incoming requests with HMAC signature |
| Secret | String | Auto | - | Auto-generated secret (prefix: wh_sec_) |
Webhook URL Format:
{your-domain}/api/webhooks/{workflowId}Signature Validation:
- When enabled, include
X-Signatureheader with HMAC signature - Secret can be regenerated if compromised
Available Variables: All fields from the POST request body are available as variables in downstream nodes.
Experiment Trigger (Phlius)
Trigger workflows based on experiment and document events.
Source: Experiments
| Property | Type | Required | Description |
|---|---|---|---|
| Source | Enum | Yes | Set to experiments |
| From Status | Enum | No | Filter by previous status |
| To Status | Enum | No | Filter by new status |
| From Priority | Enum | No | Filter by previous priority |
| To Priority | Enum | No | Filter by new priority |
| From Area | Enum | No | Filter by previous growth area |
| To Area | Enum | No | Filter by new growth area |
| Owner ID | String | No | Filter by specific owner |
Status Values: IDEA, DESIGN, LIVE, ANALYSIS, WINNER, LOSER, INCONCLUSIVE
Priority Values: NO_PRIORITY, LOW, MEDIUM, HIGH, URGENT
Area Values: ACQUISITION, ACTIVATION, RETENTION, MONETIZATION
Available Variables for Experiments:
| Variable | Description |
|---|---|
{{experimentTitle}} | Name of the experiment |
{{currentStatus}} | Current experiment status |
{{transitionFrom}} | Previous status |
{{transitionTo}} | New status |
{{transitionFromPriority}} | Previous priority |
{{transitionToPriority}} | New priority |
{{transitionFromArea}} | Previous growth area |
{{transitionToArea}} | New growth area |
{{previousOwnerId}} | Previous owner's ID |
{{newOwnerId}} | New owner's ID |
Source: Documents
| Property | Type | Required | Description |
|---|---|---|---|
| Source | Enum | Yes | Set to docs |
| Event | Enum | No | created, deleted, published, unpublished, archived, or ALL |
| From Status | Enum | No | Filter by previous document status |
| To Status | Enum | No | Filter by new document status |
| Templates Only | Boolean | No | Only trigger for template documents |
| Creator ID | String | No | Filter by specific creator |
Available Variables for Documents:
| Variable | Description |
|---|---|
{{event}} | The event type that occurred |
{{docId}} | Document unique identifier |
{{docTitle}} | Document title |
{{transitionFromStatus}} | Previous document status |
{{transitionToStatus}} | New document status |
{{isTemplate}} | Whether document is a template |
{{createdById}} | Creator's user ID |
{{timestamp}} | ISO timestamp of the event |
Google Forms Trigger
Trigger workflows when a Google Form is submitted.
| Property | Description |
|---|---|
| Webhook URL | {your-domain}/api/webhooks/google-form?workflowId={workflowId} |
| Setup Required | Google Apps Script integration needed |
Available Variables:
| Variable | Description |
|---|---|
{{googleForm.formId}} | Unique form identifier |
{{googleForm.formTitle}} | Form title |
{{googleForm.respondentEmail}} | Email of respondent (if collected) |
{{googleForm.responseId}} | Unique response identifier |
{{googleForm.responses['Question Name']}} | Answer to specific question |
{{googleForm.timestamp}} | ISO timestamp of submission |
{{json googleForm.responses}} | All Q&A pairs as JSON |
Stripe Trigger
Trigger workflows on Stripe payment events.
| Property | Description |
|---|---|
| Webhook URL | {your-domain}/api/webhooks/stripe?workflowId={workflowId} |
| Setup | Configure webhook in Stripe Dashboard |
Available Variables:
| Variable | Description |
|---|---|
{{stripe.amount}} | Payment amount (in cents) |
{{stripe.currency}} | Currency code (e.g., usd) |
{{stripe.customerId}} | Stripe customer ID |
{{stripe.eventType}} | Event type (e.g., payment_intent.succeeded) |
{{json stripe}} | Full Stripe event payload as JSON |
Action Nodes Reference
Actions perform operations when workflows execute. Each action stores its output in a variable that downstream nodes can reference.
AI & Language Models
Anthropic (Claude)
Generate content using Claude AI models.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myAnthropic | Name to reference output |
| Credential | API Key | Yes | - | Anthropic API key |
| Model | Enum | Yes | - | Claude model to use |
| System Prompt | String | No | - | Instructions for Claude's behavior |
| User Prompt | String | Yes | - | The prompt to send (supports variables) |
Available Models: Claude 3.5 Sonnet, Claude 3 Opus, Claude 3 Sonnet, Claude 3 Haiku
Output: Response text available via {{myAnthropic.content}}
OpenAI (GPT)
Generate content using GPT models.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myOpenAI | Name to reference output |
| Credential | API Key | Yes | - | OpenAI API key |
| Model | Enum | Yes | - | GPT model to use |
| System Prompt | String | No | - | System instructions |
| User Prompt | String | Yes | - | The prompt to send |
Available Models: GPT-4o, GPT-4 Turbo, GPT-4, GPT-3.5 Turbo
Google Gemini
Generate content using Google's Gemini models.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myGemini | Name to reference output |
| Credential | API Key | Yes | - | Google AI API key |
| Model | Enum | Yes | - | Gemini model to use |
| System Prompt | String | No | - | System instructions |
| User Prompt | String | Yes | - | The prompt to send |
OpenRouter
Route to various AI models through OpenRouter.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myOpenRouter | Name to reference output |
| Credential | API Key | Yes | - | OpenRouter API key |
| Model | String | Yes | - | Any model available on OpenRouter |
| System Prompt | String | No | - | System instructions |
| User Prompt | String | Yes | - | The prompt to send |
Communication
Slack
Send messages to Slack channels or users.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | mySlack | Name to reference output |
| Webhook URL | String | Yes | - | Slack incoming webhook URL |
| Content | String | Yes | - | Message content (max 4000 chars, supports variables) |
Setup:
- Go to Slack Apps → Incoming Webhooks
- Create a new webhook for your channel
- Copy the webhook URL to the node configuration
Message Features:
- Supports variable interpolation:
{{experimentTitle}} - Objects are automatically stringified
- Supports Slack markdown formatting
Discord
Send messages to Discord channels.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myDiscord | Name to reference output |
| Webhook URL | String | Yes | - | Discord webhook URL |
| Content | String | Yes | - | Message content |
Setup:
- In Discord channel settings → Integrations → Webhooks
- Create webhook and copy URL
Microsoft Teams
Send messages to Teams channels.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myTeams | Name to reference output |
| Webhook URL | String | Yes | - | Teams incoming webhook URL |
| Content | String | Yes | - | Message content |
Setup:
- In Teams channel → Connectors → Incoming Webhook
- Configure and copy the webhook URL
Telegram
Send messages via Telegram bot.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myTelegram | Name to reference output |
| Bot Token | String | Yes | - | Telegram bot token |
| Chat ID | String | Yes | - | Target chat/group/channel ID |
| Content | String | Yes | - | Message content |
Gmail
Send emails or read inbox via Gmail.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myGmail | Name to reference output |
| OAuth Credential | OAuth2 | Yes | - | Gmail OAuth connection |
| Operation | Enum | Yes | - | send_email, read_emails, or get_email |
Send Email Options:
| Property | Type | Required | Description |
|---|---|---|---|
| To | String | Yes | Recipient email address |
| Subject | String | Yes | Email subject line |
| Body | String | Yes | Email body (supports HTML) |
Read Emails Options:
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Results | Number | No | 10 | Number of emails to fetch |
| Query | String | No | - | Gmail search query |
Get Email Options:
| Property | Type | Required | Description |
|---|---|---|---|
| Message ID | String | Yes | ID of specific email to retrieve |
Resend
Send transactional emails via Resend.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myResend | Name to reference output |
| Credential | API Key | Yes | - | Resend API key |
| To | String | Yes | - | Recipient email |
| From | String | Yes | - | Sender email (verified domain) |
| Subject | String | Yes | - | Email subject |
| Body | String | Yes | - | Email body (HTML supported) |
HTTP & Webhooks
HTTP Request
Make HTTP requests to any REST API.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | myApiCall | Name to reference output |
| Endpoint | String | Yes | - | URL to call (supports variables) |
| Method | Enum | Yes | - | GET, POST, PUT, PATCH, or DELETE |
| Body | String | Conditional | - | Request body (required for POST/PUT/PATCH) |
| Headers | Object | No | - | Custom request headers |
Body Format:
{
"title": "{{experimentTitle}}",
"status": "{{currentStatus}}",
"data": {{json fullObject}}
}Variable Interpolation:
- Simple values:
{{variableName}} - Nested access:
{{object.property}} - JSON stringify:
{{json objectName}}
Webhook Send
Send webhook payloads to external services.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| URL | String | Yes | Destination webhook URL |
| Payload | String | Yes | JSON payload to send |
CRM Integrations
HubSpot
Manage HubSpot CRM records.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | OAuth2/API Key | Yes | HubSpot authentication |
| Operation | Enum | Yes | Action to perform |
Operations: Create Contact, Update Contact, Create Company, Create Deal, etc.
Salesforce
Manage Salesforce CRM records.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | OAuth2 | Yes | Salesforce authentication |
| Operation | Enum | Yes | Action to perform |
Operations: Create Lead, Update Opportunity, Create Account, etc.
ActiveCampaign
Manage ActiveCampaign contacts and automations.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | ActiveCampaign API key |
| Operation | Enum | Yes | Action to perform |
Attio
Manage Attio CRM records.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | Attio API key |
| Operation | Enum | Yes | Action to perform |
Project Management
Jira
Create and manage Jira issues.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | OAuth2/API Key | Yes | Jira authentication |
| Operation | Enum | Yes | Action to perform |
Operations: Create Issue, Update Issue, Add Comment, Transition Status
Confluence
Create and update Confluence pages.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | OAuth2/API Key | Yes | Confluence authentication |
| Operation | Enum | Yes | Action to perform |
Operations: Create Page, Update Page, Add Comment
Linear
Manage Linear issues and projects.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | Linear API key |
| Operation | Enum | Yes | Action to perform |
Asana
Manage Asana tasks and projects.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | OAuth2 | Yes | Asana authentication |
| Operation | Enum | Yes | Action to perform |
ClickUp
Manage ClickUp tasks and spaces.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | ClickUp API key |
| Operation | Enum | Yes | Action to perform |
Monday.com
Manage Monday.com boards and items.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | Monday.com API key |
| Operation | Enum | Yes | Action to perform |
Data & Productivity
Google Sheets
Read from and write to Google Sheets.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | OAuth2 | Yes | Google OAuth connection |
| Spreadsheet ID | String | Yes | Google Sheets document ID |
| Operation | Enum | Yes | read, write, or append |
Airtable
Manage Airtable records.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | Airtable API key |
| Base ID | String | Yes | Airtable base identifier |
| Table | String | Yes | Table name |
| Operation | Enum | Yes | Action to perform |
Notion
Update Notion databases and pages.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | Notion integration token |
| Operation | Enum | Yes | Action to perform |
Automation Platforms
n8n
Trigger n8n workflows.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Webhook URL | String | Yes | n8n webhook trigger URL |
| Payload | String | No | JSON data to send |
Make (Integromat)
Call Make scenarios.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Webhook URL | String | Yes | Make webhook URL |
| Payload | String | No | JSON data to send |
Zapier
Trigger Zapier zaps.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Webhook URL | String | Yes | Zapier webhook URL |
| Payload | String | No | JSON data to send |
Trigger.dev
Execute Trigger.dev jobs.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | API Key | Yes | Trigger.dev API key |
| Job ID | String | Yes | Job identifier to trigger |
| Payload | String | No | JSON data to pass |
Other Integrations
GitHub
Create GitHub issues, PRs, and comments.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Credential | OAuth2 | Yes | GitHub OAuth connection |
| Operation | Enum | Yes | Action to perform |
Operations: Create Issue, Create PR, Add Comment
Phlius Action
Update experiments and internal records.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Operation | Enum | Yes | Internal operation to perform |
Gamma Action
Create Gamma presentations.
| Property | Type | Required | Description |
|---|---|---|---|
| Variable Name | String | Yes | Name to reference output |
| Operation | Enum | Yes | Gamma operation to perform |
Logic Nodes Reference
Logic nodes control the flow of your workflow with conditional branching and approval gates.
If/Else (Conditional Branching)
Add conditional logic to split workflow execution based on conditions.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | Yes | conditionResult | Name to store condition result |
| Left Value | String | Yes | - | First value to compare (supports variables) |
| Operator | Enum | Yes | equals | Comparison operator |
| Right Value | String | Conditional | - | Second value (not needed for unary operators) |
Available Operators:
| Operator | Description | Example |
|---|---|---|
equals | Exact match | {{status}} equals WINNER |
not_equals | Not equal | {{status}} not_equals LOSER |
greater_than | Numeric greater than | {{count}} greater_than 10 |
less_than | Numeric less than | {{count}} less_than 5 |
greater_than_or_equal | Greater or equal | {{score}} greater_than_or_equal 100 |
less_than_or_equal | Less or equal | {{score}} less_than_or_equal 50 |
contains | String contains | {{title}} contains Homepage |
not_contains | String doesn't contain | {{title}} not_contains Test |
starts_with | String starts with | {{name}} starts_with Exp- |
ends_with | String ends with | {{email}} ends_with @company.com |
is_empty | Value is null/empty | {{notes}} is_empty |
is_not_empty | Value exists | {{assignee}} is_not_empty |
Output Handles:
- True (green) - Connect nodes to execute when condition is true
- False (red) - Connect nodes to execute when condition is false
Example Conditions:
Condition: {{currentStatus}} equals WINNER
→ True branch: Send celebration message
→ False branch: Log for review
Condition: {{transitionToPriority}} equals URGENT
→ True branch: Alert leadership
→ False branch: Normal notification
Condition: {{experimentTitle}} contains Homepage
→ True branch: Notify design team
→ False branch: Continue normal flowApproval Gate
Pause workflow execution until a team member approves or rejects.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
| Variable Name | String | No | approval | Name to store approval result |
| Approver | String | Yes | - | Team member ID who can approve |
| Request Message | String | No | - | Message explaining what needs approval |
| Content to Review | String | No | - | Details/context for the approver |
| Expiration Days | Number | Yes | 7 | Days until request expires (1-7) |
Expiration Options: 1, 2, 3, or 7 days
Output:
{
"approved": true,
"reviewer": "[email protected]",
"timestamp": "2024-01-15T10:30:00Z"
}Workflow Behavior:
- Workflow pauses at approval node
- Approver receives notification
- Approver reviews and approves/rejects
- On approval: workflow continues to next node
- On rejection: workflow stops
Use Cases:
- Require approval before launching experiments
- Review AI-generated content before sending
- Gate deployments behind manager approval
Using Variables
Variable Syntax
Reference data from previous nodes using Handlebars syntax:
{{variableName}}Context Building
Each node adds its output to the workflow context:
- Trigger fires with initial data
- First action receives trigger data, adds its output
- Second action receives all previous data, adds its output
- And so on...
Variable Reference Patterns
| Pattern | Description | Example |
|---|---|---|
{{name}} | Simple variable | {{experimentTitle}} |
{{object.property}} | Nested property | {{claude.content}} |
{{json object}} | Stringify object | {{json fullResponse}} |
Variable Examples
Reference trigger data:
Experiment "{{experimentTitle}}" moved to {{currentStatus}}Reference previous action output:
AI generated: {{myAnthropic.content}}Build JSON payloads:
{
"experiment": "{{experimentTitle}}",
"summary": "{{aiSummary.content}}",
"metadata": {{json triggerData}}
}Managing Workflows
Activating/Deactivating
Toggle workflows on or off:
- Open the workflow
- Click the Active toggle
- Inactive workflows won't trigger
Filtering Workflows
Find workflows using filters:
- Search - Find by name
- Node Type - Filter by actions used (e.g., show all Slack workflows)
- Active Status - Show active only, inactive only, or all
Bulk Operations
Perform actions on multiple workflows:
- Select multiple workflows
- Delete selected workflows
- Activate/deactivate in bulk
Workflow Executions
Viewing Executions
Monitor workflow runs:
- Open a workflow
- Click Executions tab
- View list of all runs with status
Execution Details
Each execution shows:
- Status - Running, Success, or Failed
- Start Time - When execution began
- Duration - How long it took
- Node Results - Output from each node
- Errors - Any error messages if failed
Real-Time Monitoring
Watch workflows execute in real-time:
- Live status updates via streaming
- Node-by-node progress
- Immediate error notification
Debugging Failed Executions
When a workflow fails:
- Open the failed execution
- Find the node that failed (marked in red)
- View error message and stack trace
- Check node input to understand the context
- Fix the issue and re-run
AI-Powered Workflow Generation
Generate workflows from natural language:
- Open a workflow
- Click the AI Generate button
- Describe what you want in plain English
- AI creates the workflow structure
- Review and adjust as needed
Example prompts:
- "When an experiment wins, send a Slack message and create a Jira ticket"
- "Every Monday at 9am, send a summary email of active experiments"
- "When priority changes to urgent, notify the team in Discord"
AI generation costs 50 credits per request.
Credentials Management
Store credentials securely for integrations:
Adding Credentials
- In a node that requires authentication
- Click Add Credential
- Enter the required authentication details
- Credentials are encrypted and stored securely
Credential Types by Node
| Credential Type | Used By |
|---|---|
| API Key | Anthropic, OpenAI, Gemini, Slack, Linear, Airtable, Notion |
| OAuth2 | Gmail, Google Sheets, GitHub, HubSpot, Salesforce, Asana |
| Webhook URL | Slack, Discord, Teams, n8n, Make, Zapier |
Credential Security
- Credentials are encrypted at rest
- Never exposed in workflow outputs
- Can be shared across workflows in your organization
Webhooks
Receiving Webhooks
When using a webhook trigger:
- Add a webhook trigger node to your workflow
- Copy the unique webhook URL
- Configure external services to POST to this URL
- Incoming data becomes available as variables
Sending Webhooks
Use the HTTP Request or Webhook Send action to send webhooks:
- Add an HTTP action node
- Set method to POST
- Enter the destination URL
- Configure the payload body
- Add any required headers
Best Practices
Workflow Design
- Keep workflows focused on a single purpose
- Use descriptive names that explain what the workflow does
- Add comments to complex logic for future reference
- Test workflows before activating in production
Error Handling
- Expect external services to fail occasionally
- Use If/Else to check for error conditions
- Configure retry logic where appropriate
- Monitor executions for recurring failures
Performance
- Avoid unnecessary API calls
- Use filters in triggers to reduce executions
- Cache results when calling the same data multiple times
- Keep workflows simple when possible
Security
- Use credentials instead of hardcoding secrets
- Limit workflow access to necessary team members
- Review webhook URLs periodically
- Audit executions for unexpected behavior
Maintenance
- Document what each workflow does
- Review inactive workflows periodically
- Update workflows when integrated services change
- Test after making changes
Common Workflow Patterns
Notification on Status Change
Notify team when experiments reach important milestones:
Trigger: Experiment status → LIVE
Action: Send Slack message to #experiments channelWinner Celebration
Celebrate experiment wins:
Trigger: Experiment status → WINNER
Action 1: Send Slack message with confetti emoji
Action 2: Create Jira ticket for deployment
Action 3: Update Google Sheet with resultsUrgent Priority Alert
Alert on urgent experiments:
Trigger: Priority changes to URGENT
Action: Send Teams message to leadershipWeekly Digest
Send weekly experiment summaries:
Trigger: Schedule (Monday 9am)
Action 1: Fetch active experiments via HTTP
Action 2: Format summary with AI
Action 3: Send email to stakeholdersApproval Flow
Require approval before launching:
Trigger: Experiment status → DESIGN
Action 1: Send Slack notification
Action 2: Wait for approval
Action 3: (On approval) Move experiment to LIVEAI-Enhanced Notifications
Use AI to create smart summaries:
Trigger: Experiment status → WINNER
Action 1: Anthropic - Generate congratulations message
Action 2: Slack - Send AI-generated message
Action 3: Jira - Create deployment ticketMulti-Channel Alerts
Notify across multiple platforms:
Trigger: Priority changes to URGENT
Action 1: Slack - Alert #urgent channel
Action 2: Teams - Notify leadership
Action 3: Gmail - Send email to stakeholders