Overview

Lancer finds the jobs and submits the proposals. You handle everything in between.

Every Lancer campaign runs in one of two modes:

  • Standard (the default): Lancer picks the jobs, writes the proposals, and submits them. This is how Lancer works out of the box.
  • External: Lancer finds the jobs and submits the proposals, but you handle everything in between: deciding which jobs are worth bidding on, writing the cover letter, answering the screening questions.

Mode is set per campaign. You can run standard and external campaigns side by side in the same organization, each with its own filters and its own logic.

Standard mode
Campaign filters find jobs
same in both modes
Lancer's suitability AI decides
reads your knowledge base
suitable
Lancer writes the proposal
from your template and rules
Lancer submits on Upwork
same in both modes
unsuitable
No bid
lead kept with the AI's reasoning
External mode
Campaign filters find jobs
same in both modes
job.new webhook
Your system decides
your rules, your AI, your logic
worth bidding
You write the proposal
any content you want
POST /bid
Lancer submits on Upwork
same in both modes
not worth it
POST /reject, or do nothing
no response also means no bid
No bid
the lead is skipped

Only the middle changes: deciding and writing move from Lancer to you. Nothing reaches Upwork unless /bid is called.

How it works

External mode is a simple loop with three parts:

  1. Lancer sends you the job. Whenever a job passes the campaign's saved filters, Lancer POSTs it to your webhook URL as a job.new event. The payload contains everything about the job and the client, plus ready-made bidUrl and rejectUrl links.
  2. You decide and write. Your system looks at the job and either passes on it or produces a proposal. What happens here is entirely up to you.
  3. You call back, Lancer submits. POST your cover letter and answers to bidUrl, or a rejection to rejectUrl, using your API key. Lancer submits the proposal on Upwork through your connected account and confirms with a bid_complete webhook.

If you never call back for a job, nothing happens: the lead is simply skipped. There is no timeout and no fallback bid. You are always in control.

The step in between is the whole point

Once job.new hits your server, Lancer is out of the loop until you call back. That middle step is yours, with full creative freedom:

  • No-code workflows in n8n, Zapier, or Make. A webhook trigger plus an HTTP request node is a complete integration.
  • Your own prompts and models. Score suitability and draft proposals with whatever AI provider and system prompts you like.
  • Personalized extras. Intro videos generated per client (ElevenLabs, HeyGen, Loom), custom work samples built from what the job post mentions, enrichment from your own data.
  • Plain code. A small script on any server you host.

Nothing about the in-between step is dictated by Lancer.

What changes when you flip a campaign to external

  1. Lancer's suitability AI stops running for this campaign. Every job that passes the filters goes to your webhook instead.
  2. Your campaign filters become the only gate. Jobs that do not match never reach your endpoint, so the filters are your volume control.
  3. Slack and Discord "new job" alerts are turned off for this campaign; the webhook is the delivery channel. Other campaigns are unaffected.
  4. The go-live requirements change. An external campaign can start once it has at least one saved filter and one active job.new webhook. The standard-mode requirements (knowledge base, cover letter template) do not apply, because you provide the content.
  5. If the campaign was active, switching pauses it, so nothing streams before your integration is ready.
  6. Every lead card in the campaign Feed gets a Trigger button that re-sends job.new for that job, which makes testing easy.

Switching back to standard mode reverses everything: webhooks stop firing, Lancer takes back over, alerts resume. Your webhooks stay configured but inactive, so you can flip back and forth safely.

What you need

  • A Lancer organization on a paid plan, with a campaign and a connected Upwork account.
  • An API key (Settings, then Integrations, API keys tab).
  • Somewhere to receive a webhook: an n8n/Zapier/Make workflow or any HTTPS endpoint.

Ready? The Quickstart walks through the whole setup in about 15 minutes.

On this page