Receive webhooks with hooks
A hook delivers requests to a guest service without requiring the sender to hold a CE program token. Its URL is therefore a credential. Use the sender's own signature verification as well; possession of the CE hook URL does not establish that a request came from GitHub, Telegram or another named sender.
Prepare the receiver
Use an always-on computer when the receiver needs a reserved slot. Start the service on the chosen guest port and configure a narrow canonical path prefix, such as /webhooks/project. The prefix matches path segments, not arbitrary textual prefixes. Encoded path separators, traversal, backslashes and semicolon forms are refused. The query string is forwarded unchanged; the application must validate it.
Create the hook, keep its returned URL privately and configure it only in the intended sender. A small set of guest ports is reserved; using one returns 422. A hook is account-owned and may outlive the key that created it. It remains subject to computer/account restrictions, its own revocation and the application's authentication.
Delivery and rotation
When the computer is not running, delivery returns 503 rather than waking it. Configure the sender's documented retry behavior and make the application idempotent using the sender's event ID. CE does not turn a sender retry into exactly-once application execution.
Rotate the hook through its rotation operation, update the sender to the new credential and verify a signed test delivery. Do not expose the credential in request logs. Revoke the hook when it is no longer needed. Tier 1 permits ten hooks and Tier 2 fifty. Outgoing event webhooks are not available at launch.
Dory is in development; these pages describe the planned service and may change. Questions: support@computeengines.com.