Every account change, written down.
Account Diary is the always-on logbook that backs the rest of Lyra. Manual notes from your team, automatic captures from Lyra tools, change-history events from Google, and Slack messages from the channels you configure — every entry attributed, every entry timestamped, every entry searchable. The Lyra Agent reads it for context. It does not write.
Four sources, one unified timeline.
Each Lyra account writes to one diary. Manual notes go in via the API or UI. Tool actions write themselves on execute. Slack messages sync daily. Google Ads change-history events stream in. All four land in `account_diary_entries` with the same attribution shape.
- manual · client_call · performance_note
- tool_action
- slack_message
- change_history_*
- created_by
- source_user_name
- created_at + history
- By type · source · actor
- By importance level
- By date range
An audit trail you can search.
Below is a sample of recent entries across one agency portfolio. Different sources, different actors, one timeline. The badges show importance level; the type chip shows where the entry came from.
One table, four ways in.
All entries live in a single `account_diary_entries` table with a consistent attribution shape. The differences are upstream — how they get there, who writes them, when they fire.
Notes you write.
Free-text entries from your team via the diary UI or API. Title, content, importance level, optional decision metadata for entries you want flagged as a decision.
Lyra tools log themselves.
When a Lyra tool executes a meaningful action (Budget Pacing re-paces caps, Auto-Apply Guard reverts a Google auto-apply, Search Terms stages a negatives batch), it writes a tool_action entry with reasoning.
Channel messages, captured.
Configure a Slack channel per client; the daily sync captures recent messages with `source_user_name` set to the Slack author. Useful for tying client questions and decisions back to a specific account.
Google's audit log, mirrored.
Google Ads change-history events (budget edits, status flips, bid-strategy changes, auto-apply executions) stream into the diary with `source_user_name` set to the Google user — including 'google · auto-apply' for system-driven changes.
Who wrote it · always answerable.
Every entry has `created_by` (Lyra user or 'system'), `source_user_name` (Slack/Google user where applicable), and `created_at` timestamps. Edits update an `account_diary_entry_history` row so the original is never lost.
Context for the chat, not authorship.
The Lyra Agent reads diary entries when answering account questions in chat — "remember when we restructured Brand · Search?" resolves to a real entry. The Agent does not write diary entries; that line stays human or tool-action.
Account Diary replaced the shared sheet . The strategist had been pulling Change History exports every Monday by hand — now it's automatic, queryable, and audit-grade. Two analysts run the portfolio that used to need three.
The honest answers about Diary.
What gets captured?
Four sources: (1) manual notes from your team via API or UI, (2) tool actions auto-written by Lyra tools when they execute, (3) Slack messages from channels you've configured (daily 03:45 UTC sync), (4) Google Ads change-history events (budget edits, status flips, bid-strategy changes, auto-apply executions).
Does the Lyra Agent write entries?
No. The Agent reads the diary for account context (so questions like "remember when we paused that ad group?" resolve to real entries) but it doesn't write diary entries itself. Writing stays human-only or tool-action — keeps authorship clear and avoids the risk of synthesising history.
How is attribution tracked?
Every entry has `created_by` (Lyra user or 'system' for tool actions), `source_user_name` (Slack/Google user where applicable), and timestamps. If an entry is edited, the original is preserved in `account_diary_entry_history` — nothing silently overwritten.
How do I find a specific entry?
Filter by entry type, source, actor (created_by or source_user_name), importance level (normal / important / critical), or date range. Common patterns: 'all decisions logged by a specific analyst this quarter', 'all change-history events on a customer ID in the last 14 days', 'all critical entries this week'.
How does Slack capture work?
You configure one or more Slack channels per client account. The daily 03:45 UTC sync pulls recent messages; each becomes an entry with `source_user_name` set to the Slack author and the Slack timestamp used as the dedup key. Dedup means re-running the sync is idempotent — the same message never lands twice.
What's the retention?
Indefinite by design — entries are audit-grade. The diary is meant to be the single source of truth for 'what happened on this account', so we don't expire or archive entries on a TTL. Edits are tracked in `account_diary_entry_history`; the original content is always retrievable.
Run the audit.
Keep the findings.
Connect your account and let Lyra run its 18 tools for 14 days. If the projected waste recovery isn't worth at least 10× the $49, don't pay. You keep every insight either way.
Read-only connect · write access opt-in per tool · SOC 2 in progress · GDPR + CCPA compliant