🔓 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

Upwork to Slack, only new job alerts that matter

Lisa Granqvist Partner Workflow Automation Expert

Refreshing Upwork all day is a trap. You lose focus, you still miss great posts, and half the “new” jobs you click are ones you already saw yesterday.

This is the exact pain freelancers feel when pipeline is tight. It also hits agency owners trying to keep benches filled, and recruiters juggling too many searches at once. With Upwork Slack alerts, you get only fresh job posts, pushed straight to a channel you already watch.

This workflow pulls Upwork jobs on a schedule, filters duplicates using a database, then posts the new ones to Slack. You’ll see what it does, what you need, and how to make it match your keywords and work hours.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Upwork to Slack, only new job alerts that matter

The Problem: Upwork Monitoring Turns Into Busywork

When you’re trying to win on Upwork, speed matters. But “staying on top of it” usually means opening the same search again and again, scanning titles you’ve already scanned, and hoping the one good opportunity doesn’t show up while you’re in a call. It’s not just time. It’s context switching, second-guessing, and that low-grade stress that you’re always a little late. And if you’re managing multiple keywords or niches, the mess multiplies fast.

It adds up fast. Here’s where it breaks down in real life.

  • You end up checking Upwork every 20–30 minutes, which quietly steals about 1–2 hours of a workday.
  • Duplicate listings waste attention because the same jobs resurface in search, especially when you tweak filters.
  • When you’re busy, you simply forget to refresh, and you find a perfect post an hour after it was published.
  • Copying links into Slack (or a notes app) is manual, inconsistent, and easy to abandon after a week.

The Solution: Automatic Upwork Job Fetch + Slack Alerts (No Duplicates)

This workflow watches Upwork for you, on a predictable schedule, and only taps you on the shoulder when something is actually new. Every 20 minutes during your working hours, n8n triggers a run, calls the Apify Upwork API to fetch the latest job listings for your keywords, and then compares those results against what you’ve already seen. Instead of trusting your memory, it stores unique jobs in MongoDB, so duplicates get filtered out automatically. When a brand-new listing appears, the workflow posts a message to Slack with the job details, which means you can review and respond while you’re already in “work mode.”

The workflow starts on a schedule and checks that it’s within your chosen hours (default is 9 AM to 5 PM). Then it pulls listings from Upwork via Apify, compares them to what’s stored in MongoDB, and sends only the new items to Slack. No refreshing. No deja vu posts.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you track 3 Upwork searches (like “n8n”, “Python”, and “automation”) and you check each one about once an hour. If each check takes only 3 minutes to load, scan, and open a couple posts, that’s roughly 24 checks a day, or about 70 minutes of pure scanning. With this workflow, you spend maybe 5 minutes setting keywords and Slack once, then you just react to messages. The run happens every 20 minutes, so you’re usually seeing new posts within the hour without babysitting a browser tab.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Apify to fetch Upwork job listings via API.
  • MongoDB to store jobs and remove duplicates.
  • Slack to receive new job alerts in a channel.
  • Apify token (get it from your Apify account settings).

Skill level: Beginner. You’ll connect accounts, paste a few credentials, and edit keywords and a time window.

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

How It Works

A scheduled run checks your work window. n8n triggers every 20 minutes, then an “are we within working hours?” rule decides if the workflow should continue.

Your keywords are mapped into the request. A simple “set fields” step loads the search parameters (the workflow uses a start URL list), so you can change what you’re monitoring without rewriting anything.

Upwork listings are fetched and compared to your database. n8n calls Apify to retrieve job posts, then looks up stored records in MongoDB. A merge + filter keeps only the jobs that haven’t been saved before.

New jobs are saved and pushed to Slack. Fresh listings get inserted into MongoDB first (so you don’t get re-alerted), then a Slack message posts the details to your chosen channel.

You can easily modify the keywords and the working-hours logic based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Trigger

This workflow starts on a recurring schedule, then checks if the run is within your desired work window.

  1. Add the Scheduled Run Trigger node and set Rule to run every 10 minutes.
  2. Connect Scheduled Run Trigger to Check Work Window.
  3. In Check Work Window, set the first condition Left Value to {{ $json.Hour }} with Operation gt and Right Value 2.
  4. Add the second condition with Left Value {{ $json.Hour }}, Operation lt, and Right Value 15.

⚠️ Common Pitfall: The Check Work Window node expects an Hour field in the incoming data. Ensure your trigger or an upstream node provides it if you customize this workflow.

Step 2: Connect the Job Data Source

Map input variables for the API call and configure the HTTP request that retrieves job listings.

  1. In Map Input Variables, set startUrls (type array) to [{"url":"https://www.upwork.com/nx/search/jobs/?nbs=1&q=python","method":"GET"},{"url":"https://www.upwork.com/nx/search/jobs/?nbs=1&q=java","method":"GET"}].
  2. Set proxyCountryCode to FR.
  3. Connect Check Work Window to Map Input Variables, then connect Map Input Variables to Retrieve Job Listings.
  4. In Retrieve Job Listings, set URL to =https://api.apify.com/v2/acts/arlusm~upwork-scraper-with-fresh-job-posts/run-sync-get-dataset-items and Method to POST.
  5. Enable Send Body and set body parameters: startUrls to {{ $json.startUrls }} and proxyCountryCode to {{ $json.proxyCountryCode }}.
  6. Credential Required: Connect your httpQueryAuth credentials in Retrieve Job Listings.

Step 3: Set Up Record Matching and Merging

Check for already stored listings and merge only new records.

  1. Connect Retrieve Job Listings to both Search Stored Records and Combine Fresh Records in parallel.
  2. In Search Stored Records, set Collection to n8n and Query to { "title": "{{ $json.title }}", "budget": "{{ $json.budget }}" }.
  3. Credential Required: Connect your mongoDb credentials in Search Stored Records.
  4. In Combine Fresh Records, set Mode to combine, Join Mode to keepNonMatches, and Fields To Match to title, budget.
  5. Connect Search Stored Records to Combine Fresh Records.

Retrieve Job Listings outputs to both Search Stored Records and Combine Fresh Records in parallel to compare new listings and pass raw results for merging.

Step 4: Configure Output Destinations

Save new listings to MongoDB and send Slack alerts for visibility.

  1. Connect Combine Fresh Records to both Insert New Records and Post Slack Alert in parallel.
  2. In Insert New Records, set Operation to insert, Collection to n8n, and Fields to title,link,paymentType,budget,projectLength,shortBio,skills,publishedDate,normalizedDate,searchUrl.
  3. Credential Required: Connect your mongoDb credentials in Insert New Records.
  4. In Post Slack Alert, set Text to Job Title : {{ $json.title }} Published : {{ $json.publishedDate }} Link : {{ $json.link }} Payment Type: {{ $json.paymentType }} Budget: {{ $json.budget }} Skills: {{ $json.skills }} Bio: {{ $json.shortBio }} and select your Channel.
  5. Credential Required: Connect your slackApi credentials in Post Slack Alert.

Combine Fresh Records outputs to both Insert New Records and Post Slack Alert in parallel, so records are saved and announced at the same time.

Step 5: Test and Activate Your Workflow

Validate the complete flow and then enable it for production use.

  1. Click Execute Workflow to run a manual test starting from Scheduled Run Trigger.
  2. Confirm that Retrieve Job Listings returns items and that Search Stored Records identifies existing matches.
  3. Verify new listings are inserted in the n8n collection by Insert New Records and that a message appears in Slack from Post Slack Alert.
  4. When successful, toggle the workflow to Active so the schedule runs every 10 minutes.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Apify credentials can expire or the token may not have access to the actor you’re calling. If alerts suddenly stop, check your Apify token and your actor run history first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Slack tokens and workspace permissions can be picky, especially in locked-down orgs. If messages don’t show up, confirm the bot is allowed to post in the channel and reselect the channel ID in the Slack node.

Frequently Asked Questions

How long does it take to set up this Upwork Slack alerts automation?

About 30 minutes if you already have Apify, MongoDB, and Slack ready.

Do I need coding skills to automate Upwork Slack alerts?

No. You’ll mostly paste credentials, set your keywords, and choose a Slack channel.

Is n8n free to use for this Upwork Slack alerts 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 Apify subscription costs and whatever you pay for MongoDB hosting.

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 Slack alerts workflow for different keywords and hours?

Yes, and it’s the first thing you should tweak. Update your search keywords in the “Map Input Variables” step (the start URL list), then adjust the “Check Work Window” rules to match your timezone and the hours you actually want notifications. Some people remove the hours filter completely and let it run all day. You can also edit the Slack message text to include extra details like budget, client location, or the direct job URL.

Why is my Slack connection failing in this workflow?

Usually it’s permissions. Reconnect Slack in n8n, confirm the bot is allowed to post in the target channel, and verify the channel ID hasn’t changed (private channels trip people up a lot). If it’s intermittent, you may also be hitting Slack rate limits when many jobs come in at once.

How many job posts can this Upwork Slack alerts automation handle?

A lot.

Is this Upwork Slack alerts automation better than using Zapier or Make?

Often, yes, because deduping properly usually needs a database lookup plus merge/filter logic, and that gets awkward (and expensive) in some no-code tools. With n8n, you can self-host for unlimited runs, keep your logic in one place, and store “already seen” jobs in MongoDB without weird hacks. Zapier or Make can still work if you’re fine with simpler filtering and fewer searches, and you don’t mind paying more as volume grows. Honestly, the best choice depends on how competitive your niche is and how much you care about duplicates. Talk to an automation expert if you’re not sure which fits.

Once this is running, Upwork becomes a stream you review, not a tab you babysit. The workflow handles the repeatable stuff, so you can spend your attention where it actually wins work.

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