如何通过HubSpot API获取工作流全分支的自动化邮件?
解决HubSpot工作流全分支邮件获取问题
方案一:递归解析工作流完整结构
你当前调用的GET /automation/v3/workflows/:workflowId其实返回了完整的工作流结构,只是分支操作没有直接放在顶层actions里,而是嵌套在分支节点的branch字段中。你需要递归遍历整个工作流的节点树:
- 遍历顶层
actions数组,每个操作如果包含branch属性(分支节点),就进入该分支的actions数组继续遍历 - 类型为
SEND_EMAIL的操作里,直接提取emailId和关联的campaignId - 注意处理多级嵌套分支(比如分支里再分支的场景)
示例伪代码逻辑:
def extract_emails_from_workflow(workflow_data): emails = [] def traverse_actions(actions): for action in actions: if action['actionType'] == 'SEND_EMAIL': emails.append({ 'email_id': action['emailId'], 'campaign_id': action.get('campaignId'), 'workflow_id': workflow_data['id'] }) # 递归处理分支节点 if 'branch' in action: traverse_actions(action['branch']['actions']) traverse_actions(workflow_data['actions']) return emails
方案二:从邮件维度反向筛选
如果不想处理复杂的工作流分支结构,也可以直接从邮件维度入手:
- 调用
GET /marketing/emails/automation/v1/emails获取所有自动化邮件,每个邮件的associatedWorkflows字段会记录关联的工作流ID - 结合你持有的工作流列表,筛选出属于目标工作流的邮件,同时可获取对应的
campaignId - 这个方式不用遍历工作流分支,适合批量获取关联邮件场景
注意事项
- 确保API密钥拥有
automation和marketing_email的权限 - 部分旧版工作流结构可能略有差异,需要测试适配不同类型的工作流
- 分支节点可能包含条件判断、延迟等不同类型,递归时要覆盖所有带
branch属性的节点
内容的提问来源于stack exchange,提问作者Matthieu ALLIER
相关产品推荐
相关产品推荐

