---
title: Vendor follow-up
order: 6
updated: 2026-07-12
---

# Vendor follow-up

The *Vendor Follow-Up* screen is the working area for chasing suppliers who were emailed an RFQ but have not yet come back with a quotation. It lists every open vendor invitation still waiting on a reply, lets you filter down to the ones you care about, and sends a reminder ("chase") email to several vendors at once. The reminder wording, recipient, and auto-close behaviour all come from your firm's *Vendor Follow-up* template — this screen only decides *who* gets chased and *which mailbox* the chase is sent from.

The screen mirrors the customer-side follow-up screen, but for RFQs instead of quotations. Its sibling for issued purchase orders is [Purchase order follow-up](/docs/procurement/purchase-order-follow-up).

## Open follow-up

The screen has **no sidebar entry of its own**. Open it from *Procurement Enquiries*:

1. Open *Procurement* in the sidebar and click *Enquiries*.
2. Click the options button (the sliders icon) at the top right of the list.
3. Choose *Vendor Follow-up* (the bell entry, described as "Chase vendors who haven't quoted yet"). The page heading reads *Vendor Follow-Up*.

The *Vendor Follow-up* entry — and the screen itself — only appear if you hold the *Submit Quotation on Vendor's Behalf* permission (`procurement.viewAlreadyPlacedEnquiries`); this is the same permission that lets you see the procurement enquiries list. The backend re-checks it on every list request and returns `403 Forbidden` without it, so a hand-crafted request can't bypass the gate.

To actually *send* a chase you additionally need the *Send Vendor Enquiry Follow-Up* permission (`procurement.vendorEnquiryFollowUp`). Without it you can still browse the list and open the history, but the row checkboxes and the *Send* button are hidden, and the send endpoint rejects the request server-side.

## What you see

A filter panel sits above a table of open vendor invitations. The list loads `10` rows at a time and pages in more as you scroll. A glass "selection bar" floats at the bottom of the screen once you tick at least one row.

The list is deliberately narrow: it shows **only** invitations that are in the `emailed` state (the vendor was mailed the RFQ but has not quoted) **and** whose parent enquiry is not closed or cancelled. That filtering is done on the server, so a row you see is always a legitimate chase target at the moment it loaded.

### Live "follow-ups sent" prompt

If a follow-up finishes sending — by you, or by another user in your firm, or by the background worker — while you are on the screen, a *Follow-ups sent* prompt appears. It tells you how many just went out and offers *Refresh* (re-fetch the current page so the dates and counts are current) or *Dismiss*. The counts and history behind the table are stale until you refresh. If more sends land while the prompt is open, it re-appears with the updated total when you close it, so nothing is lost silently.

You can also refresh manually at any time from the options dropdown on this screen (see [Table options](#table-options)).

## Filters

The filter panel has four searchable dropdowns. Leaving one blank means "don't filter on this". Changing any filter clears your current row selection so you never send a chase to a row you can no longer see.

Each filter is validated on the server: a value is only applied if it is a well-formed record ID, so a malformed or foreign-tenant ID is ignored rather than crashing the list.

### Supplier

Restricts the list to invitations for one supplier. Search by name and pick from the results. Clearing or changing the supplier also **clears the contact-person filter**, because contact people belong to a supplier.

### Contact person

Restricts to one of the selected supplier's contact people. This dropdown is scoped to the supplier chosen above — pick a supplier first for it to be meaningful.

### Product head

Restricts to invitations whose RFQ includes a line item under the chosen product head (product family). Changing or clearing the product head also **clears the product-code filter**.

On the server this expands to "any product code belonging to that head". If the head has no product codes at all, the list comes back empty.

### Product code

Restricts to invitations whose RFQ includes a specific product code. Scoped to the selected product head. A product-code filter takes precedence over a head filter when both are set.

## The table

Each row is one vendor invitation (one supplier + contact-person pairing on one RFQ). Columns:

| Column | Shows |
|---|---|
| *Supplier* | The supplier's name. |
| *CP* | The contact person the RFQ was addressed to. |
| *Product* | The product code(s) on this vendor's RFQ lines, one per line. |
| *Qty* | The quantity for each of those lines, aligned with *Product*. |
| *Event No* | The internal enquiry (sourcing-event) number. |
| *Released* | The date the RFQ was released to vendors. |
| *RFQ No* | The per-vendor RFQ number, e.g. `2026-00123-A` (the shared cart number plus this vendor's letter). Falls back to the event number if the RFQ was never assigned a formatted number. |
| *Last Sent* | When the most recent email (RFQ or follow-up) went to this vendor. |
| *Follow Ups* | The dates of every **successful** follow-up already sent for this invitation, newest first. `—` if none yet. |
| *Select* | A checkbox to include the row in a chase. Only present if you have the *Send Vendor Enquiry Follow-Up* permission. |

The RFQ number is rendered against the moment the RFQ was released, so a financial-year prefix reflects the year it actually went out, not today. See [RFQ number format](/docs/settings/document-templates#rfq-number-format) for how the number and its trailing per-vendor letter are built.

### Row actions

Right-click a row (or use its context menu) for three actions:

- *View Vendor* — opens the per-vendor RFQ detail page for this supplier, where you can fill their quotation, generate a PO, or close the invitation. See [Vendor responses](/docs/procurement/vendor-responses).
- *Follow-up History* — opens the [follow-up history](#follow-up-history) modal for this invitation.
- *Latest RFQ Send* — opens the [latest RFQ send](#latest-rfq-send) modal for this invitation.

### Table options

The sliders button at the top right of the *Vendor Follow-Up* screen opens a small menu:

- *Toggle Columns* — show or hide individual columns. A *Reset* link restores the default column set. Column visibility is remembered per browser.
- *Refresh* — reload the follow-up list from scratch.

## Send a chase

1. Tick the *Select* checkbox on each vendor you want to remind. The selection bar at the bottom counts how many are selected.
2. Click *Send Follow-ups* on the selection bar (or *Clear* to start over).
3. The *Send N Follow-up(s)?* modal opens.
4. Pick a mailbox under *Send from* (see below), then click *Send N Follow-up(s)* to confirm.

Each chase is **queued**, not sent instantly — a background worker actually delivers the mail. On success you get a toast such as `3 follow-ups queued`, and if some rows were dropped it reads `3 follow-ups queued (1 skipped)`. The screen then clears your selection and refreshes.

### Send from

The *Send from* dropdown lists the mailboxes you are allowed to send vendor follow-ups from. It is populated from your firm's *Supplier Follow-up* sending policy and only shows accounts that are currently **valid** (an account that failed verification is filtered out). If exactly one account qualifies, it is pre-selected.

Each option is labelled with its owner and address — `[firm]` accounts belong to the firm, `[user]` accounts are your own personal mailbox — with the sender name shown when one is set.

If the dropdown is empty you'll see *No account is allowed for vendor follow-ups. Ask an admin to configure the policy.* Set up mailboxes and the *Supplier Follow-up* policy under [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy).

### What the server checks before queuing

The confirm modal is only the request; the backend re-validates everything before anything is queued (assume the request can be forged):

- **Permission** — you must hold *Send Vendor Enquiry Follow-Up*; otherwise the whole request is rejected.
- **Batch size** — at most `50` invitations per send.
- **Mailbox policy** — the chosen account must be in your firm's *Supplier Follow-up* policy set. A mailbox you're not entitled to is rejected even if you somehow selected it.
- **Row eligibility** — each invitation must still be in the `emailed` state and belong to an enquiry that isn't closed or cancelled. Rows that fail (wrong status, closed/cancelled event, a foreign or invalid ID) are **skipped**, not sent, and reported in the "skipped" count. This is why a vendor who quoted between your last refresh and your send simply drops out instead of getting a needless reminder.
- **Recipient** — the actual to/cc addresses are derived server-side from the *Vendor Follow-up* template's recipient mode (contact person, fixed mailbox, or hybrid), never from anything the browser sends. If the mode resolves to no valid email address (e.g. the contact person has no email, or the firm's fixed mailbox is blank/invalid), that row is skipped.
- **Subject** — if the template's subject resolves to empty text, the row is skipped.

### What goes in the chase email

The subject and body come from your firm's *Vendor Follow-up* template. The original RFQ's `Enquiry.pdf` and any attachments the vendor first received are **re-attached automatically** — there are no attachment toggles on this screen. There is also no vendor self-fill link in a follow-up: each vendor's first RFQ email already carried a working self-fill token, so the follow-up just nudges them to use it.

To change the wording, recipient, tokens, or the auto-close behaviour, edit the template under [Document templates → Vendor follow-up](/docs/settings/document-templates#vendor-follow-up). Template changes only affect chases sent *after* you save them.

### Auto no-bid after enough reminders

If your *Vendor Follow-up* template's *Auto-mark as no-bid* is set to *After N follow-ups*, sending the Nth reminder to an unanswered vendor automatically flips that invitation to `no-bid` and drops it off the chase list. The default is *Never auto-mark* (invitations stay until the vendor quotes or you close them), and the threshold, when a counting mode is chosen, defaults to `4` reminders. This is configured on the template, not here — see [Document templates → Vendor follow-up](/docs/settings/document-templates#vendor-follow-up).

## Follow-up history

*Follow-up History* (from a row's actions) lists every follow-up ever attempted for that invitation — queued, sent, or failed — newest first, with a *Refresh* button to re-pull. Each entry shows:

- A status chip: *Queued*, *Processing*, *Sent*, or *Failed*.
- When it was sent (or approved), and an *Attempt #N* badge if the worker retried.
- The mailbox it was sent *via*.
- *Queued by* and *Approved & sent by* (the users, with timestamps).
- The resolved *Subject*, and the *To* / *Cc* addresses actually used.
- The attached RFQ PDF and any other attachments, each with *View* and *Download* buttons.
- On a failed entry, the *Last error* returned by the mail server.

Opening the history needs either the *View Mail History of Enquiries* permission (`procurement.viewMailHistoryOfEnquiries`) or the *Submit Quotation on Vendor's Behalf* permission. **Viewing or downloading the attached files, however, requires *View Mail History of Enquiries* specifically** — without it the list still opens but the *View* / *Download* buttons will fail.

## Latest RFQ send

*Latest RFQ Send* (from a row's actions) shows the most recent **successful** original RFQ email sent to this vendor — the same layout as a history entry (status, sender, subject, recipients, RFQ PDF, and attachments with *View* / *Download*). It's the quick way to confirm exactly what the vendor first received before you chase them again. If no RFQ has successfully gone out yet, it shows an empty state. The same permission rules as the history modal apply, including the file-download gate.

## Common questions

### Why isn't a vendor showing in the list?

The list only shows invitations that are still in the `emailed` state on an open enquiry. A vendor drops off once they submit a quotation, once the invitation is marked *no-bid* (manually or by the auto-no-bid rule), or once the parent enquiry is closed or cancelled. Refresh to be sure you're looking at the current state.

### A supplier already replied to one of the rows I ticked — will they get a needless reminder?

No. Refresh first and replied rows disappear, but even if you don't, the backend re-checks every selected row at send time and skips any that are no longer in the `emailed` state. Skipped rows are reported in the toast's "skipped" count.

### No accounts appear in *Send from*.

No mailbox is allowed for vendor follow-ups (the *Supplier Follow-up* sending policy has no valid account). Ask an admin to add a mailbox and update the policy under [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy). Accounts that failed verification are also hidden until re-verified.

### Can I customise the chase message?

Yes, but not on this screen. The subject, body, tokens, recipient mode, and auto-no-bid rule live in the firm-wide *Vendor Follow-up* template under [Document templates](/docs/settings/document-templates#vendor-follow-up). The default subject is `Following up on RFQ {rfqNo}`. Here you only choose which invitations go out and which mailbox they send from.

### Does the follow-up include the RFQ PDF and attachments?

Yes — the original RFQ's `Enquiry.pdf` and every attachment the vendor first received are re-attached automatically to each reminder. There is nothing to toggle.

### How many vendors can I chase at once?

The selection can be any size, but a single send request is capped at `50` invitations on the server; if you need more, send in batches.

### The reminder was queued but the vendor says they never got it.

Sending is asynchronous, so "queued" means the job was accepted, not delivered. Open *Follow-up History* for that vendor: a *Failed* entry shows the mail server's *Last error*, and a *Sent* entry confirms delivery and the exact recipients used. If it's failing, check the sending mailbox is still valid.

### What's the difference between this and the *Purchase Order Follow-Up* screen?

This screen chases suppliers for a **quotation** on an RFQ that hasn't been answered. [Purchase order follow-up](/docs/procurement/purchase-order-follow-up) chases suppliers on a **purchase order** that's already been issued. They look and behave the same but act on different stages of procurement.
