8
n8n 中文网amn8n.com

Smartlead 至 HubSpot 性能分析

高级

这是一个Sales, Marketing领域的自动化工作流,包含 23 个节点。主要使用 If, Set, Code, Merge, Hubspot 等节点。 Smartlead 至 HubSpot 性能分析

前置要求
  • HubSpot API Key
  • PostgreSQL 数据库连接信息
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "meta": {
    "instanceId": "a2435d996b378e3a6fdef0468d70285e3aa0fbd0004de817bfc80e80afee4e7b"
  },
  "nodes": [
    {
      "id": "8a4ba8b8-b76e-4572-becd-e7f8fbea2651",
      "name": "提取营销活动数据",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        500,
        960
      ],
      "parameters": {
        "url": "=https://server.smartlead.ai/api/v1/campaigns/{{ $json.id }}/leads-export",
        "options": {
          "batching": {
            "batch": {
              "batchSize": 0
            }
          }
        },
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "api_key",
              "value": "={{ $json['API KEY'] }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "90011ed6-180d-4170-8932-ac3aa7d0e5df",
      "name": "获取所有营销活动",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -20,
        940
      ],
      "parameters": {
        "url": "https://server.smartlead.ai/api/v1/campaigns",
        "options": {
          "batching": {
            "batch": {
              "batchSize": 0
            }
          }
        },
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "api_key",
              "value": "={{ $json['API KEY'] }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c41afcf1-9256-47fa-ad99-3e1af880e53d",
      "name": "遍历项目",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        200,
        940
      ],
      "parameters": {
        "options": {
          "reset": "={{ $node['Loop Over Items'].context[\"done\"] }}"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "606bfc18-1d70-4d64-ac70-ae6f42bf0dbb",
      "name": "更新营销活动",
      "type": "n8n-nodes-base.postgres",
      "position": [
        720,
        1220
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "ce_campaign",
          "cachedResultName": "ce_campaign"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "outbound_activities",
          "cachedResultName": "outbound_activities"
        },
        "columns": {
          "value": {
            "name": "={{ $json.name }}",
            "status": "={{ $json.status }}",
            "user_id": "={{ $json.user_id }}",
            "client_id": "={{ $json.client_id }}",
            "created_at": "={{ $json.created_at }}",
            "updated_at": "={{ $json.updated_at }}",
            "campaign_id": "={{ $json.id }}",
            "track_settings": "={{ $json.track_settings }}",
            "unsubscribe_text": "={{ $json.unsubscribe_text }}",
            "max_leads_per_day": "={{ $json.max_leads_per_day }}",
            "parent_campaign_id": "={{ $json.parent_campaign_id }}",
            "send_as_plain_text": "={{ $json.send_as_plain_text }}",
            "stop_lead_settings": "={{ $json.stop_lead_settings }}",
            "follow_up_percentage": "={{ $json.follow_up_percentage }}",
            "min_time_btwn_emails": "={{ $json.min_time_btwn_emails }}",
            "scheduler_cron_value": "={{ $json.scheduler_cron_value }}",
            "enable_ai_esp_matching": "={{ $json.enable_ai_esp_matching }}",
            "psg_last_update_timestamp": "={{ $now }}"
          },
          "schema": [
            {
              "id": "campaign_id",
              "type": "number",
              "display": true,
              "removed": false,
              "required": true,
              "displayName": "campaign_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "user_id",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "user_id",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "created_at",
              "type": "dateTime",
              "display": true,
              "required": true,
              "displayName": "created_at",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "updated_at",
              "type": "dateTime",
              "display": true,
              "required": true,
              "displayName": "updated_at",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": true,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "name",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "track_settings",
              "type": "array",
              "display": true,
              "required": false,
              "displayName": "track_settings",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "scheduler_cron_value",
              "type": "object",
              "display": true,
              "required": false,
              "displayName": "scheduler_cron_value",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "min_time_btwn_emails",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "min_time_btwn_emails",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "max_leads_per_day",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "max_leads_per_day",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "stop_lead_settings",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "stop_lead_settings",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "enable_ai_esp_matching",
              "type": "boolean",
              "display": true,
              "required": false,
              "displayName": "enable_ai_esp_matching",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "send_as_plain_text",
              "type": "boolean",
              "display": true,
              "required": false,
              "displayName": "send_as_plain_text",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "follow_up_percentage",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "follow_up_percentage",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "unsubscribe_text",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "unsubscribe_text",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "parent_campaign_id",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "parent_campaign_id",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "client_id",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "client_id",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "psg_last_update_timestamp",
              "type": "dateTime",
              "display": true,
              "required": false,
              "displayName": "psg_last_update_timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "campaign_id"
          ]
        },
        "options": {
          "queryBatching": "independently"
        },
        "operation": "upsert"
      },
      "credentials": {
        "postgres": {
          "id": "z7VPpa7mFIGKNewM",
          "name": "Postgres Aikido"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "b9f61fd6-9327-428e-9e78-4ca0779476ea",
      "name": "合并",
      "type": "n8n-nodes-base.merge",
      "position": [
        1220,
        980
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3
    },
    {
      "id": "b8c1082d-a12f-4e56-af8c-73641b45da67",
      "name": "代码",
      "type": "n8n-nodes-base.code",
      "notes": "// Retrieve the CSV-like data from the 'data' field in the input\nconst csvData = $json['data']; // Ensure that 'data' is the correct field name\n\n// Check if csvData exists and is not empty\nif (!csvData) {\n  console.log(\"Input data structure:\", $json); // Debugging output to inspect input structure\n  throw new Error('No CSV data provided. Ensure the correct field reference is being used.');\n}\n\n// Split the CSV into rows\nconst rows = csvData.split('\\n');\n\n// Extract the headers\nconst headers = rows[0].replace(/\"/g, '').split(',');\n\n// Iterate over each data row and map it to an object\nconst output = rows.slice(1).map(row => {\n  const values = row.match(/(\".*?\"|[^\",]+)(?=\\s*,|\\s*$)/g).map(value => {\n    // Remove surrounding quotes from each value if present\n    return value.startsWith('\"') && value.endsWith('\"') ? value.slice(1, -1) : value;\n  });\n\n  const item = {};\n  headers.forEach((header, index) => {\n    item[header] = values[index] || null;\n  });\n\n  return { json: item };\n});\n\nreturn output;",
      "position": [
        720,
        960
      ],
      "parameters": {
        "jsCode": "// Retrieve the CSV-like data from the 'data' field in the input\nconst csvData = items[0].json.data; // Ensure that 'data' is the correct field name\n\n// Check if csvData exists and is not empty\nif (!csvData) {\n  console.log(\"Input data structure:\", ); // Debugging output to inspect input structure\n  throw new Error('No CSV data provided. Ensure the correct field reference is being used.');\n}\n\nif (typeof csvData !== 'string') {\n  throw new Error('CSV data is not a string. Please check the input data format.');\n}\n\n// Preprocess the CSV data to handle missing values\nconst preprocessedCsvData = csvData.replace(/,,/g, ',\"\",');\n\n// Split the CSV into rows\nconst rows = preprocessedCsvData.split(/\\r?\\n/); // Adjust to handle different line endings\n\n// Define the expected number of columns based on CSV structure\nconst expectedNumberOfColumns = 22;\n\n// Iterate over each data row starting from the second row (index 1) and map it to an object\nconst output = rows.slice(1).map((row, index) => {\n  // Split the row into values, accounting for empty columns using regex\n  const values = row.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/).map(value => {\n    // Remove surrounding quotes from each value if present and trim whitespace\n    return value.startsWith('\"') && value.endsWith('\"') ? value.slice(1, -1).trim() : value.trim();\n  });\n\n  // Ensure that the number of values matches the expected number of columns\n  while (values.length < expectedNumberOfColumns) {\n    values.push(\"\"); // Add empty strings for missing values\n  }\n\n  // Check if the number of values matches expected columns\n  if (values.length !== expectedNumberOfColumns) {\n    console.warn(`Row ${index + 1} doesn't have the expected number of columns. Skipping this entry.`);\n    return null; // Skip this row if it doesn't match the expected columns\n  }\n\n  // Create an item object with a fixed structure\n  const item = {\n    id: values[0] || null,\n    campaign_lead_map_id: values[1] || null,\n    status: values[2] || null,\n    category: values[3] || null,\n    is_interested: values[4] === 'true', // Convert to boolean\n    created_at: values[5] || null,\n    first_name: values[6] || null,\n    last_name: values[7] || null,\n    email: values[8] || null,\n    phone_number: values[9] || null,\n    company_name: values[10] || null,\n    website: values[11] || null,\n    location: values[12] || null,\n    custom_fields: values[13] || null,\n    linkedin_profile: values[14] || null,\n    company_url: values[15] || null,\n    is_unsubscribed: values[16] === 'true', // Convert to boolean\n    unsubscribed_client_id_map: values[17] || null,\n    last_email_sequence_sent: values[18] || null,\n    open_count: parseInt(values[19], 10) || 0, // Convert to number\n    click_count: parseInt(values[20], 10) || 0, // Convert to number\n    reply_count: parseInt(values[21], 10) || 0  // Convert to number\n  };\n\n  return { json: item };\n}).filter(item => item !== null); // Remove null entries from output\n\n// Return the structured output\nreturn output;\n"
      },
      "typeVersion": 2,
      "alwaysOutputData": true
    },
    {
      "id": "f6550deb-0479-475e-b3ba-9507a4ac8911",
      "name": "遍历项目1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        180,
        160
      ],
      "parameters": {
        "options": {
          "reset": "={{ $node['Loop Over Items1'].context[\"done\"] }}"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "a183df85-17a2-4886-adc9-68b5ab5fa8b0",
      "name": "HubSpot",
      "type": "n8n-nodes-base.hubspot",
      "position": [
        420,
        180
      ],
      "parameters": {
        "operation": "getAll",
        "authentication": "oAuth2",
        "additionalFields": {}
      },
      "credentials": {
        "hubspotOAuth2Api": {
          "id": "JOrebC0LtzWrkgzz",
          "name": "Robaws"
        }
      },
      "executeOnce": false,
      "typeVersion": 2.1,
      "alwaysOutputData": true
    },
    {
      "id": "da7e2980-6f82-4867-a460-306095234f5f",
      "name": "如果",
      "type": "n8n-nodes-base.if",
      "position": [
        640,
        180
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "e77d0ee2-bb31-483b-98ee-b0acb0b54bb4",
              "operator": {
                "type": "boolean",
                "operation": "false",
                "singleValue": true
              },
              "leftValue": "={{ $json.companyId.isEmpty() }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "9247f4c5-05dd-48a4-8bf9-c67a8936570c",
      "name": "定时触发器",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1340,
        980
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "16623c02-5fb6-40cd-835b-2557eddbbf85",
      "name": "更新插入营销活动记录",
      "type": "n8n-nodes-base.postgres",
      "onError": "continueErrorOutput",
      "position": [
        980,
        960
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "ce_campaign_activity",
          "cachedResultName": "ce_campaign_activity"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "outbound_activities",
          "cachedResultName": "outbound_activities"
        },
        "columns": {
          "value": {
            "id": "={{ $json.id }}",
            "email": "={{ $json.email }}",
            "status": "={{ $json.status }}",
            "website": "={{ $json.email.extractDomain() }}",
            "category": "={{ $json.category }}",
            "location": "={{ $json.location }}",
            "last_name": "={{ $json.last_name }}",
            "created_at": "={{ $json.created_at }}",
            "first_name": "={{ $json.first_name }}",
            "open_count": "={{ $json.open_count }}",
            "campaign_id": "={{ $('Loop Over Items').item.json.id }}",
            "click_count": "={{ $json.click_count }}",
            "company_url": "={{ $json.company_url }}",
            "reply_count": "={{ $json.reply_count }}",
            "company_name": "={{ $json.company_name }}",
            "phone_number": "={{ $json.phone_number }}",
            "custom_fields": "={{ JSON.stringify(JSON.parse($json.custom_fields.replace(/\"\"/g, '\"'))) }}",
            "is_interested": "={{ $json.is_interested }}",
            "is_unsubscribed": "={{ $json.is_unsubscribed }}",
            "linkedin_profile": "={{ $json.linkedin_profile }}",
            "campaign_lead_map_id": "={{ $json.campaign_lead_map_id }}",
            "last_email_sequence_sent": "={{ $json.last_email_sequence_sent }}",
            "psg_last_update_timestmap": "={{ $now }}",
            "unsubscribed_client_id_map": "={{ $json.unsubscribed_client_id_map }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "number",
              "display": true,
              "removed": false,
              "required": true,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "campaign_lead_map_id",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "campaign_lead_map_id",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "category",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "is_interested",
              "type": "boolean",
              "display": true,
              "required": false,
              "displayName": "is_interested",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "created_at",
              "type": "dateTime",
              "display": true,
              "required": true,
              "displayName": "created_at",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "first_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "first_name",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "last_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "last_name",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "phone_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phone_number",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "company_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company_name",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "location",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "custom_fields",
              "type": "object",
              "display": true,
              "required": false,
              "displayName": "custom_fields",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "linkedin_profile",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "linkedin_profile",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "company_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company_url",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "is_unsubscribed",
              "type": "boolean",
              "display": true,
              "required": false,
              "displayName": "is_unsubscribed",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "unsubscribed_client_id_map",
              "type": "object",
              "display": true,
              "required": false,
              "displayName": "unsubscribed_client_id_map",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "last_email_sequence_sent",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "last_email_sequence_sent",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "open_count",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "open_count",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "click_count",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "click_count",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "reply_count",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "reply_count",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "psg_last_update_timestmap",
              "type": "dateTime",
              "display": true,
              "required": false,
              "displayName": "psg_last_update_timestmap",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "campaign_id",
              "type": "number",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "campaign_id",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {
          "queryBatching": "independently"
        },
        "operation": "upsert"
      },
      "credentials": {},
      "typeVersion": 2.5
    },
    {
      "id": "be550807-7ec6-45bc-b522-ae958200e90e",
      "name": "HUBSPOT 表格",
      "type": "n8n-nodes-base.postgres",
      "position": [
        900,
        160
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "hubspot",
          "cachedResultName": "hubspot"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "outbound_activities",
          "cachedResultName": "outbound_activities"
        },
        "columns": {
          "value": {
            "campaign_id": "={{ $node['Loop Over Items1'].data.campaign_id}}",
            "lifecyclestage": "={{ $json.properties.lifecyclestage.value }}",
            "hs_num_open_deals": "={{ $json.properties.hs_num_open_deals.value }}",
            "hubspot_company_id": "={{ $json.companyId }}"
          },
          "schema": [
            {
              "id": "hubspot_company_id",
              "type": "number",
              "display": true,
              "removed": false,
              "required": true,
              "displayName": "hubspot_company_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "campaign_id",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "campaign_id",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "lifecyclestage",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "lifecyclestage",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "hs_num_open_deals",
              "type": "number",
              "display": true,
              "required": false,
              "displayName": "hs_num_open_deals",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            },
            {
              "id": "last_engagement_date",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "last_engagement_date",
              "defaultMatch": false,
              "canBeUsedToMatch": false
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "hubspot_company_id"
          ]
        },
        "options": {
          "queryBatching": "independently"
        },
        "operation": "upsert"
      },
      "credentials": {
        "postgres": {
          "id": "VtxZTfSI4m2NFeN5",
          "name": "Postgres Personal Personal Folder"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "328b900e-8c21-4578-b6a4-8c17fbccca26",
      "name": "搜索",
      "type": "n8n-nodes-base.postgres",
      "position": [
        -40,
        160
      ],
      "parameters": {
        "query": "SELECT\n    ca.id,\n    ca.campaign_id,\n    ca.email,\n    MIN(ca.first_name) AS first_name,\n    MIN(ca.last_name) AS last_name,\n    SUM(ca.reply_count) AS reply_count,\n    max(hb_lifecyclestage_check_timestamp) as hb_lifecyclestage_check_timestamp,\n    CASE\n        -- Check if there is a comma and handle the extraction first\n        WHEN MIN(ca.linkedin_profile) LIKE '%,%' \n            THEN \n                -- Replace /sales/people/ with /in/ on the extracted part before the comma\n                REPLACE(LEFT(MIN(ca.linkedin_profile), POSITION(',' IN MIN(ca.linkedin_profile)) - 1), '/sales/people/', '/in/')\n        ELSE \n            -- For profiles without a comma, check for the replacement directly\n            REPLACE(MIN(ca.linkedin_profile), '/sales/people/', '/in/')\n    END AS linkedin_profile,\n    MAX(ca.company_url) AS company_profile,\n    -- Extracting domain from email to create the website column\n    SUBSTRING(ca.email FROM POSITION('@' IN ca.email) + 1) AS website,\n    c.created_at,\n    c.updated_at,\n    c.status,\n    c.name\nFROM\n    outbound_activities.ce_campaign_activity ca\nJOIN\n    outbound_activities.ce_campaign c ON ca.campaign_id = c.campaign_id\n--left join outbound_activities.hubspot hb on \n\nWHERE \n  hb_lifecyclestage_check_timestamp IS NULL \n  OR hb_lifecyclestage_check_timestamp < NOW() - INTERVAL '24 hours'\n\n  \nGROUP BY\n    ca.id,\n    ca.campaign_id,\n    ca.email,\n    c.created_at,\n    c.updated_at,\n    c.status,\n    c.name\n\n\nlimit 5000",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "id": "VtxZTfSI4m2NFeN5",
          "name": "Postgres Personal Personal Folder"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "c403ef52-894d-476a-aaba-6527c7cb2184",
      "name": "Postgres1",
      "type": "n8n-nodes-base.postgres",
      "position": [
        640,
        380
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "ce_campaign_activity",
          "cachedResultName": "ce_campaign_activity"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "outbound_activities",
          "cachedResultName": "outbound_activities"
        },
        "columns": {
          "value": {
            "id": "={{ $('Loop Over Items1').item.json.id }}",
            "hb_lifecyclestage_check_timestamp": "={{ $now }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "number",
              "display": true,
              "removed": false,
              "required": true,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "campaign_lead_map_id",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "campaign_lead_map_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "category",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "is_interested",
              "type": "boolean",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "is_interested",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "created_at",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "required": true,
              "displayName": "created_at",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "first_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "first_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "last_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone_number",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "phone_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "location",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "custom_fields",
              "type": "object",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "custom_fields",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "linkedin_profile",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "linkedin_profile",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_url",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "is_unsubscribed",
              "type": "boolean",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "is_unsubscribed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "unsubscribed_client_id_map",
              "type": "object",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "unsubscribed_client_id_map",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_email_sequence_sent",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "last_email_sequence_sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "open_count",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "open_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "click_count",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "click_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reply_count",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "reply_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "psg_last_update_timestmap",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "psg_last_update_timestmap",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "campaign_id",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "campaign_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hb_lifecyclestage_check_timestamp",
              "type": "dateTime",
              "display": true,
              "required": false,
              "displayName": "hb_lifecyclestage_check_timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {},
        "operation": "update"
      },
      "credentials": {
        "postgres": {
          "id": "VtxZTfSI4m2NFeN5",
          "name": "Postgres Personal Personal Folder"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "671f168b-a720-42e6-964d-a7f2871d2d6e",
      "name": "更新 HUBSPOT 活动表格",
      "type": "n8n-nodes-base.postgres",
      "position": [
        1120,
        160
      ],
      "parameters": {
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "ce_campaign_activity",
          "cachedResultName": "ce_campaign_activity"
        },
        "schema": {
          "__rl": true,
          "mode": "list",
          "value": "outbound_activities",
          "cachedResultName": "outbound_activities"
        },
        "columns": {
          "value": {
            "id": "={{ $('Loop Over Items1').item.json.id }}",
            "hb_lifecyclestage_check_timestamp": "={{ $now }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "number",
              "display": true,
              "removed": false,
              "required": true,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "campaign_lead_map_id",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "campaign_lead_map_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "category",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "is_interested",
              "type": "boolean",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "is_interested",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "created_at",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "required": true,
              "displayName": "created_at",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "first_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "first_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "last_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "email",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "email",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone_number",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "phone_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "location",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "custom_fields",
              "type": "object",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "custom_fields",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "linkedin_profile",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "linkedin_profile",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_url",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "is_unsubscribed",
              "type": "boolean",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "is_unsubscribed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "unsubscribed_client_id_map",
              "type": "object",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "unsubscribed_client_id_map",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "last_email_sequence_sent",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "last_email_sequence_sent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "open_count",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "open_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "click_count",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "click_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reply_count",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "reply_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "psg_last_update_timestmap",
              "type": "dateTime",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "psg_last_update_timestmap",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "campaign_id",
              "type": "number",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "campaign_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hb_lifecyclestage_check_timestamp",
              "type": "dateTime",
              "display": true,
              "required": false,
              "displayName": "hb_lifecyclestage_check_timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "id"
          ]
        },
        "options": {},
        "operation": "update"
      },
      "credentials": {
        "postgres": {
          "id": "VtxZTfSI4m2NFeN5",
          "name": "Postgres Personal Personal Folder"
        }
      },
      "typeVersion": 2.5
    },
    {
      "id": "6ebe6482-0f31-465a-8532-abaf3822ad72",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        -60
      ],
      "parameters": {
        "color": 3,
        "width": 1531.405758029468,
        "height": 669.051063941859,
        "content": "## HUBSPOT 生命周期阶段(潜在客户状态)"
      },
      "typeVersion": 1
    },
    {
      "id": "31ea75c2-a228-4390-b125-8f2ac0b96a07",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -140,
        760
      ],
      "parameters": {
        "color": 3,
        "width": 1831,
        "height": 669,
        "content": "## SMARTLEAD 营销活动数据"
      },
      "typeVersion": 1
    },
    {
      "id": "8d7e4883-74e2-4758-b2d9-504eb7301cbd",
      "name": "设置 SMARTLEAD API 密钥",
      "type": "n8n-nodes-base.set",
      "position": [
        -1040,
        980
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "7f81531d-f76f-42c7-b536-2b7b70563e12",
              "name": "API KEY",
              "type": "string",
              "value": "<< ADD YOUR API KEY HERE >>"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1742845b-2ce5-4184-a7b0-6f5606714fcb",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1100,
        780
      ],
      "parameters": {
        "height": 400,
        "content": "## 在此处查找您的 smartlead API 密钥 [here](https://app.smartlead.ai/app/settings/profile)"
      },
      "typeVersion": 1
    },
    {
      "id": "e10205a7-3859-4a31-85ba-59c5cc0b69f7",
      "name": "Postgres",
      "type": "n8n-nodes-base.postgres",
      "position": [
        -40,
        1700
      ],
      "parameters": {
        "query": "SELECT \n    h.campaign_id,\n        c.status,\n    c.name,\n    COUNT(DISTINCT h.hubspot_company_id) AS total_companies,\n    SUM(CASE WHEN h.lifecyclestage = 'lead' AND h.hs_num_open_deals != 0 THEN 1 ELSE 0 END) AS lead_count,\n    SUM(CASE WHEN h.lifecyclestage = 'marketingqualifiedlead' AND h.hs_num_open_deals != 0 THEN 1 ELSE 0 END) AS marketingqualifiedlead_count,\n    SUM(CASE WHEN h.lifecyclestage = 'salesqualifiedlead' AND h.hs_num_open_deals != 0 THEN 1 ELSE 0 END) AS salesqualifiedlead_count,\n    SUM(CASE WHEN h.lifecyclestage = 'opportunity' AND h.hs_num_open_deals != 0 THEN 1 ELSE 0 END) AS opportunity_count,\n    SUM(CASE WHEN h.lifecyclestage = 'customer' AND h.hs_num_open_deals != 0 THEN 1 ELSE 0 END) AS customer_count,\n    SUM(CASE WHEN h.lifecyclestage = '140669943' AND h.hs_num_open_deals != 0 THEN 1 ELSE 0 END) AS lifecyclestage_140669943_count,\n    SUM(CASE WHEN h.lifecyclestage = '140669942' AND h.hs_num_open_deals != 0 THEN 1 ELSE 0 END) AS lifecyclestage_140669942_count\nFROM \n    outbound_activities.hubspot h\nJOIN \n    outbound_activities.ce_campaign c ON h.campaign_id = c.campaign_id\nGROUP BY \n    h.campaign_id, c.status, c.name",
        "options": {
          "queryBatching": "independently"
        },
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "id": "VtxZTfSI4m2NFeN5",
          "name": "Postgres Personal Personal Folder"
        }
      },
      "retryOnFail": true,
      "typeVersion": 2.5
    },
    {
      "id": "19a80be4-f81f-44f7-8108-a20f6af8e315",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1300,
        1340
      ],
      "parameters": {
        "width": 740,
        "height": 400,
        "content": "## POSTGRES 安装 [指南](https://github.com/wukimidaire/postgres_table_templates)"
      },
      "typeVersion": 1
    },
    {
      "id": "7bc235d2-65c8-41fd-b429-26b2422cbfa8",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        1580
      ],
      "parameters": {
        "color": 3,
        "width": 1060,
        "height": 1313.3157639300548,
        "content": "## 按照此分步指南操作,重点关注此流程的接下来 3 个表格创建:"
      },
      "typeVersion": 1
    },
    {
      "id": "0af663c4-faa9-49ae-a5d3-3bcb6ea7888a",
      "name": "Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        180,
        1700
      ],
      "parameters": {
        "columns": {
          "value": {
            "name": "={{ $json.name }}",
            "status": "={{ $json.status }}",
            "lead_count": "={{ $json.lead_count }}",
            "campaign_id": "={{ $json.company_id }}",
            "customer_count": "={{ $json.customer_count\n}}\n",
            "total_companies": "={{ $json.total_companies }}",
            "opportunity_count": "={{ $json.opportunity_count\n }}",
            "salesqualifiedlead_count": "={{ $json.salesqualifiedlead_count }}",
            "marketingqualifiedlead_count": "={{ $json.marketingqualifiedlead_count }}",
            "lifecyclestage_140669942_count": "={{ $json.lifecyclestage_140669942_count\n}}\n",
            "lifecyclestage_140669943_count": "={{ $json.lifecyclestage_140669943_count\n}}\n"
          },
          "schema": [
            {
              "id": "campaign_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "campaign_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "total_companies",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "total_companies",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "lead_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "lead_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "marketingqualifiedlead_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "marketingqualifiedlead_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "salesqualifiedlead_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "salesqualifiedlead_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "opportunity_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "opportunity_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "customer_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "customer_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "lifecyclestage_140669943_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "lifecyclestage_140669943_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "lifecyclestage_140669942_count",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "lifecyclestage_140669942_count",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "campaign_id"
          ]
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kG5uXCzOJdUTapA6p-IbH3D8sjpGZ5MQm_IhhvPvIGE/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1kG5uXCzOJdUTapA6p-IbH3D8sjpGZ5MQm_IhhvPvIGE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1kG5uXCzOJdUTapA6p-IbH3D8sjpGZ5MQm_IhhvPvIGE/edit?usp=drivesdk",
          "cachedResultName": "Smartlead Reporting - TEMPLATE"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "qx3ux5eQ43R4Hmbq",
          "name": "Google Sheets account 2"
        }
      },
      "typeVersion": 4.5
    }
  ],
  "pinData": {},
  "connections": {
    "If": {
      "main": [
        [
          {
            "node": "HUBSPOT TABLE",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Postgres1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "UPSERT CAMPAIGN ACTIVITY",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SEARCH": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HubSpot": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Postgres": {
      "main": [
        [
          {
            "node": "Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Postgres1": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HUBSPOT TABLE": {
      "main": [
        [
          {
            "node": "UPDATE HUBSPOT ACTIVITY TABLE",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        null,
        [
          {
            "node": "EXTRACT CAMPAIGN DATA",
            "type": "main",
            "index": 0
          },
          {
            "node": "UPDATE CAMPAIGN",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "UPDATE CAMPAIGN": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Loop Over Items1": {
      "main": [
        null,
        [
          {
            "node": "HubSpot",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "SET SMARTLEAD API KEY",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "FETCH ALL CAMPAIGNS": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "EXTRACT CAMPAIGN DATA": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "SET SMARTLEAD API KEY": {
      "main": [
        [
          {
            "node": "FETCH ALL CAMPAIGNS",
            "type": "main",
            "index": 0
          },
          {
            "node": "Postgres",
            "type": "main",
            "index": 0
          },
          {
            "node": "SEARCH",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "UPSERT CAMPAIGN ACTIVITY": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "UPDATE HUBSPOT ACTIVITY TABLE": {
      "main": [
        [
          {
            "node": "Loop Over Items1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 销售, 营销

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量23
分类2
节点类型11
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

外部链接
在 n8n.io 查看

分享此工作流