lindy-webhooks-events
Guides implementation of inbound triggers and outbound HTTP callbacks for Lindy AI agents.
Install
mkdir -p .claude/skills/lindy-webhooks-events && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/6589" && unzip -o skill.zip -d .claude/skills/lindy-webhooks-events && rm skill.zipInstalls to .claude/skills/lindy-webhooks-events
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Configure Lindy AI webhook triggers, callback patterns, and event handling.Key capabilities
- →Configure inbound webhook triggers for agent activation
- →Implement outbound HTTP request actions for application feedback
- →Support async bidirectional communication via callback patterns
- →Filter incoming webhook payloads to prevent unnecessary agent triggers
- →Monitor agent task completion for observability pipelines
How it works
Lindy agents receive inbound POST requests to trigger workflows or perform outbound HTTP requests to external APIs, supporting async callbacks for two-way communication.
Inputs & outputs
When to use lindy-webhooks-events
- →Set up inbound webhook triggers
- →Build outbound event handlers
- →Implement async callback communication
- →Connect agent output to API endpoints
About this skill
Lindy Webhooks & Events
Overview
Lindy supports webhooks in two directions: Inbound (Webhook Received trigger wakes an agent) and Outbound (HTTP Request action calls your API). This skill covers both patterns, plus the callback pattern for async two-way communication.
Prerequisites
- Lindy account with active agents
- HTTPS endpoint for receiving callbacks (if using outbound/callback patterns)
- Completed
lindy-install-authsetup
Webhook Architecture
INBOUND (your system triggers Lindy):
[Your App] --POST--> https://public.lindy.ai/api/v1/webhooks/<id>
↓
[Lindy Agent Wakes Up]
↓
[Processes with LLM]
↓
[Executes Actions]
OUTBOUND (Lindy calls your system):
[Lindy Agent] --HTTP Request action--> https://your-api.com/endpoint
↓
[Your Handler]
CALLBACK (two-way async):
[Your App] --POST with callbackUrl--> [Lindy Agent]
↓
[Your App] <--POST to callbackUrl-- [Lindy: Send POST to Callback]
Instructions
Step 1: Create Webhook Received Trigger
-
In your agent, click the trigger node
-
Select Webhook Received
-
Lindy generates a unique URL:
https://public.lindy.ai/api/v1/webhooks/<unique-id> -
Click Generate Secret — copy immediately (shown only once)
-
Configure follow-up processing mode:
- Process in workflow: Handle in current workflow
- Spawn separate task: Each webhook creates a new task
- Discard follow-ups: Ignore subsequent requests while processing
Step 2: Access Webhook Data in Workflow
Reference incoming webhook data in any subsequent action field:
| Variable | Description | Example |
|---|---|---|
{{webhook_received.request.body}} | Full JSON payload | {"event": "order.created", ...} |
{{webhook_received.request.body.event}} | Specific field | "order.created" |
{{webhook_received.request.headers}} | All HTTP headers | {"content-type": "application/json"} |
{{webhook_received.request.query}} | URL query params | {"source": "stripe"} |
Step 3: Implement Webhook Sender
// webhook-sender.ts — Trigger Lindy agents from your application
interface LindyWebhookPayload {
event: string;
data: Record<string, unknown>;
callbackUrl?: string;
metadata?: Record<string, unknown>;
}
async function triggerLindy(payload: LindyWebhookPayload): Promise<void> {
const response = await fetch(process.env.LINDY_WEBHOOK_URL!, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.LINDY_WEBHOOK_SECRET}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(payload),
});
if (!response.ok) {
throw new Error(`Lindy webhook failed: ${response.status}`);
}
}
// Usage examples:
await triggerLindy({
event: 'customer.support_request',
data: { email: '[email protected]', subject: 'Billing question', body: '...' },
});
await triggerLindy({
event: 'lead.qualified',
data: { name: 'Jane Doe', company: 'Acme', score: 85 },
callbackUrl: 'https://api.yourapp.com/lindy/callback',
});
Step 4: Implement Callback Receiver
When you include a callbackUrl in your webhook payload, the agent can respond
using the Send POST Request to Callback action:
// callback-receiver.ts
import express from 'express';
const app = express();
app.use(express.json());
// Receive Lindy agent results
app.post('/lindy/callback', (req, res) => {
// Verify authenticity
const auth = req.headers.authorization;
if (auth !== `Bearer ${process.env.LINDY_WEBHOOK_SECRET}`) {
return res.status(401).json({ error: 'Unauthorized' });
}
// Respond immediately (Lindy expects a quick response)
res.json({ received: true });
// Process async
handleCallback(req.body);
});
async function handleCallback(data: any) {
console.log('Lindy callback:', data);
// Example: Agent analyzed a support ticket
const { classification, sentiment, draft_response, confidence } = data;
if (confidence > 0.9) {
await sendAutoResponse(draft_response);
} else {
await escalateToHuman(data);
}
}
Step 5: Configure HTTP Request Action (Outbound)
For Lindy agents that call your API as an action step:
- Add action: HTTP Request
- Configure:
-
Method: POST (or GET, PUT, DELETE)
-
URL:
https://api.yourapp.com/endpoint -
Headers (Set Manually):
Content-Type: application/json Authorization: Bearer {{your_api_key}} -
Body (AI Prompt mode):
Send the analysis result as JSON with fields: classification, sentiment, summary Based on: {{previous_step.result}}
-
Step 6: Add Trigger Filters
Prevent unnecessary agent triggers:
Filter: body.event equals "order.created"
AND body.data.amount greater_than 100
This ensures the agent only processes high-value orders, saving credits.
Event Patterns
Pattern: Webhook + Slack Notification
Webhook Received → Condition (classify event type)
→ "billing" → Search KB → Draft Reply → Send Email + Slack Alert
→ "technical" → Agent Step (investigate) → Create Ticket → Slack Alert
→ "other" → Forward to team inbox
Pattern: Webhook + Callback
Webhook Received (with callbackUrl) → Process Data → Run Code
→ Send POST Request to Callback (returns results to caller)
Pattern: Webhook + Multi-Agent
Webhook Received → Agent Send Message (to Research Lindy)
→ Research Lindy completes → Agent Send Message (to Writer Lindy)
→ Writer Lindy completes → Send Email with final output
Monitoring Triggers
Lindy provides built-in monitoring triggers:
- Task Completed: Fires when an agent completes a task
- Use this to build observability pipelines: Agent completes → log to sheet → alert on failures
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| 401 on webhook send | Wrong or missing Bearer token | Verify secret matches Generate Secret value |
| Webhook URL returns 404 | Agent deleted or URL changed | Re-copy URL from agent trigger settings |
| Callback not received | callbackUrl unreachable | Ensure HTTPS, public endpoint, no firewall |
| Duplicate processing | Webhook retried | Implement idempotency with event IDs |
| Payload too large | Body exceeds limit | Reduce payload size, send references not data |
Security
- Always use HTTPS for webhook URLs
- Generate and verify webhook secrets on every request
- Rotate secrets every 90 days
- Log all webhook attempts (including rejected ones)
- Rate limit your webhook sender to prevent flooding
Resources
Next Steps
Proceed to lindy-performance-tuning for agent optimization.
When not to use it
- →When payload size exceeds limits
- →When HTTPS is not available for callback endpoints
Prerequisites
Limitations
- →Webhook retries can cause duplicate processing
- →Payloads exceeding size limits are rejected
How it compares
This skill provides a native integration for agent-specific webhook triggers and callback handling rather than requiring manual API server implementation.
Compared to similar skills
lindy-webhooks-events side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| lindy-webhooks-events (this skill) | 1 | 26d | Caution | Intermediate |
| telegram-bot-builder | 106 | 6mo | Review | Intermediate |
| dev-browser | 53 | 4mo | Review | Intermediate |
| mcp-integration | 21 | 8mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
telegram-bot-builder
davila7
Expert in building Telegram bots that solve real problems - from simple automation to complex AI-powered bots. Covers bot architecture, the Telegram Bot API, user experience, monetization strategies, and scaling bots to thousands of users. Use when: telegram bot, bot api, telegram automation, chat bot telegram, tg bot.
dev-browser
SawyerHood
Browser automation with persistent page state. Use when users ask to navigate websites, fill forms, take screenshots, extract web data, test web apps, or automate browser workflows. Trigger phrases include "go to [url]", "click on", "fill out the form", "take a screenshot", "scrape", "automate", "test the website", "log into", or any browser interaction request.
mcp-integration
anthropics
This skill should be used when the user asks to "add MCP server", "integrate MCP", "configure MCP in plugin", "use .mcp.json", "set up Model Context Protocol", "connect external service", mentions "${CLAUDE_PLUGIN_ROOT} with MCP", or discusses MCP server types (SSE, stdio, HTTP, WebSocket). Provides comprehensive guidance for integrating Model Context Protocol servers into Claude Code plugins for external tool and service integration.
n8n-workflow-patterns
czlonkowski
Proven workflow architectural patterns from real n8n workflows. Use when building new workflows, designing workflow structure, choosing workflow patterns, planning workflow architecture, or asking about webhook processing, HTTP API integration, database operations, AI agent workflows, or scheduled tasks.
n8n-code-javascript
czlonkowski
Write JavaScript code in n8n Code nodes. Use when writing JavaScript in n8n, using $input/$json/$node syntax, making HTTP requests with $helpers, working with dates using DateTime, troubleshooting Code node errors, or choosing between Code node modes.
n8n-expression-syntax
czlonkowski
Validate n8n expression syntax and fix common errors. Use when writing n8n expressions, using {{}} syntax, accessing $json/$node variables, troubleshooting expression errors, or working with webhook data in workflows.