AutomationFlowsWeb Scraping › Bidirectional Company Sync Between Prospectpro and Hubspot with Status Tracking

Bidirectional Company Sync Between Prospectpro and Hubspot with Status Tracking

ByOlivier @olivier-nl on n8n.io

This template syncs prospects from ProspectPro into HubSpot. It checks if a company already exists in HubSpot (by ProspectPro ID or domain), then updates the record or creates a new one. Sync results are logged back in ProspectPro with tags to prevent duplicates and mark errors,…

Event trigger★★★★☆ complexity29 nodesExecute Workflow Trigger@Bedrijfsdatanl/N8N Nodes ProspectproHTTP RequestHubSpot
Web Scraping Trigger: Event Nodes: 29 Complexity: ★★★★☆ Added:
Bidirectional Company Sync Between Prospectpro and Hubspot with Status Tracking — n8n workflow card showing Execute Workflow Trigger, @Bedrijfsdatanl/N8N Nodes Prospectpro, HTTP Request integration

This workflow corresponds to n8n.io template #8471 — we link there as the canonical source.

This workflow follows the Execute Workflow Trigger → HTTP Request recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "UibfNSOI8BIFzstW",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Template - Sync Prospects to Hubspot",
  "tags": [
    {
      "id": "5iLhyafIfw7Wsj7s",
      "name": "Templates",
      "createdAt": "2025-09-08T15:27:47.811Z",
      "updatedAt": "2025-09-08T15:27:47.811Z"
    }
  ],
  "nodes": [
    {
      "id": "94bc6245-cee2-4028-89d3-9496ac683eb1",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -2784,
        560
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "id"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "75e8d8ed-b1b7-4ea8-ac9c-99a7abf9e6c0",
      "name": "Get prospect",
      "type": "@bedrijfsdatanl/n8n-nodes-prospectpro.prospectpro",
      "onError": "continueErrorOutput",
      "position": [
        -2480,
        560
      ],
      "parameters": {
        "id": "={{ $json.id }}",
        "operation": "get",
        "requestOptions": {}
      },
      "credentials": {
        "prospectproApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "6a372bac-c633-4fc1-a3f4-87bee5f05f06",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2544,
        384
      ],
      "parameters": {
        "color": 5,
        "width": 656,
        "height": 368,
        "content": "## Start\nAs this workflow is designed to be as flexible as possible, we assume we just have a ProspectPro ID. We therefor start by retrieving the prospect and double-checking if an error has occurred before. If there was, the issue should be resolved manually, so we quit the workflow early.\n\n**Important:** Set your own conditions for executing the sync in \"Continue?\"-node."
      },
      "typeVersion": 1
    },
    {
      "id": "dd7d4d4f-93f6-4cff-82bc-9378e1cc6680",
      "name": "Continue?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2064,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "15bc7f88-124b-4ace-9b9b-d211b83dd524",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ !!$json.domain }}",
              "rightValue": ""
            },
            {
              "id": "2ab83e0c-e511-4b0a-bb97-c76198116e07",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ !!$json.id }}",
              "rightValue": ""
            },
            {
              "id": "7dc88f3a-2aa2-4e17-9b67-1298ba06c27b",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "dcc5f1cf-8aca-46c9-b5c3-ff1bfcc306be",
      "name": "No Existing Errors?",
      "type": "n8n-nodes-base.if",
      "position": [
        -2272,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c3696744-f335-4b14-852c-76a7659f3303",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ !!$json.tags.includes(\"HubspotSyncFailed\") }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c2359c20-9b2d-4051-be69-dcff04b6322d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1872,
        384
      ],
      "parameters": {
        "color": 6,
        "width": 1328,
        "height": 368,
        "content": "## Search & Select Hubspot Company\nDetermine the appropriate syncing strategy.\n\n**Important:** As the Hubspot Node in n8n doesn't support proper synchronisation logic, we use HTTP-nodes to search Hubspot for existing companies."
      },
      "typeVersion": 1
    },
    {
      "id": "5faecf8e-4528-47a8-ad8c-39757fe32a25",
      "name": "Search Companies by Bedrijfsdata ID",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1792,
        560
      ],
      "parameters": {
        "url": "https://api.hubapi.com/crm/v3/objects/companies/search",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"properties\": [\"prospectpro_id\", \"domain\", \"name\", \"lifecyclestage\"],\n  \"filterGroups\": [\n    {\n      \"filters\": [\n        {\n          \"propertyName\": \"prospectpro_id\",\n          \"operator\": \"EQ\",\n          \"value\": \"{{ $json.id }}\"\n        }\n      ]\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "hubspotOAuth2Api"
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "51dc7ba9-c557-4629-9842-d8e71548cea0",
      "name": "Found by ID?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1584,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "da65345b-7d49-4576-bbaf-ab23f7e1cdb8",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.total > 0 }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "08d8eaa0-c8bf-48da-8af4-d11b4470a3a4",
      "name": "Search Companies by Domain",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1152,
        560
      ],
      "parameters": {
        "url": "https://api.hubapi.com/crm/v3/objects/companies/search",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"properties\": [\"prospectpro_id\", \"domain\", \"name\"],\n  \"filterGroups\": [\n    {\n      \"filters\": [\n        {\n          \"propertyName\": \"domain\",\n          \"operator\": \"EQ\",\n          \"value\": \"{{ $('Get prospect').item.json.domain }}\"\n        }\n      ]\n    }\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "hubspotOAuth2Api"
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "35e41246-74d2-4460-8642-659b3ed1c8a5",
      "name": "Has Domain?",
      "type": "n8n-nodes-base.if",
      "position": [
        -1360,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b3a44f7a-7b55-49b0-90e5-c3abb0c9c815",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ !!$('Get prospect').item.json.domain }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "a42147a2-e19a-4718-adba-3585c8295684",
      "name": "Found by Domain?",
      "type": "n8n-nodes-base.if",
      "position": [
        -944,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "da65345b-7d49-4576-bbaf-ab23f7e1cdb8",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.total > 0 }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "8e579c2a-10c4-4e0b-9563-d286d2ec6aab",
      "name": "Set hsCompany",
      "type": "n8n-nodes-base.code",
      "position": [
        -736,
        560
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "const hsCompany = $json.results[0];\n\nreturn { ...hsCompany };"
      },
      "typeVersion": 2
    },
    {
      "id": "b78386cd-5c89-4190-a11f-1109765a7ed9",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        384
      ],
      "parameters": {
        "color": 2,
        "width": 512,
        "height": 368,
        "content": "## Update Hubspot Company\nUpdate companies that exist in Hubspot.\n\n**Important:** If you want to update ProspectPro by using data that exists in Hubspot (like \"Customer Lifecycle Stage\"), this is the place to do it."
      },
      "typeVersion": 1
    },
    {
      "id": "95b4c129-31e6-4141-933e-60f4a1012744",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        768
      ],
      "parameters": {
        "color": 4,
        "width": 512,
        "height": 368,
        "content": "## Create Hubspot Company\nCreate companies that don't exist in Hubspot."
      },
      "typeVersion": 1
    },
    {
      "id": "5849f892-d2d7-4a8b-b92e-00e7e731005e",
      "name": "Create a company",
      "type": "n8n-nodes-base.hubspot",
      "onError": "continueErrorOutput",
      "position": [
        -432,
        944
      ],
      "parameters": {
        "name": "={{ $('Get prospect').item.json.name }}",
        "resource": "company",
        "authentication": "oAuth2",
        "additionalFields": {
          "city": "={{ $('Get prospect').item.json.city || undefined }}",
          "postalCode": "={{ $('Get prospect').item.json.postcode || undefined }}",
          "websiteUrl": "={{ $('Get prospect').item.json.url || undefined }}",
          "phoneNumber": "={{ $('Get prospect').item.json.phone_international || undefined }}",
          "annualRevenue": "={{ $('Get prospect').item.json.revenue || undefined }}",
          "countryRegion": "={{ $('Get prospect').item.json.country_code || undefined }}",
          "streetAddress": "={{ $('Get prospect').item.json.address || undefined }}",
          "companyDomainName": "={{ $('Get prospect').item.json.domain || undefined }}",
          "numberOfEmployees": "={{ $('Get prospect').item.json.employees || undefined }}",
          "customPropertiesUi": {
            "customPropertiesValues": [
              {
                "value": "={{ $('Get prospect').item.json.id }}",
                "property": "prospectpro_id"
              },
              {
                "value": "={{ $('Get prospect').item.json.coc || undefined }}",
                "property": "kvk"
              }
            ]
          },
          "linkedInCompanyPage": "={{ $('Get prospect').item.json.linkedin_link || undefined }}"
        }
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "f30d8294-8aa0-4b8f-835b-bc311f47d9ed",
      "name": "Update a company",
      "type": "n8n-nodes-base.hubspot",
      "onError": "continueErrorOutput",
      "position": [
        -432,
        560
      ],
      "parameters": {
        "resource": "company",
        "companyId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.id }}"
        },
        "operation": "update",
        "updateFields": {
          "companyDomainName": "={{ $json.properties.domain || $('Get prospect').item.json.domain || undefined }}",
          "customPropertiesUi": {
            "customPropertiesValues": [
              {
                "value": "={{ $('Get prospect').item.json.id }}",
                "property": "prospectpro_id"
              },
              {
                "value": "={{ $('Get prospect').item.json.coc }}",
                "property": "kvk"
              }
            ]
          }
        },
        "authentication": "oAuth2"
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "6374e07e-0713-4ba3-9dc3-f42e93ddf93a",
      "name": "Update Successful?",
      "type": "n8n-nodes-base.if",
      "position": [
        -224,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "239351e0-f10a-4dc2-a47f-b5e0978bcda4",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ !!$json.companyId }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4acc3119-52f3-4be2-8c85-0e2f3d7b5e46",
      "name": "Creation Successful?",
      "type": "n8n-nodes-base.if",
      "position": [
        -224,
        944
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "239351e0-f10a-4dc2-a47f-b5e0978bcda4",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ !!$json.companyId }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "5d96a530-4ec1-467c-9b22-f362488c33df",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        1184
      ],
      "parameters": {
        "color": 3,
        "width": 448,
        "height": 320,
        "content": "## Log Company Errors\nSet Tags in ProspectPro to easily detect issues that need to be resolved manually."
      },
      "typeVersion": 1
    },
    {
      "id": "94b0ece2-3883-4212-9e4f-4c187900853a",
      "name": "Set Tag: HubspotSyncFailed",
      "type": "n8n-nodes-base.code",
      "position": [
        80,
        1328
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "const prospect = $('Get prospect').item.json;\nconst tags = prospect.tags.length > 0 ? prospect.tags.split('|') : [];\n\ntags.push(\"HubspotSyncFailed\");\n\nreturn {\n  ...prospect,\n  tags\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "d4a76b65-379c-41eb-bf63-081bd80550ca",
      "name": "Set Tag: HubspotSynced",
      "type": "n8n-nodes-base.code",
      "position": [
        80,
        560
      ],
      "parameters": {
        "jsCode": "const prospect = $('Get prospect').first().json;\nconst tags = prospect.tags.length > 0 ? prospect.tags.split('|') : [];\n\ntags.push(\"HubspotSynced\");\n\nreturn [{ json: { \n  ...prospect,\n  tags  \n} }];"
      },
      "typeVersion": 2
    },
    {
      "id": "a3101321-8e84-4d13-b044-871b15270dc6",
      "name": "return { result: true };",
      "type": "n8n-nodes-base.code",
      "position": [
        544,
        560
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "return { result: true };"
      },
      "typeVersion": 2
    },
    {
      "id": "89d38963-c663-4cb8-88dd-9ee0d27fcb43",
      "name": "Update Tags: Success",
      "type": "@bedrijfsdatanl/n8n-nodes-prospectpro.prospectpro",
      "onError": "continueRegularOutput",
      "position": [
        272,
        560
      ],
      "parameters": {
        "id": "={{ $json.id }}",
        "operation": "patch",
        "updateOptions": {
          "tags": "={{ $json.tags }}"
        },
        "requestOptions": {}
      },
      "credentials": {
        "prospectproApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "f027d84b-1779-4d92-8fdc-5f6c6e92ef97",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        464,
        384
      ],
      "parameters": {
        "width": 256,
        "height": 1120,
        "content": "## Set output\nThis workflow outputs:\n\n`{ result: Boolean }`"
      },
      "typeVersion": 1
    },
    {
      "id": "3a7604d2-33d1-4952-92da-5295fcf21ac9",
      "name": "return { result: false };",
      "type": "n8n-nodes-base.code",
      "position": [
        544,
        1328
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "return { result: false };"
      },
      "typeVersion": 2
    },
    {
      "id": "5bc28447-88e7-4451-8a58-f85d9064b5c4",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        384
      ],
      "parameters": {
        "color": 4,
        "width": 448,
        "height": 368,
        "content": "## Log Sync status to ProspectPro\nAdd a tag to indicate the Prospect has been synced."
      },
      "typeVersion": 1
    },
    {
      "id": "242c5a58-9892-46f2-b0e5-42211b4abb25",
      "name": "Update Tags: Fail",
      "type": "@bedrijfsdatanl/n8n-nodes-prospectpro.prospectpro",
      "onError": "continueRegularOutput",
      "position": [
        272,
        1328
      ],
      "parameters": {
        "id": "={{ $json.id }}",
        "operation": "patch",
        "updateOptions": {
          "tags": "={{ $json.tags }}"
        },
        "requestOptions": {}
      },
      "credentials": {
        "prospectproApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1,
      "alwaysOutputData": true
    },
    {
      "id": "aa057f0a-e376-4994-81a2-5eedf4dc3dbe",
      "name": "ProspectPro Trigger Example",
      "type": "@bedrijfsdatanl/n8n-nodes-prospectpro.prospectproTrigger",
      "position": [
        -3040,
        560
      ],
      "parameters": {
        "label": -1,
        "not_tags": "={{ [\"HubspotSyncFailed\"] }}",
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        }
      },
      "credentials": {
        "prospectproApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e8672121-93d1-43c3-bc17-c63b7c30ab70",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3136,
        176
      ],
      "parameters": {
        "width": 576,
        "height": 576,
        "content": "## Sync Prospects to Hubspot (by Prospect ID)\n*Description:* Sync Prospects from ProspectPro to Hubspot.\n\n*Usage:* Workflow can be connected to a trigger directly (like ProspectPro's \"New website visitor\"), or be used as a sub-flow in a multi-step process.\n\n*Additional information:*\n- Workflow sets tags \"HubspotSynced\" and \"HubspotSyncFailed\" in ProspectPro to indicate whether a prospect has been processed by this workflow. This allows you to prevent re-runs in scenario's where this isn't desirable. Check out the \"ProspectPro Trigger Example\" below for an example.\n- Contact us through https://www.prospectpro.nl/klantenservice/ for support and extra tips on best practises for implementation."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "errorWorkflow": "Mf7KVxCmCYTFgFAd",
    "executionOrder": "v1"
  },
  "versionId": "363491e7-fb9e-45da-ab1e-02c4eef375cb",
  "connections": {
    "Continue?": {
      "main": [
        [
          {
            "node": "Search Companies by Bedrijfsdata ID",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Tag: HubspotSyncFailed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Has Domain?": {
      "main": [
        [
          {
            "node": "Search Companies by Domain",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create a company",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Found by ID?": {
      "main": [
        [
          {
            "node": "Set hsCompany",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Has Domain?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get prospect": {
      "main": [
        [
          {
            "node": "No Existing Errors?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "return { result: false };",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set hsCompany": {
      "main": [
        [
          {
            "node": "Update a company",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create a company": {
      "main": [
        [
          {
            "node": "Creation Successful?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Tag: HubspotSyncFailed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Found by Domain?": {
      "main": [
        [
          {
            "node": "Set hsCompany",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Create a company",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update a company": {
      "main": [
        [
          {
            "node": "Update Successful?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Tag: HubspotSyncFailed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Tags: Fail": {
      "main": [
        [
          {
            "node": "return { result: false };",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Successful?": {
      "main": [
        [
          {
            "node": "Set Tag: HubspotSynced",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Tag: HubspotSyncFailed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "No Existing Errors?": {
      "main": [
        [
          {
            "node": "Continue?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "return { result: false };",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Creation Successful?": {
      "main": [
        [
          {
            "node": "Set Tag: HubspotSynced",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Set Tag: HubspotSyncFailed",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Tags: Success": {
      "main": [
        [
          {
            "node": "return { result: true };",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Tag: HubspotSynced": {
      "main": [
        [
          {
            "node": "Update Tags: Success",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Companies by Domain": {
      "main": [
        [
          {
            "node": "Found by Domain?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Tag: HubspotSyncFailed": {
      "main": [
        [
          {
            "node": "Update Tags: Fail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Get prospect",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Companies by Bedrijfsdata ID": {
      "main": [
        [
          {
            "node": "Found by ID?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This template syncs prospects from ProspectPro into HubSpot. It checks if a company already exists in HubSpot (by ProspectPro ID or domain), then updates the record or creates a new one. Sync results are logged back in ProspectPro with tags to prevent duplicates and mark errors,…

Source: https://n8n.io/workflows/8471/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This template is a powerful, reusable utility for managing stateful, long-running processes. It allows a main workflow to be paused indefinitely at "checkpoints" and then be resumed by external, async

HTTP Request, Execute Workflow Trigger
Web Scraping

Upload files from any source to your account Kommo or AmoCRM with a simple and reusable workflow. It can split a large file into small ones and upload chunks. Works for Kommo and amoCRM There are 3 re

HTTP Request, Execute Workflow Trigger, Stop And Error
Web Scraping

Remixed Backup your workflows to GitHub from Solomon's work. Check out his templates.

HTTP Request, GitHub, Execute Workflow Trigger +1
Web Scraping

Remixed Backup your workflows to GitHub from Solomon's work. Check out his templates.

Execute Workflow Trigger, HTTP Request, GitHub
Web Scraping

This workflow audits your SharePoint Online environment for external sharing risks by identifying files and folders that are shared with anonymous links or external/guest users. It is designed to trav

HTTP Request, Execute Workflow Trigger