Markdown
Open in

Updated 2026-09-25

Quotes and merges

Send a quote, see what the client gets, then merge, retry, or reject.

Prerequisites

  • The request is open from the Inbox.
  • A quote is available when the status is Needs a quote.
  • A merge needs a pull request. Retry needs the status Failed.

Steps

Send a quote

  1. On a Needs a quote request, the form is Quote for the client.
  2. Amount is optional. The hint is "Optional. Currency:" and the workspace currency. Leave it blank to send no price.
  3. Timing is optional. The placeholder is "2-3 business days".
  4. Note to the client is required. The placeholder is "What this covers".
  5. Show the amount to the client is on by default. Turn it off to hide the price.
  6. Press Send quote to client. The toast is "Quote sent". The status becomes Quote sent, and the quote state is Pending.

The quote stays valid for Quote validity (days) on the project. The default is 14. See Autopilot and limits.

On the same menu (the … button) you can skip the quote:

  • Run the agent anyway. The toast is "Agent queued".
  • Mark as handled outside Modifee. The toast is "Marked as handled".

What the client sees

The widget title is Quote. In French it is Devis. In Spanish it is Presupuesto.

They see the note, the timing under Timing (Délai / Plazo), and the amount when the switch was on. The buttons are Accept and Decline.

  • Accept queues the agent. The widget says "Thanks —" the team name "is starting on this." French: "Merci —" the team name "s'en occupe." The dashboard state becomes Accepted.
  • Decline asks Why? (optional), then Decline quote. The widget says "Understood." and the team name "has your answer." The dashboard state becomes Declined and the request status is Quote declined.
  • When the quote expires, the widget says "This quote is no longer valid. Write to us to update it." The dashboard state is Expired, and the inbox line is "Quote expired".
  • After 3 days with no answer, the client is reminded: the team name "is still waiting on your answer to this quote." The inbox line is "Quote awaiting response (3 days)".

Merge

Press Approve & merge. The dialog title is the same.

  • After the client has approved, the text is "Squash-merge this pull request into the default branch."
  • Before that, it is "The client hasn't approved yet. Merge anyway?"
  • When the pull request changes more than 5 files, it adds "This diff touches" the count, then "files."
  • If the file count did not load, it adds "The file count could not be loaded."

Confirm Approve & merge. The toast is "Merged". The status becomes Merged. The widget says It's live!

The key a opens the same merge, unless you are typing in a field. r opens Reply. Reply to the client says "This message is emailed to the client." The toast is "Reply sent".

Autopilot can merge an eligible change after Looks good without this button. See Autopilot and limits.

Retry

Retry is enabled only when the status is Failed. Otherwise the reason is "Only failed requests can be retried."

The dialog is Retry this request. The text is "Start the agent again. Extra context is added to this attempt only." The box placeholder is "Add context for the agent (optional)". Confirm Retry. The toast is "Retry started".

Reject

Reject opens Reject this request. The text is "Close it without merging. An optional note is sent to the client." The placeholder is "Message to the client (optional)". Confirm Reject. The toast is "Rejected".

The widget then says the team name "closed this request without publishing it."

Reject and Reply are disabled on a closed request with "This request is already closed."

Verify

A sent quote shows Pending until the client acts. Accept moves the request forward and shows Accepted. A merge ends on Merged. A reject ends on Rejected. A retry leaves Failed.

Troubleshooting

  • Approve & merge stays disabled. Read the tooltip: "This request is already closed." "Preview not ready yet." "Review required — merge on GitHub." "No pull request to merge."
  • Review required with a "Protected path:" or "Deleted file:" line will not merge from this button. Merge that pull request on GitHub, or change the request so it no longer touches those files. See Guardrails.
  • The client says the quote is no longer valid. Send a new quote. The old one is Expired.