Webhooks
Build-along · ~15 min at your own keyboard
A webhook is a doorbell: when something happens elsewhere (form submitted, payment received, job closed in your CRM), that service calls your URL and your workflow runs — no human noticing required. Deploy only the deterministic execution to the cloud; keep the LLM orchestration local where you can watch it.
The long version: Webhooks ↗
Mac: Mac: send a test from Terminal with curl -X POST -H 'Content-Type: application/json' -d '{"a":1}' YOUR_URL.
Windows: Windows: in PowerShell use curl.exe, not curl, which is an alias for another command. Escape the JSON quotes, or use Invoke-RestMethod.
Do this
0/5Checkpoints
- ▸You should now see a handler deployed with a URL.
- ▸You should now see a new row in your sheet that you did not add.
- ▸You should now see a clear error for the malformed payload.
- ▸You should now see one row after the same event was sent twice, and an unsigned request rejected.
The three ways this goes wrong
- The same event shows up as two rows. — Store each event's ID when you process it, and skip any ID you've already seen. Return success for the skipped duplicate so the source stops retrying.
- The handler runs but no row appears. — Read the platform log. The sheet permission or the field name is usually the cause.
- A bad payload is accepted silently. — Add a check that rejects missing fields with an error and writes a log line.
Share what happened
Paste the trigger source, proof the automatic run landed, the malformed-payload behavior, the duplicate-delivery result, and the signature check result (or a note that the source doesn't sign events).
Strip API keys, passwords, and tokens before you paste. Swap them for [KEY].
🔒 Don't paste confidential, personal-health, or payment info.