要实现 Marketo 和 Braze 之间的双向用户订阅状态同步,我们需要从最基础的环境准备开始,详细逐步展开每一个操作步骤,明确技术准备、操作流程,以及可能遇到的问题。以下是从零开始的详细指南,确保每一个步骤都充分考虑各种细节。
前期准备
1. 定义同步的需求
- 目标:确保用户在 Marketo 或 Braze 其中一平台取消订阅时,订阅状态能够同步更新到另一平台。
- 范围:同步内容仅限于订阅状态(取消订阅或重新订阅),双向同步,即 Marketo → Braze 和 Braze → Marketo。
步骤 1: 获取 API 访问权限(Marketo 和 Braze)
具体操作步骤:Marketo API 准备
-
创建 API 用户:
- 登录 Marketo,使用具有管理员权限的账户。
- 进入 Admin,在左侧导航栏找到 Users & Roles,点击 Invite New User。
- 输入用户名、电子邮件等信息,确保勾选 API Only 选项。为该用户分配足够的权限,尤其是对 Lead Database 和 Activity Log 的完全访问权限。
-
创建 LaunchPoint 服务:
- 在 Admin 页面中,找到 LaunchPoint。
- 点击 New Service,选择 Custom 作为服务类型。
- 为服务命名(例如 “Marketo to Braze API Service”),并将其分配给刚刚创建的 API 用户。
- 保存后,会生成一个 Client ID 和 Client Secret,这是我们在后续操作中需要使用的认证信息。
-
获取 Marketo API 端点:
- 在 Admin 页面中找到 Web Services。
- 记录 REST API Endpoint 和 Identity URL,后续将用于发送 API 请求。
具体操作步骤:Braze API 准备
-
创建 API Key:
- 登录 Braze 的开发者控制台,进入 Developer Console。
- 在 API Settings 中,创建一个新的 API Key。
- 确保 API Key 拥有
users.track
和users.identify
权限(这是同步用户数据和状态所需的权限)。 - 记录生成的 API Key,它将用于后续调用。
-
记录 API Endpoint:
- 根据所在服务器(如 US-01、US-02,或 EU-01),选择相应的 Braze API Endpoint,后续我们将通过该端点进行 API 调用。
技术准备:
- 需要了解 OAuth 2.0 认证机制,因为 Marketo API 使用该机制进行授权。
- 基础的 REST API 知识,包括 HTTP 请求和响应处理。
可能遇到的问题:
- API 权限问题:没有正确分配 API 用户权限,可能会导致无法访问特定的 Marketo 数据。
- API Key 泄漏风险:存储 API Key 和 Client Secret 时需确保安全,不要直接暴露在前端应用中。
步骤 2: 配置 Webhook 将 Marketo 取消订阅状态同步至 Braze
具体操作步骤:配置 Marketo Webhook
-
创建 Webhook:
- 登录 Marketo,进入 Admin 页面,点击左侧导航中的 Webhooks。
- 点击 New Webhook,设置名称为 "Sync Unsubscribe to Braze"。
- URL:设置为处理取消订阅同步的服务器地址,例如
https://your-server.com/marketo-unsubscribe
。 - 请求类型:选择
POST
。 - Request Template:输入以下 JSON 模板,将用户的电子邮件和取消订阅状态发送给 Braze。
{ "email": "{{lead.Email Address}}", "unsubscribe": {{lead.Unsubscribed}} }
-
配置 Webhook 触发条件:
- 在 Marketo 中创建一个 Smart Campaign。
- 在 Smart List 中设置触发条件为
Data Value Changes
,选择Unsubscribed
字段。 - 设置为当
Unsubscribed
从false
变为true
时,触发 Webhook 调用。
具体操作步骤:创建中间件接收 Webhook 请求
-
搭建中间件服务器:
- 选择一个编程语言(如 Node.js、Python、Ruby 等)来搭建服务器,接收来自 Marketo 的 Webhook 请求。示例代码(Node.js 版):
const express = require('express'); const axios = require('axios'); const app = express(); app.use(express.json()); app.post('/marketo-unsubscribe', async (req, res) => { const { email, unsubscribe } = req.body; try { await axios.post('https://rest.iad-01.braze.com/users/track', { attributes: [ { external_id: email, subscription_status: unsubscribe ? 'unsubscribed' : 'subscribed' } ] }, { headers: { 'Authorization': `Bearer YOUR_BRAZE_API_KEY` } }); res.status(200).send('Success'); } catch (error) { console.error(error); res.status(500).send('Error syncing with Braze'); } }); app.listen(3000, () => console.log('Server is running on port 3000'));
- 选择一个编程语言(如 Node.js、Python、Ruby 等)来搭建服务器,接收来自 Marketo 的 Webhook 请求。示例代码(Node.js 版):
-
部署服务器:
- 将服务器部署到云平台(例如 AWS、Heroku、Google Cloud),确保它能够通过 HTTPS 访问。
技术准备:
- 熟悉 Node.js 或其他服务端语言,用于编写和部署 Webhook 处理程序。
- 云平台部署知识,确保服务器稳定运行且具有 SSL 证书(HTTPS)。
可能遇到的问题:
- Webhook 请求超时:确保你的服务器能够快速响应,不超过 Marketo 的超时限制(一般 30 秒)。
- 数据传递错误:确保传递给 Braze API 的数据格式正确,特别是
external_id
和subscription_status
。
步骤 3: 从 Braze 到 Marketo 同步取消订阅状态
具体操作步骤:配置 Braze 触发器
-
创建 Braze 工作流:
- 在 Braze 后台,使用 Canvas 或 Segment Trigger,设置当用户取消订阅时触发自定义 API 请求。
- 配置触发条件为
subscription_status
字段改变。
-
发送 API 请求至中间件:
- 在工作流中,配置一个 POST 请求,发送用户的取消订阅状态至一个中间服务器,该服务器会调用 Marketo API。
- 例如:
{ "email": "{{user.email}}", "unsubscribe": "{{user.subscription_status == 'unsubscribed'}}" }
-
中间件调用 Marketo API:
- 在中间服务器中,接收 Braze 发送的取消订阅状态,并通过 Marketo API 更新用户的
Unsubscribed
字段:const axios = require('axios'); async function syncToMarketo(email, unsubscribe) { const data = { action: "createOrUpdate", input: [ { email: email, unsubscribed: unsubscribe } ] }; try { const response = await axios.post('https://<YOUR_MARKETO_INSTANCE>.mktorest.com/rest/v1/leads.json', data, { headers: { 'Authorization': `Bearer YOUR_MARKETO_API_TOKEN` } }); console.log('Marketo sync successful:', response.data); } catch (error) { console.error('Error syncing to Marketo:', error); } }
- 在中间服务器中,接收 Braze 发送的取消订阅状态,并通过 Marketo API 更新用户的
技术准备:
- 熟悉 Braze Canvas 和 Segment Trigger 的使用,能够配置自定义 API 调用。
- 熟悉 Marketo REST API,尤其是更新用户数据的
createOrUpdate
请求格式。
可能遇到的问题:
- API 限制:Marketo 和 Braze 都有 API 请求限流,确保在大规模同步时不会超过限额。
- 同步延迟:由于网络或服务器负载,Braze 到 Marketo 的同步可能会出现几秒到几分钟的延迟。
步骤 4: 测试
具体操作步骤:进行双向测试
-
测试 Marketo 到 Braze 同步:
- 在 Marketo 中,手动更改某个用户的订阅状态,触发 Webhook,查看 Braze 中该用户的状态是否同步更新。
-
测试 Braze 到 Marketo 同步:
- 在 Braze 中更改用户的订阅状态,检查 Marketo 是否成功更新。
技术准备:
- 使用 Postman 或 cURL 手动发送 API 请求,检查每个步骤的 API 调用是否成功。
- 查看中间服务器的日志,确保没有错误发生。
可能遇到的问题:
- 数据不一致:不同步或同步延迟,确保在 API 调用中有足够的重试机制,以应对网络抖动或 API 请求失败。
通过这些详细步骤,您可以逐步实现 Marketo 和 Braze 之间的双向订阅状态同步。