Automate HubSpot Client Monitoring with n8n & Gmail Alerts

This n8n workflow automates monitoring client updates in HubSpot by checking LinkedIn activity and position changes, then notifies you via Gmail. Save hours of manual checking and keep your client info always fresh and relevant.
httpRequest
googleSheets
gmail
+8
Learn how to Build this Workflow with AI:
Workflow Identifier: 2136
NODES in Use: ManualTrigger, HTTPRequest, Set, If, SplitOut, ExecuteWorkflowTrigger, Filter, GoogleSheets, Code, NoOp, Gmail

Press CTRL+F5 if the workflow didn't load.

Visit through Desktop for Best experience

Opening Problem Statement ⚙️

Meet Thomas, a busy sales manager who manages hundreds of clients across various companies in HubSpot. Every day, Thomas spends hours digging through HubSpot and LinkedIn, trying to manually track if any of his clients have updated their LinkedIn profiles or posted new content. This drudgery wastes at least 3-4 hours weekly — time that could be invested in closing deals or building relationships. Additionally, missing these updates has cost him valuable business opportunities because he was not informed timely about client changes.

Thomas needs a reliable, automated way to monitor his clients’ most important LinkedIn activities—like job position changes or posts. Doing this manually with hundreds of clients is error-prone and impossible at scale. This need is exactly what this unique n8n workflow solves.

What This Automation Does

This custom n8n workflow connects HubSpot, LinkedIn (via RapidAPI), Google Sheets, and Gmail to:

  • Automatically retrieve all client contacts assigned to an owner from HubSpot via API.
  • Search and confirm each client’s LinkedIn profile URL using RapidAPI LinkedIn endpoints, even searching by name and company when direct URL is missing.
  • Pull the latest LinkedIn post and current job position for each client and compare these with the historic data stored in Google Sheets.
  • Detect any changes such as new LinkedIn posts or job position updates.
  • Update the Google Sheet records with the new information for future reference.
  • Generate and send an email summary via Gmail highlighting which clients had updates, enabling Thomas to act promptly.

In essence, Thomas saves several hours every week, maintains up-to-date client intel, and never misses vital changes in his client base.

Prerequisites ⚙️

  • HubSpot account with appropriate API access and OAuth2 credentials configured in n8n.
  • Google Sheets account with OAuth2 credentials to store and read client data.
  • RapidAPI subscription with LinkedIn API key to access profile and search endpoints.
  • Gmail account set up in n8n with OAuth2 credentials to send alert emails.
  • n8n automation platform access, either hosted or self-hosted (self-hosting option available via Hostinger).

Step-by-Step Guide ✏️

Step 1: Start with Manual Trigger node

Navigate to your n8n workflow editor and add the Manual Trigger node named “When clicking ‘Test workflow’”. This lets you manually start the workflow during testing.

Next, connect this node to a Set node labeled “Set data here” where you configure:

  • Your work owner’s email registered in HubSpot (example: “[email protected]”)
  • The Google Sheet link where client data will be stored and compared

> This is the core configuration to define the scope of data.

Step 2: Retrieve HubSpot Owners

Add an HTTP Request node “Get list of owners” configured to call HubSpot’s /crm/v3/owners API endpoint. Set authentication to your preconfigured HubSpot OAuth2 credentials.

This step fetches all HubSpot owners, which you’ll later filter down to your specified owner email.

Step 3: Filter to Current Owner

Use a Filter node called “Get current owner” to select the owner whose email matches the one set in “Set data here.” This keeps the workflow focused on the relevant owner’s clients.

Step 4: Get Clients for the Current Owner with Pagination

Insert an Execute Workflow Trigger node “When Executed by Another Workflow” to pass the owner’s ID.

Chain this with a Set node “Edit” initializing two variables: sofar (pagination offset) and results (empty array).

Follow this with an HTTP Request node “Get list of clients for owner” to call HubSpot’s /crm/v3/objects/contacts/search POST API. Filter contacts by owner ID. The body includes pagination support with the variable sofar.

Implement pagination logic with a Set node “Increment Page” which increments the sofar count, and an If node “If” checking if all clients have been retrieved based on total contacts.

Use a Code node “Merge al the entries” to combine paginated results into a single array. Finally, a Split Out node breaks the array into individual client items.

Step 5: Filter Clients for Testing

Use a Filter node “Change this for testing” to restrict the workflow for testing a subset of clients based on email, e.g., only for “[email protected].”

Step 6: Synchronize Client Records with Google Sheets

Use a Google Sheets node “Create entry with email” with operation appendOrUpdate and mapped by client email to insert or update client records in your sheet.

Pull existing rows using another Google Sheets node “Get rows from document” using the client’s email as a lookup to fetch stored LinkedIn URL, last post, and position for comparison.

Step 7: Retrieve LinkedIn Profile URL

If the LinkedIn URL field is empty in the sheet, use an HTTP Request node “Search for user profile by names” via RapidAPI LinkedIn search endpoint passing client first name, last name, and company.

Use an If node “Profile URL not found?” to check if results exist. If not, perform no operation; else, use a Set node to store the LinkedIn profile URL found.

Step 8: Search LinkedIn Profile Details by URL

With the profile URL ready, use another HTTP Request node “Search for user by link” to get detailed LinkedIn profile data including the latest post text and current position.

Step 9: Detect Changes and Update Data

Set the last post content and current position extracted from LinkedIn into Set nodes “Set last_post” and “Set last_position.”

Use If nodes “if new post” and “if new position” to compare these with stored values. If changes detected, update Google Sheets with new details using “Update last post” and “Updates last position” nodes.

Mark updates with flags in Set nodes “Set post_updated” and “Set position_updated.”
Then merge all update flags on email key with a Merge node “Merge on email.”

Step 10: Prepare and Send Alert Email via Gmail

Use a Code node “Generate the email text” to compose a message listing clients with updates in posts or positions.

Finally, use the Gmail node to send the email notification to the owner’s email configured in “Set data here.” The email subject is “Changes in your clients” and the body lists which clients had new LinkedIn posts or position updates.

Customizations ✏️

  • Expand API Filters: Adjust the “Get list of clients for owner” HTTP body filter to include other HubSpot properties like lifecycle stage or deal amount for refined client lists.
  • Add More LinkedIn Checks: In the section marked “Adding other tests,” integrate rapid API calls to check for LinkedIn comments or HubSpot activities to enrich update tracking.
  • Customize Google Sheet Columns: Modify field mapping in Google Sheets nodes to track additional client metrics such as phone number or industry sector.
  • Change Email Recipients: Update the Gmail node’s “sendTo” field to notify multiple stakeholders by passing an email list or adding CC recipients.
  • Adjust Pagination Size: Modify the pagination limit in the “Get list of clients for owner” node for more efficient API usage depending on your HubSpot plan limits.

Troubleshooting 🔧

  • Problem: “HubSpot API returns 401 Unauthorized”
    Cause: OAuth2 credentials expired or misconfigured.
    Solution: Reconfigure the HubSpot OAuth2 credentials in n8n, reauthenticate, and check scopes.
  • Problem: “No LinkedIn profile data returned”
    Cause: RapidAPI key invalid or quota exceeded.
    Solution: Verify your RapidAPI subscription, key validity, and usage limits.
  • Problem: “Google Sheets update fails”
    Cause: Incorrect spreadsheet URL or permissions.
    Solution: Confirm your Google Sheets OAuth credentials and that the spreadsheet is shared with your service account email.
  • Problem: “Email not sent by Gmail node”
    Cause: Gmail OAuth token invalid or SMTP restrictions.
    Solution: Reauthenticate Gmail OAuth in n8n and test sending mail separately.

Pre-Production Checklist ✅

  • Test your HubSpot OAuth2 connection by making a manual API call in n8n to fetch owners.
  • Verify Google Sheets URLs and permissions are properly set.
  • Confirm RapidAPI LinkedIn endpoints respond as expected with test queries.
  • Run the workflow with manual trigger using a small client email subset for accurate testing.
  • Back up your Google Sheet to avoid data loss during testing.

Deployment Guide

Activate the workflow in n8n by enabling it and schedule regular triggers if desired (using a Cron node if preferred). Monitor execution logs for errors or API quota warnings.

Ensure notifications arrive timely; update credentials before expiration to avoid workflow downtime.

Conclusion

By completing this automation, you’ve enabled Thomas—and yourself—to automatically check HubSpot clients’ LinkedIn updates, track new posts and job changes, and get daily email alerts. This saves hours weekly previously lost to manual monitoring and improves client engagement strategies.

Next steps could include expanding to track LinkedIn comments, integrate HubSpot deal updates, or notify via Slack for team visibility. The foundation you built here unlocks powerful client intelligence automation!

Related Workflows

Automate Viral UGC Video Creation Using n8n + Degaus (Beginner-Friendly Guide)

Learn how to automate viral UGC video creation using n8n, AI prompts, and Degaus. This beginner-friendly guide shows how to import, configure, and run the workflow without technical complexity.
Form Trigger
Google Sheets
Gmail
+37
Free

AI SEO Blog Writer Automation in n8n (Beginner Guide)

A complete beginner guide to building an AI-powered SEO blog writer automation using n8n.
AI Agent
Google Sheets
httpRequest
+5
Free

Automate CrowdStrike Alerts with VirusTotal, Jira & Slack

This workflow automates processing of CrowdStrike detections by enriching threat data via VirusTotal, creating Jira tickets for incident tracking, and notifying teams on Slack for quick response. Save hours daily by transforming complex threat data into actionable alerts effortlessly.
scheduleTrigger
httpRequest
jira
+5
Free

Automate Telegram Invoices to Notion with AI Summaries & Reports

Save hours on financial tracking by automating invoice extraction from Telegram photos to Notion using Google Gemini AI. This workflow extracts data, records transactions, and generates detailed spending reports with charts sent on schedule via Telegram.
lmChatGoogleGemini
telegramTrigger
notion
+9
Free

Automate Email Replies with n8n and AI-Powered Summarization

Save hours managing your inbox with this n8n workflow that uses IMAP email triggers, AI summarization, and vector search to draft concise replies requiring minimal review. Automate business email processing efficiently with AI guidance and Gmail integration.
emailReadImap
vectorStoreQdrant
emailSend
+12
Free

Automate Email Campaigns Using n8n with Gmail & Google Sheets

This n8n workflow automates personalized email outreach campaigns by integrating Gmail and Google Sheets, saving hours of manual follow-up work and reducing errors in email sequences. It ensures timely follow-ups based on previous email interactions, optimizing communication efficiency.
googleSheets
gmail
code
+5
Free