Revenue Operations

How to Sync Salesforce Accounts to HubSpot Without Contacts

Discover a step-by-step guide to syncing Salesforce accounts to HubSpot without contacts or activities. Perfect for B2B teams implementing account-based marketing strategies.
Contents:

B2B companies often use both Salesforce and HubSpot to manage customer relationships. While Salesforce is the go-to for sales teams, HubSpot often powers marketing efforts. However, syncing Salesforce accounts to HubSpot without associated contacts or activities can be challenging.

Why would you want to sync empty accounts? One particularly scenario I encountered at a client was trying to sync Target accounts from Salesforce Account records to HubSpot Company records when those Accounts had no associated Contacts. The is very common if you want to run account-based marketing (ABM) with HubSpot and most likely using LinkedIn advertising with custom target account audiences.

However, if your Sales team works in Salesforce and they imported accounts from Excel files or added them using the LinkedIn Sales Navigator, the chance is high the accounts will be empty without any activities or contacts (yet). In theory, the Salesforce HubSpot connector should handle this. (After all, HubSpot’s own documentation notes that a Salesforce account does not require an associated contact for sync.) In practice, however, these “orphaned” accounts often sit in Salesforce and never make it to HubSpot. And even if they would sync at account creation, they wont re-sync when changes are done to them (like marking them as target account). It’s one of those Salesforce-HubSpot integration issues that can leave even experienced admins scratching their heads.

As a HubSpot/Salesforce admin and RevOps nerd, I’m skeptical of “just because” answers. So when I saw our target Account records not continue to sync (simply because they were lonely with no contacts or activities), I got curious. Why wasn’t the native connector doing its job? Could I force the sync without resorting to adding fake contacts or manual imports? In fact, I tested with fake contacts (and fake email adresses like abm@company.com) and it became a mess very quickly. Today, I’ll share how I solved this Salesforce HubSpot connector problem in an organized, step-by-step way. Let’s dive in.

The Problem: Orphaned Accounts Not Syncing to HubSpot

If you turn on Company Sync in HubSpot’s Salesforce integration settings, new Salesforce accounts should automatically create HubSpot companies. However, and here is the problem, existing accounts will sync only when something changes on the record (or if you import them manuallyIn theory, it shouldn’t matter whether an Account has Contacts attached or not.

However, many of us have found that Accounts with no contacts or activities tend to fall through the cracks. If an Account has never had a Contact, it often just sits in Salesforce and HubSpot ignores it. Why? Historically, HubSpot wouldn’t create a Salesforce Account from a HubSpot Company unless a contact was associated. And while the reverse (Salesforce → HubSpot) supposedly doesn’t require a contact, in practice those orphaned accounts don’t always re-sync until nudged.

So you might think: “No biggie, I’ll just edit the Account record. That’ll trigger the sync.” Sometimes, yes, updating a Salesforce Account will prompt HubSpot to create or update the corresponding Company (the integration listens for account field changes. But here’s the catch: manual edits on orphaned Accounts don’t reliably trigger syncs in all cases.

The Solution: Auto-Triggering Sync with a Custom Field and Flow

To fix this, we use a Salesforce Flow with a trigger field. Rather than relying on humans to remember to edit records in just the right way, I built a simple Salesforce Flow to do the job. The idea is to use a custom Date/Time field as a “sync trigger.” Whenever we want HubSpot to notice an Account, the flow updates this field with the current timestamp, forcing a sync.

Step-by-Step Instructions

Here’s how to set it up step by step.

Step 1: Create a Custom Date/Time Field

  • Go to Salesforce Setup > Object Manager > Account > Fields & Relationships
  • Add a new Custom Field:
    • Type: Date/Time
    • Label: "Last HubSpot Sync Trigger"
    • Purpose: Acts as a sync trigger for HubSpot.

I named mine “Last HubSpot Sync Trigger”. Choose the Date/Time type (not just Date). This field will serve as our invisible hand, updating its value will signal HubSpot that the account changed. Why Date/Time? Because it includes the timestamp. If you update a Date/Time field with the current date and time, you get a unique value every time. A plain Date field, by contrast, would only change once per day at most (today is “today” all day long). Using Date/Time ensures that if we trigger multiple syncs in one day, we can always set a new value. (HubSpot will see a change every time, rather than ignoring “same day” updates.)

Step 2: (Optional) Create a “Target Account” checkbox field

Create a field to let Sales mark if an account should be a target account. For this I created a simple checkbox on the Account object. In my scenario, we only wanted to sync certain accounts (for example, those flagged as Target Accounts by sales). The checkbox makes it easy for users to mark an Account for syncing. You could also reuse an existing field or criteria. The key is you need some trigger for the flow (besides just record creation or every edit). I’ll proceed assuming a boolean field called Target_Account__c that we’ll use to kick off the process.

Step 3: Build a Record-Triggered Flow on Account

This Salesforce Flow helps solve common HubSpot Salesforce integration issues.

  • Navigate to Setup > Flows
  • Create a Record-Triggered Flow for the Account object
  • Set the trigger to fire when a condition (e.g., ABM status = true) is met.
  • Add an action to update the custom Date/Time field with the current timestamp.

Here’s the fun part. In Salesforce Lightning Setup, go to Flow Builder and create a new Record-Triggered Flow on the Account object. Set the trigger conditions to something like: “When a record is updated (and optionally created), criteria: Target_Account__c equals TRUE.” Essentially, whenever the Target Account checkbox is toggled on (or you can have it trigger on any change of that field), the flow will fire.

Now add an Update Records element (after any decision logic if needed). We want to update the same Account record that triggered the flow (no need to find other records). In the Update element, set it to use the record that triggered the flow, and assign the Last HubSpot Sync Trigger field a new value. The value will be a formula or resource that gives the current date/time. Salesforce provides a formula function NOW() for this You don’t even need to write Apex or anything, just create a formula resource in the flow that equals NOW(), and then set Last_HS_Sync_Trigger__c = {!$Flow.CurrentDateTime} (the flow’s current date/time, which is effectively the same as NOW()).

Your Salesforce account sync will now trigger correctly, even if the accounts are empty.

Step 4: Test the setup

Time for the moment of truth. HubSpot should detect the field update and syncs the Account, even without associated contacts.

Take an existing Salesforce Account that has no contacts (perhaps create a dummy one for testing). Go to Salesforce and mark it as a Target Account (check the box) and save. Within seconds (or up to 15 minutes, depending on sync cycles), HubSpot should create a new Company record for it or if already existing in HubSpot, it should re-sync and update.

  1. In Salesforce, the Last HubSpot Sync Trigger field should now show the current date/time (thanks to our flow).
  2. In HubSpot, you should see the Company appear with the corresponding Target Account property = true (and any other mapped fields populated).

To double-check, open the Company in HubSpot and look at the Salesforce Sync section (in the right sidebar by default). It should show that the company is syncing with Salesforce and have the Salesforce Account ID listed. No contacts needed, no manual import required!

Also try unchecking and re-checking the Target Account field on the same record in one day. Each time you toggle it, the flow updates the timestamp field to “now.” HubSpot will register each change and sync any updated info. If it’s already synced once, subsequent updates will just update the existing company record in HubSpot (which is fine, and actually proves our workaround is reliably triggering sync on demand).

Background details: Manual update vs automated update

During my testing phase, I got very confused. When the account property "Target account = yes /no " is changed, the sync didn't work, but if the timestamp property is changed, it will sync? What is difference here? Let’s break it down super clearly:

Case 1: Manually changing “Target Account = Yes”

  • It is a mapped property.
  • But if the Account has no syncing Contacts and no recent activity,
  • Then HubSpot may not sync the change, because:
    • The sync engine deprioritizes “orphan” Accounts.
    • Even a field change isn’t always enough unless the sync job is triggered.

So: changing the dropdown manually ≠ guaranteed sync

Case 2: Updating a timestamp field (e.g. “Last HubSpot Sync Trigger”) via Flow

  • This happens via automation, not manually.
  • The Flow does a system-level update (!!) on a mapped field.
  • That update runs on schedule for all relevant Accounts.
  • Salesforce marks the record as “modified”, and the integration job picks it up.

So: automated timestamp change = reliable sync trigger, even for Accounts without Contacts.

Why does this work?

The difference isn’t the field type. It’s about how reliably the update triggers the sync engine:

  • Manual edits (like ticking “Target Account” in UI) might not fire the right events, especially on orphaned Accounts.
  • Automated field updates in Flow simulate real activity and ensure the record gets picked up by the sync job.

TL;DR:

Scenario Field Changed Account has Contacts? Sync Triggered?
Manual update of "Target Account" Yes ✖️ No ✖️ Often not
Automated update of timestamp field Yes ✖️ No ✅ Yes, reliably

Last thoughts

By following the steps above, I was able to sync Salesforce Accounts with HubSpot even when those accounts had no contacts. The solution is organized, automated, and resilient to user error – no more forgotten manual updates or waiting on an import. We essentially gave HubSpot a gentle prod (“Hey, this Account changed!”) by updating a dummy timestamp field via Flow. HubSpot, none the wiser, proceeds to sync the record. 🥳

This approach is also scalable. RevOps managers can sleep easier knowing that as sales reps identify target accounts (or any criteria you choose) and flag them, the integration will keep HubSpot in the loop (read also How to Build a RevOps Strategy Using HubSpot). Marketing can then see those companies in HubSpot, associate deals, or run account-based campaigns, etc., without missing any accounts.

Finally, I remain humble that every org’s needs are a bit different. You might tweak this: use a different trigger field, or even schedule the flow to periodically refresh the timestamp on certain accounts. The core idea is to be resourceful: leverage the tools at hand (custom fields + Flow) to work around integration blind spots. And maybe share a laugh with me that we sometimes have to go to such lengths to appease our beloved CRMs.

Want to explore more about Salesforce HubSpot integration or ABM strategies? Check out my resources on HubSpot CRM best practices and Salesforce data syncing tips.

Need help setting this up?

Reach out to me and have this done within a day. Enjoy your newly synced accounts, and happy HubSpotting/Salesforcing!

Frequently Asked Questions

Why aren't my Salesforce accounts syncing to HubSpot?

HubSpot only syncs accounts with associated contacts, recent activity, or when a mapped field changes. Orphan accounts without these triggers won't sync by default.

Can I manually trigger a sync for these accounts?

Manual edits might not suffice. Implementing a Salesforce Flow that updates a timestamp field ensures the account is marked as modified, prompting a sync.

Will multiple updates in a day trigger multiple syncs?

Yes, if your timestamp field is of the datetime type. Each unique timestamp prompts a new sync.

Is this solution compliant with Salesforce and HubSpot best practices?

Yes. This method leverages standard Salesforce Flows and respects HubSpot's sync mechanisms.

Sebastian Scheuer

Recent resources

all resources
What is a CRM system and How Can it Actually Make Your B2B Sales Process More Efficient?
CRM in B2B

What is a CRM system and How Can it Actually Make Your B2B Sales Process More Efficient?

Struggling to make your CRM system actually support your B2B sales process instead of slowing it down? This no-fluff guide breaks down what a CRM should do, how to avoid the usual pitfalls, and why HubSpot or Salesforce might just be your team's new favorite tool.
Read More