Outro用户指南
完整的截图驱动指南,教您如何使用Outro,从构建您的品牌取消页面到根据收集的退出访谈采取行动。
欢迎使用Outro
Outro将您的取消流程转变为语音退出访谈。您构建一个品牌取消页面,将“取消订阅”按钮指向它,每位流失的客户在完成取消前都会用自己的话回答一个问题。
每个语音回答都会自动转录并翻译成您的语言,进行情感评分,并标记主题。所有内容都会进入您的仪表板,并汇总成每周简报这样您终于知道人们离开的原因,而不仅仅是他们离开了。
您将学习到的内容
- 如何在几次点击中创建一个品牌取消页面。
- 如何设置您的标志、颜色、问题提示和按钮文案。
- 如何添加保留优惠以挽回一些取消的客户。
- 如何嵌入页面或将取消按钮指向它并重定向客户返回。
- 如何连接Stripe和Lemon Squeezy,以便每次取消都携带计划和面临风险的MRR。
- 如何阅读回复并跟踪您在收入恢复中保存与损失的MRR。
- AI摘要和每周取消简报如何提炼客户的反馈。
- 如何管理您的团队、计划和账单。
快速开始 - 5分钟上线
如果您更喜欢浏览,这里是从注册到收集真实退出访谈的最短路径。
创建账户
在登录页面点击注册,输入您的电子邮件,设置密码,并通过我们发送的电子邮件确认。每个账户都从14天试用开始。
创建您的取消页面
从仪表板,进入取消页面 → 新页面,选择一个slug(您的页面位于outro.so/c/your-slug),并写下您希望流失客户回答的一个问题。
品牌化(可选)
添加您的标志、品牌颜色、页面标题和按钮文案。您可以随时返回并调整实时页面会立即更新。
连接您的账单提供商(可选)
在账户设置 → 集成中,连接Stripe或Lemon Squeezy。然后Outro会将客户的计划、订阅时长和面临风险的MRR附加到每次取消中这样您可以用美元而不仅仅是数量来衡量流失。
连接您的取消流程
可以将页面嵌入到您的应用中,使用复制粘贴代码段,或者将现有的“取消订阅”按钮指向您的Outro链接,并设置一个允许返回域,以便客户返回完成取消。
查看回复滚动而来
每个答案都会出现在回复标签中,自动转录和评分。收入恢复跟踪您保存与损失的MRR,每周一会有取消简报发送到您的收件箱。

创建取消页面
取消页面是您的客户点击取消时看到的品牌化屏幕。您可以根据计划允许的数量创建多个页面例如,每个产品或计划层级一个不同的页面,每个页面都有自己的问题。
1. 打开取消页面
从侧边栏,点击取消页面。您将看到您拥有的每个页面,每个页面都有其公共URL、启用/禁用状态和快速操作。

2. 填写必要信息
编辑器有几个字段。只有slug是必需的合理的默认值涵盖其余部分:
- Slug - 公共URL为
outro.so/c/{slug}。小写字母、数字和连字符。 - 页面标题 - 例如“很遗憾看到您离开”。
- 问题提示 - 您的客户通过语音回答的单个问题,例如“您取消的主要原因是什么?”
- 跳过/继续按钮文本 - 跳过和继续取消按钮上的文案。

页面品牌化
页面应该感觉像是您的产品,而不是我们的。外观标签控制外观选择布局(全页、分屏或卡片),设置背景、品牌颜色、卡片样式和您的标志更改在您进行时立即在预览中生效。
标志和品牌颜色
粘贴一个托管的标志URL,以在页面顶部显示您的标志,并使用颜色选择器选择一个品牌颜色(或粘贴一个十六进制值)。颜色驱动强调条、按钮和录音控制。

实时切换
页面上线切换控制公共URL是否响应。关闭它以在不删除页面(及其回复)的情况下将其下线。
保留优惠
取消并不总是最终的。在客户回答您的问题后,Outro可以显示一个保留优惠一个最后的留住机会。有些人会接受,其他人则正常取消。无论如何,您都会学到一些东西。
打开页面编辑器中的优惠标签并启用启用保留优惠。流程很简单:他们提供反馈 → 您展示优惠 → 他们留下或取消。

优惠类型
- 折扣 - 客户订阅的折扣。选择类型(百分比、免费月数或固定金额),如果需要,可以为月度与年度计划或特定套餐设置不同金额。连接Stripe后,Outro会自动将其应用到现有订阅中;否则,您的团队手动应用,Outro会通过电子邮件通知客户。客户不会看到兑换代码。可选账单链接。
- 暂停订阅 - 将他们发送到您的应用中的暂停页面,而不是直接取消。
- 降级计划 - 链接到您的计划页面,以便他们可以移动到更便宜的层级。
- 联系支持 - 通过电子邮件或支持链接将可挽留的客户直接引导到您的团队。
将优惠定位到原因
每个优惠可以针对特定的取消原因,有两种匹配方式:
- 根据他们选择的 - 匹配访问者在您的表单中选择的答案(例如“太贵了”单选选项)。
- 根据他们说的 - 当访问者录制语音回答并启用优惠时,Outro会转录并使用AI检测真实的流失原因(太贵了、缺少功能、不使用、太难用、技术问题、切换),然后显示与他们实际说的匹配的优惠。这是在内联发生的访问者在分类时会看到一个简短的“寻找最佳选项”暂停。
Outro显示第一个匹配任一信号的优惠;如果没有匹配,则显示第一个没有选择原因的优惠(您的通用优惠)。因此,一个说价格太高的客户即使从未触碰表单也会获得您的折扣,而“缺少功能”则引导到支持。您可以在同一优惠上混合表单答案和语音检测原因Outro将两者映射在一起,因此针对表单标签设置的优惠仍然匹配等效的口头原因。
连接您的取消流程
有两种方法可以将Outro放在取消客户面前。选择适合您应用的:
- 嵌入 - 将一个小脚本放入现有的取消屏幕。Outro小部件本地渲染流程(内联或作为浮动启动器),自动调整大小,并在客户接受优惠时通知您的应用。
- 链接到它 - 将“取消订阅”按钮指向您的托管Outro URL,Outro会重定向客户返回完成取消。
选项A - 嵌入页面
从编辑器的集成标签复制代码段,并将其粘贴到您的取消流程所在的位置。Outro小部件本地渲染流程(无iframe),自动调整大小,并调用您的onOfferAccepted处理程序,以便您可以在您的账单系统中应用保留优惠。
将userId(可选externalRef)传递给OutroWidget.init,就像在链接上一样嵌入的取消与账单客户匹配的方式相同,因此快照计划和MRR是准确的。
<!-- Drop this where you want the flow. The widget renders it natively (no iframe). -->
<div id="outro-cancel"></div>
<link rel="stylesheet" href="https://widget.outro.so/outro-widget.css">
<script src="https://widget.outro.so/outro-widget.iife.js"></script>
<script>
OutroWidget.init({
slug: 'your-slug',
apiBaseUrl: 'https://outro.so',
chrome: 'inline', // 'inline' | 'floating' | 'page'
containerId: 'outro-cancel', // omit for 'floating'
userId: 'USER_ID',
externalRef: 'REF',
onOfferAccepted: function (d) {
// d.offer = pause|downgrade|discount|contact, d.responseId, d.offerUrl
// Apply the offer in your billing system here (or let d.offerUrl redirect).
},
});
</script>选项B - 集成链接
编辑器生成一个您可以复制的链接。它看起来像这样:
outro.so/c/your-slug?return_url=https://app.acme.com/cancel/done&user_id=USER_ID&external_ref=REF- return_url - 客户回答后要发送的地方。必须在您允许的返回域上。
- user_id - 您自己的客户标识符。返回时您可以将回复与账户匹配。
- external_ref - 您想附加的任何额外上下文(计划、MRR、注册日期)。与回复一起存储。
重定向返回
在客户录制答案(或点击跳过/继续按钮)后,Outro会将他们发送到您的return_url,附加两个查询参数,以便您的应用可以完成取消:
https://app.acme.com/cancel/done?outro_response_id=...&user_id=USER_ID允许的返回域
在编辑器中设置允许的返回域(例如acme.com)。Outro只会重定向回该主机或其子域。
return_url都会被设计拒绝,因此没有人可以劫持重定向。在您的账单系统中应用优惠
有两种方法可以应用已接受的优惠。自动 - 在设置中连接您的账单提供商(Stripe或Lemon Squeezy),并在优惠上启用“自动应用”;Outro会为您应用折扣、暂停或降级。手动 - Outro仅向您的应用发出信号,您使用下面的复制粘贴代码自行保存。自动需要具有写访问权限的API密钥;手动则不需要。未自动应用的已接受优惠会显示在收入页面的待办列表中,直到您手动应用它们。
user_id(他们的Stripe客户ID),或让他们输入Stripe客户上的电子邮件。如果没有匹配,优惠仍会显示但已接受的优惠会进入收入页面的待处理队列,供您手动应用。我需要什么密钥?
- Stripe - 只读限制密钥提供见解(面临风险的MRR)。要自动应用优惠,密钥需要订阅和优惠券的写权限,以及产品和价格的读权限(用于降级和选择折扣目标的套餐)。一个秘密密钥可以工作,但限制密钥更安全。
- Lemon Squeezy - API密钥是全访问的,因此同一个密钥提供见解并自动应用暂停和降级优惠。折扣无法通过Lemon Squeezy API应用于现有订阅,因此折扣优惠会回到手动路径:客户被告知您的团队会应用它,您会收到电子邮件来处理。
两个信号
- 嵌入页面 - 您传递给
OutroWidget.init的onOfferAccepted回调会触发,并带有offer类型(discount、pause、downgrade或contact)和responseId。 - 托管页面 - 当优惠有接受链接时,重定向到它会携带
outro_offer=<type>,以及outro_response_id和您的user_id。没有接受链接时,客户会在页面上看到确认从仪表板或CSV导出中读取结果。
无论哪种方式,将信号路由到一个服务器端端点并在那里履行:
// Your cancel/done page (or the embed's onOfferAccepted callback) calls this:
// POST /api/retention/fulfill { userId, offer, responseId }
app.post('/api/retention/fulfill', async (req, res) => {
const { userId, offer, responseId } = req.body
const customer = await db.customers.findByExternalId(userId)
switch (offer) {
case 'discount': await applyDiscount(customer); break
case 'pause': await pauseSubscription(customer); break
case 'downgrade': await downgradePlan(customer); break
case 'contact': await notifySupport(customer, responseId); break
}
res.json({ ok: true })
})outro_offer 参数和回调负载来自浏览器,任何人都可以输入查询字符串。在履行之前,请检查客户是否确实在您的记录中处于取消中,并限制兑换次数(例如,每位客户每年一次保留折扣)。Stripe方案
使用官方stripe Node库和客户的订阅ID:
// Discount - e.g. a "40% off for 3 months" coupon you created in Stripe
async function applyDiscount(customer) {
await stripe.subscriptions.update(customer.stripeSubscriptionId, {
discounts: [{ coupon: 'SAVE40_3MO' }],
})
}
// Pause - stop charging, auto-resume in 2 months
async function pauseSubscription(customer) {
const resumesAt = Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 60
await stripe.subscriptions.update(customer.stripeSubscriptionId, {
pause_collection: { behavior: 'void', resumes_at: resumesAt },
})
}
// Downgrade - move the subscription item to a cheaper price
async function downgradePlan(customer) {
const sub = await stripe.subscriptions.retrieve(customer.stripeSubscriptionId)
await stripe.subscriptions.update(sub.id, {
items: [{ id: sub.items.data[0].id, price: 'price_starter_monthly' }],
proration_behavior: 'create_prorations',
})
}Lemon Squeezy方案
Lemon Squeezy使用简单的REST(PATCH /v1/subscriptions/:id,使用您的API密钥)。一个小问题:LS无法将折扣代码附加到活动订阅对于“折扣”优惠,将客户切换到同一计划的折扣变体。
const LS = 'https://api.lemonsqueezy.com/v1'
const headers = {
Authorization: `Bearer ${process.env.LEMONSQUEEZY_API_KEY}`,
'Content-Type': 'application/vnd.api+json',
Accept: 'application/vnd.api+json',
}
const patchSub = (id, attributes) =>
fetch(`${LS}/subscriptions/${id}`, {
method: 'PATCH',
headers,
body: JSON.stringify({ data: { type: 'subscriptions', id: String(id), attributes } }),
})
// "Discount" - move them to a discounted variant of their plan
async function applyDiscount(customer) {
await patchSub(customer.lsSubscriptionId, { variant_id: DISCOUNTED_VARIANT_ID })
}
// Pause - stop charging, auto-resume in 2 months
async function pauseSubscription(customer) {
const resumesAt = new Date(Date.now() + 1000 * 60 * 60 * 24 * 60).toISOString()
await patchSub(customer.lsSubscriptionId, {
pause: { mode: 'void', resumes_at: resumesAt },
})
}
// Downgrade - switch to the cheaper plan's variant
async function downgradePlan(customer) {
await patchSub(customer.lsSubscriptionId, { variant_id: STARTER_VARIANT_ID })
}账单集成
连接您的支付提供商将Outro从“有多少人取消”转变为“有多少MRR流失”。一旦连接,每次取消都会与付费客户匹配,并标记他们的计划、订阅时长和面临风险的月收入。
进入账户设置 → 集成。Outro支持Stripe和Lemon Squeezy,您可以为每个提供商添加多个账户如果您经营多个商店或实体,这很方便。

管理连接
- 添加连接 - 粘贴提供商API密钥。Outro会拉取您的客户(电子邮件、计划、MRR、订阅开始)并缓存以便匹配。
- 立即同步 - 按需刷新缓存的客户列表。Outro也会按日程重新同步。
- 断开连接 - 删除该连接的缓存客户。过去的取消快照保持不变您已记录的数字不会改变。
匹配如何工作
当取消发生时,Outro通过您传递的user_id / external_ref或电子邮件将其与同步的客户匹配。匹配被捕获为回复上的快照,因此MRR数字反映了客户在取消时的价值。
user_id以获得最可靠的匹配它是精确的,而电子邮件匹配依赖于地址的对齐。查看回复
每个答案都会显示在回复视图中。语音答案会自动转录和翻译,因此您可以像文本一样浏览它们每个答案在到达时都会被评分和标记。

每个回复包含的内容
- 文字记录: 原语言文字记录和翻译并排显示,附有录音时长。音频即时转录,录音本身不存储。
- 情感和主题:积极/中立/消极,以及自动检测的主题,如定价、竞争对手或缺少功能。
- 上下文:提交时间,您传递的
user_id和external_ref,以及语言/设备详情。
收入恢复
一旦连接了账单提供商,收入恢复页面就会为您的流失赋予美元价值。它回答了对业务真正重要的问题:我们恢复了多少MRR,损失了多少?

四个数字
- 面临风险的MRR - 期间内每个匹配取消的总月收入。
- 恢复的MRR - 来自接受优惠并在您的账单提供商中确认仍然订阅的客户的收入。这是经过验证的保留,而不仅仅是点击优惠。
- 待验证 - 最近接受优惠的客户;只有在宽限期过后并确认他们仍在支付时才计为恢复。
- 损失的MRR - 未接受优惠的客户,或接受了但仍然流失的客户。
恢复是根据您的账单提供商确认的:Outro会重新检查每个接受客户的订阅状态(从Stripe或Lemon Squeezy同步,至少每天刷新一次)。只有在14天宽限期后且订阅仍然有效时,保存才计为恢复因此该数字反映了实际留下的客户,而不是点击优惠按钮。标题数字下方,面临风险的MRR按计划和任期(0-30天、31-90天、91-180天、180天以上)细分,因此您可以看到您是失去了新试用还是长期客户。标题行告诉您有多少取消匹配了付费客户未匹配的(无账单数据)不携带MRR数字。
使用日期范围过滤器(7天/30天/90天/全部)来限定视图,并使用导出CSV将原始匹配取消导入电子表格。
客户取消的原因
客户取消的原因面板按AI检测的流失原因细分期间太贵、缺少功能、不使用、太难用、技术问题、切换每个都有计数和份额。它仅根据口头(或书面)答案工作,因此从您的第一个回复开始就很有用,在连接任何账单提供商之前。
当大量答案落在其他/未分类中时,面板会标记它这通常意味着客户提到了AI分类尚未涵盖的原因,这些回复值得手动倾听。
分析
分析页面显示您在所有取消页面上收集了多少反馈随时间的回复量、情感混合以及跳过与回答率。

用它来捕捉变化价格变动后的负面情绪激增,或新主题攀升榜单。
AI摘要与每周简报
逐一阅读每个退出访谈不具可扩展性。Outro的AI将您的原始回复生成可读的摘要:人们离开的主要原因、代表性引用、情感分解和建议的下一步行动。

每周取消简报
每周一上午9点,Outro会向您发送一份过去7天流失的单屏回顾。它是为您的团队在周一早上实际提出的问题而构建的:谁离开了,为什么,以及这对我们造成了什么损失。
- 本周取消 - 数量,与前一周的变化。
- 面临风险、保存和损失的MRR - 与收入恢复相同的收入图景,汇总为一周。
- 主要取消原因 - 客户最常给出的几个答案。
- 保留优惠结果 - 接受、拒绝或未显示的优惠数量。
您可以随时从账户设置 → 通知 → 预览示例简报中预览布局,如果不想要,可以在那里关闭电子邮件。账户在一周内没有取消的会被跳过没有空邮件。
账户与团队
从账户设置(侧边栏底部)管理您的组织、邀请团队成员并更改密码。

标签
- 常规 - 更改账户名称和描述。
- 用户 - 通过电子邮件邀请团队成员并设置他们的角色(所有者、管理员、成员)。
- 集成 - 连接Stripe和Lemon Squeezy(见上面的账单集成)。
- 通知 - 切换每周简报并预览示例。
- 账单 - 查看您的计划、升级或管理订阅。
- 安全 - 更改您的密码。
账单与计划
Outro有一个免费层和三个付费层入门、专业和规模。每个付费计划可以按月或按年计费,按年计费大约相当于两个月免费。每个计划的回复都是无限的计划在页面、语音分钟、AI报告和席位上有所不同。

每个计划包括什么
- 免费 - $0 - 1个取消页面,每月10分钟语音和5个AI报告。无需承诺即可尝试完整流程。
- 入门 - $29/月($290/年) - 每月1个取消页面、100分钟语音和30个AI报告,3个团队席位,语音和文本退出访谈,保留优惠,每周简报,自动翻译。
- 专业版 - $79/月 ($790/年) - 最多 5 个取消页面,每月 300 分钟语音和 100 份 AI 报告,10 个团队席位,高级情感分析(主题和趋势),自定义品牌,数据导出,优先支持。
- 规模 - $199/月($1,990/年) - 无限取消页面,每月1,000分钟语音和300个AI报告,25个团队席位,专业版中的所有内容。
常见问题
安装Outro需要工程帮助吗?
非常少。最简单的设置是一行将现有的“取消订阅”按钮指向您的Outro链接并处理重定向返回。如果您更愿意将客户留在您的应用中,请粘贴嵌入代码段。连接账单提供商只需在设置中输入API密钥。
语音转录支持哪些语言?
客户可以使用 30 多种语言发言。每个答案都以原语言转录并翻译成您阅读的语言,因此您的团队始终使用一种语言工作。
我的客户知道他们的语音是由AI转录的吗?
是的。每个语音记录器都会显示一行简短的“您的语音将由AI转录”行,并附有隐私政策链接,翻译成7种支持的语言。这是内置的合规行,无法配置。您仍然是您收集的反馈的数据控制者;Outro代表您处理它。
如果客户不想录音怎么办?
他们点击跳过按钮并直接返回完成取消。Outro从不阻止或延迟取消回答始终是可选的。
删除页面后我的数据会怎样?
您已收集的回复会保留删除页面不会销毁其退出访谈。您也可以只将页面切换为离线而不是删除它。
我可以在不付费的情况下尝试吗?
可以。免费计划允许您运行一个真实的取消页面,每月有无限的回复(10分钟语音)无需信用卡。当您需要更多语音分钟、页面或席位时,升级到入门、专业或规模。