---
title: History and logs
order: 16
updated: 2026-07-12
---

# History and logs

Every enquiry keeps two independent audit trails, and both are re-built on the server from stored records — nothing here is editable after the fact. *Update Logs* is the **edit history**: a full before/after snapshot of the enquiry saved every time someone saves the edit form. *Mail History* is the **send history**: every quotation and follow-up email that left the system for this enquiry, with delivery status, recipients, and the exact PDF that was attached. Both open from the same actions menu, and the send history is also available on a sales order.

## Open history and logs

1. Open the enquiry from the *Enquiry Bank* (*Sales → View*, then open the enquiry).
2. Open the actions menu at the top right of the enquiry detail screen.
3. Choose:
   - *Update Logs* (subtitle *View change history*) — the edit-history modal.
   - *Mail History* (subtitle *Who sent what and when*) — the send-history modal, titled *Send History* once open.

On a **sales order**, the same *Mail History* entry appears (subtitle *Quotations & acknowledgments sent for this order*). There it additionally merges the order-acknowledgment history — see [On a sales order](#on-a-sales-order).

Both modals behave identically in the web app and the Tauri desktop app; there are no desktop-only or web-only controls here.

## Update logs (edit history)

Open *Update Logs* to see a chronological, immutable record of how the enquiry has changed over time. Each entry is a paired *Before → After* snapshot of the **entire** enquiry, so you can see exactly what any single save changed.

### What creates a log entry

A log entry is written whenever the enquiry is **saved through the edit form** — one entry per save, whether or not any field actually changed. Reopening a lost enquiry (*Reopen* → back to *submitted*) also writes an entry, because it changes the enquiry's status. Each entry stores a complete copy of the enquiry before the save and a complete copy after, the user who saved it, and the timestamp.

A few things to keep in mind:

- The log is per-enquiry. Every save appends a new version; nothing is ever overwritten.
- Editing an enquiry that had already been submitted or had its PO arrive can automatically drop the status back to *pending* (when a tracked field — contact person, date, mode, enquiry number, folder, note, or any product line — actually changed). That status change is captured in the same log entry. See [Edit or copy an enquiry](/docs/enquiry-bank/edit-copy-enquiry).
- Sending a quotation or follow-up does **not** create an edit-history entry — those live in [Mail History](#mail-history-send-history) instead.

### The version tabs

The modal shows one tab per saved version, newest first. Each tab is labelled *Rev. N* with the date and the editor's name; the newest carries a *LATEST* badge. The revision number shown is the version the edit produced (so the first edit reads *Rev. 2*, because the freshly-created enquiry is Rev. 1). Selecting a tab loads that version's full diff. If the enquiry has never been edited, the modal shows *No edit history for this enquiry.*

### The change summary

At the top of each version, a summary bar shows:

- A count of changes — the number of enquiry-level fields plus the number of product lines that differ between before and after.
- *by* — the user who saved this version.
- The date and time of the save (`dd mmm yyyy, hh:mm`).
- A `Rev. N → Rev. N+1` badge showing which version this edit replaced and produced.

### Enquiry details diff

A two-column *Before / After* grid (red *Before* on the left, green *After* on the right) compares the enquiry-level fields. Any row that changed is highlighted, with the old value struck through in red and the new value in green. The rows are:

- *Customer* — the customer name.
- *Contact Person* — the contact person (salutation + first + last name). When the contact person changed, extra dashed sub-rows appear underneath comparing the contact's *Email*, *Phone*, and *Role / Post*.
- *Enquiry No.* — the enquiry number.
- *Date of Enquiry* — formatted `dd mmm yyyy`.
- *Status* — the enquiry status (for example `submitted`, `pending`, `lost`, `poArrived`).
- *Mode of Enquiry* — how the enquiry came in.
- *Folder* — the enquiry folder name (or `—` when none).
- *Universal Note* — the shared note on the enquiry.
- *Quotation Terms Draft* — any saved draft terms.

Names (customer, contact person, folder, product code/head, makes) are resolved live from the current records when you open the log, so a renamed customer reads with its current name in both columns. If a referenced record was later deleted, that field shows `—`.

### Products diff

Below the enquiry grid, each product line the enquiry has ever held is shown as its own card, tagged with a status:

- *Added* (green) — a product present in the after-snapshot but not the before.
- *Removed* (red) — a product present before but gone after.
- *Modified* (amber) — a product present in both with at least one changed field.
- Unchanged products render plainly with no badge.

For a *Modified* line, a side-by-side *Before / After* block shows *Qty*, *Price*, *Discount*, and *Tax*, and a field-by-field list calls out exactly what changed among: *Product Name*, *Product Head*, *Quantity*, *Price / Unit* (shown as `₹`), *Unit*, *Discount* (`%`), *Tax Rate* (`%`), *HSN Code*, *Make(s)*, and *Description* (rich text, compared side by side). Money is shown in rupees and percentages with a `%` suffix.

### Who can open update logs

Viewing the edit history needs the *view enquiry* permission (`enquiry.view`) — the same permission that lets you open the enquiry at all. Creating entries happens automatically when an editor (`enquiry.edit`) saves; there is no way to add, edit, or delete an individual log entry by hand.

## Mail history (send history)

Open *Mail History* to see every quotation and follow-up email dispatched for this enquiry. The modal is titled *Send History* and loads the most recent sends first (up to `100`). A *Refresh* button re-fetches the list.

### The three tabs

A tab strip filters the list by what was sent:

- *All* — quotations and follow-ups together (and, on an order, acknowledgments too).
- *Quotation* — only quotation sends. This is the default view for older records with no send type recorded.
- *Follow-up* — only follow-up reminder emails.

Empty states are per-tab: *No mails have been sent yet.*, *No quotations have been sent yet.*, or *No follow-ups have been sent yet.*

### What each entry shows

Every send is a card with:

- A **status chip** — see [Understanding status](#understanding-status).
- A **type chip** — *Quotation*, *Follow-up*, or *Acknowledgment*.
- The **time** the mail was sent (falling back to when it was approved if it has not sent yet).
- *Attempt #N* — shown only when the send has been tried more than once (a first attempt shows no badge).
- The **message ID** — the mail server's message identifier, shown on the right when the send succeeded and returned one.
- *Queued by* — who put the send in the queue, and when.
- *Approved & sent by* — who approved and dispatched it, and when. For a direct send these are the same person; for a send that went through the approval queue they can differ.
- *Subject* — the resolved email subject that actually went out.
- *To* and *Cc* — the resolved recipient addresses, shown as chips. (BCC recipients are stored but are not displayed here, matching how blind copies work — they are hidden from the record view too.)
- *Last error* — a red banner on a failed send, quoting the mail server's error message so you can tell a bad address from an account problem.

### Understanding status

The status chip reflects where the send is in the pipeline:

- *Queued* (`QUEUED`) — accepted and waiting for the send worker to pick it up.
- *Processing* (`PROCESSING`) — the worker is actively sending it right now.
- *Sent* (`SUCCESS`) — handed off to the mail server successfully. (The underlying record calls this state `SUCCESS`; the chip reads *Sent*.)
- *Failed* (`FAILED`) — the send failed. The *Last error* banner explains why; check the recipient address, or ask your administrator about the sending account. See [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy).
- *Ignored* — appears only on a sales order, for an acknowledgment that someone explicitly chose to skip rather than send. It never appears for quotations or follow-ups.

### Downloading the PDF and attachments

Each quotation send carries the exact PDF that was generated and mailed at that moment:

- The **Quotation PDF** row (with its file size) offers *View* — opens the PDF inline in the file preview — and *Download* — saves it to your device.
- Any **Attachments** that rode along with the email (the enquiry's attached files, snapshotted at send time) are listed below with the same *View* and *Download* actions.

Because the PDF and attachments are frozen at send time, you can always retrieve the exact version the customer received, even after the enquiry has since been revised or re-quoted. Downloads are verified server-side: the file must genuinely belong to that send record and be fully stored, otherwise the request is refused. Follow-up and acknowledgment rows carry no downloadable PDF of their own.

### On a sales order

When you open *Mail History* from a sales order, the modal merges two sources:

- The quotation and follow-up sends from the underlying enquiry (as above).
- The order's **acknowledgment history** — every acknowledgment email sent for the order, shown with the *Acknowledgment* type chip, plus a synthesized *Ignored* row if someone chose to skip the acknowledgment. Acknowledgment rows show who/when but expose no file downloads.

Acknowledgment rows only appear under the *All* tab. See [Order acknowledgment](/docs/enquiry-bank/order-acknowledgment).

### Who can open mail history

- On an **enquiry**, viewing send history needs the *view enquiry* permission (`enquiry.view`) — the same one that opens the enquiry.
- On a **sales order**, it opens for anyone who can view sales orders or send acknowledgments (or a firm administrator).
- Firm-wide, unscoped listings (not this per-record modal) require send/queue permissions, so a low-privilege user can never enumerate every send in the firm — only the ones on records they can already open.

## Common questions

### Can I edit or delete a log entry?

No. Both the edit history and the mail history are immutable — there is no control to change or remove an individual entry. This is what makes the audit trail trustworthy. The only way records disappear is by deleting the whole enquiry (see below).

### What happens to the history if the enquiry is deleted?

Deleting an enquiry permanently removes all of its edit-history entries, its quotation drafts, and its send-history records in the same operation. A delete is also blocked while a send is *Queued* or *Processing*, so an in-flight dispatch can't be wiped mid-send.

### Why does a saved edit show "no changes"?

An entry is written on every save, even if you opened and closed the form without changing anything. When that happens, the change count reads `0 changes` and every row matches. It still proves who opened and re-saved the enquiry and when.

### Why does mail history show a quotation I did not send?

Anyone with send permission on this enquiry can dispatch a quotation from it. The *Queued by* and *Approved & sent by* fields tell you exactly who was involved in each send.

### A send shows "Failed" — how do I try again?

The failed attempt stays in history for the record. To reach the customer, generate a fresh quotation against the same enquiry and send again — the new attempt is logged as its own entry. If sends keep failing, the *Last error* banner usually points at the cause (a bad recipient address, or a sending account that needs re-authorising). See [Generate a quotation](/docs/enquiry-bank/generate-quotation) and [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy).

### Which quotation number belongs to a send?

Each quotation send freezes the fully-rendered quotation number (for example `2026-10234-R01`) at dispatch time, so the PDF you download from history carries the number the customer saw. How that number is built and reset is covered under [Quotation number format](/docs/settings/document-templates#quotation-number-format).

### How far back does history go?

Both trails are retained for the entire life of the enquiry — there is no automatic pruning. They are removed only when the enquiry itself is deleted.

### Why can't I see the difference between "Queued by" and "Approved & sent by"?

For a direct send, one person queues and dispatches in a single action, so both fields name the same user. They differ only when a send is queued for approval by one user (for example a junior staff member) and later approved and dispatched by another. See [Customer follow-up](/docs/enquiry-bank/follow-up) and [Generate a quotation](/docs/enquiry-bank/generate-quotation) for how sends are queued and approved.
