Workflow: Manualtrigger Workflow
Integrations: code, filter, googleSheets, httpRequest, manualTrigger, set, stickyNote

{"nodes": [{"id": "835afb8f-5bb3-42da-9694-d04646a80cef", "name": "When clicking \u2018Test workflow\u2019", "type": "n8n-nodes-base.manualTrigger", "position": [0, 0], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow."}, {"id": "1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6", "name": "Call Rapid API", "type": "n8n-nodes-base.httpRequest", "position": [880, 0], "parameters": {"url": "{{ $env.API_BASE_URL }}", "options": {}, "sendQuery": true, "sendHeaders": true, "queryParameters": {"parameters": [{"name": "linkedin_url", "value": "={{ $json[\"Linkedin Profile\"] }}"}]}, "headerParameters": {"parameters": [{"name": "x-rapidapi-key"}, {"name": "x-rapidapi-host"}]}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "9fa011f4-d1fe-46d2-abda-28ae33929874", "name": "Filter already enriched", "type": "n8n-nodes-base.filter", "position": [440, 0], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "and", "conditions": [{"id": "5907d2f7-b15d-41cc-8fee-45631bb874e1", "operator": {"type": "string", "operation": "empty", "singleValue": true}, "leftValue": "={{ $json.about }}", "rightValue": ""}, {"id": "2857554e-a635-43d3-bf9e-a617b85009ca", "operator": {"type": "string", "operation": "notEmpty", "singleValue": true}, "leftValue": "={{ $json.linkedin_url }}", "rightValue": ""}]}}, "typeVersion": 2.2, "notes": "This filter node performs automated tasks as part of the workflow."}, {"id": "3f0b5717-38b4-4371-b3fa-9f19acf3e624", "name": "Encode URI", "type": "n8n-nodes-base.set", "position": [660, 0], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "fd914708-c85f-4c0e-a277-d8164c616699", "name": "Linkedin Profile", "type": "string", "value": "={{ encodeURI($json.linkedin_url) }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "632e2555-5474-4d00-85f0-e95ee984c0dd", "name": "FiIter out all arrays", "type": "n8n-nodes-base.code", "position": [1100, 0], "parameters": {"mode": "runOnceForEachItem", "jsCode": "// Initialize an empty object to store filtered items\nlet filteredData = {};\n\n// Loop through each item in $input.item.json.data\nfor (const item in $input.item.json.data) {\n  // Check if the item is not an array\n  if (!Array.isArray($input.item.json.data[item])) {\n    // Add the item to the filteredData object\n    filteredData[item] = $input.item.json.data[item];\n  }\n}\nfilteredData['row_number'] = $('Pull linkedin profiles').first().json.row_number\n// Return the filteredData array\nreturn filteredData;"}, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "24b27c51-0f22-400c-bdc3-a09186c74639", "name": "Update the profile", "type": "n8n-nodes-base.googleSheets", "position": [1320, 0], "parameters": {"columns": {"value": {}, "schema": [{"id": "linkedin_url", "type": "string", "display": true, "removed": false, "required": false, "displayName": "linkedin_url", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "about", "type": "string", "display": true, "required": false, "displayName": "about", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "city", "type": "string", "display": true, "required": false, "displayName": "city", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company", "type": "string", "display": true, "required": false, "displayName": "company", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_description", "type": "string", "display": true, "required": false, "displayName": "company_description", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_domain", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_domain", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_employee_range", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_employee_range", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_industry", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_industry", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_linkedin_url", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_linkedin_url", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_logo_url", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_logo_url", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_website", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_website", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "company_year_founded", "type": "string", "display": true, "removed": false, "required": false, "displayName": "company_year_founded", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "connection_count", "type": "string", "display": true, "removed": false, "required": false, "displayName": "connection_count", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "country", "type": "string", "display": true, "removed": false, "required": false, "displayName": "country", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "current_company_join_month", "type": "string", "display": true, "removed": false, "required": false, "displayName": "current_company_join_month", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "current_company_join_year", "type": "string", "display": true, "removed": false, "required": false, "displayName": "current_company_join_year", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "current_job_duration", "type": "string", "display": true, "removed": false, "required": false, "displayName": "current_job_duration", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "email", "type": "string", "display": true, "removed": false, "required": false, "displayName": "email", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "first_name", "type": "string", "display": true, "removed": false, "required": false, "displayName": "first_name", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "follower_count", "type": "string", "display": true, "removed": false, "required": false, "displayName": "follower_count", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "full_name", "type": "string", "display": true, "removed": false, "required": false, "displayName": "full_name", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "headline", "type": "string", "display": true, "removed": false, "required": false, "displayName": "headline", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "hq_city", "type": "string", "display": true, "removed": false, "required": false, "displayName": "hq_city", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "hq_country", "type": "string", "display": true, "removed": false, "required": false, "displayName": "hq_country", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "hq_region", "type": "string", "display": true, "removed": false, "required": false, "displayName": "hq_region", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "job_title", "type": "string", "display": true, "removed": false, "required": false, "displayName": "job_title", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "languages", "type": "string", "display": true, "removed": false, "required": false, "displayName": "languages", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "last_name", "type": "string", "display": true, "removed": false, "required": false, "displayName": "last_name", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "location", "type": "string", "display": true, "removed": false, "required": false, "displayName": "location", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "phone", "type": "string", "display": true, "removed": false, "required": false, "displayName": "phone", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "profile_id", "type": "string", "display": true, "removed": false, "required": false, "displayName": "profile_id", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "profile_image_url", "type": "string", "display": true, "removed": false, "required": false, "displayName": "profile_image_url", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "public_id", "type": "string", "display": true, "removed": false, "required": false, "displayName": "public_id", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "school", "type": "string", "display": true, "removed": false, "required": false, "displayName": "school", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "state", "type": "string", "display": true, "removed": false, "required": false, "displayName": "state", "defaultMatch": false, "canBeUsedToMatch": true}, {"id": "urn", "type": "string", "display": true, "removed": false, "required": false, "displayName": "urn", "defaultMatch": false, "canBeUsedToMatch": true}], "mappingMode": "autoMapInputData", "matchingColumns": ["linkedin_url"]}, "options": {}, "operation": "appendOrUpdate", "sheetName": {"__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Sheet1"}, "documentId": {"__rl": true, "mode": "list", "value": "10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Linkedin contact info"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "gdLmm513ROUyH6oU", "name": "Google Sheets account"}}, "typeVersion": 4.5, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "41e0e213-a1f4-47ff-aebd-6cd08df06eae", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [160, -200], "parameters": {"color": 4, "width": 220, "height": 380, "content": "## Create a Google sheet\nWith just one column named \"linkedin_url\" and fill it with the profiles you want to enrich"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "da28d424-10ce-499d-95c9-81979dab0f6b", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [780, -300], "parameters": {"color": 4, "width": 300, "height": 480, "content": "## Call RapidAPI Fresh Linkedin Profile Data\nYou have to create an account in [RapidAPI]({{ $env.API_BASE_URL }} and subscribe to Fresh LinkedIn Profile Data. With a free account you will be able to scrape 100 profile / month.\nAfter your subscription you will have to replace the header values: \"x-rapidapi-key\" and \"x-rapidapi-host\" with the values given in the RapidAPI interface\n"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "2bae0a2a-0c88-465b-854d-728280539e90", "name": "Pull linkedin profiles", "type": "n8n-nodes-base.googleSheets", "position": [220, 0], "parameters": {"options": {}, "sheetName": {"__rl": true, "mode": "list", "value": "gid=0", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Sheet1"}, "documentId": {"__rl": true, "mode": "list", "value": "10cSUaj-YZhrgwXLIGpJzLjv6RMN6cYiw9EK-rNw0-AM", "cachedResultUrl": "{{ $env.WEBHOOK_URL }}", "cachedResultName": "Linkedin contact info"}}, "credentials": {"googleSheetsOAuth2Api": {"id": "gdLmm513ROUyH6oU", "name": "Google Sheets account"}}, "typeVersion": 4.5, "notes": "This googleSheets node performs automated tasks as part of the workflow."}, {"id": "d93a0d4c-1db8-4604-85e1-7d02bbbdcdb8", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [-500, -760], "parameters": {"color": 7, "width": 460, "height": 1160, "content": "### LinkedIn Profile Enrichment Workflow\n\n#### Who is this for?\n\nThis workflow is ideal for recruiters, sales professionals, and marketing teams who need to enrich LinkedIn profiles with additional data for lead generation, talent sourcing, or market research.\n\n#### What problem is this workflow solving?\n\nManually gathering detailed LinkedIn profile information can be time-consuming and prone to errors. This workflow automates the process of enriching profile data from LinkedIn, saving time and ensuring accuracy.\n\n#### What this workflow does\n\n1.  **Input**: Reads LinkedIn profile URLs from a Google Sheet.\n2.  **Validation**: Filters out already enriched profiles to avoid redundant processing.\n3.  **Data Enrichment**: Uses RapidAPI's Fresh LinkedIn Profile Data API to retrieve detailed profile information.\n4.  **Output**: Updates the Google Sheet with enriched profile data, appending new information efficiently.\n\n#### Setup\n\n1.  **Google Sheet**: Create a sheet with a column named `linkedin_url` and populate it with the profile URLs to enrich.\n2.  **RapidAPI Account**: Sign up at [RapidAPI]({{ $env.API_BASE_URL }} and subscribe to the Fresh LinkedIn Profile Data API.\n3.  **API Integration**: Replace the `x-rapidapi-key` and `x-rapidapi-host` values with your credentials from RapidAPI.\n4.  **Run the Workflow**: Trigger the workflow and monitor the updates to your Google Sheet.\n\n#### How to customize this workflow\n\n*   **Filter Criteria**: Modify the filter step to include additional conditions for processing profiles.\n*   **API Configuration**: Adjust API parameters to retrieve specific fields or extend usage.\n*   **Output Format**: Customize how the enriched data is appended to the Google Sheet (e.g., format, column mappings).\n*   **Error Handling**: Add steps to handle API rate limits or missing data for smoother automation.\n\nThis workflow streamlines LinkedIn profile enrichment, making it faster and more effective for data-driven decision-making."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}], "connections": {"1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6": {"main": [[{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-ee0c397d", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-92d79653", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-e384a8e8", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-e141b4fa", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-f3000386", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-30b1b1a3", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-2db4c913", "type": "main", "index": 0}], [{"node": "error-handler-1e85bf4f-52d5-4ec0-8d0b-a1deeb30c9c6-eba3ff59", "type": "main", "index": 0}]]}, "24b27c51-0f22-400c-bdc3-a09186c74639": {"main": [[{"node": "error-handler-24b27c51-0f22-400c-bdc3-a09186c74639-bf8c3536", "type": "main", "index": 0}]]}, "2bae0a2a-0c88-465b-854d-728280539e90": {"main": [[{"node": "error-handler-2bae0a2a-0c88-465b-854d-728280539e90-1f1b7343", "type": "main", "index": 0}]]}}, "name": "Manualtrigger Workflow", "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "description": "Automated workflow: Manualtrigger Workflow. This workflow integrates 8 different services: filter, httpRequest, stickyNote, code, set. It contains 14 nodes and follows best practices for error handling and security.", "meta": {"instanceId": "workflow-827cdf25", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:42.804261", "updatedAt": "2025-09-29T07:07:42.804276", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "notes": "Excellent quality workflow: Manualtrigger Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}