🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Gmail to Slack, only the best Upwork leads

Lisa Granqvist Partner Workflow Automation Expert

Your Upwork job alerts are “helpful” until they bury the real opportunities under a pile of almost-right gigs. You scan, you skim, you second-guess, and suddenly 30 minutes is gone with nothing to show for it.

If you’re a freelancer trying to respond fast, this Upwork lead scoring automation is the difference between “I’ll apply later” and “I already sent the best proposal.” Agency owners feel it too, because the best-fit leads are rare and time-sensitive. Even a marketing consultant juggling client work can’t afford endless inbox triage.

This n8n workflow pulls Upwork alert emails from Gmail, extracts what matters, scores the fit with AI, and only then posts the winners into Slack. You’ll see how it works, what you need, and what to tweak so the scoring matches your exact niche.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Gmail to Slack, only the best Upwork leads

The Problem: Upwork Alerts Create More Work Than Leads

Upwork alerts sound like an advantage, but the default filters are blunt. You still end up reading dozens of “maybe” jobs to find one that’s actually a match for your skills, rate, and preferred project type. And because Upwork is competitive, the timing hurts almost as much as the noise. You might find the perfect job 40 minutes after it landed, which is usually too late to be early. Meanwhile your actual billable work is sitting there, waiting.

The friction compounds. It’s not one bad alert. It’s 20 small interruptions that break your day apart.

  • You waste about 5 minutes per email just to decide “no,” and those minutes stack up fast.
  • You miss strong-fit jobs because they look like the rest at a glance, especially when you’re busy.
  • Copy-pasting snippets into notes or Slack is tedious, so you don’t track what you’ve already seen.
  • When you do spot a good one, you still hesitate because you’re not confident it matches your criteria.

The Solution: Gmail → AI Scoring → Slack for High-Fit Jobs

This workflow watches your Gmail inbox for Upwork job alert emails and does the first round of filtering for you. Every time it finds new alerts, it pulls the email content, turns it into clean text, and extracts key job details like title, description snippet, and metadata. Then an AI “opportunity scorer” compares that job data against the profile and preferences you provide (your bio, tools you know, industries you like, rate boundaries, the kind of work you avoid). If the score clears your threshold, n8n posts a structured Slack message so you can review it immediately and act. If it doesn’t, it stays out of your way. Honestly, that’s the whole point.

The workflow starts with a Gmail trigger that polls for Upwork alerts on a set schedule (10 minutes by default). AI extracts the job details, scores the fit, and assembles a neat summary. Finally, Slack only gets the jobs that pass your minimum rating.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you get about 25 Upwork alerts per day. If you spend even 5 minutes per email to judge fit, that’s roughly 2 hours daily of scanning and second-guessing. With this workflow, you still “receive” those alerts, but you only read the top handful that pass your score threshold in Slack, which might be 3–5 messages. Most days, that’s closer to 10 minutes of review plus a quick apply, instead of losing a big chunk of your morning.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Gmail to read Upwork alert emails.
  • Slack to deliver high-fit alerts to a channel.
  • LLM provider credentials (set up in OpenRouter or your chosen model provider).

Skill level: Intermediate. You’ll connect accounts, add your profile text into the scoring prompt, and adjust a threshold filter.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Gmail polling trigger. n8n checks your Gmail inbox every 10 minutes (by default) and pulls in Upwork job alert emails that match the trigger’s query.

Email cleanup and parsing. The workflow flags messages as read, renders the email into consistent text, then prepares the content so it’s easier to extract structured fields from messy email formatting.

Job extraction and AI fit scoring. AI nodes extract the job’s title, snippet, and metadata, then score the opportunity against the freelancer bio and criteria you paste into the “Opportunity Scorer” prompt.

Threshold filtering and Slack posting. If the score is high enough, n8n assembles the final fields into a clean message and posts it into your chosen Slack channel.

You can easily modify the score threshold to match your calendar (busy weeks vs. hunting weeks) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Gmail Trigger

Set up the workflow to listen for new Upwork job alert emails and pass them into the processing chain.

  1. Add and open Retrieve Filtered Emails (gmailTrigger) as the trigger node.
  2. Credential Required: Connect your gmailOAuth2 credentials.
  3. Set Filters → Query to from:([YOUR_EMAIL]) subject:(New job:).
  4. Set the polling schedule to run every 10 minutes.
  5. Disable Simple by setting it to false so full message data is available.

Step 2: Connect Gmail Actions

Mark each processed email as read and prepare the body content for AI extraction.

  1. Open Flag Email Read and set Operation to markAsRead.
  2. Set Message ID to {{ $json.id }}.
  3. Credential Required: Connect your gmailOAuth2 credentials.
  4. In Render Markdown Text, set HTML to {{ $('Retrieve Filtered Emails').item.json.textAsHtml }} and Destination Key to markdown.

Step 3: Set Up AI Extraction for Job Details

Extract structured job data from the email content using the language model and schema.

  1. Open Extract Job Details and set Text to Below is a job alert email received from Upwork. Please extract the requested information in valid JSON format. Subject: {{ $('Retrieve Filtered Emails').item.json.subject }} Body: {{ $json.markdown }}.
  2. Keep Schema Type as manual and use the provided JSON schema for fields like jobName, jobType, price, and tags.
  3. Primary Chat Model is connected as the language model for Extract Job DetailsCredential Required: Connect your openRouterApi credentials in Primary Chat Model, not in the extractor.

Step 4: Set Up AI Scoring and Result Assembly

Score the job’s fit using your profile, then assemble evaluation and job data into a single object.

  1. In Assess Opportunity Fit, keep the evaluation prompt in Text and ensure the profile block is customized to your real skills and preferences.
  2. Confirm the job payload reference in the prompt is {{ JSON.stringify($json.output, null, 2) }}.
  3. Secondary Chat Model is connected as the language model for Assess Opportunity FitCredential Required: Connect your openRouterApi credentials in Secondary Chat Model, not in the extractor.
  4. In Assemble Result Fields, set evaluation to {{ $json.output }} and job to {{ $('Extract Job Details').item.json.output }}.

Step 5: Configure Filtering and Slack Output

Filter to only high-scoring opportunities and post formatted alerts to Slack.

  1. In Filter by Rating, set the condition to Number with Left Value {{ $json.evaluation.score }} and Operation gte with Right Value 7.
  2. Open Post Slack Notice and set Select to channel, then pick your target channel ID.
  3. Set Text to the provided multi-line message string, which uses expressions such as {{ $json.job.jobName.toUpperCase() }} and {{ $json.evaluation.score }}.
  4. Credential Required: Connect your slackApi credentials.

Tip: If no Slack messages appear, verify that the Filter by Rating threshold of 7 isn’t excluding all results during testing.

Step 6: Test and Activate Your Workflow

Validate the end-to-end flow with a real Upwork alert and then activate for continuous monitoring.

  1. Click Execute Workflow and send a test email matching from:([YOUR_EMAIL]) subject:(New job:).
  2. Confirm Flag Email Read marks the email as read and Render Markdown Text produces a markdown field.
  3. Verify Extract Job Details outputs a structured JSON object and Assess Opportunity Fit returns score and reasoning.
  4. Check that Post Slack Notice sends a message when the score is 7 or higher.
  5. Toggle the workflow to Active to run it automatically on the schedule.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Slack credentials can expire or need specific permissions. If things break, check your Slack app scopes (at minimum chat:write.public and channels:read) and confirm the OAuth token is still valid.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Upwork lead scoring automation?

About 30 minutes if you already have Gmail, Slack, and your model credentials ready.

Do I need coding skills to automate Upwork lead scoring?

No. You’ll mostly connect accounts and paste your profile text into the scoring prompt.

Is n8n free to use for this Upwork lead scoring workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in LLM API costs, which are usually a few dollars a month at typical alert volumes.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Upwork lead scoring workflow for a different niche or rate?

Yes, and you should. Update the text inside the tags in the “Assess Opportunity Fit” (Opportunity Scorer) node so the AI understands your niche, tools, and deal-breakers. Common tweaks include raising the score threshold during busy periods, adding “must-have” keywords (like a specific platform), and penalizing job types you never take (low budgets, one-off quick fixes, certain industries).

Why is my Gmail connection failing in this workflow?

Most of the time it’s an expired or revoked OAuth connection in n8n. Reconnect your Gmail credential, then confirm the trigger query still matches Upwork alerts and the workflow has permission to read and modify messages (it marks emails as read). If it works once and then stops, check Gmail security alerts and any workspace admin restrictions.

How many emails can this Upwork lead scoring automation handle?

Plenty for normal usage. The bigger limiter is your execution volume and LLM usage: on n8n Cloud Starter you get a monthly execution cap, while self-hosting removes that cap and shifts the limit to your server. Practically, most freelancers can process dozens of alerts per day without issues, and you can always reduce polling frequency if you want to spend fewer executions.

Is this Upwork lead scoring automation better than using Zapier or Make?

For AI-based scoring and more detailed control, n8n is usually the better fit. You can branch, filter, and shape messages without paying extra for every “path,” and self-hosting is there if you outgrow usage limits. Zapier or Make can still work if you only want “Gmail email received → Slack message,” but once you add extraction, scoring, and thresholds, costs and complexity tend to creep up. If you want help choosing, Talk to an automation expert and get a quick recommendation based on your alert volume.

This is what “being early” looks like without living in your inbox. Let the workflow do the sorting so you can spend your attention on the jobs you actually want.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal