4 templates found
Category:
Author:
Sort:

Detect cannibalized keywords and competing pages with Google Search Console

Find Cannibalized Pages (Google Search Console) This n8n template helps you detect page cannibalization in Google Search Console (GSC): situations where multiple pages on your site rank for the same query and more than one page gets clicks. Use it to spot competing URLs, consolidate content, improve internal linking, and protect your CTR/rankings. --- Good to know Data source: Google Search Console Search Analytics (Dimensions: query, page). Scope: Defaults to last 12 months and up to 10,000 rows per run (adjustable). Logic: Keeps only queries with >1 page and where the second page has clicks > 0 → higher confidence of true cannibalization. Privacy: Template ships with a placeholder property (sc-domain:example.com) and a neutral credential name; replace both after import. Cost: n8n nodes used here are free. GSC usage is also free (subject to Google limits). --- How it works Manual Start — run the workflow on demand. Google Search Console — fetch last 12 months of query–page rows. Summarize — group by query, building two arrays: appended_page[] → all pages seen for that query appendedclicks[] → clicks for each page-query row (aligned with appendedpage) Filter — pass only queries where: count_query > 1 (more than one page involved), and appended_clicks[1] > 0 (the second page also received clicks) Output — list of cannibalized queries with the competing pages and their click counts. Example output json { "query": "best running shoes", "appended_page": [ "https://example.com/blog/best-running-shoes", "https://example.com/guide/running-shoes-2025" ], "appended_clicks": [124, 37], "count_query": 3 } How to use Import the JSON into n8n. Open the Google Search Console node and: Connect your Google Search Console OAuth2 credential. Replace siteUrl with your property (sc-domain:your-domain.com). Press Execute Workflow on Manual Start. Review the output — focus on queries where the second page has meaningful clicks. 💡 Tip: If your site is large, start with a shorter date range (e.g., 90 days) or raise rowLimit. --- Requirements Access to the target property in Google Search Console. One Google Search Console OAuth2 credential in n8n. --- Customising this workflow More robust detection: In the Summarize node, change clicks aggregation from append to sum. Then filter for “at least 2 pages with sum_clicks > 0” to avoid any dependency on row order. Scoring & sorting: Add a Code/Function node to sort competing pages by clicks or impressions and compute click-share per page. Deeper analysis: Include impressions and position in the GSC node and extend the summary to prioritize fixes (e.g., high impressions + split clicks). Reporting: Send results to Google Sheets or export a CSV; create a dashboard of top cannibalized queries. Thresholds: Expose minimum click thresholds as workflow variables (e.g., second page clicks ≥ 3) to reduce noise. --- Troubleshooting Empty results: Widen date range, increase rowLimit, or temporarily relax the filter (remove the second-page click condition to validate data flow). No property data: Ensure you used sc-domain: vs. https:// property format correctly and that your user has GSC access. Credential issues: Reconnect the OAuth2 credential and reauthorize if needed.

Mohammadreza azariBy Mohammadreza azari
511

Collect LinkedIn profiles with SerpAPI Google Search and Sheets

[LI] – Search Profiles > ⚠️ Self-hosted disclaimer: > This workflow uses the SerpAPI community node, which is available only on self-hosted n8n instances. > For n8n Cloud, you may need to use an HTTP Request node with the SerpAPI REST API instead. --- --- Who’s it for Recruiters, talent sourcers, SDRs, and anyone who wants to automatically gather public LinkedIn profiles from Google search results based on keywords — across multiple pages — and log them to a Google Sheet for further analysis. --- What it does / How it works This workflow extends the standard LinkedIn profile search to include pagination, allowing you to fetch results from multiple Google result pages in one go. Here’s the step-by-step process: Form Trigger – “LinkedIn Search” Collects: Keywords (comma separated) – e.g., python, fintech, warsaw Pages to fetch – number of Google pages to scrape (each page ≈ 10 results) Triggers the workflow when submitted. Format Keywords (Set) Converts the keywords into a Google-ready query string: ("python") ("fintech") ("warsaw") These parentheses improve relevance in Google searches. Build Page List (Code) Creates a list of pages to iterate through. For example, if “Pages to fetch” = 3, it generates 3 search batches with proper start offsets (0, 10, 20). Keeps track of: Grouped keywords (keywordsGrouped) Raw keywords Submission timestamp Loop Over Items (Split In Batches) Loops through the page list one batch at a time. Sends each batch to SerpAPI Search and continues until all pages are processed. SerpAPI Search Queries Google with: site:pl.linkedin.com/in/ ("keyword1") ("keyword2") ("keyword3") Fixed to the Warsaw, Masovian Voivodeship, Poland location. The start parameter controls pagination. Check how many results are returned (Switch) If no results → Triggers No profiles found. If results found → Passes data forward. Split Out Extracts each LinkedIn result from the organic_results array. Get Full Name to property of object (Code) Extracts a clean full name from the search result title (text before “–” or “|”). Append profile in sheet (Google Sheets) Saves the following fields into your connected sheet: | Column | Description | |---------|-------------| | Date | Submission timestamp | | Profile | Public LinkedIn profile URL | | Full name | Extracted candidate name | | Keywords | Original keywords from the form | Loop Over Items (continue) After writing each batch, it loops to the next Google page until all pages are complete. Form Response (final step) Sends a confirmation back to the user after all pages are processed: Check linked file --- 🧾 Google Sheets Setup Before using the workflow, prepare your Google Sheet with these columns in row 1: | Column Name | Description | |--------------|-------------| | Date | Automatically filled with the form submission time | | Profile | LinkedIn profile link | | Full name | Extracted name from search results | | Keywords | Original search input | > You can expand the sheet to include optional fields like Snippet, Job Title, or Notes if you modify the mapping in the Append profile in sheet node. --- Requirements SerpAPI account – with API key stored securely in n8n Credentials. Google Sheets OAuth2 credentials – connected to your target sheet with edit access. n8n instance (Cloud or self-hosted) > Note: SerpAPI node is part of the Community package and may require self-hosted n8n. --- How to set up Import the [LI] - Search profiles workflow into n8n. Connect your credentials: SerpAPI – use your API key. Google Sheets OAuth2 – ensure you have write permissions. Update the Google Sheets node to point to your own spreadsheet and worksheet. (Optional) Edit the location field in SerpAPI Search for different regions. Activate the workflow and open the public form (via webhook URL). Enter your keywords and specify the number of pages to fetch. --- How to customize the workflow Change search region: Modify the location in the SerpAPI node or change the domain to site:linkedin.com/in/ for global searches. Add pagination beyond 3–4 pages: Increase “Pages to fetch” — but note that excessive pages may trigger Google rate limits. Avoid duplicates: Add a Google Sheets → Read + IF node before appending new URLs. Add notifications: Add Slack, Discord, or Email nodes after Google Sheets to alert your team when new data arrives. Capture more data: Map additional fields like title, snippet, or position into your Sheet. --- Security notes Never store API keys directly in nodes — always use n8n Credentials. Keep your Google Sheet private and limit edit access. Remove identifying data before sharing your workflow publicly. --- 💡 Improvement suggestions | Area | Recommendation | Benefit | |-------|----------------|----------| | Dynamic location | Add a “Location” field to the form and feed it to SerpAPI dynamically. | Broader and location-specific searches | | Rate limiting | Add a short Wait node (e.g., 1–2s) between page fetches. | Prevents API throttling | | De-duplication | Check for existing URLs before appending. | Prevents duplicates | | Logging | Add a second sheet or log file with timestamps per run. | Easier debugging and tracking | | Data enrichment | Add a LinkedIn or People Data API enrichment step. | Collect richer candidate data | --- ✅ Summary: This workflow automates the process of searching public LinkedIn profiles from Google across multiple pages. It formats user-entered keywords into advanced Google queries, iterates through paginated SerpAPI results, extracts profile data, and stores it neatly in a Google Sheet — all through a single, user-friendly form.

Piotr SikoraBy Piotr Sikora
183

Enrich HubSpot companies with Bedrijfsdata.nl

This template enriches HubSpot company records using real-time data from the Bedrijfsdata.nl API. It listens for changes to company properties (e.g., domain) and updates records with verified information such as KvK, LinkedIn, phone, and company size. --- ✨ Features Automatically enrich HubSpot company profiles with verified Dutch business data Smart fallback: match by Bedrijfsdata ID or dynamic fuzzy matching existing data Customize which HubSpot event triggers the workflow (company.propertyChange, create, etc.) Realtime integration with Bedrijfsdata.nl via their official API node Secure, modular, and extendable structure (error handling included) --- 🏢 Example Data from Bedrijfsdata.nl Bedrijfsdata.nl offers over 100 attributes per company. Example fields: name, address, postcode, city, province phone, email, website, linkedin_link industry_section, employees, revenue, sbi, vat bagbouwjaar, bagoppervlakte, bag_energielabel SEO data (keywords, backlinks), usage of software, structured descriptions Review ratings, opening hours, geo-location, etc. Example: Bedrijfsdata.nl B.V. Phone: 020-7895050 Mail: klantenservice@bedrijfsdata.nl Employees: 2-10 SBI: 6201 LinkedIn: linkedin.com/company/bedrijfsdata-nl Description: Bedrijfsdata.nl B.V. is a Dutch company that provides comprehensive data on over 3.1 million businesses in the Netherlands. They offer datasets categorized by industry, region, company [...] More fields: see developers.bedrijfsdata.nl --- ⚙ Requirements n8n instance or cloud workspace Install the Bedrijfsdata.nl n8n Verified Community Node HubSpot private app (OAuth2) with a webhook Bedrijfsdata.nl developer account (14-day free trial, 500 credits) --- 🔧 Setup Instructions Create HubSpot Private App Enable scopes for companies Add a webhook to listen to e.g. company.propertyChange on domain More info: HubSpot Private Apps Configure n8n Workflow Import this template Set your Bedrijfsdata.nl API credentials Set up HubSpot OAuth2 credentials Customize Fields (Optional) Modify the Update a company node to match your internal CRM fields Add logging, Slack notifications, or conditional branches if needed --- 🔐 Security Notes Workflow checks portalId, objectId, and event type Test-mode detection using a known company ID Errors are routed via dedicated error branches --- 🧪 Testing Create or update a company in HubSpot with a known domain Trigger the webhook from HubSpot Check n8n’s execution history Verify enrichment in HubSpot --- 🖼 Screenshots Before enrichment After enrichment --- 📌 About Bedrijfsdata.nl Bedrijfsdata.nl operates the most comprehensive company database in the Netherlands. With real-time data on 3.7M+ businesses and AI-ready APIs, we help Dutch SMEs enrich their CRM, workflows, and marketing automation. Built on 25+ years of experience in data collection and enrichment, our technology brings corporate-grade data quality to every organisation. Website: https://www.bedrijfsdata.nl Developers: developers.bedrijfsdata.nl --- 📞 Support Email: klantenservice@bedrijfsdata.nl Phone: +31 20 789 50 50 Support hours: Monday–Friday, 09:00–17:00 CET

OlivierBy Olivier
130

Automate loan agency lead management with Twilio, Google Sheets & Drive

How to Set Up 🛠️ Setting up this powerful CRM system is a straightforward process that connects your lead sources, your database, and your communication channels. The core steps involve preparing your database, importing the workflow, and then customizing the nodes to match your business rules. Setup Steps: Prepare Your Database: Create a new Google Sheet (or Airtable Base) to serve as your central CRM database. Title the sheet Loan Agency CRM and create the following columns in the first row: Name, Phone Number, Loan Type, Assigned Agent, Status, Date Captured. This will be the single source of truth for all your leads. Import the Workflow: Copy the provided workflow JSON and import it into your n8n instance. This will create both the "Lead Intake" and "Status Update" workflows. Configure Integrations: Webhook: This node is the entry point. Simply copy the generated URL to use in your lead form integrations. Google Sheets: Add your Google Sheets credential. Replace [YOUR SPREADSHEET ID] with the ID from your newly created sheet. Twilio / WhatsApp: Add your communication credential. Replace [YOUR TWILIO NUMBER] with your number. Google Drive (for documents): Add your credential and specify a secure folder ID where documents will be stored. Customize Business Logic: Node (Auto-Assign Agent): Open this Function node and edit the JavaScript code. Change the agent names, loan types, and locations to match your specific team and business rules. Node (Twilio): If you have a list of agent phone numbers, you can use a lookup expression here to automatically send the notification to the right person. Connect Your Lead Sources: Go to your Facebook Lead Ads, Google Forms, or website forms. In the integration settings, paste the Webhook URL you copied from n8n. This will ensure that every new lead is automatically sent to your CRM system. Activate & Test: Once all settings are configured, save the workflow. Click the "Inactive" toggle to make it live. Run a test by submitting a dummy lead through one of your forms to ensure the data flows correctly into your Google Sheet and an agent is notified.

MarthBy Marth
117
All templates loaded