Apify to WhatsApp, job alerts that hit fast
Checking Upwork, Fiverr, and Freelancer all day is a terrible use of your brain. You still miss good posts, you still reply late, and you still end up copy-pasting details into a sheet “so you can follow up later.”
This Apify WhatsApp alerts setup hits hardest for freelancers chasing inbound work, but agency owners and business development folks feel it too. The outcome is simple: you get new job matches pushed to WhatsApp fast, while every lead is logged in Google Sheets automatically.
Below you’ll see how the workflow runs, what it actually automates, and what to tweak if you want stricter filters or different alert channels.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Apify to WhatsApp, job alerts that hit fast
flowchart LR
subgraph sg0["When chat message received Flow"]
direction LR
n0@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields1", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/whatsapp.svg' width='40' height='40' /></div><br/>Send message"]
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Run an Actor", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Code in JavaScript"]
n4@{ icon: "mdi:database", form: "rounded", label: "Append or update row in sheet1", pos: "b", h: 48 }
n5@{ icon: "mdi:play-circle", form: "rounded", label: "When chat message received", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Edit Fields To send Specific..", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Get dataset items", pos: "b", h: 48 }
n0 --> n4
n2 --> n7
n7 --> n3
n3 --> n0
n5 --> n2
n4 --> n6
n6 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n5 trigger
class n2,n7 decision
class n4 database
class n3 code
classDef customIcon fill:none,stroke:none
class n1,n3 customIcon
The Problem: Job posts go stale before you reply
Most freelance platforms reward speed. Not because they’re “unfair,” but because clients get flooded and shortlist quickly. Manually scanning listings turns into a weird loop: open tabs, refresh searches, skim titles, open each post, then decide if it’s relevant. After that, you still have to capture the details somewhere, otherwise you lose the lead and forget why it mattered. It’s tiring. And frankly, it’s easy to get sloppy, which leads to missed deadlines, wrong budgets, and follow-ups that never happen.
The friction compounds. Here’s where it breaks down.
- You spend about 30–60 minutes a day just “checking,” and it rarely feels finished.
- When you respond late, the client has usually moved on to faster bidders.
- Copying job details into a tracker invites typos, missing links, and duplicate entries.
- Without a consistent log in Google Sheets, you can’t tell which sources convert into real calls.
The Solution: Apify scraping + WhatsApp alerts + Google Sheets logging
This workflow turns job hunting into a quick “review and respond” habit. It starts when you send a chat message in n8n’s Chat Trigger (often from Telegram-style chat intake) to run a scan on demand. n8n then kicks off an Apify Actor that scrapes your target platform (Upwork, Fiverr, Freelancer, or anything you’ve built an Actor for). Once the scrape finishes, the workflow fetches dataset items from Apify’s API, filters and scores them in a JavaScript step, and maps the fields into a clean structure. Every matching job gets logged to Google Sheets, and a readable summary is formatted and pushed to your phone as a WhatsApp message so you can react immediately.
The workflow begins with a message-based trigger, then runs Apify and pulls back dataset items. After the keyword scoring and field mapping, Google Sheets becomes your source of truth, and WhatsApp becomes your “tap to respond” channel.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you check 3 platforms twice a day. If each check takes about 10 minutes (open, filter, skim, click a few posts), that’s roughly 60 minutes daily, and you still need another 10 minutes to log anything worth following up on. With this workflow, you trigger a run with a quick chat message (about 1 minute), wait a few minutes for Apify to scrape and return results, then read the WhatsApp alert and act. In practice, many people turn an hour of “checking” into about 10 minutes of reviewing, with a clean Google Sheets log created automatically.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Apify to scrape listings with an Actor.
- Google Sheets to store and track each matching job.
- WhatsApp Cloud API or Twilio WhatsApp (get credentials from your Meta WhatsApp Cloud dashboard or Twilio console)
Skill level: Intermediate. You’ll connect accounts, paste API tokens, and lightly tweak a keyword scoring script.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A chat message triggers the run. You send a short prompt through the workflow’s chat intake trigger to start a fresh scan without touching the platform UI.
Apify scrapes, then returns dataset results. n8n executes your Apify Actor and then fetches the dataset items through Apify’s API, which means you get structured results instead of messy copy-paste.
Jobs are scored and cleaned up. A JavaScript code step applies your keyword logic (and any budget rules you add), then “Map Job Fields” normalizes titles, links, client info, budgets, and descriptions into a consistent format.
Google Sheets logs it and WhatsApp pings you. The workflow syncs a row into Sheets for tracking, then prepares a readable message payload and sends the alert through WhatsApp so you can respond while the post is still fresh.
You can easily modify the keyword and budget rules to tighten matches based on your niche. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Chat Trigger
This workflow starts when a chat message is received, then routes the chat input into the Apify scraper query.
- Add and open Chat Intake Trigger.
- Leave default settings unless you need custom webhook options.
- Confirm the flow: Chat Intake Trigger → Execute Apify Scraper.
Step 2: Connect Apify for Job Scraping
Apify runs the scraper and returns the dataset items for scoring.
- Open Execute Apify Scraper and set the Actor ID to your Apify actor.
- Set Custom Body to
={ "paymentVerified": true, "query": "{{ $json.chatInput }}" }. - Credential Required: Connect your apifyApi credentials in Execute Apify Scraper.
- Open Retrieve Dataset Items and set Resource to
Datasets. - Set Dataset ID to
={{ $json.defaultDatasetId }}. - Credential Required: Connect your apifyApi credentials in Retrieve Dataset Items.
Step 3: Set Up the Processing Nodes
These nodes score and normalize job listings, then map fields into structured data for storage and alerts.
- Open Keyword Scoring Script and keep the JavaScript as provided to score titles and descriptions.
- Open Map Job Fields and verify mappings such as Title →
={{ $json.title }}, Payment Type →={{ $json.jobType }}, and Found →={{ $now.toISO() }}. - Confirm the flow: Retrieve Dataset Items → Keyword Scoring Script → Map Job Fields.
Step 4: Configure Output and Alert Delivery
Save results to Google Sheets, prepare an alert payload, and send the WhatsApp message.
- Open Sync Sheet Row and set Operation to
appendOrUpdate. - Set Document ID to
1rBRKpiA2COarqpmYTAR1pl2pOtj4l3ftBEjoNc6lU_Aand Sheet Name toSheet1(gid=0). - Credential Required: Connect your googleSheetsOAuth2Api credentials in Sync Sheet Row.
- Open Prepare Alert Payload and confirm fields like Job Tile →
={{ $json.Title }}and Payment type →={{ $json['Payment Type'] }}. - Open Dispatch WhatsApp Alert and set Operation to
send. - Set Text Body to
=# New Job Alet make the Proposal ASAP Name : Job Title : {{ $json['Job Tile'] }} Posted Date : {{ $json['job posted'] }} Hourly Budget : {{ $json.budget }} Payment Type : {{ $json['Payment type'] }}. - Set Phone Number ID to
745077835357667and Recipient Phone Number to your actual number. - Credential Required: Connect your whatsAppApi credentials in Dispatch WhatsApp Alert.
Job Tile, job posted, and Payment type. These must match exactly in Prepare Alert Payload and Dispatch WhatsApp Alert to avoid blank messages.Step 5: Test and Activate Your Workflow
Run a full test to ensure the scraper, sheet sync, and WhatsApp alert all work as expected.
- Click Execute Workflow and send a sample chat message to Chat Intake Trigger.
- Verify that Execute Apify Scraper returns a dataset ID and Retrieve Dataset Items outputs listings.
- Confirm that Sync Sheet Row appends or updates the row in the Google Sheet.
- Check that Dispatch WhatsApp Alert sends a message to your recipient number with populated fields.
- Turn the workflow Active to enable production alerts.
Common Gotchas
- Apify credentials can expire or your token may not have access to the Actor. If things break, check the Apify API token permissions in your Apify Console first.
- If you’re using Wait nodes or external scraping, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- WhatsApp Cloud API and Twilio WhatsApp can reject messages if templates, sender setup, or phone number verification is incomplete. Check your Meta WhatsApp Cloud dashboard or Twilio logs to see the exact rejection reason.
Frequently Asked Questions
About 45 minutes if your Apify Actor and WhatsApp credentials are ready.
No, not really. You might edit a few keywords in the scoring script, but you are mostly connecting accounts and testing runs.
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 WhatsApp provider costs (Meta Cloud is typically low volume friendly, Twilio varies by region) and your Apify usage based on scraping frequency.
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.
Yes, and it’s the part worth spending time on. Update the filtering logic in the Keyword Scoring Script node, then adjust the fields in Map Job Fields so your sheet includes what you actually judge jobs by (budget, client history, timezone, and so on). Common customizations include a negative keyword list, minimum budget rules, and separate alert formats for “perfect match” vs “maybe.”
Usually it’s a credentials or sender setup issue. Confirm you’re using the correct WhatsApp Cloud API token (or Twilio auth), the sending number is approved, and your account isn’t restricted. Also check message formatting, because some providers reject payloads with unsupported fields. If it used to work and suddenly doesn’t, regenerate the token and update it in n8n.
Plenty for most freelancers.
Often, yes, because scraping + scoring logic gets awkward fast in Zapier/Make. n8n handles branching, code-based filtering, and multi-step transformations without turning into a fragile chain of paid “tasks.” Zapier or Make can still be fine if you only need a basic notification and you are not doing custom scoring. If you want, Talk to an automation expert and we’ll point you to the simplest option for your setup.
Once it’s running, new opportunities show up where you actually notice them. The workflow handles the repetitive stuff, and you get to spend your time on replies that win.
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.