Skip to content
esc close · switch
LYRA/ Tools/ Operations/ Account Diary
Operations Always-onSearchable

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.

Always-on · write-on-event · 4 entry sources · Audit-grade retention
What gets captured · the diary surface

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.

Workflow · Multi-brand agency · 11 client accounts · last 7 days Live · last sync 03:45 UTC
01 · Sources 4 Capture surfaces Manual, tool actions, Slack messages, Google Ads change history. Each source has its own ingestion path, single output table.
02 · Cadence Live Write-on-event Manual + tool entries land instantly. Slack messages sync daily 03:45 UTC. Change history streams on configured cadence.
03 · Entries 94 In a sample week Across 11 client accounts. Manual + tool actions + Slack messages + change-history events combined.
04 · Retention Audit Grade · indefinite Every entry retained with attribution. Edits captured in `account_diary_entry_history`. Nothing silently overwritten.
Entry types
  • manual · client_call · performance_notehuman
  • tool_actionauto
  • slack_messagedaily sync
  • change_history_*stream
Attribution per entry
  • created_byLyra user
  • source_user_nameSlack/GAds
  • created_at + historyaudit
Filters
  • By type · source · actorindexed
  • By importance levelnormal · important · critical
  • By date rangeany window
Sample · diary entries

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.

DIARY · multi-brand agency · w/c 2026-04-20 94 entries · 4 sources v.2.1 · diary
Manual notes 23 human entries · last 7d
Tool actions 31 auto-written by Lyra tools
Slack messages 27 from 11 channels · daily sync
Change history 13 streamed from Google Ads
#0094 Apr 26 · 14:21 UTC Tool action system · budget_pacing Daily caps re-paced — Brand · Search Daily budget on Brand · Search adjusted from €140 → €152 based on monthly pacing target. Confidence 0.84; reasoning by Lyra Agent. v.2.0important
#0093 Apr 26 · 11:08 UTC Manual note d.mercer Quoll Outdoor — pause review Client requested PMax · Trail collection paused for the next 2 weeks while they re-shoot creatives. Set a reminder for May 10 to review re-enable. decision
#0092 Apr 26 · 09:00 UTC Slack message j.reiss · #basalt-perf From Slack · weekly review thread Question from client: "Why did Generic · Search CPA jump 18% this week?" — Captured for the Monday standup; tied to the Apr 23 search-term sweep.
#0091 Apr 25 · 22:15 UTC Change history google · auto-apply Bid strategy auto-changed on PMax · Autumn Google's auto-apply flipped bid strategy from tROASMaximise Conversions. Auto-Apply Guard caught it on the next sweep and reverted; entry retained for audit. important
#0090 Apr 25 · 18:42 UTC Manual note d.mercer Atlas Ledger — Q3 budget agreed Spoke to client; Q3 monthly budget agreed at $14k (up from $12k). Updated Budget Pacing Optimizer config; will re-pace at next run. decision
#0089 Apr 25 · 14:00 UTC Tool action system · search_terms Negatives sweep · 47 candidates drafted Search Terms Management surfaced 47 candidates for negative-keyword addition; staged as Google Ads BatchJob, awaiting approval.
Showing last 6 of 94 entries · ranked by recency Filterable by type · source · actor · date range
How entries land · the four ingestion paths

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.

01 · Manualhuman · API/UI

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.

Trigger User action
Latency Instant
Edit history Captured
02 · Tool actionsauto · write-on-execute

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.

Trigger Tool execution
Latency Instant
Reasoning Inline (Lyra Agent)
03 · Slackdaily · 03:45 UTC

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.

Cadence Daily 03:45 UTC
Source Configured channels
Dedup By Slack ts
04 · Change historystream · from Google

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.

Source change_history API
Dedup By change_id
Linkage Tool reaction · if any
05 · Attributionalways present

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.

created_by Required
source_user_name When applicable
Edits Audit-trailed
06 · Lyra Agentreads · doesn't write

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.

Read Yes · for context
Write No · not the Agent
Why Authorship clarity
Case · multi-brand agency · 11 accounts · $120k/mo total spend
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.
PD Performance Director · multi-brand agency 11 client accounts · $120k/month total · anonymized
Analyst capacityAccounts managed per analyst
Diary entries / weekAvg. across 11 accounts ~94
Sources unifiedManual · tool · Slack · change-history 4
Manual export workReplaced by automatic capture → 0
Frequently asked

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.

14-day free trial · No credit card · Cancel in one click

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