Upwork pipeline stages for your agency CRM
Six stages from job saved to hired, seven close reasons, and a second pipeline for clients who come back. Copy it into any CRM.
- Published in full
- No email required
- Exit rule for every stage

The short answer
- An Upwork pipeline for an agency runs six stages: Job saved, Proposal sent, Viewed, Interviewing, Hired, and Closed with a reason.
- Each close reason is a disposition you can count, so win rate by category, budget band and proposal writer becomes a report.
- Clients who hire you move to a separate client pipeline, because a repeat client is an account to grow, not a bid to win.
- SalesCrew ships these stages in its Upwork module, with saved searches, a feed gate, proposal records and outcomes written back from the Upwork API.
Why Upwork needs its own pipeline
An Upwork bid moves differently from a cold email lead. The client posts the job, you spend connects to apply, and the platform tells you when the proposal is viewed. Squeezing that into a generic sales pipeline hides the stages that matter, like the gap between viewed and interviewing.
Give bids their own pipeline and you can answer the questions that set your bidding budget. Which categories hire you? Which budget bands waste connects? Whose proposals get interviews?
The bid pipeline
Six stages. A record moves forward only when the exit rule is true.
| Stage | What it means | Exit rule | Who moves it |
|---|---|---|---|
| 1. Job saved | The job passed your feed gate and someone wants to bid | A proposal is submitted | The bidder |
| 2. Proposal sent | The proposal is on Upwork and connects are spent | The client views it, or 14 days pass | Upwork data |
| 3. Viewed | The client opened the proposal | The client messages or invites to interview | Upwork data |
| 4. Interviewing | A conversation with the client has started | An offer arrives, or the client stops replying | The bidder |
| 5. Hired | The client sent an offer and you accepted | The contract starts; the client moves to the client pipeline | The bidder |
| 6. Closed | The bid ended without a hire | A close reason is set | Upwork data or the bidder |
Stage names and rules from the SalesCrew Upwork pipeline template, September 2026.
Close reasons (dispositions)
Every closed bid gets exactly one. Pick from the list; never free text.
| Close reason | Use it when | What to change if it grows |
|---|---|---|
| No view | The client never opened the proposal | Bid earlier, or tighten the gate on client activity |
| Viewed, no reply | Opened but no message | Rewrite the first two lines of the proposal |
| Declined | The client declined the proposal | Check the budget band and category fit |
| Hired someone else | The job was filled by another freelancer | Compare your rate and proposal length with past wins |
| Job closed | The client closed or cancelled the job | Raise the client hire-rate threshold in the gate |
| Ghosted after interview | The conversation stopped | Add a follow-up message at day 3 |
| Withdrawn | You pulled the proposal | Log why, so the gate learns |
Dispositions from the SalesCrew Upwork pipeline template, September 2026.
The client pipeline
For accounts that survive a first contract.
| Stage | What it means | Exit rule |
|---|---|---|
| First contract | Work is in progress on the first job | The contract ends |
| Delivered | The first job is complete | A second job starts, or 60 days pass |
| Repeat | The client has hired you twice or more | They go 90 days without a new job |
| Dormant | No active work | A new job starts |
Client pipeline from the SalesCrew Upwork pipeline template, September 2026.
What the feed gate decides
The best pipeline starts before stage 1. A feed gate filters jobs on the criteria that predict a win for you: client spend, hire rate, payment verification, category and budget band. What fails never reaches a bidder, so you spend connects on a short list.
In SalesCrew, saved searches pull jobs through the Upwork API on a schedule and the gate runs over them. Jobs that pass arrive with the client's history attached. Spending connects stays a human decision under the default agent policy.
How the stages run in SalesCrew
Each proposal is a record against the job and the client. A person starts the proposal, and the submit waits in the SalesCrew approval queue before it goes to Upwork. Outcomes are written back as they land: viewed, interviewed, hired, or no reply.
Because proposals and outcomes are records, win rate by category, by budget band and by who wrote the proposal is a query. Over MCP, upwork_applied_performance returns it, and create_deal_from_upwork_job puts a won job into the deal pipeline. The full module is on the SalesCrew Upwork integration page, and drafting help is in the Upwork proposal prompt pack.
Keep client work on the platform
Treat Upwork as a measured channel
The Upwork module comes with SalesCrew Agency, $1,200 a month with unlimited seats.