Catch webhooks from your other tools and turn each event into a record
Published 2026-10-19
Most tools you already pay for can tell another system when something happens. A payment goes through, a booking is made, a form on another service is filled in, an order ships. They do it with a webhook, which is a small web request sent to a URL you give them. The catch is that you need a URL that is always online and code behind it that knows what to do with each event. ChatGPT or Claude can explain webhooks and even write the handler. It cannot host the address that receives them.
What a chat cannot do alone
A chat only runs while you are typing. It has no public URL, so a payment tool has nowhere to send the event. Even if it did, nothing would be listening at 2am when an order arrives. Pasting events into a conversation by hand defeats the point, and the record disappears when the thread ends. Most people end up copying details between tools, or paying for a separate connector service for every pair of apps.
What your assistant builds with Sails
Sails is a coding agent you connect over MCP, with cloud deployment built in. Your assistant writes the code and Sails runs it in the cloud. For this job it builds three pieces.
A receiving endpoint on your domain. Each tool gets its own path, such as one for payments and one for bookings. The handler checks the signature the sending tool includes, so forged requests are rejected, then answers quickly so the sender does not retry.
A table of events. Every request becomes a row with the source, the event type, the time, the key fields you care about (customer, amount, item), and the raw payload kept for later. Repeat deliveries are matched by event ID and skipped, so a retry never creates a second record.
Follow-up actions as ordinary code. When a row matches a rule you set, plain shell code with no model in the loop takes the next step: it emails you about a failed payment, posts a large order to Slack, or adds a new booking to tomorrow's list. A short daily job can also email a summary of yesterday's events and flag any source that went quiet.
Why it works
The address is always up, so events arrive whether or not anyone has a chat open. Signature checks and duplicate handling are written once and run the same way every time. The table becomes your own history of what happened across tools, which you can search, export, or point your assistant at when you ask which customers paid twice this month. Because the follow-up steps are code rather than a prompt, they cost almost nothing to run and do not drift.
Hand it off
Copy this into your assistant:
Add Sails from https://sails.app/start. Build me a webhook receiver for the tools I already use. Create an endpoint on my domain with a separate path for each source, verify each sender's signature, and store every event in a table with source, type, time, key fields, and the raw payload, skipping duplicates by event ID. Add rules written as plain code with no model involved that email me about failed payments and post large orders to Slack, plus a daily email summarizing yesterday's events that flags any source with no events. Show me the URL to paste into each tool and how to test it. Ask me anything you need before you start.