In the Spun WhatsApp CRM, a period report reads every message of a finished day or date range across the chats and groups you choose, sorts what it finds into bookings, complaints and requests, and counts them. A rolling digest keeps one standing question answered as messages arrive. Both live in Settings under Digests, and both show the messages behind what they say.
A manager’s morning question is simple: what happened yesterday, how many, and who answered. A busy WhatsApp number buries the answer in hundreds of messages across dozens of chats. A report that reads a sample, or that guesses a total, is worse than no report, because it looks finished.
Spun’s period reports are built the other way round. The report reads every readable message in the period, every count is produced by counting records, never by a model writing a number, and every number opens to the messages that make it up. The rest of this page is exact about what that means and where it stops.
Two kinds of answer
Settings > Digests holds two things that look alike and work differently. A period report covers a closed period completely. A rolling digest covers a question continuously.
| Period report | Rolling digest | |
|---|---|---|
| Covers | A finished day or date range, midnight to midnight in your timezone | The newest messages, as they arrive |
| Reads | Every readable message in the period | At most 500 messages per refresh, oldest unread first |
| Answers | Counts and a narrative from a template, or free-text findings | One standing question, kept up to date |
| Runs | Each morning for the day before, or when you ask for a day or range | On a schedule or when you press Refresh now |
| Good for | "How many bookings came in yesterday and which are unanswered?" | "Which hotel requests are still waiting?" |
A rolling digest on a busy set of chats runs behind the newest messages and says so. For the whole of a day, every message counted, use a period report.
What a period report reads
A report covers the chats you pick, up to 25 chats or groups, or All chats in the account. The period is whole calendar days in the report’s timezone, 00:00 to 24:00. Every text message sent inside the period is read; messages from before the period are used only as context, so a booking is reported in the day it was written, not the day it was confirmed.
Every report states its own coverage, for example "Analyzed 1,284 of 1,284 readable messages across 23 chats." Analyzing every message is a claim about reading, not about finding: a request that nobody wrote down as a request is not in the report.
- Voice notes and media without a transcript are not read. The report says how many: "No transcript: 12 voice or media messages had no text and were not read."
- A report that stops early, at your credit limit, a time limit, or because you pressed Stop, is marked Partial and says how many messages remain. Continue builds the period again.
- Each record cites the messages it rests on. A record with no message inside the period is dropped before counting.
Templates and what they count
A template fixes what the report may say: which kinds of record exist, which statuses each can carry, and which totals are counted. Totals come from counting accepted records. The model never writes a total.
| Template | Records | Totals |
|---|---|---|
| Executive daily report | Bookings, complaints, requests | Bookings confirmed, cancelled and unanswered; complaints open; requests open; possible duplicates; plus who on the team answered what |
| Bookings and requests | Bookings, requests | Booking requests, confirmed, cancelled, unanswered, rooms requested; requests open |
| Complaints and quality issues | Complaints | Complaints raised, still open, resolved |
| Open requests | Everything still waiting | Open items at the end of the period: bookings, requests, complaints |
| Blank | Your own question | None: free-text questions get evidence and narrative, totals need a template |
Rooms, nights and guests are reported only when a message states them explicitly. The report never estimates a number and never adds up what was not written.
"Why this number?"
Every total on the report opens. Press "Why this number?" beside it and the report lists the records behind it, each with the chat it came from, the status it ended the period in and the messages it cites. Open a message and you read the original. A total with nothing behind it says so: "No records are behind this number."
Two things are shown rather than hidden. Possible duplicates: records that may be the same item, for example the same booking asked for twice in two chats, are grouped and listed, and counted as a total of their own so you can judge them. Details that disagree: when messages give two different answers about one record, the report says both instead of picking one.
The Executive daily report also names who on the team answered what. That part needs your staff marked first: a contact label whose whole name is Staff, Employees or Team members, in English, Hebrew or Arabic. Until then the template is blocked rather than reporting a silent zero.
Setting one up
- 1
Open Settings > Digests
Press "New period report". Period reports sit at the top of the page, rolling digests below them.
- 2
Choose a template
Pick one of the four counting templates, or Blank and type your own question, such as "Which groups asked about transport?".
- 3
Choose the chats
Up to 25 chosen chats or groups, or All chats. A teammate who later opens the report must be able to see every one of them.
- 4
Choose when
"Each morning, cover yesterday" builds the report for the day before, around 07:00 in your timezone. "When I ask" lets you pick a day or a date range that has already ended.
- 5
Pick the report language and save
Counts and record ids are language-neutral; the narrative is written in the language you choose. Before you save, the editor shows a cost estimate built from the recent activity of those chats.
Versions, changes and corrections
A report is a snapshot of what the messages said when it was built. Messages keep arriving, history imports land, and a chat you had not linked yet shows up. Spun handles that in the open.
- Versions of this period: every build of a period is kept, and the card lets you show the latest attempt or the last complete report.
- One automatic revision: inside the 24 hours after a period closes, if the source messages changed, a single revision re-reads only the chats that changed and publishes a new version.
- Refresh sources: after that window, press it to check the report against the current messages yourself.
- Continue: a Partial report is built again from the start. Stop: the report stops, and what was read so far is kept.
What it costs
Reports are paid from your account’s AI credit, like every other AI feature in Spun, and never from anywhere else. Reading a finished report costs nothing. Building one does, in proportion to the messages read.
- Before you save, the editor shows an estimate per report and for the rest of the billing month, built from the chats’ recent activity.
- After each run the card says what it cost: "Last report cost $0.07." and "About $1 to $2 for 6 more reports until 31 October."
- A run that reaches your credit or spending limit stops, is marked Partial, and says how many messages remain. Add credit, then press Continue.
- A report that runs each morning counts as one workflow against your plan’s workflow slots, like a scheduled digest.
Related: Plans and AI credit
Rolling digests
A rolling digest is the older sibling: a standing question over one chat, several, or a group, whose answer is folded forward as messages arrive. Each refresh reads at most 500 messages, oldest unread first, and the digest says what it read and how many newer messages wait for the next refresh. Press "Refresh now" to bring it forward, "Rebuild" to start the answer again from the messages.
Every answer cites the messages behind it and carries a freshness label: Fresh, Stale or Needs a refresh. A digest can also join your daily summary and appear as a card on the MCP Dashboard.
Related: The intelligence layer: digests, dashboard and daily summary · Group Intelligence: monitors that flag what matters in groups
From your connected AI
A connected AI app such as claude.ai, ChatGPT or Cursor reaches the same reports through the Spun MCP server. Reading a finished report is one call however many messages it covers, so a daily report across dozens of groups is the cheapest way to get your WhatsApp into an AI.
| Tool | What it does | Permission |
|---|---|---|
| list_period_reports | The saved reports and their latest run | Read |
| get_period_report | A finished report: counts, narrative, coverage | Read |
| get_period_report_evidence | The records and messages behind a number | Read |
| get_period_report_run | Whether a build is queued, running, complete or partial | Read |
| start_period_report | Build the latest period, or revise a published one | Manage digests and AI compute |
| cancel_period_report_run | Stop a build in progress | Manage digests |
Rolling digests have their own four tools: get_chat_summary, list_chat_summaries, define_chat_summary and update_chat_summary. Starting a build spends your AI credit, so it is a separate grant from reading.
Related: The Spun MCP server
What a report deliberately does not do
A report is only useful if you can trust what it leaves out as much as what it puts in.
- It never invents a total. Numbers are counted from records; rooms, nights and guests appear only when a message states them.
- It does not read what has no text. Voice notes and media without a transcript are counted as not read, and the report says how many.
- It does not reach across the period. A record needs a cited message inside the day or range; earlier messages only explain its state.
- It does not widen access. A teammate opens a report only when every chat behind it is already visible to them.
- It does not send anything. Building, reading or sharing a report changes nothing on WhatsApp.
- It is not a promise of completeness. "Analyzed every message" means every readable message was read, not that every booking was recognized.