Every write in a workspace lands in its activity: who did it, when, through which door, and what it touched. Playcode adds its own facts too, like an email delivered or bounced. Activity on the Developers page shows the latest 20; eventSearch in the API reads it all.
Column
Shows
When
How long ago it happened
Type
What happened, like domain.updated
Who
You , a member's id, Playcode for its own facts, or "a former member"
Door
the app , the agent , the CLI , the API , MCP , or Playcode
Subject
The first characters of the changed resource's id
eventSearch reads the workspace's events, newest first. From the CLI: playcode events eventSearch --workspaceUid <workspace uid>.
Argument
What it does
workspaceUid
The workspace to read. Required
filter.types
Exact types, like domain.updated, or a family with a star, like domain.*
filter.subjectUid
Only events about this resource
orderBy
CREATED_DESC, newest first (the default), or CREATED_ASC
after
An event's id: only events past it, in the chosen order
first
How many: 50 by default, 100 at most
To follow the workspace without missing or repeating an event, read with CREATED_ASC and pass the last id you saw as after.
Field
What it is
uid
The event's id
type
What happened: <subject>.<verb>, like domain.connected
subjectType, subjectUid
The resource it is about
workspaceUid
The workspace it happened in
actorUserUid
Who acted; empty when Playcode acted, or after that person's account was erased
via
The door: ui, agent, cli, api, mcp, or platform
tokenUid
The access token that acted, when one did
requestId
The request that wrote it, for support
data
The call's arguments. Secret-looking fields read [redacted], and long values are cut
previous
For an .updated event, the changed fields' earlier values
createdAt
When it happened
Family
Types
Domains
domain.created, domain.updated, domain.connected, domain.disconnected, domain.moved, domain.transferred, domain.edgeChanged, domain.eligibilitySet, domain.verificationResent, domain.transferCodeRevealed, dnsZone.created, dnsZone.updated, dnsZone.deleted, dnsZone.restored
Projects
project.updated, projectFile.updated, projectFile.deleted, projectPublish.created, projectPublish.cancelled, commandRun.created, commandRun.cancelled, commandRun.deleted
Chats
chat.created, chatMessage.created
App email and settings
appMailRecipient.created, appMailRecipient.deleted, appMailSenderDomain.created, appMailHeld.delivered, appMailPolicy.resumed, appEnvVar.updated, appService.enabled, and the other appMail..., appEnvVar... and network... types
Email delivery, from Playcode
mail.delivered, mail.bounced, mail.complained
An app's video renders, from Playcode
job.completed, job.failed
Connections, from Playcode
connection.revoked
Tokens and webhooks
accessToken.created, accessToken.deleted, oauthApp.revoked, secretKey.rotated, webhookEndpoint.created, webhookEndpoint.updated, webhookEndpoint.deleted, webhookEndpoint.rotated, webhookDelivery.retried
Consent
proposal.created, proposal.declined
Reader
Sees
A member in the app
Every event of the workspace
An access token or a signed-in tool
The events of the families it holds a permission for: domains:* sees domain and DNS events, projects:* project events, chats:* chat events, mail:send email delivery events
A webhook endpoint
Every event that matches its types, whoever caused it
Events are kept 400 days.
Reads do not land here, and neither do refused calls.
A publish's result is not an event yet: projectPublish.created marks only its start.
The list on the Developers page shows the latest 20 events. Use eventSearch for the rest.
Was this page helpful? Yes No
Last reviewed October 10, 2026
Previous Webhooks