project.resource.linked
A place a creator picked on a connector becomes a resource of a project.
When this fires
A creator links a place from a connector: a channel, group or supergroup from the bot's picker, or any connector's own picker answering a link request. The connector writes the resource row and this event announces it. This creates the resource row; no project.resource.created precedes it.
Caveats
- Re-linking a place after an unlink creates a new resource row. The
project.resource.linkedyou receive carries a differentresource_idthan the earlierproject.resource.unlinked, and the unlinked row remains behind withspace: null. - Linking the same place to the same project twice announces nothing the second time: the connector's write is idempotent and answers the existing resource.
- A manual perk cannot be linked; it has no underlying place, so its
kindismanualand it arrives throughproject.resource.created.
Related events
project.resource.unlinked: paired transition.project.resource.created: the separate REST / MCP path for manual perks; not a predecessor of this event.
Header Parameters
t=<unix seconds>,v1=<hex>: the HMAC-SHA256 of "<t>.<raw body>" under the endpoint's secret. Verify it before acting, and refuse a t more than 300 seconds from now. During a secret rotation a v0= signature under the previous secret may precede v1=.
The event's ULID, bare. The envelope's id is the same ULID prefixed evt_, so strip the prefix before comparing. Deduplicate on it: a retry carries the same id.
The event name, the same as the envelope's type.
Always application/json.
Always Subscriby-Webhooks/1.0.
Request Body
application/json
The signed JSON envelope posted to your endpoint.
TypeScript Definitions
Use the request body type in TypeScript.
The envelope every event is delivered in.
Response Body
Example Requests
/project.resource.linkedHow is this guide?