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_changed

An administrator changes an existing team member's office role to a different non-empty role.

account_role/role_granted

An 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_removed

An administrator removes a team member's office access entirely, dropping their role to none.

account_verification

account_verification/verification_recorded

The agent (with staff approval) records a verification for a client and marks it verified immediately, capturing the verifying staff actor.

account

account/account_self_provisioned

A 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_merged

Two duplicate accounts are merged into one (via the office accounts UI or the agent), folding the newer loser account into the older winner.

account/archived

An 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_failed

An account-scoped email fails to send because the email provider returned an error or the send threw.

account/email_sent

An account-scoped email (e.g. a verification-request email to a client) is successfully delivered via the email provider.

account/email_skipped

An account-scoped email is not actually delivered because email delivery is in dry-run/skip mode.

account/impersonation_started

The super admin begins impersonating an office account, setting the impersonation cookie so the office subtree renders as that account.

account/impersonation_stopped

The super admin ends an active impersonation session, clearing the impersonation cookie and returning to their own identity.

account/standing_changed

The agent (with staff approval) changes a client's standing to neutral or blacklist, where blacklist blocks the client from future rentals.

account/updated

Staff 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_approved

Staff approve a pending verification, recording the approving actor and an approval note on the account's verification.

account/verification_archived

A verification record is soft-deleted (archived) for an account, removing it from the active verification set.

account/verification_rejected

Staff reject a pending verification, clearing its verifier and recording the rejection note.

account/verification_requested

A 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_created

A 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_deleted

A 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/created

A 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/deleted

A 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/updated

A 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_filed

A damage or loss claim is filed against a reservation by staff or the agent, opening it in the notified state.

claim/claim_status_changed

The 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_updated

The 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_added

A 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_signed

A client signs an outbound or inbound inspection asset report, locking that report and storing the captured signature.

contracts

contracts/contract_uploaded

An 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_set

A 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_failed

An 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_sent

A transactional rental email tied to a reservation is successfully delivered via Resend during a reservation lifecycle transition.

emails/email_skipped

A 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

google/doc_created

The AI agent creates a Google Doc with a title and content via its googleDocCreate tool (a staff-approved write action).

google/sheet_updated

The AI agent overwrites a range in a Google Sheet via its googleSheetWrite tool (a staff-approved write action).

item

item/created

A new inventory item (catalog SKU) row is inserted, logged automatically by the items log trigger.

item/deleted

An inventory item row is hard-deleted, logged automatically by the items log trigger with the removed row in the payload.

item/updated

An inventory item row's fields change, logged automatically by the items log trigger with the old and new row in the payload.

kit

kit/created

A new kit (a bundled set of inventory) row is inserted, logged automatically by the kits log trigger.

kit/deleted

A kit row is hard-deleted, logged automatically by the kits log trigger with the removed row in the payload.

kit/updated

A kit row's fields change, logged automatically by the kits log trigger with the old and new row in the payload.

lead

lead/archived

A 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_added

A staff member posts an internal comment on a lead (leads are internal-only, so there is no visibility flag).

lead/created

A staff member creates a lead (inquiry) in the office, resolving its contact account and interest tags.

lead/purged

A 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/restored

A 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_changed

A staff member adds or removes interest tags on a lead, changing which categories it carries.

lead/updated

A staff member edits a lead's referrer, budget amount, or budget currency.

payment

payment/payment_recorded

A 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_created

A 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_changed

The 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/archived

A 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_up

A 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_returned

A unit is scanned in on the staff app during return, releasing the asset and possibly advancing the reservation toward returned/settled/closed.

reservation/comment_added

An internal or client-visible comment (including the create form's notes) is added to a reservation, recording its visibility.

reservation/created

A 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_changed

A 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_added

An item or space line is added to a reservation's cart, after which its pricing is recomputed.

reservation/item_qty_set

The quantity on a reservation line is changed, after which its pricing is recomputed.

reservation/item_removed

A line (or all lines of an item/space) is removed from a reservation's cart, after which its pricing is recomputed.

reservation/overdue_flagged

The 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/purged

An already-archived reservation is hard-deleted forever from the archived view in the tables console.

reservation/quote_sent

Staff (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/restored

A previously archived reservation is restored from the tables console (or by the agent), bringing it back into office views.

reservation/status_changed

A 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_forced

A 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_set

The document templates for a reservation are set to system, group, or custom mode, replacing its prior template picks.

reservation/unit_deselected

Staff remove a previously selected unit from a reservation line (only allowed while that unit is not physically out).

reservation/unit_selected

Staff assign a specific physical asset (unit) to a reservation line at the desk, recording any serial captured for it.

reservation/units_auto_assigned

Staff trigger auto-assign to fill a reservation's remaining selection slots with free serviceable units.

setting

setting/created

A 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/deleted

An office settings row is hard-deleted, logged automatically by the settings log trigger with the removed row in the payload.

setting/settings_rolled_back

A 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_updated

A 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/updated

An 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/archived

A staff member soft-deletes a link (from the links console or /office/tables), making the code 404 on scan while keeping it recoverable.

link/created

A staff member creates a link / QR redirect in the /office/links console, either with a supplied code or an auto-generated one.

link/expired

A staff member expires a link immediately from the /office/links console, setting its expiry to now so the code stops resolving.

link/purged

A staff member permanently deletes an already-archived link from the /office/tables console (a hard delete of a soft-deleted row).

link/restored

A staff member restores a previously archived link from the /office/tables console, bringing the code back into service.

link/updated

A 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_created

A staff member (or agent) takes a space out of supply for a date range, recording the blackout against that space.

blackout/blackout_deleted

A 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/created

A staff member creates a rentable space (studio/location) in the spaces admin, including its rates, deposit, and availability.

space/updated

A staff member edits an existing space's details in the spaces admin (skipped as a no-op when nothing actually changed).

sql

sql/sql_query

The 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_merged

Two 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_created

A staff member creates a new named communication template for a type, adding it alongside that type's seeded default.

template/template_system_set

A super admin promotes a named template to be its type's system default, repointing render-time resolution to it.

template/template_version_activated

A 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_saved

A 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_created

A staff member creates a new named template group (a reusable set of per-type template picks).

template_group/template_group_deleted

A staff member soft-deletes a template group, hiding it from listings while preserving any reservation that referenced it.

template_group/template_group_set

A staff member edits a template group, replacing its name and its type-to-template mappings.

units

units/link_assigned

A staff member generates a QR link for a physical unit, auto-minting a code that resolves to the unit's office page.

units/link_set

A staff member manually binds a specific (re)entered link code to a physical unit, e.g. when transferring an existing sticker.