N
n8n Store
Workflow Market
Upwork Job Alert workflow

Upwork Job Alert workflow

by asfandyar-malik0 views

説明

Categories

📊 Productivity

Nodes Used

n8n-nodes-base.setn8n-nodes-base.setn8n-nodes-base.coden8n-nodes-base.whatsAppn8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.stickyNoten8n-nodes-base.googleSheets@apify/n8n-nodes-apify.apify@apify/n8n-nodes-apify.apify
Price無料
Views0
最終更新11/28/2025
workflow.json
{
  "id": "2N6RJnwzjP8bVcFu",
  "meta": {
    "instanceId": "7b35059aff065837b1c7d24142b37474554b08b3370f3096b2e57345690d178e",
    "templateCredsSetupCompleted": true
  },
  "name": "Upwork Job Alert workflow",
  "tags": [],
  "nodes": [
    {
      "id": "b5449656-57b5-40aa-8a83-b3279b11f734",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        4064,
        816
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "f86d90d2-d03a-4553-9bc0-820da3f74b56",
              "name": "Title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "880e6f53-02c9-47f4-9d15-a2e9f086891f",
              "name": "Description",
              "type": "string",
              "value": "={{ $json.description }}"
            },
            {
              "id": "e098c4db-51f5-4038-811a-8f00c3924475",
              "name": "Status",
              "type": "string",
              "value": "New"
            },
            {
              "id": "e0b12de9-6e31-4405-8aed-82e90b85ed98",
              "name": "Payment Type",
              "type": "string",
              "value": "={{ $json.jobType }}"
            },
            {
              "id": "830a8fec-9b27-47d5-b933-eb0d5b0add9f",
              "name": "Experience",
              "type": "string",
              "value": "={{ $json.experienceLevel }}"
            },
            {
              "id": "8e733eaa-7592-4e86-b66b-5eeaa0e3fc97",
              "name": "Salary",
              "type": "string",
              "value": "={{ $json.budget }}"
            },
            {
              "id": "9e733eaa-7592-4e86-b66b-5eeaa0e3fc98",
              "name": "Location",
              "type": "string",
              "value": "={{ $json.clientLocation }}"
            },
            {
              "id": "ce733eaa-7592-4e86-b66b-5eeaa0e3fca1",
              "name": "URL",
              "type": "string",
              "value": "={{ $json.url }}"
            },
            {
              "id": "de733eaa-7592-4e86-b66b-5eeaa0e3fca2",
              "name": "Date",
              "type": "string",
              "value": "={{ $json.absoluteDate }}"
            },
            {
              "id": "ee733eaa-7592-4e86-b66b-5eeaa0e3fca3",
              "name": "Found",
              "type": "string",
              "value": "={{ $now.toISO() }}"
            },
            {
              "id": "54646432-f8fe-4c14-9976-c151f16c9a86",
              "name": "hire_percentage",
              "type": "string",
              "value": "={{ $json.clientHireRatePercent }}"
            },
            {
              "id": "fae26632-6c73-42cc-b7da-90ae8c757d4d",
              "name": "spending_history",
              "type": "string",
              "value": "={{ $json.clientTotalSpent }}"
            },
            {
              "id": "76f9d4ee-2a39-478d-9955-9cd1df47d8c4",
              "name": "rating",
              "type": "string",
              "value": "={{ $json.clientRating }}"
            },
            {
              "id": "492ee934-f629-4ffe-8f6f-63bed6cc4f9f",
              "name": "score",
              "type": "string",
              "value": "={{ $json.score }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "9672eb74-4c5a-439b-aab5-4e06663a937f",
      "name": "Send message",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        4576,
        816
      ],
      "webhookId": "c5023490-5e38-49bd-883b-ee2ccad2bd53",
      "parameters": {
        "textBody": "=# New Job Alet make the Proposal ASAP\n\nName : \n\nJob Title : {{ $json['Job Tile'] }}\n\nPosted Date : {{ $json['job posted'] }}\n\nHourly Budget : {{ $json.budget }}\n\nPayment Type : {{ $json['Payment type'] }}\n",
        "operation": "send",
        "phoneNumberId": "745077835357667",
        "additionalFields": {
          "previewUrl": false
        },
        "recipientPhoneNumber": "Add your number"
      },
      "credentials": {
        "whatsAppApi": {
          "id": "scRxHCAkRVled5zP",
          "name": "WhatsApp account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c49b734d-ba70-41cf-bbe6-3b9ddc2b3472",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3408,
        624
      ],
      "parameters": {
        "color": 3,
        "width": 1376,
        "height": 400,
        "content": "# Freelance Job Tracker with WhatsApp Alerts"
      },
      "typeVersion": 1
    },
    {
      "id": "847030db-1bc7-424a-b73b-c736109da905",
      "name": "Run an Actor",
      "type": "@apify/n8n-nodes-apify.apify",
      "position": [
        3584,
        816
      ],
      "parameters": {
        "actorId": {
          "__rl": true,
          "mode": "id",
          "value": "Add your Actor Id"
        },
        "timeout": {},
        "customBody": "={\n    \n    \"paymentVerified\": true,\n    \"query\": \"{{ $json.chatInput }}\"\n}"
      },
      "credentials": {
        "apifyApi": {
          "id": "X2v0szs11ucfAaTq",
          "name": "Apify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "dfb38ee0-cb7e-4c6a-ba72-9fc8fa592ec5",
      "name": "Code in JavaScript",
      "type": "n8n-nodes-base.code",
      "position": [
        3904,
        816
      ],
      "parameters": {
        "jsCode": "// === INPUT ===\n// Expecting keywords already provided by the previous node (like Chat Trigger)\nconst inputData = $input.item.json;\nconst query = inputData.keywords || \"\"; // make sure this field exists\nconst keywords = Array.isArray(query)\n  ? query.map(k => k.toLowerCase())\n  : query.toLowerCase().split(/\\s+/).filter(k => k.length > 1);\n\n// === PROCESS EACH ITEM ===\nreturn items.map(item => {\n  const title = (item.json.title || \"\").toLowerCase();\n  const description = (item.json.description || \"\").toLowerCase();\n\n  // Combine both fields for scoring\n  const text = title + \" \" + description;\n\n  // Score relevance\n  let score = 0;\n  keywords.forEach(word => {\n    const regex = new RegExp(\"\\\\b\" + word + \"\\\\b\", \"gi\");\n    const matches = text.match(regex);\n    if (matches) score += matches.length * 20; // weight per keyword match\n  });\n\n  // Add extra weight if keyword appears in title\n  keywords.forEach(word => {\n    const regexTitle = new RegExp(\"\\\\b\" + word + \"\\\\b\", \"gi\");\n    const matchesInTitle = title.match(regexTitle);\n    if (matchesInTitle) score += matchesInTitle.length * 30;\n  });\n\n  // Normalize score\n  if (score > 100) score = 100;\n\n  // Attach score\n  item.json.score = score;\n\n  return item;\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "fc856cc0-beb8-4b31-89df-cd26bb295e49",
      "name": "Append or update row in sheet1",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        4224,
        816
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.URL }}",
            "Date": "={{ $json.Date }}",
            "Found": "={{ $json.Found }}",
            "Score": "={{ $json.score }}",
            "Title": "={{ $json.Title }}",
            "Salary": "={{ $json.Salary }}",
            "Status": "={{ $json.Status }}",
            "Location": "={{ $json.Location }}",
            "Experience": "={{ $json.Experience }}",
            "Description": "={{ $json.Description }}",
            "Payment Type": "={{ $json['Payment Type'] }}"
          },
          "schema": [
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Description",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Payment Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Payment Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Experience",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Experience",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Salary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Salary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Message",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Message",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Score",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Found",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Found",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Title"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "Add your sheet url",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1rBRKpiA2COarqpmYTAR1pl2pOtj4l3ftBEjoNc6lU_A",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1rBRKpiA2COarqpmYTAR1pl2pOtj4l3ftBEjoNc6lU_A/edit?usp=drivesdk",
          "cachedResultName": "Upwork Whatsapp alert"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "UwnixXxqC0pFVvLS",
          "name": "My Account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "2e803289-97da-41b5-98cc-d91c985b7d1b",
      "name": "When chat message received",
      "type": "@n8n/n8n-nodes-langchain.chatTrigger",
      "position": [
        3440,
        816
      ],
      "webhookId": "a6f2534a-9af9-4d84-8d7f-e48813f1cf75",
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.3
    },
    {
      "id": "9b24fdab-a2f2-4449-ac11-81cc3d84ba6d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2464,
        624
      ],
      "parameters": {
        "width": 880,
        "height": 1152,
        "content": "## 💼 Freelance Job Tracker with WhatsApp Alerts (Apify + n8n)\n\n## 🟨 Workflow Overview\n\nThis workflow automates freelance job tracking by using Apify Actors to scrape job listings (e.g., from Upwork or Fiverr) and sends real-time WhatsApp alerts when new opportunities are found.\nIt’s designed for freelancers, agencies, and solopreneurs who want to stay updated without constantly checking job sites.\n\n🧩 Sticky Notes Summary\n\n🟩 1. When Chat Message Received (Trigger)\n\nThis node listens for a message in WhatsApp (via the connected API or webhook).\nYou can also trigger it manually to start the workflow when needed.\n\n🟩 2. Run Apify Actor\n\nRuns your Apify Actor that scrapes freelance job listings from platforms like Upwork, Freelancer, or Fiverr.\nMake sure your Apify API token is connected in credentials and that your actor ID matches the one from your Apify dashboard.\n\n🟩 3. Get Dataset Items\n\nRetrieves the latest dataset items (scraped job listings) from the Apify run.\nEach dataset item usually contains job title, link, description, and price/rate.\n\n🟩 4. Code (JavaScript)\n\nThis node filters and formats the dataset results.\nExample: Only include jobs that contain specific keywords like automation, Python, or n8n.\nIt also limits the number of alerts to avoid message spam.\n\n🟩 5. Edit Fields\n\nMaps the cleaned data (title, budget, URL) into proper fields for further processing.\nThis ensures consistent message formatting for both Sheets and WhatsApp.\n\n🟩 6. Append or Update Row in Google Sheet\n\nLogs each new job found into your Google Sheet for record-keeping.\nIf a job already exists (based on URL), it updates instead of duplicating — keeping your sheet clean.\n\n🟩 7. Edit Fields (Prepare Message)\n\nPrepares the message text for WhatsApp.\nExample:\n\n🔔 New Job Alert!\n💼 {{job_title}}\n💰 Budget: {{price}}\n🔗 Link: {{url}}\n\n\n🟩 8. Send WhatsApp Message\n\nSends the formatted alert message directly to your WhatsApp using your WhatsApp API or Twilio integration.\nThis is the final step that keeps you instantly informed when new jobs are posted."
      },
      "typeVersion": 1
    },
    {
      "id": "256ef1af-d543-4bab-af85-6c6a9a891849",
      "name": "Edit Fields To send Specific Data",
      "type": "n8n-nodes-base.set",
      "position": [
        4400,
        816
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "d78912c8-c63e-4f32-af19-60a568d02377",
              "name": "Job Tile",
              "type": "string",
              "value": "={{ $json.Title }}"
            },
            {
              "id": "7ade5447-cac2-4fc2-bff2-517a8583d11e",
              "name": "job posted",
              "type": "string",
              "value": "={{ $json.Date }}"
            },
            {
              "id": "caff77ba-6c86-4685-b752-bae8ed41e58f",
              "name": "Payment type",
              "type": "string",
              "value": "={{ $json['Payment Type'] }}"
            },
            {
              "id": "52215059-aa70-469b-8b09-f51ada9a5fa0",
              "name": "score",
              "type": "string",
              "value": "={{ $json.Score }}"
            },
            {
              "id": "89926694-3595-4d22-b6ea-00228fb38a11",
              "name": "budget",
              "type": "string",
              "value": "={{ $json.Salary }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "01b532f0-cf78-4ffc-8998-f01878224a45",
      "name": "Get dataset items",
      "type": "@apify/n8n-nodes-apify.apify",
      "position": [
        3744,
        816
      ],
      "parameters": {
        "resource": "Datasets",
        "datasetId": "={{ $json.defaultDatasetId }}"
      },
      "credentials": {
        "apifyApi": {
          "id": "X2v0szs11ucfAaTq",
          "name": "Apify account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5107bd3a-5ecd-4947-84e9-4435b5b53b50",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3440,
        1040
      ],
      "parameters": {
        "width": 1088,
        "height": 800,
        "content": "# 🧠 Who It’s For\n\n## 1-Freelancers and solopreneurs looking for instant job alerts\n\n## 2-Agencies monitoring job boards for leads\n\n## 3-Developers wanting to automate freelance opportunity tracking\n\n# ⚙️ Requirements\n\n## 1-Apify account (with an active Actor for job scraping)\n\n## 2-WhatsApp API / Twilio setup for message delivery\n\n## 3-Google Sheets account for tracking job logs\n\n## 4-n8n Cloud or self-hosted instance\n\n# 💡 Pro Tip\n\n## You can schedule this workflow to run every few hours using the Cron node — it will automatically check for new jobs and send alerts even when you’re offline."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {
    "Run an Actor": [
      {
        "json": {
          "id": "Xg4SdsTS4ekwaNqdu",
          "meta": {
            "origin": "API",
            "userAgent": "axios/1.8.3"
          },
          "actId": "XYTgO05GT5qAoSlxy",
          "stats": {
            "metamorph": 0,
            "netRxBytes": 403983,
            "netTxBytes": 86392,
            "cpuAvgUsage": 3.8167535673388304,
            "cpuMaxUsage": 44.39847908745247,
            "memAvgBytes": 52856122.39532159,
            "memMaxBytes": 83492864,
            "rebootCount": 0,
            "runTimeSecs": 34.905,
            "computeUnits": 0.004847916666666667,
            "inputBodyLen": 104,
            "restartCount": 0,
            "durationMillis": 34905,
            "migrationCount": 0,
            "resurrectCount": 0,
            "cpuCurrentUsage": 0,
            "memCurrentBytes": 0
          },
          "usage": {
            "PROXY_SERPS": 0,
            "DATASET_READS": 0,
            "DATASET_WRITES": 0,
            "ACTOR_COMPUTE_UNITS": 0.004847916666666667,
            "REQUEST_QUEUE_READS": 0,
            "REQUEST_QUEUE_WRITES": 0,
            "KEY_VALUE_STORE_LISTS": 0,
            "KEY_VALUE_STORE_READS": 1,
            "KEY_VALUE_STORE_WRITES": 1,
            "DATA_TRANSFER_EXTERNAL_GBYTES": 0.0000794287770986557,
            "DATA_TRANSFER_INTERNAL_GBYTES": 0.0000052032992243766785,
            "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0
          },
          "status": "SUCCEEDED",
          "userId": "QkSp4Xrc5NR3bX19H",
          "buildId": "lSb2xTZpAyRdBHXmx",
          "options": {
            "build": "0.0.37",
            "diskMbytes": 2048,
            "timeoutSecs": 3600,
            "memoryMbytes": 512
          },
          "exitCode": 0,
          "usageUsd": {
            "PROXY_SERPS": 0,
            "DATASET_READS": 0,
            "DATASET_WRITES": 0,
            "ACTOR_COMPUTE_UNITS": 0.0014543750000000002,
            "REQUEST_QUEUE_READS": 0,
            "REQUEST_QUEUE_WRITES": 0,
            "KEY_VALUE_STORE_LISTS": 0,
            "KEY_VALUE_STORE_READS": 0.000005,
            "KEY_VALUE_STORE_WRITES": 0.00005,
            "DATA_TRANSFER_EXTERNAL_GBYTES": 0.00001588575541973114,
            "DATA_TRANSFER_INTERNAL_GBYTES": 2.6016496121883394e-7,
            "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0
          },
          "startedAt": "2025-10-11T15:38:00.836Z",
          "consoleUrl": "https://console.apify.com/view/runs/Xg4SdsTS4ekwaNqdu",
          "finishedAt": "2025-10-11T15:38:35.874Z",
          "buildNumber": "0.0.37",
          "pricingInfo": {
            "createdAt": "2025-03-23T14:10:16.365Z",
            "startedAt": "2025-03-23T14:10:16.365Z",
            "pricingModel": "FLAT_PRICE_PER_MONTH",
            "trialMinutes": 120,
            "pricePerUnitUsd": 25,
            "apifyMarginPercentage": 0.2,
            "notifiedAboutChangeAt": "2025-03-23T14:35:20.443Z"
          },
          "containerUrl": "https://4ouk3h218ged.runs.apify.net",
          "generalAccess": "FOLLOW_USER_SETTING",
          "usageTotalUsd": 0.00152552092038095,
          "defaultDatasetId": "IfCiCpaj56qQcxsRq",
          "integrationTracking": {
            "appId": null,
            "isAiTool": false,
            "platform": "n8n"
          },
          "defaultRequestQueueId": "uxPbs9vHOA54wdeYs",
          "defaultKeyValueStoreId": "ZdgvwvxmhYmng0pcW",
          "platformUsageBillingModel": "USER"
        }
      }
    ],
    "Get dataset items": [
      {
        "json": {
          "id": "1977018660767464739",
          "url": "https://www.upwork.com/jobs/Product-management-for-SaaS-platform_~021977018660767464739/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "Product Management",
            "SaaS",
            "Automation",
            "API Integration"
          ],
          "subId": "~021977018660767464739",
          "title": "Product management for SaaS platform",
          "budget": "$50.00",
          "jobType": "Fixed",
          "hasHired": false,
          "description": "Product Manager Key Responsibilities:  Product Development & Management:  Own the ongoing technical development of the Hlido platform, collaborating with developers to deliver new features, workflows, and improvements.  Act as the primary product owner, prioritizing feature releases and backlog management.  Drive partner portal development (from requirements gathering to rollout, feedback, and continuous iteration).  User & Partner Engagement:  Develop and execute strategies for reaching out to both current and prospective users and partners to validate product fit and drive adoption.  Coordinate onboarding processes for partners and clients, ensuring smooth integration and ongoing satisfaction.  Collect and analyze user and partner feedback, translating insights into actionable product improvements.  Marketing & Content:  Oversee marketing content creation and distribution, ensuring alignment with product positioning and customer needs.  Collaborate with marketing to prepare launch materials, product updates, and educational resources.  Regularly update web content, help guides, and social media channels to engage and inform the audience.  Cross-Functional Collaboration:  Work closely with engineering, sales, marketing, and external partners.  Support business development, including representing Hlido at customer meetings, webinars, and industry events.  Process Optimization:  Monitor and improve internal processes (automation workflows, customer onboarding, alerting, partner management).  Advocate for best practices in product management and SaaS delivery.  Qualifications:  Experience managing SaaS or B2B software products, preferably in compliance, automation, or enterprise platforms.  Strong technical understanding (API integrations, automation workflows, cloud platforms like n8n, Airtable, Framer).  Proven ability in product ownership: backlog management, user stories, feature prioritization.  Excellent communication skills—written and verbal—for engaging users, partners, and internal teams.  Experience with marketing content development and multi-channel campaign execution.  Track record of working with developers and cross-functional teams.  Startup experience and adaptability are strong assets.",
          "absoluteDate": "2025-10-11T14:29:14.798Z",
          "clientRating": 0,
          "relativeDate": "Posted 2 minutes ago",
          "clientLocation": "South Africa",
          "experienceLevel": "Entry Level",
          "paymentVerified": true,
          "clientTotalSpent": 0,
          "clientHireRatePercent": 0,
          "allowedApplicantCountries": null
        }
      },
      {
        "json": {
          "id": "1977033979850456355",
          "url": "https://www.upwork.com/jobs/Backend-Integration-Dev-Automation-Specialist-span-class-highlight-n8n-span-GHL-EHR-API-HIPAA-Compliant_~021977033979850456355/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "n8n",
            "API Development",
            "REST API",
            "HIPAA",
            "API",
            "Node.js",
            "Python"
          ],
          "subId": "~021977033979850456355",
          "title": "Backend Integration Dev Automation Specialist | n8n | GHL | EHR API | HIPAA Compliant",
          "budget": "15 - 20",
          "jobType": "Hourly",
          "hasHired": false,
          "description": "We’re Lead Better HQ, an automation and marketing platform built for functional and integrative medicine practices.\n\nWe already use Go High Level (GHL) to manage patient leads and communication.\n\nNow we want to connect GHL with the EHRs (Practice Better, Cerbo and others) using n8n, to automate the new patient onboarding process and remove manual data entry.\n\nThis will be an internal-only middleware — no customer interface, just clean, reliable automations running privately on our server.\n\n⚙️ The Project\n\nWe need you to help us set up and build workflows in n8n that securely pass data between GHL and EHRs.\n\nCore Workflows:\n\nGHL → EHR\n\nWhen a new contact or form submission occurs in GHL, create or update a client record in the EHR.\n\nInclude field mappings (name, email, DOB, insurance, notes, etc.).\n\nHandle duplicates, missing data, and errors gracefully.\n\nEHR → GHL\n\nWhen an appointment is booked or updated in the EHR, update the contact in GHL with appointment status and tags.\n\nError Handling + Alerts\n\nSlack/email notification for failed jobs.\n\nBasic retry logic for failed API calls.\n\nDeployment & Security\n\nHost n8n on AWS (ECS, EC2, or Cloud Run equivalent).\n\nSet up environment variables, secret storage, and SSL.\n\nEnsure the setup meets HIPAA best practices (encryption, no PHI in logs).\n\n🔧 Technical Skills Required\n\nProven experience building automations in n8n.\n\nStrong understanding of webhooks, REST APIs, and JSON data mapping.\n\nExperience with Go High Level or Practice Better / Cerbo API a huge plus.\n\nComfortable working with AWS or GCP for hosting (basic DevOps knowledge).\n\nKnows how to handle authentication, retries, and rate limiting.\n\nCan document work clearly (Loom videos + short SOPs).\n\n🧱 Deliverables\n\nWorking n8n instance deployed on our cloud account.\n\n3–5 functioning workflows (GHL → EHR, EHR → GHL).\n\nSlack/email error notifications.\n\nDocumentation for:\n\nHow workflows are set up\n\nHow to update mappings\n\nHow to add new automations\n\n\nBeyond creating this middleware bridge, we're also looking to add you to our team as a part-time dev to help our clients.",
          "absoluteDate": "2025-10-11T15:30:07.208Z",
          "clientRating": 5,
          "relativeDate": "Posted 8 minutes ago",
          "clientLocation": "United States",
          "experienceLevel": "Expert",
          "paymentVerified": true,
          "clientTotalSpent": 71488,
          "clientHireRatePercent": 125,
          "allowedApplicantCountries": null
        }
      },
      {
        "json": {
          "id": "1977013942493866295",
          "url": "https://www.upwork.com/jobs/Agent-span-class-highlight-Development-span-span-class-highlight-N8N-span-Similar-Platform_~021977013942493866295/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "AI Agent Development",
            "n8n",
            "Make.com",
            "Zapier"
          ],
          "subId": "~021977013942493866295",
          "title": "AI Agent Development on N8N or Similar Platform",
          "budget": "N/A",
          "jobType": "Hourly",
          "hasHired": false,
          "description": "We are seeking a skilled freelancer to develop an AI agent using N8N or a similar platform. The AI agent will be responsible for automating tasks such as Resume creating, email management and networking. The ideal candidate should have experience with workflow automation tools and a good understanding of AI integration.",
          "absoluteDate": "2025-10-11T14:10:29.883Z",
          "clientRating": 0,
          "relativeDate": "Posted 1 hour ago",
          "clientLocation": "ARE",
          "experienceLevel": "Intermediate",
          "paymentVerified": true,
          "clientTotalSpent": 146,
          "clientHireRatePercent": 50,
          "allowedApplicantCountries": null
        }
      },
      {
        "json": {
          "id": "1977009256429059363",
          "url": "https://www.upwork.com/jobs/Collaboration-span-class-highlight-N8N-span-automatisation-French-start_~021977009256429059363/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "n8n",
            "YouTube Automation",
            "Document Automation",
            "AI Chatbot"
          ],
          "subId": "~021977009256429059363",
          "title": "Collaboration in N8N automatisation in French start up",
          "budget": "N/A",
          "jobType": "Hourly",
          "description": "Project overview\nWe’re launching a European version of an app concept that’s already performing strongly in the US market. The product logic and structure are already set — our main goal now is to automate key workflows efficiently to save time and scale faster.\n\nWhat we’re looking for\nWe’re searching for a developer specialized in automation, ideally with experience in:\n\t•\tn8n (preferred) or similar automation tools\n\t•\tAPI connections & integrations\n\t•\tBuilding efficient and maintainable workflow logic\n\t•\tHandling webhooks, API triggers, and data synchronization\n\nMission details\n\t•\tDuration: around one week (short-term)\n\t•\tScope: set up and optimize automation flows for the app\n\t•\tWe already have the system logic and structure — you’ll mainly help with execution and optimization\n\t•\tYou’ll work closely with the founders\n\nCompensation options\nWe’re open to either:\n\t•\tA flat-rate mission, or\n\t•\tA revenue-share model (percentage on recurring revenue)\n\nProfile\n\t•\tAutonomous, fast, and solution-oriented\n\t•\tComfortable working async (we’re remote-first)\n\t•\tStrong communication and ability to document clean processes",
          "absoluteDate": "2025-10-11T14:38:00.336Z",
          "relativeDate": "Posted 1 hour ago",
          "experienceLevel": "Intermediate",
          "paymentVerified": "unknown"
        }
      },
      {
        "json": {
          "id": "1977006069638457655",
          "url": "https://www.upwork.com/jobs/Employee-span-class-highlight-Development-span-Specialist_~021977006069638457655/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "n8n",
            "Adobe Illustrator",
            "Lead Generation",
            "JavaScript",
            "Graphic Design"
          ],
          "subId": "~021977006069638457655",
          "title": "AI Employee Development Specialist",
          "budget": "$500.00",
          "jobType": "Fixed",
          "hasHired": false,
          "description": "We are seeking an experienced AI developer to assist in creating an AI-powered virtual employee. The ideal candidate should have a strong background in artificial intelligence and machine learning, with expertise in developing intelligent systems that can perform tasks autonomously. This role involves designing algorithms, training models, and integrating the AI with existing workflows for efficiency and productivity. If you have a passion for AI and a track record of innovative solutions, we want to hear from you!",
          "absoluteDate": "2025-10-11T13:39:12.882Z",
          "clientRating": 2.81,
          "relativeDate": "Posted 1 hour ago",
          "clientLocation": "United States",
          "experienceLevel": "Expert",
          "paymentVerified": true,
          "clientTotalSpent": 1222,
          "clientHireRatePercent": 23,
          "allowedApplicantCountries": null
        }
      },
      {
        "json": {
          "id": "1976978380472233702",
          "url": "https://www.upwork.com/jobs/span-class-highlight-n8n-span-Workflow-span-class-highlight-Developer-span-Needed-Book-Recommendation-Aggregator-System_~021976978380472233702/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "n8n",
            "English"
          ],
          "subId": "~021976978380472233702",
          "title": "n8n Workflow Developer Needed: Book Recommendation Aggregator System",
          "budget": "$50.00",
          "jobType": "Fixed",
          "hasHired": true,
          "description": "We need an experienced n8n developer to create an automated workflow that discovers and processes human-curated book recommendations from the web. The system will use Claude AI and/or Perplexity API for intelligent web search, data extraction and processing.",
          "absoluteDate": "2025-10-11T11:49:11.264Z",
          "clientRating": 4.93,
          "relativeDate": "Posted 3 hours ago",
          "clientLocation": "Germany",
          "experienceLevel": "Expert",
          "paymentVerified": true,
          "clientTotalSpent": 2000,
          "clientHireRatePercent": 104,
          "allowedApplicantCountries": null
        }
      },
      {
        "json": {
          "id": "1976976228629675299",
          "url": "https://www.upwork.com/jobs/span-class-highlight-N8N-span-Flow-Audit-and-Chatbot-Setup-for-Facebook-Pages_~021976976228629675299/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "Facebook Development",
            "Facebook",
            "Social Media Marketing",
            "Internet Marketing"
          ],
          "subId": "~021976976228629675299",
          "title": "N8N Flow Audit and Chatbot Setup for Facebook Pages",
          "budget": "$10.00",
          "jobType": "Fixed",
          "hasHired": false,
          "description": "We are seeking a skilled freelancer to audit and finalize our N8N flow, focusing on verifying the post node, AI agent memory, and HTTP requests. The primary goal is to develop a chatbot for Facebook pages, with each business having its own memory setup.",
          "absoluteDate": "2025-10-11T11:40:38.222Z",
          "clientRating": 5,
          "relativeDate": "Posted 3 hours ago",
          "clientLocation": "Bangladesh",
          "experienceLevel": "Intermediate",
          "paymentVerified": true,
          "clientTotalSpent": 315,
          "clientHireRatePercent": 62,
          "allowedApplicantCountries": null
        }
      },
      {
        "json": {
          "id": "1976964697453014758",
          "url": "https://www.upwork.com/jobs/Studio-legale_~021976964697453014758/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "n8n",
            "AI Agent Development",
            "Make.com",
            "Automation",
            "AI Bot",
            "AI Builder"
          ],
          "subId": "~021976964697453014758",
          "title": "Studio legale",
          "budget": "N/A",
          "jobType": "Hourly",
          "description": "Buongiorno,\nSono un avvocato e ho necessità di implementare un sistema di automazioni per il mio studio legale utilizzando n8n. L'obiettivo è integrare e sincronizzare diversi strumenti che utilizziamo quotidianamente per eliminare doppie digitazioni, automatizzare flussi di lavoro ricorrenti e garantire che nessuna scadenza venga persa.\nObiettivo principale\nCreare un ecosistema integrato dove Notion rappresenta la fonte di verità centrale (database PRATICHE), sincronizzato bidirezionalmente con Asana (usato dalla mia collaboratrice), Google Calendar, Google Drive, WhatsApp Business e Gmail.\nStrumenti da integrare\n* Notion: Database centrale delle pratiche con sistema di protocollazione FM[numero]-[tipo]\n* Asana: Gestione task della collaboratrice, deve rimanere sincronizzato con Notion\n* Google Drive: Archiviazione documenti organizzata per pratica\n* Google Calendar: Gestione udienze e appuntamenti\n* WhatsApp Business: Comunicazioni con clienti, ricezione documenti e messaggi audio\n* Gmail: 3 account email (personale + 2 di lavoro)\n* iCloud Calendar: Sincronizzazione con Google Calendar\n* App Giustizia, Quadra, Simpliciter: Se possibile, integrazioni future.\n* \n* Workflow prioritari da implementare\n1. Gestione scadenze e udienze con promemoria 7-3-1\n* Quando viene creata una scadenza o udienza in Notion → crea evento in Google Calendar + task in Asana\n* Invia notifiche automatiche a 7, 3 e 1 giorno prima tramite WhatsApp e email\n2. Gestione messaggi WhatsApp in arrivo\n* Nuovo messaggio WhatsApp da cliente → crea una scadenza \"Rispondere a [Cliente]\" in Notion + task in Asana\n* Se il messaggio contiene allegati (PDF, immagini) → salva su Google Drive nella cartella della pratica + applica OCR se necessario\n* Se il messaggio è audio → trascrivi con AI (Whisper/Google Speech-to-Text) + salva trascrizione\n3. Gestione email in arrivo (Gmail)\n* Nuova email rilevante → salva allegati su Google Drive nella cartella pratica corretta\n* Crea scadenza/task in Notion e Asana se necessario\n* Collega automaticamente alla pratica corrispondente\n4. Sincronizzazione Notion ↔ Asana\n* Modifica titolo pratica in Notion → aggiorna tutti i task correlati in Asana\n* Cambio stato task in Asana → aggiorna Notion\n* Nuova pratica in Notion → crea progetto/task corrispondente in Asana\n5. Hot-folder su Google Drive\n* Nuovo documento caricato nella cartella di una pratica → registra in Notion + crea sub-task di verifica in Asana\n6. Trascrizione riunioni\n* File audio caricato su Drive → trascrizione automatica + riepilogo AI + creazione nota in Notion + task follow-up in Asana\nCaratteristiche del sistema di protocollazione\n* Formato: FM[numero progressivo]-[tipo]\n* Tipi: O (ordinarie), E (esecutive), P (penali), L (lavoro)\n* Esempio: FM001-O, FM015-P\n* Questo protocollo deve essere coerente tra Notion, Asana e naming delle cartelle Drive\nStruttura dati principale\nDatabase Notion PRATICHE include:\n* Protocollo pratica\n* Cliente\n* Tipo procedimento\n* Ruolo (attore/convenuto)\n* Tribunale\n* Giudice\n* Data apertura\n* Stato pratica\n* Collegamenti a documenti Drive\n* Scadenze e udienze\n* Note e comunicazioni\nRequisiti tecnici\n* Uso di n8n (self-hosted o cloud)\n* Gestione errori e logging delle automazioni\n* Sistema di fallback in caso di mancata sincronizzazione\n* Documentazione dei workflow creati\n* Formazione base per permettermi di fare piccole modifiche in futuro\nDeliverable attesi\n* Workflow n8n funzionanti e testati per i 6 casi d'uso prioritari\n* Documentazione tecnica di ogni workflow\n* Guida utente semplificata\n* 1-2 sessioni di training per me e la collaboratrice\n* Supporto post-implementazione per eventuali bug (da definire)",
          "absoluteDate": "2025-10-11T11:38:00.339Z",
          "relativeDate": "Posted 4 hours ago",
          "experienceLevel": "Intermediate",
          "paymentVerified": "unknown"
        }
      },
      {
        "json": {
          "id": "1976944400795134263",
          "url": "https://www.upwork.com/jobs/Make-span-class-highlight-n8n-span-Migration-Expert-Automation-Lovable-Integration-for-SaaS_~021976944400795134263/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "n8n",
            "API Integration",
            "JSON",
            "API",
            "Make.com"
          ],
          "subId": "~021976944400795134263",
          "title": "Make → n8n Migration Expert (Automation + Lovable Integration for SaaS)",
          "budget": "$1,800.00",
          "jobType": "Fixed",
          "hasHired": false,
          "description": "We’re building LaValor Slate, an AI-powered SaaS tool for film and TV production scheduling.\nOur current automation runs on Make.com, using OpenAI, Airtable, and Google Sheets modules to parse film scripts, check conflicts, and export shooting plans.\n\nNow we’re ready to migrate the entire setup to n8n using our own accounts, improving reliability, and connecting everything to our Lovable frontend (landing page + webhook form).\n\nWe need someone experienced enough to understand complex Make workflows, rebuild them cleanly in n8n, and deliver a stable, tested result as soon as possible.",
          "absoluteDate": "2025-10-11T09:34:09.887Z",
          "clientRating": 0,
          "relativeDate": "Posted 6 hours ago",
          "clientLocation": "Germany",
          "experienceLevel": "Intermediate",
          "paymentVerified": true,
          "clientTotalSpent": 0,
          "clientHireRatePercent": 0,
          "allowedApplicantCountries": null
        }
      },
      {
        "json": {
          "id": "1976921951610646246",
          "url": "https://www.upwork.com/jobs/Build-Marketing-Automation-System-Odoo-span-class-highlight-n8n-span-OpenAI_~021976921951610646246/?referrer_url_path=/nx/search/jobs/",
          "tags": [
            "Odoo Development",
            "Odoo",
            "Python",
            "Apex"
          ],
          "subId": "~021976921951610646246",
          "title": "Build AI Marketing Automation System – Odoo + n8n + OpenAI",
          "budget": "$2,000.00",
          "jobType": "Fixed",
          "hasHired": false,
          "description": "We operate multiple Shopify-based eCommerce brands and are looking for an experienced AI Automation Engineer / Odoo Developer to build a next-generation marketing automation system that intelligently connects:\n-   Odoo ERP (core data hub: CRM, orders, analytics)\n-   n8n Orchestration Engine (rules, automations, monitoring)\n-   Ad Platforms: Meta, Google, Pinterest\n-   AI Middleware: OpenAI GPT API (copy generation, insights, optimization)\n-  Optional: GoHighLevel or Odoo Marketing for funnels and WhatsApp/SMS/email communication\n-  The system should automate campaign analysis, attribution, ad scaling, reporting, and communication — creating a self-learning, monitored, and secure marketing OS.\n\nObjectives:\n\nData Integration:\n- Connect Shopify, Odoo, and ad platforms (Meta, Google, Pinterest).\n- Centralize campaign, spend, and ROAS data into Odoo (PostgreSQL).\n\nAutomation & AI Logic (via n8n):\n- Build rules for ad scaling, pausing, and alerting.\n- Integrate with ChatGPT API for copywriting and insight generation.\n- Implement message queue, retries, and monitoring checkpoints.\n\nTracking & Attribution:\n- Build server-side GA4 + Meta Conversion API.\n- Implement a UTM capture/redirector for accurate ROAS tracking.\n\nAnalytics & Reporting:\n- Connect Metabase / Power BI directly to Odoo database.\n- Create real-time dashboards for ROAS, CAC, and campaign health.\n- Daily email/Slack reports with key metrics and anomalies.\n\nMonitoring & Security:\n- Add workflow monitoring dashboards (API uptime, sync status).\n- Implement encrypted credential vault & automated backups.\n\nWhen Applying, Please Include:\n- Examples of AI-driven or Odoo-based automation projects you’ve built.\n- Your experience with n8n, OpenAI API, and Ad Platform integrations.\n- Your proposed timeline and milestone breakdown.\n- Portfolio or GitHub/Notion documentation (if available).",
          "absoluteDate": "2025-10-11T08:04:57.547Z",
          "clientRating": 0,
          "relativeDate": "Posted 7 hours ago",
          "clientLocation": "HKG",
          "experienceLevel": "Expert",
          "paymentVerified": true,
          "clientTotalSpent": 134,
          "clientHireRatePercent": 66,
          "allowedApplicantCountries": null
        }
      }
    ]
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "47345b24-2f98-441d-b460-fcde3f1559ca",
  "connections": {
    "Edit Fields1": {
      "main": [
        [
          {
            "node": "Append or update row in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run an Actor": {
      "main": [
        [
          {
            "node": "Get dataset items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get dataset items": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Edit Fields1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When chat message received": {
      "main": [
        [
          {
            "node": "Run an Actor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append or update row in sheet1": {
      "main": [
        [
          {
            "node": "Edit Fields To send Specific Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields To send Specific Data": {
      "main": [
        [
          {
            "node": "Send message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

相关工作流