Event keys.
Every event the log records, keyed by its entity_type/action— what each row on the logs page means and when it's written. 96 event types across 27 entities.
account_role
account_role/role_changedAn administrator changes an existing team member's office role to a different non-empty role.
account_role/role_grantedAn office role is granted to an email/account, either when an administrator adds or promotes a team member, or when the first local super admin is bootstrapped on sign-in.
account_role/role_removedAn administrator removes a team member's office access entirely, dropping their role to none.
account_verification
account_verification/verification_recordedThe agent (with staff approval) records a verification for a client and marks it verified immediately, capturing the verifying staff actor.
account
account/account_self_provisionedA first-time client signs in with Google and a brand-new account is auto-created for them, leaving a self-serve signup trail attributed to the new account itself.
account/accounts_mergedTwo duplicate accounts are merged into one (via the office accounts UI or the agent), folding the newer loser account into the older winner.
account/archivedAn account is soft-deleted by the agent (via the generic deleteRecord op or the dedicated deleteAccount tool), hiding it from every office view while remaining restorable.
account/email_failedAn account-scoped email fails to send because the email provider returned an error or the send threw.
account/email_sentAn account-scoped email (e.g. a verification-request email to a client) is successfully delivered via the email provider.
account/email_skippedAn account-scoped email is not actually delivered because email delivery is in dry-run/skip mode.
account/impersonation_startedThe super admin begins impersonating an office account, setting the impersonation cookie so the office subtree renders as that account.
account/impersonation_stoppedThe super admin ends an active impersonation session, clearing the impersonation cookie and returning to their own identity.
account/standing_changedThe agent (with staff approval) changes a client's standing to neutral or blacklist, where blacklist blocks the client from future rentals.
account/updatedStaff save edits to a client's profile in the office (display name, phone, locale, standing, company, tax id, tags, or internal notes) and at least one field actually changed.
account/verification_approvedStaff approve a pending verification, recording the approving actor and an approval note on the account's verification.
account/verification_archivedA verification record is soft-deleted (archived) for an account, removing it from the active verification set.
account/verification_rejectedStaff reject a pending verification, clearing its verifier and recording the rejection note.
account/verification_requestedA verification record (email, phone, or ID document) is created for an account, marking that the client has been asked to verify that item.
blackout
blackout/blackout_createdA staff member (or agent) marks one or more gear units unavailable for a date range; one log row records the whole batch, keyed to the parent item.
blackout/blackout_deletedA staff member (or agent) removes an asset (gear unit) blackout; the row is hard-deleted and its prior contents are captured in the log payload.
asset
asset/createdA new physical unit row is inserted into the inventory table (named assets after the 0002 units-to-assets rename), logged automatically by the unit log trigger.
asset/deletedA physical unit row is hard-deleted from the inventory table, logged automatically by the unit log trigger with the removed row in the payload.
asset/updatedA physical unit row's fields change (e.g. status, condition, location), logged automatically by the unit log trigger with the old and new row in the payload.
claim
claim/claim_filedA damage or loss claim is filed against a reservation by staff or the agent, opening it in the notified state.
claim/claim_status_changedThe agent moves an existing claim to a new status (draft, notified, accepted, disputed, or closed), with closing the last open claim potentially settling the reservation.
client_profile
client_profile/client_file_updatedThe agent (with staff approval) updates a client's internal file, replacing the internal notes and/or tags on their client profile.
asset_report
asset_report/inspection_photo_addedA condition photo is uploaded and attached to a draft outbound or inbound inspection report (creating the draft if the photo arrives first).
asset_report/inspection_signedA client signs an outbound or inbound inspection asset report, locking that report and storing the captured signature.
contracts
contracts/contract_uploadedAn executed contract PDF is uploaded for a reservation, pointing the reservation at the new file and recording whether it replaced a prior one.
setting
setting/variant_setA staff member selects a different copy variant for a marketing-site section, appending a new copy.variants setting revision recording which registry-validated variant that section key renders.
emails
emails/email_failedAn attempt to send a reservation email errors out (Resend returns an error or rendering throws); the failure is reported and logged but never breaks the reservation transition.
emails/email_sentA transactional rental email tied to a reservation is successfully delivered via Resend during a reservation lifecycle transition.
emails/email_skippedA reservation email is intentionally not sent because delivery is in safe/dry-run mode (no API key, EMAIL_DRY_RUN on, or off-production), so its payload is logged instead of mailed.
google/doc_createdThe AI agent creates a Google Doc with a title and content via its googleDocCreate tool (a staff-approved write action).
google/sheet_updatedThe AI agent overwrites a range in a Google Sheet via its googleSheetWrite tool (a staff-approved write action).
item
item/createdA new inventory item (catalog SKU) row is inserted, logged automatically by the items log trigger.
item/deletedAn inventory item row is hard-deleted, logged automatically by the items log trigger with the removed row in the payload.
item/updatedAn inventory item row's fields change, logged automatically by the items log trigger with the old and new row in the payload.
kit
kit/createdA new kit (a bundled set of inventory) row is inserted, logged automatically by the kits log trigger.
kit/deletedA kit row is hard-deleted, logged automatically by the kits log trigger with the removed row in the payload.
kit/updatedA kit row's fields change, logged automatically by the kits log trigger with the old and new row in the payload.
lead
lead/archivedA staff member soft-deletes a lead (via the lead view or the /office/tables console), hiding it from every office view while keeping it recoverable.
lead/comment_addedA staff member posts an internal comment on a lead (leads are internal-only, so there is no visibility flag).
lead/createdA staff member creates a lead (inquiry) in the office, resolving its contact account and interest tags.
lead/purgedA staff member permanently deletes an already-archived lead from the /office/tables console (a hard delete that only ever removes a soft-deleted row).
lead/restoredA staff member restores a previously archived lead from the /office/tables console, clearing its deleted_at and bringing it back into office views.
lead/tags_changedA staff member adds or removes interest tags on a lead, changing which categories it carries.
lead/updatedA staff member edits a lead's referrer, budget amount, or budget currency.
payment
payment/payment_recordedA payment (deposit hold, capture, balance, or refund) is recorded against a reservation by staff or the agent, which can also advance the reservation's lifecycle.
quote
quote/quote_createdA quote is sent to the client and an immutable pending snapshot of the quoted amounts and channels is recorded for the reservation's quote history.
quote/quote_status_changedThe reservation's open pending quote reaches a terminal status, set to accepted when the client accepts in the portal, rejected when the client requests a change, or cancelled when the reservation is cancelled.
reservation
reservation/archivedA reservation is soft-deleted (from the tables console or by the agent), hiding it from every office view while keeping it restorable.
reservation/asset_picked_upA unit is scanned out on the staff app during pickup, binding the asset to the reservation (the first scan stamps the actual pickup time).
reservation/asset_returnedA unit is scanned in on the staff app during return, releasing the asset and possibly advancing the reservation toward returned/settled/closed.
reservation/comment_addedAn internal or client-visible comment (including the create form's notes) is added to a reservation, recording its visibility.
reservation/createdA new reservation is created (via the desk create form or the agent), born in the drafted stage with its reference and line count.
reservation/dates_changedA reservation's pickup/return window is edited while it is still unlocked, after which its pricing is recomputed for the new rental days.
reservation/item_addedAn item or space line is added to a reservation's cart, after which its pricing is recomputed.
reservation/item_qty_setThe quantity on a reservation line is changed, after which its pricing is recomputed.
reservation/item_removedA line (or all lines of an item/space) is removed from a reservation's cart, after which its pricing is recomputed.
reservation/overdue_flaggedThe system cron detects a confirmed reservation past its return time plus grace period and flags it overdue once, recording an advisory late-fee estimate.
reservation/purgedAn already-archived reservation is hard-deleted forever from the archived view in the tables console.
reservation/quote_sentStaff (or the agent) sends a quote to the client over the selected channels, snapshotting the quoted amounts as a pending quote in the reservation's history.
reservation/restoredA previously archived reservation is restored from the tables console (or by the agent), bringing it back into office views.
reservation/status_changedA reservation advances or moves through its lifecycle (drafted -> quoted -> accepted -> confirmed -> returned -> settled -> closed, or to cancelled), recording the from/to stages of the transition.
reservation/status_forcedA super admin overrides a lifecycle gate to push a reservation to a stage the normal flow can't reach, logged separately with the override reason alongside the standard status-change row.
reservation/template_selection_setThe document templates for a reservation are set to system, group, or custom mode, replacing its prior template picks.
reservation/unit_deselectedStaff remove a previously selected unit from a reservation line (only allowed while that unit is not physically out).
reservation/unit_selectedStaff assign a specific physical asset (unit) to a reservation line at the desk, recording any serial captured for it.
reservation/units_auto_assignedStaff trigger auto-assign to fill a reservation's remaining selection slots with free serviceable units.
setting
setting/createdA new settings key/value revision row is inserted (every pricing, schedule, hero, or rollback save appends a row), fired automatically by the setting_log database trigger since the settings table is append-only.
setting/deletedAn office settings row is hard-deleted, logged automatically by the settings log trigger with the removed row in the payload.
setting/settings_rolled_backA staff member rolls a setting back to an earlier revision from the pricing history page, which inserts a fresh row copying the older value (the rollback is itself reversible).
setting/settings_updatedA staff member saves a settings change in the office (pricing config, the home hero/appearance editor, or the studio schedule), recorded at the application level with the changed keys and a note.
setting/updatedAn office settings row is changed, logged automatically by the settings log trigger with the old and new values; this is how pricing, schedule, and appearance edits are recorded.
link
link/archivedA staff member soft-deletes a link (from the links console or /office/tables), making the code 404 on scan while keeping it recoverable.
link/createdA staff member creates a link / QR redirect in the /office/links console, either with a supplied code or an auto-generated one.
link/expiredA staff member expires a link immediately from the /office/links console, setting its expiry to now so the code stops resolving.
link/purgedA staff member permanently deletes an already-archived link from the /office/tables console (a hard delete of a soft-deleted row).
link/restoredA staff member restores a previously archived link from the /office/tables console, bringing the code back into service.
link/updatedA staff member edits a link's target URL or expiry in the /office/links console (a no-op when neither changed; asset-bound codes are administrator-only).
blackout
blackout/blackout_createdA staff member (or agent) takes a space out of supply for a date range, recording the blackout against that space.
blackout/blackout_deletedA staff member (or agent) removes a space blackout; the row is hard-deleted and its prior contents are captured in the log payload.
space
space/createdA staff member creates a rentable space (studio/location) in the spaces admin, including its rates, deposit, and availability.
space/updatedA staff member edits an existing space's details in the spaces admin (skipped as a no-op when nothing actually changed).
sql
sql/sql_queryThe AI agent runs a read-only SQL statement against the live database via its sqlQuery tool; every query is logged verbatim along with the row count returned.
tag
tag/tags_mergedTwo tags are merged via the office tags UI, repointing every lead from the newer loser tag onto the older winner tag and soft-deleting the loser.
template
template/template_createdA staff member creates a new named communication template for a type, adding it alongside that type's seeded default.
template/template_system_setA super admin promotes a named template to be its type's system default, repointing render-time resolution to it.
template/template_version_activatedA staff member saves a new EN or ES version of a template and promotes it to be the active (live) version for that template and locale.
template/template_version_savedA staff member saves a new EN or ES body/subject version of a template as a draft without making it the live one.
template_group
template_group/template_group_createdA staff member creates a new named template group (a reusable set of per-type template picks).
template_group/template_group_deletedA staff member soft-deletes a template group, hiding it from listings while preserving any reservation that referenced it.
template_group/template_group_setA staff member edits a template group, replacing its name and its type-to-template mappings.
units
units/link_assignedA staff member generates a QR link for a physical unit, auto-minting a code that resolves to the unit's office page.
units/link_setA staff member manually binds a specific (re)entered link code to a physical unit, e.g. when transferring an existing sticker.