Short answer
If a bid didn't go out, check these in order — the first two cover the large majority of cases.
Quick checks
Out of connects. Upwork needs connects to submit proposals, so bidding stops once your balance can't cover the apply cost. Turn on Auto-Connects to top up automatically, or add connects on Upwork. Running low on boost connects specifically doesn't stop the bid — Lancer still sends the proposal, just without the boost (or skips the job), based on your campaign's boosting settings.
Is the campaign active? A paused campaign won't bid — make sure it's started.
Cover letter too long. Upwork rejects cover letters of 5,000 characters or more. Lancer trims generated letters to fit, but a long letter you wrote or edited yourself is trimmed at the end when sent — keep it under the limit (see "Cover letter troubleshooting").
Account connection dropped or wrong password. If your Upwork session ended (e.g. you changed your password), reconnect — see "Reconnecting your account". If Upwork rejects the saved password when Lancer tries to bid, the lead gets a yellow Blocked · Wrong password chip. That is not a failed bid and Lancer does not retry it, because retrying would sign in with the same refused password. Update the password in Connected accounts, then re-apply the lead.
Bidder account was busy with another bid. Bids on one connected Upwork account run strictly one at a time, so if that account is already mid-bid on another job, Lancer waits for it to free up rather than dropping the job — normally just seconds. The lead shows as Processing while it waits. As a safety net against a bid that gets truly stuck, Lancer also caps how long any single bid can run: a hung bid is automatically stopped and cleared within roughly 15–20 minutes so the account doesn't stay tied up. If the account is still busy after all of that — up to a few hours in the worst case — the bid is marked Bid failed instead of waiting indefinitely. This shows up more on setups where several campaigns share one connected Upwork account — connecting an additional account, or spreading campaign schedules across accounts, reduces how often it happens.
See why a bid failed
You don't have to guess. On Leads Overview and the dashboard, status chips for failed bids (Bid failed, Blocked · Wrong password, Blocked · No connects, other Blocked · <reason> chips such as Security answer, Verification code, Google sign-in, Authenticator key, Attachment, Location restricted, Card declined or Can't buy connects, Boost over limit, Invites over limit, Unmet criteria) have an ⓘ icon. Yellow Blocked chips mean something only you can change (the reason is in the chip and on hover, and they are not failed bids); grey Skipped chips mean Lancer chose not to bid; red Bid failed means it was on our side. Hover over a Skipped or Blocked chip for a one-line reason. Click the chip to open a popover that shows:
Whose move it is — Action needed (something only you can change), On our side (our automation or its infrastructure misfired), or Skipped on purpose (Lancer correctly chose not to bid, following your campaign rules).
What happened, in plain words, and when the last attempt was (plus how many attempts failed).
What to do, with a link to the right page when it's yours to fix. Common ones: out of connects (the popover's button, Turn on automatic top-up, opens Settings on the Campaigns page, where Auto-Connects is switched on), wrong or changed password, an account that signs in with Google, a two-factor code Lancer can't read (add an authenticator setup key in Connected accounts), or an attachment containing contact details, which Upwork rejects.
For problems on our side: our engineers are alerted automatically, and you never get a task for it. While an engineer is actively looking into it, the popover says so; otherwise it says "Nothing for you to do." Once they find the cause, the popover replaces the generic text with what actually happened to your bid (for example, the client limited the job to freelancers in a certain country) and shows where things stand: "a fix is on the way", "fixed this on <date>", or "looked into this one". If it happens again after a fix, the popover tells you so. For the "Upwork didn't confirm the proposal" case, don't re-apply by hand in the meantime, so the client doesn't get two.
"Upwork's security check stopped the proposal at Send". The proposal was filled in and Send was clicked, but Upwork's security check (Cloudflare) refused the request, so Upwork never received it. No proposal was sent and no connects were spent. This is on our side: for a campaign bid, Lancer retries once automatically on the same connection (Send Proposal and invitation bids retry on the longer schedule below). Lancer doesn't pause your Upwork account's bidding after a block, so your other bids keep going out. If Upwork blocks it again, this lead is marked failed and our engineers are alerted. If a lead still shows as failed, you can re-send it from Leads Overview.
Ask support opens the chat prefilled with the reference code and lead id, and the code is also shown so you can quote it to us.
If the popover says it couldn't find the details of an attempt, use the chat bubble and we'll look it up.
Send Proposal and invitation bids: automatic retries
Proposals you send from the Send Proposal page and automatic bids on client invitations are retried for longer when they fail:
Temporary problem on Upwork's side (Upwork's security check, a rate limit, a dropped connection): Lancer tries again about 3, 10, 30, 60, 90 and 120 minutes after the first failure, each time in a fresh session. While it waits, a Send Proposal shows as scheduled for its next try (you can still cancel it, edit it and send again) and an invitation bid stays scheduled.
Problem on our side: the bid waits up to 12 hours for our engineers' fix, then tries again. Past that it ends as failed.
Before each retry the job is checked again: a hire or a closed job skips it (a client who is already interviewing also skips a Send Proposal, but not an invitation, because the client asked you to apply).
Problems only you can fix (the yellow Blocked chips) are not retried; fix the cause and send again.
Why a retry can be skipped
When a bid fails, Lancer may retry it automatically. Before a retry sends, Lancer checks the job on Upwork again (through Lancer's own job feed, never through your Upwork account). If the client has hired, is already interviewing, or the job has closed or been removed, the retry is skipped so you don't spend connects on a proposal that would land too late. The lead then shows a grey chip:
Skipped · Already hired — the client hired someone. (If your campaign's Already Hired Action is set to bid anyway, a hire does not skip the retry.)
Skipped · Client interviewing — the client has already invited freelancers to interview.
Skipped · Job closed — the job is closed or no longer available. This one skips even if you bid after hires.
These are skips, not failures: nothing for you to fix, no connects spent. If Lancer can't read the job at that moment, the retry goes ahead as normal. First bids are never held up by this check.
Why a campaign lead says "Skipped · Invited"
If your Upwork account was invited to a job that one of your campaigns also matched, Lancer treats the invitation as the one bid for that job, because Upwork allows only one proposal per job per account and refuses a second. The campaign lead then shows a grey Skipped · Invited chip instead of failing or reading "Already applied". Nothing is wrong and nothing is paused or emailed.
If invitation auto-bid is on for that account, Lancer answers the invitation itself.
If it is off, the invitation is yours to answer on Upwork or from the Invitations section.
If everything looks fine
Occasionally a bid fails because of a temporary Upwork or platform hiccup. You can re-send it from Leads Overview (generate the proposal, then Schedule Bid). If bids keep failing across many jobs, it's likely something on our side — message us with an example job and we'll investigate.
