Files
nusquama f091dabbc3 creation
2026-03-15 12:01:17 +08:00

41 KiB
Raw Blame History

Find and add lookalike influencers to HubSpot with influencers.club and GPT-4o-mini

https://n8nworkflows.xyz/workflows/find-and-add-lookalike-influencers-to-hubspot-with-influencers-club-and-gpt-4o-mini-13514

Find and add lookalike influencers to HubSpot with influencers.club and GPT-4o-mini

1. Workflow Overview

This workflow listens for new HubSpot contacts, checks whether the new contact is a creator, finds similar creators through the influencers.club API, enriches each lookalike profile, analyzes them with GPT-4o-mini, and then creates or updates those lookalikes in HubSpot.

Its main use case is creator discovery for influencer marketing teams: starting from an existing high-performing creator in HubSpot, the workflow identifies comparable creators and pushes enriched, AI-qualified prospects back into the CRM.

1.1 Trigger and HubSpot Contact Retrieval

The workflow starts from a HubSpot trigger on contact creation, then fetches the full contact record by ID.

1.2 Seed Creator Preparation

It extracts contact fields, enriches the person by email through influencers.club, normalizes the returned creator data, and determines whether the contact is actually a creator.

1.3 Lookalike Discovery

If the contact is a creator, the workflow calls the influencers.club lookalike endpoint using the detected main platform and account handle.

1.4 Lookalike Enrichment and Normalization

Each returned lookalike is processed one at a time, enriched again for full profile data, and transformed into a normalized profile object.

1.5 AI Qualification and HubSpot Upsert

GPT-4o-mini produces a structured evaluation of the lookalike creator, and the workflow then sends the analyzed result into HubSpot for create/update handling.

1.6 Error Handling and Silent Drops

If the original enrichment fails, the workflow stops with an explicit error. Non-creators are dropped silently. Failed lookalike enrichments are also configured to continue without breaking the loop.


2. Block-by-Block Analysis

2.1 Workflow Documentation and Context Notes

Overview:
This block contains all sticky notes used to describe the workflow, setup requirements, and per-stage behavior. These notes are not executable but are essential for maintainers and automation agents interpreting the workflow.

Nodes Involved:

  • 📋 OVERVIEW
  • Note: Trigger
  • Note: Get Contact
  • Note: Extract Email
  • Note: Enrich by Email
  • Note: Stop and Error
  • Note: Normalize Seed
  • Note: Filter
  • Note: Lookalike API
  • Note: Loop
  • Note: Enrich Lookalike1
  • Note: AI Agent
  • Note: HubSpot Out
  • Sticky Note1

Node Details

📋 OVERVIEW

  • Type and role: Sticky Note; high-level workflow description.
  • Configuration choices: Documents purpose, flow, platform detection behavior, and required credentials.
  • Key expressions or variables used: Mentions main_platform.
  • Input/output connections: None.
  • Version-specific requirements: None.
  • Edge cases or failure types: None; documentation only.
  • Sub-workflow reference: None.

Note: Trigger

  • Type and role: Sticky Note; describes the HubSpot trigger behavior.
  • Configuration choices: Notes that the trigger fires on contact.creation and can be extended with contact.propertyChange.
  • Input/output connections: None.
  • Version-specific requirements: Depends on HubSpot app event support.
  • Edge cases: If the HubSpot app is not configured for the intended event, nothing will trigger.
  • Sub-workflow reference: None.

Note: Get Contact

  • Type and role: Sticky Note; explains HubSpot contact retrieval.
  • Configuration choices: Mentions retrieved properties firstname, company, hs_full_name_or_email.
  • Edge cases: Warns that more properties may need to be added for custom CRM setups.

Note: Extract Email

  • Type and role: Sticky Note; describes field mapping into Email and Company Name.

Note: Enrich by Email

  • Type and role: Sticky Note; explains the email-based enrichment call.
  • Edge cases: Indicates failures go to Stop and Error.

Note: Stop and Error

  • Type and role: Sticky Note; documents the hard-stop failure path.

Note: Normalize Seed

  • Type and role: Sticky Note; explains the JavaScript normalization of the seed creator.
  • Configuration choices: Notes platform auto-detection, follower/engagement tiering, growth trend detection, and URL cleanup.

Note: Filter

  • Type and role: Sticky Note; describes creator-only filtering.
  • Configuration choices: Documents true branch vs silent drop branch.

Note: Lookalike API

  • Type and role: Sticky Note; explains the lookalike search and possible filters.
  • Configuration choices: Notes paging.limit and optional filtering dimensions like engagement and brand deals.

Note: Loop

  • Type and role: Sticky Note; describes sequential item processing using looping.

Note: Enrich Lookalike1

  • Type and role: Sticky Note; explains full enrichment per lookalike.
  • Configuration choices: Notes that errors are suppressed so the loop can continue.

Note: AI Agent

  • Type and role: Sticky Note; explains GPT-4o-mini structured analysis output.
  • Configuration choices: Suggests adjusting the system prompt for campaign context.

Note: HubSpot Out

  • Type and role: Sticky Note; describes final HubSpot upsert.
  • Configuration choices: Recommends mapping AI outputs into custom HubSpot properties.

Sticky Note1

  • Type and role: Sticky Note; marketing/context note with external link.
  • Configuration choices: Includes link to influencers.club content.
  • Context or link: https://influencers.club/creatorbook/find-similar-creators-to-top-performers/

2.2 Trigger and Contact Retrieval

Overview:
This block starts the workflow when a HubSpot contact is created and retrieves the full contact record using the emitted contactId.

Nodes Involved:

  • HubSpot Trigger
  • Get Contact by ID

Node Details

HubSpot Trigger

  • Type and technical role: n8n-nodes-base.hubspotTrigger; event-driven entry point.
  • Configuration choices:
    • Uses a HubSpot Developer API credential.
    • Configured with one event in eventsUi; based on the note, this is intended for contact.creation.
    • maxConcurrentRequests is set to 5.
  • Key expressions or variables used: Outputs contactId.
  • Input and output connections:
    • No input node; entry point.
    • Outputs to Get Contact by ID.
  • Version-specific requirements: typeVersion: 1.
  • Edge cases or potential failure types:
    • HubSpot webhook subscription not configured correctly.
    • Developer app missing required scopes.
    • Event mismatch if the app is not subscribed to contact creation.
    • Concurrency issues if HubSpot bursts exceed allowed processing rate.
  • Sub-workflow reference: None.

Get Contact by ID

  • Type and technical role: n8n-nodes-base.hubspot; retrieves a HubSpot contact by ID.
  • Configuration choices:
    • Operation: get
    • Authentication: HubSpot app token
    • Contact ID comes from ={{ $json.contactId }}
    • Requests properties: firstname, company, hs_full_name_or_email
  • Key expressions or variables used:
    • {{ $json.contactId }}
  • Input and output connections:
    • Input from HubSpot Trigger
    • Output to Extract Email
  • Version-specific requirements: typeVersion: 2.2
  • Edge cases or potential failure types:
    • Invalid or missing contactId
    • HubSpot auth/token failure
    • Property path differences depending on portal configuration
    • The later Set node expects fields that may not actually be included here, especially email and associated company structures
  • Sub-workflow reference: None.

2.3 Seed Contact Extraction and Enrichment

Overview:
This block maps HubSpot contact fields into simpler variables and sends the contact email to influencers.club for creator enrichment.

Nodes Involved:

  • Extract Email
  • Enrich by Email
  • Stop and Error

Node Details

Extract Email

  • Type and technical role: n8n-nodes-base.set; creates a simplified payload.
  • Configuration choices:
    • Assigns Email from ={{ $json.properties.email.value }}
    • Assigns Company Name from ={{ $json["associated-company"].properties.name.value }}
  • Key expressions or variables used:
    • {{ $json.properties.email.value }}
    • {{ $json["associated-company"].properties.name.value }}
  • Input and output connections:
    • Input from Get Contact by ID
    • Output to Enrich by Email
  • Version-specific requirements: typeVersion: 3.4
  • Edge cases or potential failure types:
    • Likely field mismatch: the previous HubSpot node does not explicitly request email.
    • associated-company may not exist.
    • Expression evaluation failure if nested properties are absent.
  • Sub-workflow reference: None.

Enrich by Email

  • Type and technical role: n8n-nodes-influencersclub.influencersClub; creator enrichment by email.
  • Configuration choices:
    • Uses email = {{ $json.Email }}
    • onError is set to continueErrorOutput, which allows the error output branch to be used
  • Key expressions or variables used:
    • {{ $json.Email }}
  • Input and output connections:
    • Input from Extract Email
    • Main output 0 to Normalize
    • Error output to Stop and Error
  • Version-specific requirements: typeVersion: 1
  • Edge cases or potential failure types:
    • Missing/invalid email
    • influencers.club auth errors
    • No creator found for the given email
    • Rate limits or transient API failures
  • Sub-workflow reference: None.

Stop and Error

  • Type and technical role: n8n-nodes-base.stopAndError; explicit execution termination.
  • Configuration choices:
    • Error message: API enrichment failed - contact is not a creator or API error
  • Key expressions or variables used: None.
  • Input and output connections:
    • Input from Enrich by Email error branch
    • No outputs
  • Version-specific requirements: typeVersion: 1
  • Edge cases or potential failure types:
    • This intentionally stops execution; useful for observability but may be noisy if many contacts are non-creators.
  • Sub-workflow reference: None.

2.4 Seed Creator Normalization and Filtering

Overview:
This block transforms the enrichment payload into a flat creator object, auto-detects the main platform, and filters out non-creators before lookalike search.

Nodes Involved:

  • Normalize
  • Filter - Is Creator?

Node Details

Normalize

  • Type and technical role: n8n-nodes-base.code; JavaScript normalization for seed creator data.
  • Configuration choices:
    • Accepts either array-wrapped or direct payloads.
    • Extracts result if present.
    • Builds a platform map for TikTok, Instagram, YouTube, and Twitter.
    • Detects main_platform by highest follower/subscriber count.
    • Computes:
      • followers_fmt
      • follower_tier
      • engagement_tier
      • growth_trend
    • Normalizes handle and strips URL query params from images.
    • Outputs a flattened object suitable for filtering and lookalike lookup.
  • Key expressions or variables used:
    • Uses $input.first().json[0] || $input.first().json
    • Produces keys such as:
      • email
      • full_name
      • handle
      • main_platform
      • profile_url
      • followers
      • engagement_percent
      • is_creator
      • platforms_available
  • Input and output connections:
    • Input from Enrich by Email
    • Output to Filter - Is Creator?
  • Version-specific requirements: typeVersion: 2
  • Edge cases or potential failure types:
    • Unknown or empty platform data leads to main_platform = 'unknown'
    • Missing usernames cause handle = null
    • Assumes certain enrichment fields exist for each platform
    • YouTube URL construction depends on custom_url
  • Sub-workflow reference: None.

Filter - Is Creator?

  • Type and technical role: n8n-nodes-base.if; boolean gate.
  • Configuration choices:
    • Condition: {{ $json.is_creator }} equals true
    • Only the true branch is connected
  • Key expressions or variables used:
    • {{ $json.is_creator }}
  • Input and output connections:
    • Input from Normalize
    • True output to Find Similar Creators
    • False output unconnected, so non-creators are dropped silently
  • Version-specific requirements: typeVersion: 2
  • Edge cases or potential failure types:
    • If is_creator is null/undefined/false, the item disappears without error
    • Strict boolean validation may reject non-boolean variants
  • Sub-workflow reference: None.

2.5 Lookalike Discovery

Overview:
This block queries influencers.club for similar creators based on the seed creators detected platform and handle, then splits the returned accounts into individual items.

Nodes Involved:

  • Find Similar Creators
  • Split Out
  • Loop Over Items (Lookalike)

Node Details

Find Similar Creators

  • Type and technical role: n8n-nodes-influencersclub.influencersClub; lookalike search.
  • Configuration choices:
    • Resource: creator
    • Operation: findLookalikes
    • Platform: ={{ $json.main_platform }}
    • Filter key: username
    • Filter value: ={{ $json.handle }}
    • Filter groups for TikTok, Twitch, Twitter, YouTube, OnlyFans, Instagram, and advanced filters are present but empty
  • Key expressions or variables used:
    • {{ $json.main_platform }}
    • {{ $json.handle }}
  • Input and output connections:
    • Input from Filter - Is Creator?
    • Output to Split Out
  • Version-specific requirements: typeVersion: 1
  • Edge cases or potential failure types:
    • If main_platform is unknown, the API may fail or return no useful results
    • Missing handle causes poor or failed matching
    • API rate limit/auth failure
    • Empty result set
  • Sub-workflow reference: None.

Split Out

  • Type and technical role: n8n-nodes-base.splitOut; splits array field into separate items.
  • Configuration choices:
    • Field to split: accounts
  • Key expressions or variables used: None.
  • Input and output connections:
    • Input from Find Similar Creators
    • Output to Loop Over Items (Lookalike)
  • Version-specific requirements: typeVersion: 1
  • Edge cases or potential failure types:
    • Missing accounts field
    • accounts not being an array
    • Empty array leading to no downstream processing
  • Sub-workflow reference: None.

Loop Over Items (Lookalike)

  • Type and technical role: n8n-nodes-base.splitInBatches; sequential loop controller.
  • Configuration choices:
    • Default batching behavior; effectively processes one item at a time in this pattern
  • Key expressions or variables used: None.
  • Input and output connections:
    • Input from Split Out
    • Output 1 to Enrich by Handle (Full) for the next item
    • Output 0 is loop completion
    • Receives a return connection from AI Agent (Lookalike) to continue the loop
  • Version-specific requirements: typeVersion: 3
  • Edge cases or potential failure types:
    • Improper loop-back connection could stall the workflow
    • Large result sets may still create long-running executions
  • Sub-workflow reference: None.

2.6 Lookalike Enrichment and Profile Normalization

Overview:
This block takes each lookalike candidate, fetches the full creator profile, and converts potentially different response formats into one standardized structure for AI analysis.

Nodes Involved:

  • Enrich by Handle (Full)
  • Normalize Profile (Lookalike)

Node Details

Enrich by Handle (Full)

  • Type and technical role: n8n-nodes-influencersclub.influencersClub; full creator enrichment by handle.
  • Configuration choices:
    • Resource: creator
    • Operation: enrichByHandle
    • Handle: ={{ $json.profile.username }}
    • Platform: ={{ $('Normalize').item.json.main_platform }}
    • onError is continueErrorOutput
  • Key expressions or variables used:
    • {{ $json.profile.username }}
    • {{ $('Normalize').item.json.main_platform }}
  • Input and output connections:
    • Input from Loop Over Items (Lookalike)
    • Output to Normalize Profile (Lookalike)
  • Version-specific requirements: typeVersion: 1
  • Edge cases or potential failure types:
    • Missing profile.username in the lookalike payload
    • Platform mismatch if lookalike results are not actually on the same platform as the seed
    • API enrichment failure; configured not to abort execution
  • Sub-workflow reference: None.

Normalize Profile (Lookalike)

  • Type and technical role: n8n-nodes-base.code; transforms lookalike profile data into a consistent schema.
  • Configuration choices:
    • Runs once for each item.
    • Supports multiple source formats:
      • Format A: enriched result object
      • Format B: lightweight lookalike object with profile
      • Format C: already-flat enrichment
    • Creates nested normalized_profile with sections:
      • identity
      • cross_platform_links
      • contact
      • audience
      • follower_growth
      • engagement
      • content
      • monetization
      • network
      • flags
      • dedup_key
    • Includes helper logic for:
      • URL cleanup
      • handle normalization
      • follower formatting
      • growth trend calculation
      • cross-platform link inference
      • collaborator deduplication
      • hashtag extraction
  • Key expressions or variables used:
    • Uses item.json
    • Outputs normalized_profile
  • Input and output connections:
    • Input from Enrich by Handle (Full)
    • Output to AI Agent (Lookalike)
  • Version-specific requirements: typeVersion: 2
  • Edge cases or potential failure types:
    • Assumes Instagram-centric normalization in several branches
    • Some fields may be null if enrichment is partial
    • If input is an array unexpectedly, it maps over entries, which may change item cardinality
    • Deduplication key may be null when both handle and user ID are absent
  • Sub-workflow reference: None.

2.7 AI Analysis

Overview:
This block sends each normalized lookalike profile to a LangChain AI agent backed by GPT-4o-mini and forces the output into a strict JSON schema.

Nodes Involved:

  • AI Agent (Lookalike)
  • OpenAI Model (Lookalike)1
  • Structured Output Parser (Lookalike)1

Node Details

OpenAI Model (Lookalike)1

  • Type and technical role: @n8n/n8n-nodes-langchain.lmChatOpenAi; language model provider.
  • Configuration choices:
    • Model: gpt-4o-mini
    • No extra options set
  • Key expressions or variables used: None.
  • Input and output connections:
    • Connected as AI language model to AI Agent (Lookalike)
  • Version-specific requirements: typeVersion: 1.3
  • Edge cases or potential failure types:
    • Invalid OpenAI credentials
    • Token/rate limit issues
    • Model availability changes
  • Sub-workflow reference: None.

Structured Output Parser (Lookalike)1

  • Type and technical role: @n8n/n8n-nodes-langchain.outputParserStructured; validates/parses model output against a manual JSON schema.
  • Configuration choices:
    • Manual schema with required fields:
      • summary
      • strengths
      • concerns
      • audience_analysis
      • growth_analysis
      • content_analysis
      • brand_fit
      • flags
      • recommended_action
      • recommended_action_reason
      • estimated_reach_per_post
    • Includes enums for engagement quality, trajectory, niche clarity, and recommended action
  • Key expressions or variables used: None.
  • Input and output connections:
    • Connected as AI output parser to AI Agent (Lookalike)
  • Version-specific requirements: typeVersion: 1.3
  • Edge cases or potential failure types:
    • Model output may fail schema validation
    • Numeric fields may be returned as strings by the model
  • Sub-workflow reference: None.

AI Agent (Lookalike)

  • Type and technical role: @n8n/n8n-nodes-langchain.agent; prompts the model and produces structured analysis.
  • Configuration choices:
    • Prompt type: defined manually
    • Uses {{ JSON.stringify($json.normalized_profile, null, 2) }}
    • Strong system instruction to return valid JSON only
    • Output parser enabled
  • Key expressions or variables used:
    • {{ JSON.stringify($json.normalized_profile, null, 2) }}
  • Input and output connections:
    • Main input from Normalize Profile (Lookalike)
    • AI model input from OpenAI Model (Lookalike)1
    • AI output parser input from Structured Output Parser (Lookalike)1
    • Main outputs to:
      • HubSpot — Lookalike Creator
      • Loop Over Items (Lookalike) to continue iteration
  • Version-specific requirements: typeVersion: 3.1
  • Edge cases or potential failure types:
    • Schema mismatch despite parser
    • Hallucinated values if profile data is sparse
    • Long prompts if enriched profile payload becomes large
    • Depending on agent behavior, output may contain only parsed JSON and not the original profile fields, which matters for the next HubSpot node
  • Sub-workflow reference: None.

2.8 HubSpot Output

Overview:
This block is intended to create or update the analyzed lookalike in HubSpot.

Nodes Involved:

  • HubSpot — Lookalike Creator

Node Details

HubSpot — Lookalike Creator

  • Type and technical role: n8n-nodes-base.hubspot; intended CRM write-back node.
  • Configuration choices:
    • Authentication: HubSpot app token
    • email parameter is currently set to =, which is incomplete
    • No clear operation or property mapping is configured in the visible parameters
  • Key expressions or variables used:
    • Intended to use enriched email, but no valid expression is present
  • Input and output connections:
    • Input from AI Agent (Lookalike)
    • No downstream nodes
  • Version-specific requirements: typeVersion: 2.2
  • Edge cases or potential failure types:
    • Incomplete configuration will likely fail at runtime
    • AI output may not include the email or normalized profile fields needed for upsert unless merged beforehand
    • Custom properties like recommended_action and brand_fit must exist in HubSpot before mapping
  • Sub-workflow reference: None.

3. Summary Table

Node Name Node Type Functional Role Input Node(s) Output Node(s) Sticky Note
HubSpot Trigger n8n-nodes-base.hubspotTrigger Entry point on HubSpot contact creation Get Contact by ID ## HubSpot Trigger
Fires on contact.creation. Outputs contactId for the next node.
Add contact.propertyChange in HubSpot app settings to also catch updates.
Get Contact by ID n8n-nodes-base.hubspot Fetch HubSpot contact fields from contactId HubSpot Trigger Extract Email ## Get Contact by ID
Fetches firstname, company, hs_full_name_or_email from HubSpot using contactId.
Add more properties to propertiesCollection if your CRM has custom creator fields.
Extract Email n8n-nodes-base.set Map HubSpot data to simplified fields Get Contact by ID Enrich by Email ## Extract Email
Maps HubSpot fields into clean Email and Company Name variables.
Enrich by Email n8n-nodes-influencersclub.influencersClub Enrich seed contact through influencers.club email lookup Extract Email Normalize; Stop and Error ## Enrich by Email
POSTs email to influencers.club and returns a full main profile info.
Error → Stop and Error node.
Stop and Error n8n-nodes-base.stopAndError Stop execution on failed seed enrichment Enrich by Email ## Stop and Error
Triggered when enrichment fails or returns no creator. Halts execution with a logged error message.
Normalize n8n-nodes-base.code Normalize seed creator profile and detect main platform Enrich by Email Filter - Is Creator? ## Normalize (Code in JS)
Detects main_platform by comparing follower counts across all platform blocks. Computes follower_tier, engagement_tier, growth_trend. Strips CloudFront URL signing params.
Outputs a flat clean object for the filter and lookalike nodes.
Filter - Is Creator? n8n-nodes-base.if Keep only creator profiles Normalize Find Similar Creators ## Filter — Is Creator?
Checks is_creator === true. Only real creators proceed.
Port 0 → Lookalike API
Port 1 → dead end, dropped silently
Find Similar Creators n8n-nodes-influencersclub.influencersClub Search for similar creators Filter - Is Creator? Split Out ## Lookalike API
Finds similar creators using main_platform + handle. Returns up to 5 accounts.
Adjust paging.limit (max ~50) or add filters: engagement_percent.min, number_of_followers, has_done_brand_deals: true.
Split Out n8n-nodes-base.splitOut Split lookalike accounts array into individual items Find Similar Creators Loop Over Items (Lookalike) ## Lookalike API
Finds similar creators using main_platform + handle. Returns up to 5 accounts.
Adjust paging.limit (max ~50) or add filters: engagement_percent.min, number_of_followers, has_done_brand_deals: true.
Loop Over Items (Lookalike) n8n-nodes-base.splitInBatches Process lookalikes sequentially Split Out; AI Agent (Lookalike) Enrich by Handle (Full) ## Loop Over Items
Processes one lookalike at a time to avoid API rate limits.
Port 0 → all done, exits loop
Port 1 → next item → Enrichment API
Enrich by Handle (Full) n8n-nodes-influencersclub.influencersClub Fetch full lookalike creator profile Loop Over Items (Lookalike) Normalize Profile (Lookalike) ## Enrich Lookalike
Fetches full profile per lookalike: post data, audience, income, connected platforms.
Error output suppressed — failed enrichments skip silently so the loop continues.
Normalize Profile (Lookalike) n8n-nodes-base.code Convert lookalike data into standardized nested schema Enrich by Handle (Full) AI Agent (Lookalike) ## Enrich Lookalike
Fetches full profile per lookalike: post data, audience, income, connected platforms.
Error output suppressed — failed enrichments skip silently so the loop continues.
AI Agent (Lookalike) @n8n/n8n-nodes-langchain.agent Produce structured creator evaluation Normalize Profile (Lookalike); OpenAI Model (Lookalike)1; Structured Output Parser (Lookalike)1 HubSpot — Lookalike Creator; Loop Over Items (Lookalike) ## AI Agent
GPT-4o-mini analyzes the profile and returns structured JSON: summary, strengths, concerns, audience authenticity, growth trajectory, niche clarity, brand fit, recommended action, and estimated reach per post.
Edit the system prompt to add campaign context or scoring bias.
OpenAI Model (Lookalike)1 @n8n/n8n-nodes-langchain.lmChatOpenAi Provide GPT-4o-mini model to agent AI Agent (Lookalike) ## AI Agent
GPT-4o-mini analyzes the profile and returns structured JSON: summary, strengths, concerns, audience authenticity, growth trajectory, niche clarity, brand fit, recommended action, and estimated reach per post.
Edit the system prompt to add campaign context or scoring bias.
Structured Output Parser (Lookalike)1 @n8n/n8n-nodes-langchain.outputParserStructured Enforce JSON schema on AI output AI Agent (Lookalike) ## AI Agent
GPT-4o-mini analyzes the profile and returns structured JSON: summary, strengths, concerns, audience authenticity, growth trajectory, niche clarity, brand fit, recommended action, and estimated reach per post.
Edit the system prompt to add campaign context or scoring bias.
HubSpot — Lookalike Creator n8n-nodes-base.hubspot Create or update lookalike in HubSpot AI Agent (Lookalike) ## HubSpot Upsert
Creates or updates the lookalike as a HubSpot contact using their enriched email.
Map recommended_action, brand_fit, and estimated_reach_per_post to custom HubSpot properties for outreach sequencing.
📋 OVERVIEW n8n-nodes-base.stickyNote Workflow documentation note # HubSpot → Lookalike Creator Discovery
How it works When a contact is created in HubSpot, this pipeline checks if they're a creator, finds similar creators via the influencers.club API, enriches and AI-analyzes each one, then pushes qualified lookalikes back into HubSpot.
Flow: Trigger → Fetch contact → Extract email → Enrich → Detect platform → Filter creators → Lookalike API → Loop each result → Enrich → Normalize → AI analysis → HubSpot upsert
Platform detection: main_platform is auto-detected by comparing follower counts across TikTok / Instagram / YouTube / Twitter — the highest audience wins. Non-creators are silently dropped at the Filter node.
Set up required
- HubSpot Developer App (trigger)
- HubSpot App Token (read + write)
- influencers.club API key
- OpenAI API key
Note: Trigger n8n-nodes-base.stickyNote Documentation note ## HubSpot Trigger
Fires on contact.creation. Outputs contactId for the next node.
Add contact.propertyChange in HubSpot app settings to also catch updates.
Note: Get Contact n8n-nodes-base.stickyNote Documentation note ## Get Contact by ID
Fetches firstname, company, hs_full_name_or_email from HubSpot using contactId.
Add more properties to propertiesCollection if your CRM has custom creator fields.
Note: Extract Email n8n-nodes-base.stickyNote Documentation note ## Extract Email
Maps HubSpot fields into clean Email and Company Name variables.
Note: Enrich by Email n8n-nodes-base.stickyNote Documentation note ## Enrich by Email
POSTs email to influencers.club and returns a full main profile info.
Error → Stop and Error node.
Note: Stop and Error n8n-nodes-base.stickyNote Documentation note ## Stop and Error
Triggered when enrichment fails or returns no creator. Halts execution with a logged error message.
Note: Normalize Seed n8n-nodes-base.stickyNote Documentation note ## Normalize (Code in JS)
Detects main_platform by comparing follower counts across all platform blocks. Computes follower_tier, engagement_tier, growth_trend. Strips CloudFront URL signing params.
Outputs a flat clean object for the filter and lookalike nodes.
Note: Filter n8n-nodes-base.stickyNote Documentation note ## Filter — Is Creator?
Checks is_creator === true. Only real creators proceed.
Port 0 → Lookalike API
Port 1 → dead end, dropped silently
Note: Lookalike API n8n-nodes-base.stickyNote Documentation note ## Lookalike API
Finds similar creators using main_platform + handle. Returns up to 5 accounts.
Adjust paging.limit (max ~50) or add filters: engagement_percent.min, number_of_followers, has_done_brand_deals: true.
Note: Loop n8n-nodes-base.stickyNote Documentation note ## Loop Over Items
Processes one lookalike at a time to avoid API rate limits.
Port 0 → all done, exits loop
Port 1 → next item → Enrichment API
Note: Enrich Lookalike1 n8n-nodes-base.stickyNote Documentation note ## Enrich Lookalike
Fetches full profile per lookalike: post data, audience, income, connected platforms.
Error output suppressed — failed enrichments skip silently so the loop continues.
Note: AI Agent n8n-nodes-base.stickyNote Documentation note ## AI Agent
GPT-4o-mini analyzes the profile and returns structured JSON: summary, strengths, concerns, audience authenticity, growth trajectory, niche clarity, brand fit, recommended action, and estimated reach per post.
Edit the system prompt to add campaign context or scoring bias.
Note: HubSpot Out n8n-nodes-base.stickyNote Documentation note ## HubSpot Upsert
Creates or updates the lookalike as a HubSpot contact using their enriched email.
Map recommended_action, brand_fit, and estimated_reach_per_post to custom HubSpot properties for outreach sequencing.
Sticky Note1 n8n-nodes-base.stickyNote Documentation note ## Find similar creators to your top performers and boost your brand visibility
Step by step workflow to discover lookalike creators with multi social (Instagram, Tiktok, Youtube, Twitter, Onlyfans, Twitch and more) data using the influencer.club API and add them to Hubspot.
https://influencers.club/creatorbook/find-similar-creators-to-top-performers/

4. Reproducing the Workflow from Scratch

  1. Create a new workflow in n8n and name it something like:
    Find and add similar creators to HubSpot based on top performers.

  2. Add a HubSpot Trigger node.

    • Node type: HubSpot Trigger
    • Credentials: HubSpot Developer API
    • Configure it for the contact creation event.
    • Optionally add contact property change events if you also want updates.
    • Set maxConcurrentRequests to 5.
  3. Add a HubSpot node named “Get Contact by ID”.

    • Node type: HubSpot
    • Operation: Get Contact
    • Authentication: App Token
    • Credentials: HubSpot app token with contact read access
    • Set Contact ID to: {{ $json.contactId }}
    • Request the needed properties. At minimum, include:
      • email
      • firstname
      • company
      • hs_full_name_or_email
    • If you depend on associated company information, also ensure your retrieval approach actually returns associated company data, or add an additional HubSpot association/company node.
  4. Connect HubSpot Trigger → Get Contact by ID.

  5. Add a Set node named “Extract Email”.

    • Create fields:
      • Email = {{ $json.properties.email.value }}
      • Company Name = if available from the payload, otherwise map from a valid company source
    • Important: the provided workflow assumes associated-company.properties.name.value, which may not exist unless explicitly fetched elsewhere. If needed, replace with a safer expression.
  6. Connect Get Contact by ID → Extract Email.

  7. Add an influencers.club node named “Enrich by Email”.

    • Node type: influencersClub
    • Credentials: influencers.club API key
    • Operation: enrich by email
    • Set email to: {{ $json.Email }}
    • Enable Continue On Fail / Error Output behavior so failed enrichments can be routed.
  8. Connect Extract Email → Enrich by Email.

  9. Add a Stop and Error node.

    • Node type: Stop and Error
    • Error message: API enrichment failed - contact is not a creator or API error
  10. Connect the error output of Enrich by Email → Stop and Error.

  11. Add a Code node named “Normalize”.

  • Paste the seed normalization JavaScript from the workflow.
  • This code:
    • unwraps the enrichment response
    • compares follower counts across TikTok, Instagram, YouTube, and Twitter
    • sets main_platform
    • computes formatted follower count, tiers, growth trend
    • creates a flattened creator object
  1. Connect Enrich by Email main output → Normalize.

  2. Add an IF node named “Filter - Is Creator?”.

  • Condition:
    • left value: {{ $json.is_creator }}
    • operation: boolean equals
    • right value: true
  1. Connect Normalize → Filter - Is Creator?.

  2. Leave the false output unconnected if you want silent dropping of non-creators.

  3. Add an influencers.club node named “Find Similar Creators”.

  • Resource: creator
  • Operation: findLookalikes
  • Platform: {{ $json.main_platform }}
  • Filter key: username
  • Filter value: {{ $json.handle }}
  • Credentials: influencers.club API key
  • Optionally add advanced filters such as:
    • follower thresholds
    • engagement minimums
    • brand deal requirement
    • paging limit
  1. Connect the true branch of Filter - Is Creator? → Find Similar Creators.

  2. Add a Split Out node named “Split Out”.

  • Field to split: accounts
  1. Connect Find Similar Creators → Split Out.

  2. Add a Split In Batches node named “Loop Over Items (Lookalike)”.

  • Use default options for sequential processing.
  1. Connect Split Out → Loop Over Items (Lookalike).

  2. Add another influencers.club node named “Enrich by Handle (Full)”.

  • Resource: creator
  • Operation: enrichByHandle
  • Handle: {{ $json.profile.username }}
  • Platform: {{ $('Normalize').item.json.main_platform }}
  • Enable continue-on-error behavior so one failed lookalike does not stop the whole run.
  1. Connect output 1 of Loop Over Items (Lookalike) → Enrich by Handle (Full).
  • In this pattern, output 1 is used for each batch item.
  1. Add a Code node named “Normalize Profile (Lookalike)”.
  • Set mode to Run Once for Each Item.
  • Paste the provided normalization script.
  • This code standardizes multiple possible influencers.club response formats into normalized_profile.
  1. Connect Enrich by Handle (Full) → Normalize Profile (Lookalike).

  2. Add an OpenAI Chat Model node named “OpenAI Model (Lookalike)1”.

  • Node type: LangChain OpenAI Chat Model
  • Credentials: OpenAI API key
  • Model: gpt-4o-mini
  1. Add a Structured Output Parser node named “Structured Output Parser (Lookalike)1”.
  • Use manual schema mode.
  • Paste the full JSON schema from the workflow.
  • Ensure all required fields and enums match exactly.
  1. Add an AI Agent node named “AI Agent (Lookalike)”.
  • Prompt type: define manually
  • Main prompt should inject: {{ JSON.stringify($json.normalized_profile, null, 2) }}
  • Add the system message instructing the model to return valid JSON only.
  • Enable output parser usage.
  1. Connect Normalize Profile (Lookalike) → AI Agent (Lookalike).

  2. Connect OpenAI Model (Lookalike)1 to the AI Agents language model input.

  3. Connect Structured Output Parser (Lookalike)1 to the AI Agents output parser input.

  4. Add a HubSpot node named “HubSpot — Lookalike Creator”.

  • Authentication: HubSpot app token
  • Configure it as create or update contact, depending on your CRM design.
  • Recommended matching key: email, if enrichment returns one.
  • Map fields such as:
    • email
    • firstname/full name
    • social handle
    • platform
    • follower count
    • recommended action
    • summary
    • brand fit
    • estimated reach per post
  • Create corresponding custom HubSpot properties beforehand.
  1. Connect AI Agent (Lookalike) → HubSpot — Lookalike Creator.

  2. Connect AI Agent (Lookalike) back to Loop Over Items (Lookalike).

  • This closes the loop so the next lookalike item is processed.
  1. Add sticky notes for documentation if desired, mirroring:
  • workflow overview
  • trigger notes
  • seed enrichment notes
  • creator filtering
  • lookalike discovery
  • sequential processing
  • AI analysis
  • HubSpot output mapping
  1. Validate the workflow carefully before activation.
  • Confirm email is really available from HubSpot.
  • Confirm associated-company references are valid or replaced.
  • Confirm the final HubSpot node has a real email mapping instead of an empty expression.
  • Confirm the AI output still contains the fields you need, or add a Merge node if you must preserve both normalized profile data and AI analysis together.
  1. Recommended hardening adjustments before production:
  • Add a Merge node after AI analysis if you need both source profile data and AI assessment in HubSpot.
  • Add deduplication before HubSpot create/update using dedup_key.
  • Add an IF node to skip lookalikes with no email if HubSpot requires email-based upsert.
  • Add retry logic or throttling for API calls if you expect volume.

Required credentials

  • HubSpot Developer API for the trigger
  • HubSpot App Token for contact get/create/update
  • influencers.club API credential
  • OpenAI API credential

Input/output expectations

  • Trigger input: HubSpot contact creation event
  • Seed enrichment input: email address from HubSpot contact
  • Lookalike discovery input: normalized main_platform and handle
  • AI input: normalized_profile
  • HubSpot output input: ideally merged enriched profile + AI analysis + valid email

5. General Notes & Resources

Note Content Context or Link
Find similar creators to your top performers and boost your brand visibility influencers.club article
Step by step workflow to discover lookalike creators with multi social (Instagram, Tiktok, Youtube, Twitter, Onlyfans, Twitch and more) data using the influencer.club API and add them to Hubspot https://influencers.club/creatorbook/find-similar-creators-to-top-performers/
Required setup includes HubSpot Developer App, HubSpot App Token, influencers.club API key, and OpenAI API key Workflow overview note
Platform detection is automatic based on the highest follower count among TikTok, Instagram, YouTube, and Twitter Workflow overview note
Non-creators are dropped silently at the filter step Workflow overview note

Important implementation note

The final HubSpot node appears incomplete in the provided workflow JSON. To make the workflow operational, you will likely need to finish the HubSpot create/update configuration and ensure the node receives both a valid contact identifier (usually email) and the enriched/AI-analyzed fields you want to store.