# Sync ICP website visitors from Leadfeeder to HubSpot daily

> Every morning at 8am, push yesterday's ICP-fit website visitors into HubSpot so your reps see warm accounts in CRM the same day they show intent.

- Workflow type: agent
- Services: Leadfeeder, HubSpot
- Categories: Sales, Operations
- Published: 2026-06-29

## What it does

- Pulls yesterday's ICP-fit website visitors from your saved Leadfeeder feed.
- Adds brand-new companies to HubSpot, or updates the existing record with a fresh visit note instead of creating a duplicate.
- Creates a follow-up task on the company, assigned to the company owner and due today, so the rep sees a warm account in their queue.
- Skips your own domain and any competitor domains you list so the sync stays clean.

## What you'll need

- A Leadfeeder account with at least one saved custom feed for your ICP accounts.
- A HubSpot account where you can create and update companies and tasks.
- A short list of domains to ignore (your own website, competitors, partners).
- Optional: the name of the HubSpot property you want to use for the website visit summary.

## Prompt

Every weekday at 8am, sync yesterday's ICP-fit website visitors from Leadfeeder into HubSpot so sales sees them in CRM the same day they showed intent. Build this as an agent-based workflow because the dedupe-versus-update decision and the note synthesis from visit history need judgement.

Trigger: cron at 8am on weekdays.

Steps the agent should run each fire:

1. Call Leadfeeder's List Custom Feeds to find the feed named "ICP Target Accounts" (configurable) and grab its id.

2. Call Leadfeeder's List Leads against that custom_feed_id for yesterday's date range (start_date and end_date both set to yesterday).

3. For each lead, skip it if the company's domain matches our own domain or any domain in a configurable excluded-domains list (competitors, partners, ourselves).

4. For each remaining lead, call Leadfeeder's List Visits For Lead to pull yesterday's session-level visits so the agent can synthesize a short summary (visit count, page count, top pages by views).

5. Call HubSpot's Search Companies with a filter on the domain property equal to the lead's domain. If zero results, call Create Company with name, domain, industry, country, and a custom property (default name: leadfeeder_visit_summary) holding the synthesized summary plus a last_website_visit property set to yesterday. If one or more results, take the first match and call Update Company on that id to refresh last_website_visit to yesterday, then call Create Note associated with that company id containing the new visit summary. Never create a duplicate company.

6. Resolve the company owner: read the hubspot_owner_id from the company record. If set, the task should be assigned to that owner; otherwise the task is created unassigned.

7. Call HubSpot's Create Task associated with the company, with subject "Warm visitor: <Company name> hit <top page path>", due date set to today, status NOT_STARTED, priority MEDIUM, and hubspot_owner_id from step 6 when present.

8. At the end of the run, log a one-line summary: leads pulled, new companies created, existing companies updated, tasks created, and how many leads were skipped (split by reason: excluded domain vs. no usable domain).

Configuration to expose at the top of the workflow:

- Leadfeeder feed name (default: "ICP Target Accounts")

- Excluded domains list (our own domain plus known competitor domains)

- HubSpot custom property name for the visit summary (default: leadfeeder_visit_summary)

- HubSpot property name for last visit date (default: last_website_visit)

- Task subject template and default priority

Use the Leadfeeder integration (API token) and the HubSpot integration (OAuth).

## How to customize

- Change the schedule, e.g. only run Tuesday through Friday, or run twice a day for a morning and afternoon batch.
- Point the workflow at a different Leadfeeder feed (named accounts, free trial sign-ups, pricing-page visitors).
- Adjust the task subject, due date, priority, or who it gets assigned to when the company has no owner.
- Tweak what the workflow writes into the HubSpot company note (top pages only, full visit timeline, time on site).

## FAQ

### Will this create duplicate companies in HubSpot?

No. The workflow looks up each visitor by domain first. If the company already exists, it updates that record and appends a note about the new visit instead of creating a duplicate.

### What does the follow-up task look like?

A HubSpot task titled something like "Warm visitor: Acme hit /pricing", due today, assigned to the company owner if one is set. If there is no owner, the task lands unassigned so your sales ops lead can route it.

### Can I limit which visitors get synced?

Yes. The workflow reads from a saved Leadfeeder custom feed, so any ICP filter you build inside Leadfeeder (industry, employee count, country, source) will drive which companies flow into HubSpot.

### What if a visitor's domain matches our own site or a competitor?

Those domains are excluded. You give the workflow a list of domains to skip, and it ignores any matches before touching HubSpot.

### Does this work on a HubSpot Free plan?

Yes for creating companies and tasks. If you want the workflow to write to a custom property like "last website visit", make sure that property exists on your company object in HubSpot first.

Use this prompt in General Input: https://www.generalinput.com/prompts/sync-icp-website-visitors-from-leadfeeder-to-hubspot-daily