Skip to content
FlintFlintby Torch
← LevelsBuilder · B12

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/5

Checkpoints

  • ▸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.