What are Webhooks?
Webhooks are HTTP endpoints that allow external services to send events to your agent. When something happens in an external system (like a payment completing or an order shipping), that system can notify your agent in real-time.Think of it as:
A phone number for your agent - external services can “call” it when events happen
Built-in webhook support for seamless external integrations.
Why Webhooks?
Real-Time Events
Get notified instantly when events happen in external systems
Automated Actions
Automatically respond to external events without user interaction
Seamless Integration
Connect with Stripe, Shopify, GitHub, and any webhook-enabled service
Event-Driven
Build reactive agents that respond to real-world events
How Webhooks Work
1
External Event Occurs
Something happens: payment completes, order ships, PR merges, etc.
2
Service Sends HTTP Request
The external service (Stripe, Shopify) sends a POST request to your webhook URL
3
Your Webhook Receives Event
Your LuaWebhook’s execute function is called with the event data
4
Your Code Takes Action
Process the event: update orders, notify users, trigger jobs, etc.
5
Return Response
Return acknowledgment to the external service
Simple Example
Common Use Cases
- Payments
- E-commerce
- Development
- Custom
Stripe, PayPal, SquareHandle payment events:
- Payment succeeded
- Payment failed
- Refund processed
- Subscription updated
- Update order status
- Notify customer
- Trigger fulfillment
Event Subscriptions
Webhooks can also subscribe to platform events — real-time notifications from your messaging channels. When you send a template message via WhatsApp, for example, you can track whether it was delivered, read, or failed.Webhook event subscriptions for message delivery tracking. Currently supports WhatsApp status events; additional channels may be added in the future.
Available Event Types
How It Works
1
Create a webhook
Define a
LuaWebhook that handles delivery status events2
Subscribe to events
Use the CLI to subscribe your webhook to the event types you care about
3
Receive events
Your webhook’s
execute function is called with the event payload whenever a status update arrivesDelivery Semantics
Subscribed platform events are delivered at least once. Each event is durably queued and processed on isolated infrastructure, so a subscribed handler may run more than once for a single logical event:- Delivery is retried automatically — up to 3 attempts total, with a fixed 60-second wait between attempts, and only when an attempt fails.
- Because retries (and occasional redeliveries) can repeat an event, your handler’s side effects should be idempotent — safe to run twice.
event.execution:
event.execution is only present for durably-delivered platform events. It is undefined during local lua test / lua dev runs, which execute in-process. Very large event payloads (over 50,000 characters, which is rare) are delivered without the at-least-once retry guarantee.Example: Delivery Tracking Webhook
Managing Subscriptions via CLI
Adding Webhooks to Your Agent
Webhooks are added to your LuaAgent configuration:Webhook URLs
After deploying, you can call webhooks by ID or by name:agentIdis your agent identifier (e.g.,agent_abc123)webhookIdis the UUID shown when the webhook is createdwebhook-nameis the friendly name from your codelua push webhookprints both links
Best Practices
✅ Store User IDs in Metadata
✅ Store User IDs in Metadata
Always include user ID in payment/order metadataWhen creating payments or orders, store the Lua user ID:Then in your webhook, retrieve the specific user:
✅ Handle Errors Gracefully
✅ Handle Errors Gracefully
Don’t throw errors - return error status
✅ Return Quickly
✅ Return Quickly
Webhooks should respond within 5 secondsFor long-running work, queue a job:
Next Steps
Webhooks API Reference
Complete API documentation with examples
Agent Concept
Learn about LuaAgent configuration
Jobs Concept
Understand scheduled tasks
Skills Concept
Learn about skills and tools

