如何无代码解析Mailchimp发送至Zapier Webhook的请求体?
我正在构建一个Zap来捕获Mailchimp的Webhook,这个Webhook会发送格式规范的JSON数据,我能通过查看器查看这些数据。虽然我熟悉Zapier以及JS/Python编码,但刚接触Webhook by Zapier,现在有个疑问:能不能借助格式化工具提取请求体里的数据?另外,希望有Zapier-Mailchimp Webhook相关经验的人帮忙,重点是解析Groups和Tags部分——这也是我选择Webhook方案的原因。
以下是数据示例:
type subscribe fired_at 2022-09-29 23:03:02 data[id] fe3acf3786 data[email] blah@blaah.com data[email_type] html data[ip_opt] 98.47.186.82 data[web_id] 343667956 data[merges][EMAIL] blah@blaah.com data[merges][FNAME] Me data[merges][LNAME] MyLastName data[merges][MMERGE4] 1234567890 data[merges][MMERGE5] 123, Main St data[merges][MMERGE7] data[merges][MMERGE8] Sometown data[merges][MMERGE9] CA data[merges][MMERGE10] 93301 data[merges][MMERGE11] data[merges][MMERGE12] data[merges][MMERGE13] Principal data[merges][MMERGE14] data[merges][MMERGE15] data[merges][MMERGE16] data[merges][MMERGE17] data[merges][MMERGE18] data[merges][MMERGE19] data[merges][MMERGE20] data[merges][MMERGE21] data[merges][MMERGE22] data[merges][MMERGE23] data[merges][MMERGE24] data[merges][MMERGE25] data[merges][MMERGE26] data[merges][MMERGE27] data[merges][MMERGE28] data[merges][MMERGE29] data[merges][MMERGE30] data[merges][MMERGE3] Some Company Inc data[merges][MMERGE6] data[merges][INTERESTS] Santa Clara County Children's Alliance, County Budget data[merges][GROUPINGS][0][id] 18481 data[merges][GROUPINGS][0][unique_id] a3d51b3e57 data[merges][GROUPINGS][0][name] Housing data[merges][GROUPINGS][0][groups] Housing data[merges][GROUPINGS][1][id] 19145 data[merges][GROUPINGS][1][unique_id] f380849f3f data[merges][GROUPINGS][1][name] Los Angeles subscribers data[merges][GROUPINGS][1][groups] data[merges][GROUPINGS][2][id] 19141 data[merges][GROUPINGS][2][unique_id] 4c5e21981b data[merges][GROUPINGS][2][name] Policy Insights 2017 data[merges][GROUPINGS][2][groups] Attended data[merges][GROUPINGS][3][id] 19133 data[merges][GROUPINGS][3][unique_id] f3aba0f825 data[merges][GROUPINGS][3][name] Cap Staff data[merges][GROUPINGS][3][groups] LAO data[merges][GROUPINGS][4][id] 19101 data[merges][GROUPINGS][4][unique_id] 91e1c210fc data[merges][GROUPINGS][4][name] All data[merges][GROUPINGS][4][groups] All data[merges][GROUPINGS][5][id] 19097 data[merges][GROUPINGS][5][unique_id] 85b3a9c1e3 data[merges][GROUPINGS][5][name] Funders data[merges][GROUPINGS][5][groups] Funders data[merges][GROUPINGS][6][id] 19093 data[merges][GROUPINGS][6][unique_id] 6fe116e8ef data[merges][GROUPINGS][6][name] Budget Center People data[merges][GROUPINGS][6][groups] ..... data[list_id] 5dab1432f3 querystring:
解答
一、用Zapier内置工具提取请求体数据
完全可以通过Zapier内置工具处理,无需手写代码:
- Webhook触发步骤自动解析:选择「Catch Hook」类型的Webhook,Mailchimp发送请求后,Zapier会自动将表单格式的请求体转换成结构化变量,比如
Data > Merges > Groupings这类嵌套字段直接可以在后续步骤中选择调用。 - Formatter工具辅助格式化:如果需要处理拆分、过滤等操作,比如拆分
INTERESTS的逗号分隔值,或者过滤空分组,可使用「Formatter by Zapier」的「Text > Split」或「Utilities > Filter」功能。
二、Groups和Tags的解析方法
从你的数据样本看,Groups存储在data[merges][GROUPINGS]数组中;Tags通常会在data[tags]字段(Mailchimp的subscribe事件一般会包含该字段)。
方式1:Zapier内置功能直接处理
- 遍历Groupings数组:用「Line Items > Create Line Item from Array」步骤,将
Data > Merges > Groupings作为输入,即可把每个分组的name和groups拆分为独立条目,方便后续使用。 - 过滤非空Group:添加「Filter」步骤,设置条件为
Groups字段不等于空,自动剔除未选择分组的条目。
方式2:代码自定义解析(适合复杂场景)
结合你熟悉的JS/Python,用「Code by Zapier」步骤实现自定义解析:
JavaScript示例(解析Groupings)
const groupings = inputData.data_merges_GROUPINGS || []; // 过滤出有选中分组的条目并整理格式 const parsedGroups = groupings .filter(item => item.groups) .map(item => ({ 分组名称: item.name, 选中分组: item.groups })); output = { parsedGroups };
Python示例(解析Tags)
如果Webhook返回包含Tags字段,可使用以下代码提取标签名称:
tags = input_data.get('data_tags', []) tag_names = [tag['name'] for tag in tags if tag.get('name')] return {'标签列表': tag_names}
三、注意事项
- Mailchimp的Webhook请求格式:你提供的样本是表单格式(key-value换行),Zapier的Catch Hook会自动完成格式转换,无需手动解析原始文本。
- 测试需触发真实事件:确保Mailchimp发送完整的subscribe事件,Zapier才能获取全量字段样本,方便后续步骤选择变量。
内容的提问来源于stack exchange,提问作者tallpacker
相关产品推荐
相关产品推荐

