🔓 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 alerts with Airtable dedupe

Lisa Granqvist Partner Workflow Automation Expert

Refreshing Upwork all day is a productivity tax. You miss good postings, you re-open the same listings twice, and your “system” turns into browser tabs you don’t trust.

If you’re a freelancer hunting for project fit, this Upwork Slack alerts automation keeps you fast without being frantic. Recruiters use it to spot new roles early. And small agency owners rely on it to keep lead flow visible for the whole team.

You’ll set up a workflow that pulls Upwork jobs via Apify, filters duplicates in Airtable, and posts only new matches into Slack on a schedule. You’ll also learn what to customize so it fits your keywords, hours, and channel.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Upwork to Slack alerts with Airtable dedupe

Why This Matters: Staying First Without Living in Upwork

Upwork is a moving feed, not an inbox. The best opportunities get responses quickly, which means “I’ll check later” quietly becomes “I never saw it.” Most people compensate by checking constantly, but that creates a different problem: you keep interrupting real work, and you still end up re-reading the same posts because there’s no memory of what you already reviewed. If you’re coordinating with a team, it’s worse. Someone claims a lead in a DM, another person pitches anyway, and you look messy.

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

  • Manual checking turns into dozens of tiny context switches across the day, and you pay for each one in lost focus.
  • Without dedupe, you’ll see the same job multiple times, which makes alerts easy to ignore.
  • Important listings get buried in bookmarks, screenshots, or “I’ll send it later” messages that never happen.
  • Even when you do share jobs, there’s no clean log, so follow-up and tracking are basically guesswork.

What You’ll Build: Upwork Job Alerts That Only Fire Once

This workflow runs on a schedule during your chosen working hours and pulls fresh Upwork job listings through the Apify API. It takes those results, checks Airtable to see what you’ve already captured (using the job title and link as the identity), and filters out anything you’ve seen before. Only truly new matches get inserted into your Airtable table, which becomes your lightweight lead database. Finally, the workflow formats a Slack notification and posts the new jobs to your channel so you can respond quickly without living inside Upwork. The whole thing is designed for consistency: same keywords, same cadence, clean history.

The workflow starts with a scheduled trigger and a “working hours” check, so you’re not getting pinged at midnight. From there, it queries Upwork via Apify, compares against Airtable, then posts a Slack alert for only the new items.

What You’re Building

Expected Results

Say you normally check Upwork about 10 times a day, and each check costs maybe 5 minutes once you filter, open tabs, and scan details. That’s roughly 50 minutes a day, plus the mental drag of breaking your focus. With this workflow running every 30 minutes during work hours, you spend close to 5 minutes a day skimming Slack alerts and opening only the promising ones. Most people get around 45 minutes back daily, and the bigger win is you stop missing “fresh” listings.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Apify to fetch Upwork job posts by keyword.
  • Airtable for dedupe storage and your job log.
  • Slack to receive alerts in a channel.
  • Apify token (get it from your Apify account settings)

Skill level: Beginner. You will connect accounts, create a simple Airtable table, and tweak a few fields like keywords and working hours.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A schedule kicks it off. n8n runs the workflow on a timer, and the “working hours” check can stop it outside 9 AM–5 PM so your notifications stay sane.

Your keywords get packaged for the search. A mapping step prepares the query inputs (the URLs/keywords Apify needs) so you can change what you track without rewriting the workflow.

Upwork listings are fetched and compared. The HTTP request calls Apify’s Upwork scraper. Airtable is then searched for matching records so the workflow can tell what’s new versus already logged.

Only fresh jobs make it through. The merge and filtering logic removes duplicates, inserts new records into Airtable, and posts a Slack alert in a clean order so the newest opportunities are easiest to spot.

You can easily modify the search keywords to match different services, niches, or locations based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the workflow’s schedule and working-hour guardrails so it only runs during business hours.

  1. Open Scheduled Start and set the schedule rule to run every 30 minutes.
  2. Open Validate Work Hours and confirm the first condition is Number gte with Left Value set to {{ $json.Hour }} and Right Value set to 9.
  3. Confirm the second condition is Number lt with Left Value set to {{ $json.Hour }} and Right Value set to 17.
Tip: If you want different hours, adjust the 9 and 17 values in Validate Work Hours.

Step 2: Connect Apify Search Inputs and Fetch Listings

Define the Upwork search URLs and send them to Apify to fetch listings.

  1. Open Map Query Inputs and set startUrls to the array value shown in the node, including the two URLs for python and chatgpt.
  2. In Map Query Inputs, set proxyCountryCode to US.
  3. Open Fetch Upwork Listings and set URL to =https://api.apify.com/v2/acts/arlusm~upwork-scraper-with-fresh-job-posts/run-sync-get-dataset-items.
  4. Set Method to POST and enable Send Body.
  5. Map the body parameters: startUrls to {{ $json.startUrls }} and proxyCountryCode to {{ $json.proxyCountryCode }}.
  6. Credential Required: Connect your httpQueryAuth credentials in Fetch Upwork Listings.
⚠️ Common Pitfall: The Apify endpoint requires query authentication. If the httpQueryAuth credential is missing, the request will fail.

Step 3: De-duplicate Against Airtable and Merge Results

Check existing records in Airtable and keep only fresh job listings.

  1. Open Lookup Airtable Records and set Operation to search.
  2. Set Filter By Formula to ={Link}='{{ $json.link }}'.
  3. Select your Base and Table IDs in Lookup Airtable Records.
  4. Credential Required: Connect your airtableTokenApi credentials in Lookup Airtable Records.
  5. Open Combine Fresh Results and set Mode to combine and Join Mode to keepNonMatches.
  6. Set Fields to Match to title, link.
  7. Confirm the parallel execution: Fetch Upwork Listings outputs to both Lookup Airtable Records and Combine Fresh Results in parallel.
Tip: The merge keeps only non-matching items, so Airtable won’t get duplicates.

Step 4: Configure Airtable Creation and Slack Notifications

Save new listings to Airtable and send a formatted Slack alert in reverse order.

  1. Open Add Airtable Records and set Operation to create.
  2. Select your Base and Table IDs in Add Airtable Records.
  3. Map fields in Add Airtable Records using the existing mappings: link to {{ $json.link }} and title to {{ $json.title }}.
  4. Credential Required: Connect your airtableTokenApi credentials in Add Airtable Records.
  5. Open Reverse Post Sequence and set JavaScript Code to return $input.all().reverse();.
  6. Open Post Slack Alert and set Text to the multi-line template shown in the node, including {{ $json.title }}, {{ $json.publishedDate }}, and {{ $json.link }}.
  7. Select the target channel in Post Slack Alert and keep Select set to channel.
  8. Credential Required: Connect your slackApi credentials in Post Slack Alert.
  9. Confirm the parallel execution: Combine Fresh Results outputs to both Add Airtable Records and Reverse Post Sequence in parallel, and Reverse Post Sequence feeds Post Slack Alert.
⚠️ Common Pitfall: The Base and Table fields in the Airtable nodes are placeholders. Replace [YOUR_ID] with real IDs before testing.

Step 5: Test and Activate Your Workflow

Run a manual test to verify the schedule, Apify fetch, Airtable de-duplication, and Slack alerts.

  1. Click Execute Workflow to run a manual test from Scheduled Start.
  2. Confirm that Fetch Upwork Listings returns items and Combine Fresh Results outputs only new listings.
  3. Verify new rows appear in Airtable from Add Airtable Records and that Post Slack Alert posts messages in the selected channel.
  4. If results are missing, check that Validate Work Hours is passing the current time and that credentials are connected.
  5. Turn the workflow on using the Active toggle to enable scheduled execution.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Apify credentials can expire or your actor may require specific permissions on your plan. If things break, check your Apify token and actor run history in the Apify console 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 posts can fail if the app isn’t allowed to post to that channel. Verify the Slack app scopes and confirm the channel ID (and that the bot is invited) before you blame the workflow.

Quick Answers

What’s the setup time for this Upwork Slack alerts automation?

About 30 minutes if your Apify, Airtable, and Slack accounts are ready.

Is coding required for this Upwork Slack alerts?

No. You’ll mostly paste an API token, connect Airtable and Slack, and edit a few fields like keywords and hours.

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 costs since this workflow requires an active Apify subscription.

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 modify this Upwork Slack alerts automation for different use cases?

Yes, and you should. Change the keywords and search inputs in the “Map Query Inputs” step, adjust the “Validate Work Hours” rules to match your timezone, and update the Slack message format in the Slack node to include the details you care about (budget, country, or job age).

Why is my Apify connection failing in this workflow?

Usually it’s an invalid or expired Apify token, or the actor you’re calling isn’t available on your current plan. Check the Apify run logs first to see if the request is being rejected, then confirm your token is correct in n8n. If it runs but returns empty data, it’s often your search inputs (the keywords or URLs) rather than the connection itself.

What volume can this Upwork Slack alerts workflow process?

Plenty for most small teams. On n8n Cloud Starter, you’re working within the plan’s monthly execution limit, and each scheduled run counts as an execution (plus any per-item processing if you expand it). If you self-host, there’s no hard execution cap, but your server and Apify rate limits will decide how aggressively you can poll. Practically, running every 30 minutes during business hours is a comfortable baseline, and you can increase frequency if you keep your keyword list reasonable.

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

Often, yes. n8n is easier to customize when you need conditional logic (like working-hour filters) and deduping without paying extra for multiple branches. Self-hosting is also a big deal if you expect lots of runs. Zapier or Make can still be fine for simpler, two-step alerts, but this workflow’s “fetch, compare, insert, then notify” pattern fits n8n nicely. Talk to an automation expert if you want help choosing.

Once this is running, your lead discovery stops depending on willpower. The workflow handles the repeatable parts, and you get to focus on pitching the right jobs at the right time.

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