---
title: Customer follow-up
order: 7
updated: 2026-07-12
---

# Customer follow-up

The *Customer Follow-Up* screen is a dedicated chase list. It gathers every enquiry you have already quoted but whose customer has not yet placed a purchase order, so you can select several at once and fire off reminder emails in a single action. Each reminder re-uses the firm's saved follow-up template and re-attaches (or threads onto) the original quotation, so the customer sees the same offer they were sent before.

The list is built entirely on the server from live enquiry state — it is not a saved bucket you add to. An enquiry appears the moment it qualifies and drops off the moment it stops qualifying (a PO arrives, someone marks it won/lost/regret, or it auto-marks as lost). See [What appears in the list](#what-appears-in-the-list).

## Open the follow-up screen

The screen has no sidebar entry of its own. Reach it from the *Enquiry Bank*:

1. Open *Sales* in the sidebar and click *View* to land on the *Enquiry Bank*.
2. Click the options button (the sliders icon) at the top right of the *Enquiry Bank*.
3. Under the shortcuts at the bottom of that menu, choose *Customer Follow-up* (its description reads *Chase quotations that have no PO yet*). The page heading reads *Customer Follow-Up*.

You need the *View* enquiry permission (`enquiry.view`) to open the screen and load the list — the server returns *Forbidden* otherwise. Sending reminders needs an additional permission covered under [Who can send](#who-can-send).

## What appears in the list

The list is a server-side query, re-checked on every load. An enquiry is shown only when **all** of these hold:

- **At least one quotation has been sent** for it (it has a recorded offer). A quoted-but-not-sent enquiry never appears.
- **Its PO has not arrived** — the enquiry is not yet marked PO-arrived.
- **It is not marked `regret` or `lost`.**

Rows are ordered by most recently updated first. The screen pulls `10` enquiries per page and loads more as you scroll (infinite scroll) — there is no page-number control.

Because the same three rules are re-applied by the server both when the list loads **and** again when you press send, an enquiry that quietly became ineligible (someone else logged its PO, or it auto-marked as lost) is filtered out even if it is still sitting on your screen. See [Why did an enquiry disappear](#why-did-an-enquiry-disappear-from-the-list).

## Filter the list

A filter row sits above the table with four reference pickers. Each one narrows the list to enquiries matching that field; combine them to narrow further.

### Customer

Restricts the list to one customer. Picking a customer also **clears the *Contact Person* filter**, because the contact-person picker below is scoped to the chosen customer.

### Contact Person

Restricts the list to one contact person. The picker only offers contact persons belonging to the *Customer* you selected above (leave *Customer* empty to search across all).

### Product Head

Restricts the list to enquiries that contain a product under this head. Picking a head also **clears the *Product Code* filter**, since the code picker is scoped to the chosen head. Internally the server expands the head to its product codes and matches any enquiry line using one of them; a head with no codes yields an empty list.

### Product Code

Restricts the list to enquiries containing this exact product code. This is the most specific product filter — when a code is set it takes precedence over any head filter.

Changing any filter clears your current tick selection so you never send to a row you can no longer see.

## The table

Each row summarises one enquiry. Columns can be shown or hidden from the options menu (see [Table options](#table-options)); the defaults are noted below.

- *Customer* — the customer name, with a hover preview.
- *CP* — the contact person, with a hover preview.
- *Product* — every product line on the enquiry, each with a hover preview.
- *Qty* — quantity and unit for each product line.
- *Total* — the enquiry total **excluding tax**, formatted in Indian rupees.
- *Enquiry No* — the enquiry number, or `—` if unset.
- *Enquiry Date* — the date the enquiry was received, or `—`.
- *Offer No* — the base quotation number of the last offer (the running number without any revision suffix), or `—`.
- *Revision* — the current revision label of the quotation (for example `R01`, `RA`, `B`), rendered in the firm's configured revision style, or `—` on an un-revised offer. See [Quotation number format](/docs/settings/document-templates#quotation-number-format).
- *Latest Offer* — the date the most recent quotation was sent.
- *Offer List* — every quotation send date for the enquiry, newest first. **Hidden by default** — enable it from the options menu.
- *Follow Ups* — the dates of follow-ups **that were actually sent**. Only successful sends count here; a queued, in-progress, or failed follow-up does not add a date. `—` when none have gone out yet.
- *Select* — the tick box used to build a send batch. This column only appears if you have send rights; a view-only user sees the list but no checkboxes.

### Row actions

Open a row's context menu (right-click, or the table's row menu) for three actions:

- *View Enquiry* — opens the full enquiry page. See [View an enquiry](/docs/enquiry-bank/view-enquiry).
- *Follow-up History* — opens the [Follow-up History](#follow-up-history) modal for that enquiry.
- *Latest Quotation* — opens the [Latest Quotation](#latest-quotation) modal for that enquiry.

## Table options

The options button (sliders icon) at the top right of the *Customer Follow-Up* heading opens a small menu:

- *Toggle Columns* — show or hide any table column, with a *Reset* link that returns to the default visible set.
- *Tooltip Visibility* — enable or disable the hover previews for *Customer*, *Contact Person*, *Product*, and *Price*, with a *Reset* link.
- *Refresh* — reloads the current list from the server. Use it after you (or a teammate) have sent reminders so the *Follow Ups*, *Latest Offer*, and history reflect reality.

Column and tooltip preferences are remembered on your device.

## Send follow-ups

1. Tick the enquiries you want to chase. As soon as one is ticked, a floating glass *selection bar* appears at the bottom of the screen showing *N selected*.
2. On the selection bar, use *Clear* to drop the whole selection, or *Send Follow-ups* to proceed. The *Send Follow-ups* button only appears if you have send rights.
3. The confirmation modal opens with the heading *Send N Follow-up(s)?*. It reminds you that each selected enquiry receives its own configured follow-up email, that Gmail threads onto the original quotation where possible, and that other providers compose a fresh message with the original quotation re-attached.
4. Choose an account in *Send from* and confirm.

You can select up to `50` enquiries in one send — the server rejects a batch larger than that.

### Send from

The dropdown lists the email accounts you are allowed to send customer follow-ups from. This set comes from the firm's *Customer Follow-up* sending policy, not a free choice of every mailbox — see [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy). Notes:

- Only **valid** (verified) accounts are offered. An account that failed verification is hidden here.
- If exactly one account is allowed, it is pre-selected for you.
- If none are allowed, the dropdown reads *No email accounts available* and a hint asks you to have an admin configure the policy. You cannot send until at least one valid account is permitted.

The account label is prefixed with its owner (`[firm]` or `[user]`) and shows the from-name and address.

### What actually gets sent

- **No new PDF is generated.** The reminder carries the *original* quotation forward: for Gmail-to-Gmail sends it threads the reminder onto the original quotation email, and for other providers it re-attaches the original quotation PDF plus every attachment that went with that first send.
- **The subject and body come from the firm's saved template**, with tokens filled in per enquiry. You do not edit the wording on this screen — that is configured once under [Customer follow-up personalisation](/docs/settings/document-templates#customer-follow-up).
- **The recipient is decided by the server from the template's recipient mode.** In the default *Contact person* mode the reminder goes to the enquiry's contact-person email; in *Fixed mailbox* mode it goes to the firm's fixed address. You do not pick recipients per message here (unlike the quotation flow).

### Queued, not sent instantly

Confirming does not block on the email leaving. Each eligible enquiry is placed on the send queue and a background worker delivers it. The toast reports how many were **queued** and, if any were dropped, how many were **skipped** — for example *8 follow-ups queued (2 skipped)*. After a successful queue the screen clears your selection and refreshes.

### Why some get skipped

The server re-validates every enquiry in the batch — a forged or stale id cannot force a send. An enquiry is skipped (and counted in the toast) when:

- It is **no longer eligible** — it lost its quotation, its PO has arrived, or it was marked regret/lost since the list loaded.
- It has **no successful quotation send on record** to reply to.
- The resolved **subject is empty** after filling tokens.
- The **recipient could not be resolved** — in *Contact person* mode the contact person has no valid email; in *Fixed mailbox* mode the firm's fixed address is missing or invalid.

If every selected enquiry is ineligible, nothing is queued and the modal reports *No eligible enquiries*.

## Follow-up History

Open a row's *Follow-up History* to see every follow-up ever attempted for that enquiry — not just the successful ones. Each entry shows:

- A status chip: *Queued*, *Processing*, *Sent*, or *Failed*.
- The send/approval timestamp and, when a retry occurred, an *Attempt #N* badge.
- The sending account (*via …*).
- *Queued by* and *Approved & sent by* users, with their timestamps.
- The *Subject* and the *To* addresses.
- For a failed attempt, the *Last error* text.

A *Refresh* button re-pulls the history. Enquiries with no follow-ups yet show *No follow-ups sent for this enquiry yet.*

## Latest Quotation

Open a row's *Latest Quotation* to review the most recent **successful** quotation send behind the follow-up — the exact document the reminder replies to. It shows the send status and timestamp, the sending account, the *Queued by* / *Approved & sent by* users, the subject, the *To* and *Cc* recipients, and the files:

- The quotation *PDF*, with *View* and *Download* buttons.
- Any *Attachments* that went with it, each with *View* and *Download*.

If no quotation has successfully gone out for the enquiry, the modal reads *No successful quotation has been sent for this enquiry yet.*

## Live "follow-ups sent" alerts

The screen listens for follow-up sends across your whole firm in real time. If a reminder finishes sending — whether you queued it or a teammate did — while you have the page open, a *Follow-ups sent* modal appears telling you how many just went out and offering *Refresh* or *Dismiss*. The list's dates and counts are stale at that point, so refresh before selecting again to avoid chasing a customer who was just contacted. If more sends land while the modal is up, the count keeps climbing and the prompt re-appears until you refresh.

## Who can send

Two enquiry permissions gate this screen:

- **Viewing** the list, history, and latest-quotation panels needs *View* (`enquiry.view`).
- **Sending** reminders needs either *Send Customer Follow-up* (`enquiry.sendFollowUp`) or *Send Offer Email* (`enquiry.sendOffer`). Without one of these, the *Select* column, the selection bar's send button, and the confirm flow are all hidden, and the server rejects a forged send with *Forbidden*. *Send Customer Follow-up* itself depends on send-offer rights, since a follow-up only makes sense once quotations can be sent.

## Common questions

### Can I customise the follow-up message?

Not on this screen. The subject, body, tokens, and recipient rule are configured firm-wide under [Customer follow-up personalisation](/docs/settings/document-templates#customer-follow-up). Here you only choose which enquiries to chase and which account to send from.

### Why did an enquiry disappear from the list?

It stopped qualifying. The most common reasons: its purchase order arrived, someone marked it won/lost/regret, or it hit the firm's [auto-mark-as-lost](/docs/settings/document-templates#auto-mark-as-lost) threshold after enough unanswered reminders. Once an enquiry is marked lost or its PO is logged, it is intentionally off the chase list.

### What if a customer already replied to one I selected?

Refresh before sending. When another user logs the PO or marks the enquiry, the server drops it — and even if it is still on your screen, the send re-check will skip it and count it under *skipped* rather than emailing the customer again.

### The follow-up went out but the "Follow Ups" column still shows the old count.

The column only counts **successful** sends, and the screen does not live-update the numbers. Wait for the *Follow-ups sent* alert (or press *Refresh* in the options menu) to re-pull the current dates and counts.

### Will the customer get a brand-new attachment or the original quotation?

The original. Gmail-to-Gmail reminders thread onto the first quotation email; other providers re-attach the original quotation PDF and its attachments. No fresh PDF is generated for a follow-up.

### Can I send follow-ups for an enquiry that was never quoted?

No. An enquiry must have at least one successful quotation send before it is eligible — that is the document the reminder is built around. Send the quotation first: see [Generate a quotation](/docs/enquiry-bank/generate-quotation).

### Nothing shows in "Send from" — why can't I pick an account?

Only valid accounts allowed by the firm's *Customer Follow-up* sending policy appear there. Ask an admin to add or fix an account and set the policy under [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy).
