Bobbins¶
A bobbin is the plugin for one outside service. It holds what hookspool needs to take that service's webhooks and turn
them into work: how the sender proves itself, what its events group on, and sometimes a processor that asks the service
what changed. Its name is <vendor>.<product>: the company that runs the service, then the product or API surface whose webhooks it
receives (google.gmail, atlassian.trello, github.repo; hookspool. is reserved for the generic ones shipped with
hookspool). A deployment turns one on with a [bobbins.<instance>] table that names it (bobbin = "google.gmail"); see
the configuration reference.
A service with no push of any kind gets a poll bobbin. Instead of a source, it has a poller.py that the
dispatcher's clock starts every every_s seconds. It has no URL and asks the service what changed
(Poll bobbins). A service that can push always gets a webhook bobbin, never a poll.
The catalogue¶
Each name links to the bobbin's own README, which lists its settings, secrets, outputs and limits. SETUP.md in the
same directory is the step-by-step setup for a person, and AGENTS.md is the same procedure for an agent.
| bobbin | what it does |
|---|---|
atlassian.trello |
Trello board webhook: card and board actions, signed with HMAC-SHA1 over the body and the callback URL |
cloudflare.notifications |
Cloudflare Notifications webhook destination: one JSON POST per alert, the shared secret sent in the cf-webhook-auth header |
courtlistener.alerts |
CourtListener alert webhooks: docket, search, RECAP fetch and pray-and-pay events, authenticated by a secret token in the callback URL |
finnhub.earnings |
Finnhub earnings webhook: an announcement per watched symbol, verified by a shared secret header |
github.repo |
GitHub repository webhook: HMAC-SHA256 over the raw body; pings are acknowledged and not enqueued |
google.calendar |
Google Calendar push (watch channel): conflicts, meeting-brief requests and a change notice for one calendar |
google.contacts |
Google Contacts (People API), polled with a sync token because the API has no push: which contacts changed or were deleted, by resource name only |
google.drive |
Google Drive push (watch channel): file changes, new files and files shared with the account, by id, never by content |
google.gmail |
Gmail push (Cloud Pub/Sub): new mail in the owner's and an optional assistant's mailbox, read from Gmail's history |
google.meet |
Google Meet events (Workspace Events API over Cloud Pub/Sub): a call started, and who attended once it ended |
google.tasks |
Google Tasks (polled; the API has no push): tasks added, edited, completed or deleted, by id, never by content |
hookspool.webhook |
Any web service that sends a signed or tokened JSON POST: the template source, configured entirely by settings |
kaneo.projects |
Kaneo generic webhook: project and task events, HMAC-SHA256 of the JSON body in X-Kaneo-Signature |
plaid.items |
Plaid webhooks: items, transactions and link events, signed with an ES256 JWT checked against Plaid's published keys |
sec.edgar |
SEC EDGAR filings: new 8-K, Form 4 and other filings for the companies you follow (Atom feeds, polled) |
zoom.meetings |
Zoom event subscriptions: meeting and webinar events, signed with a timestamped HMAC, and the endpoint URL validation |
The rows are the manifests' own summary lines. A pull request that adds a bobbin does not touch this page; the
maintainer regenerates the table when merging it. hookspool bobbin list prints the same list from the installed copy,
and hookspool bobbin show <vendor>.<product> prints one bobbin's provider pages and settings.
In this folder¶
| page | what is in it |
|---|---|
| Writing a bobbin | the layout, the scaffold, the source (config template or code plugin), captures and the checks |
The hookspool.webhook bobbin |
covering a service that has no bobbin of its own, and turning that into a dedicated bobbin |
| Mail rules and rule packs | recognising mail from services that only send email (orders, reservations, court alerts) with the google.gmail bobbin |
| Private bobbins and hooks | changing behaviour without editing a built-in bobbin |
| Reviewing a bobbin | hookspool bobbin check, what green means, and what a maintainer still checks |