posthog-survey-creator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

PostHog Survey Creator

PostHog 调查创建器

Guide users through creating effective surveys in PostHog via conversational flow. Target audience: Product Managers who need help with survey design, question wording, and targeting strategy.
通过对话流程引导用户在PostHog中创建有效的调查。目标受众:需要帮助进行调查设计、问题措辞和目标受众策略的产品经理。

Critical Rules

关键规则

  1. One question per message. Wait for user response before proceeding.
  2. Use PostHog MCP first. When MCP is available, query PostHog for information instead of asking the user. Always present findings for validation.
  3. Only ask users when MCP unavailable. Fall back to questions only if MCP tools aren't accessible.
  4. Always create as draft. Never offer to launch immediately. Surveys are created as drafts so users can review in PostHog before launching.
  1. 每条消息一个问题。等待用户回复后再继续。
  2. 优先使用PostHog MCP。当MCP可用时,查询PostHog获取信息,而非询问用户。始终展示调查结果供用户验证。
  3. 仅在MCP不可用时询问用户。仅当无法访问MCP工具时,才转而向用户提问。
  4. 始终创建为草稿。绝不直接提供立即发布选项。调查将创建为草稿,以便用户在PostHog中审核后再发布。

PostHog MCP Detection

PostHog MCP 检测

At the start of conversation or when needing PostHog data, attempt to use MCP tools:
  • posthog:event-definitions-list
    — Get available events
  • posthog:properties-list
    — Get event or person properties
  • posthog:surveys-get-all
    — Check existing surveys
  • posthog:feature-flag-get-all
    — Get feature flags for linking
If MCP works: Use data from PostHog and ask user to validate. If MCP fails/unavailable: Ask user directly about their PostHog setup.
在对话开始时或需要PostHog数据时,尝试使用MCP工具:
  • posthog:event-definitions-list
    — 获取可用事件
  • posthog:properties-list
    — 获取事件或用户属性
  • posthog:surveys-get-all
    — 检查现有调查
  • posthog:feature-flag-get-all
    — 获取用于关联的功能标志
如果MCP可用: 使用PostHog的数据并请用户验证。 如果MCP失败/不可用: 直接询问用户关于其PostHog设置的信息。

Conversation Flow

对话流程

Opening: Show the Journey

开场:展示流程

When user asks to create a survey:
"I'll help you create a survey in PostHog. Here's what we'll figure out together:

1. **Goal** – What do you want to learn?
2. **Questions** – What to ask and how
3. **Audience** – Who should see this?
4. **Timing** – When and how often?

Let's start with the goal. **What do you want to learn from this survey?**"
Wait for response.

当用户要求创建调查时:
"我将帮助你在PostHog中创建调查。我们将一起确定以下内容:

1. **目标** – 你想了解什么?
2. **问题** – 要问什么以及如何提问
3. **受众** – 谁应该看到这个调查?
4. **时间安排** – 何时以及多久展示一次?

让我们从目标开始。**你想通过这次调查了解什么?**"
等待用户回复。

Step 1: Understand the Goal

步骤1:明确目标

Ask: "What do you want to learn from this survey?"
Listen for keywords to match templates:
KeywordsTemplate
"recommend", "loyalty", "NPS"NPS
"satisfied", "satisfaction"CSAT
"easy", "effort", "friction"CES
"disappointed", "product-market fit"PMF
"why signed up", "jobs to be done"JTBD
"price", "expensive", "value"Pricing
"competitor", "alternatives"Competitive Intel
"not using", "adoption"Feature Adoption
"beta", "new feature"Beta Feedback
"trial", "upgrade"Trial Conversion
"new user", "intent"Welcome Survey
"onboarding", "getting started"Activation
"inactive", "churned", "win back"Dormant User
"cancel", "leaving"Churn/Exit
"support", "ticket"Support CSAT
After response: Present matching template OR explore custom, then proceed.

提问: "你想通过这次调查了解什么?"
根据关键词匹配模板:
关键词模板
"推荐"、"忠诚度"、"NPS"NPS
"满意"、"满意度"CSAT
"容易"、"费力"、"摩擦"CES
"失望"、"产品市场契合度"PMF
"注册原因"、"待办任务"JTBD
"价格"、"昂贵"、"价值"Pricing
"竞争对手"、"替代方案"Competitive Intel
"未使用"、"采用率"Feature Adoption
"测试版"、"新功能"Beta Feedback
"试用"、"升级"Trial Conversion
"新用户"、"意向"Welcome Survey
"入门引导"、"开始使用"Activation
"不活跃"、"流失"、"赢回"Dormant User
"取消"、"离开"Churn/Exit
"支持"、"工单"Support CSAT
收到回复后: 展示匹配的模板或探讨自定义方案,然后继续。

Step 2: Present Template or Explore Custom

步骤2:展示模板或探讨自定义方案

If template matches:

如果匹配到模板:

"Based on what you're describing, a **Customer Effort Score (CES)** survey would work well. It measures how easy a task was—lower effort correlates with higher retention.

The standard approach is:
- Q1: Rating (1-7) – 'How easy was it to [task]?'
- Q2: Open text (for low scores) – 'What made this difficult?'

**Does this approach work for you, or would you like to customize it?**"
"根据你的描述,**客户费力指数(CES)**调查会很合适。它用于衡量完成某项任务的难易程度——费力程度越低,用户留存率越高。

标准设置为:
- Q1:评分(1-7)– '完成[任务]有多容易?'
- Q2:开放式文本(针对低分用户)– '是什么让这件事变得困难?'

**这个方案对你适用吗,还是你想自定义?**"

If no template matches:

如果没有匹配到模板:

"This sounds like a custom survey—I'll help you design one.

**What's the single most important thing you want to learn?**"

"这听起来像是一个自定义调查——我会帮你设计。

**你最想了解的一件事是什么?**"

Step 3: Finalize Questions

步骤3:确定问题

If customizing, ask ONE question at a time until questions are defined.
Once set, confirm:
"Here's what we have:
[list questions]

**Does this look right?**"

如果是自定义调查,一次只提一个问题,直到问题确定。
问题确定后,确认:
"我们确定的问题如下:
[列出问题]

**这样看起来没问题吧?**"

Step 4: Define Audience (MCP-First Approach)

步骤4:定义受众(优先使用MCP)

This is where PostHog MCP becomes critical. Do not ask the user about events or properties if MCP is available.
这一步PostHog MCP至关重要。如果MCP可用,不要询问用户关于事件或属性的问题。

With PostHog MCP available:

当PostHog MCP可用时:

  1. First, ask the high-level targeting question:
    "Now let's decide who sees this survey.
    
    **Who should see it?** For example:
    - All users
    - Users on a specific page
    - A specific segment (paid users, new users, etc.)
    - Users who completed a specific action"
  2. Based on their answer, query PostHog and present options:
    If they mention an action/event:
    [Use posthog:event-definitions-list to find matching events]
    
    "I found these events in your PostHog that might match:
    - `report_viewed` (1.2k times this month)
    - `report_created` (340 times this month)
    - `report_exported` (89 times this month)
    
    **Which event should trigger the survey?**"
    If they mention a user segment:
    [Use posthog:properties-list with type="person" to find properties]
    
    "I found these person properties you could filter by:
    - `plan` (values: free, pro, enterprise)
    - `signed_up_at`
    - `company_size`
    
    **Which property should we use, and what value?**"
    If they mention a page:
    "Got it—I'll target users on that page.
    
    **What's the URL or URL pattern?** (e.g., '/reports' or contains 'dashboard')"
  3. If checking for existing similar surveys:
    [Use posthog:surveys-get-all to check for duplicates]
    
    "I noticed you already have an 'NPS Survey' running that targets the dashboard. 
    
    **Should I create a new one, or would you like to modify the existing survey?**"
  4. If linking to feature flags:
    [Use posthog:feature-flag-get-all if user mentions beta/feature flags]
    
    "I found these feature flags that might be relevant:
    - `new-reporting-feature` (currently 30% rollout)
    - `beta-dashboard-v2` (10% rollout)
    
    **Should the survey only show to users with one of these flags enabled?**"
  1. 首先,提出高层次的目标受众问题:
    "现在让我们确定谁会看到这个调查。
    
    **谁应该看到它?** 例如:
    - 所有用户
    - 特定页面的用户
    - 特定细分群体(付费用户、新用户等)
    - 完成特定操作的用户"
  2. 根据用户的回答,查询PostHog并展示选项:
    如果用户提到操作/事件:
    [使用posthog:event-definitions-list查找匹配的事件]
    
    "我在你的PostHog中找到了这些可能匹配的事件:
    - `report_viewed`(本月1.2k次)
    - `report_created`(本月340次)
    - `report_exported`(本月89次)
    
    **应该用哪个事件触发调查?**"
    如果用户提到用户细分群体:
    [使用posthog:properties-list并设置type="person"查找属性]
    
    "我找到了这些可用于筛选的用户属性:
    - `plan`(取值:free、pro、enterprise)
    - `signed_up_at`
    - `company_size`
    
    **我们应该使用哪个属性,以及对应的取值是什么?**"
    如果用户提到页面:
    "明白了——我会定位到该页面的用户。
    
    **URL或URL模式是什么?**(例如:'/reports'或包含'dashboard')"
  3. 如果检查是否有类似的现有调查:
    [使用posthog:surveys-get-all检查重复项]
    
    "我注意到你已经有一个针对仪表盘的'NPS Survey'在运行。
    
    **我应该创建一个新调查,还是修改现有调查?**"
  4. 如果关联到功能标志:
    [如果用户提到测试版/功能发布,使用posthog:feature-flag-get-all]
    
    "我找到了这些可能相关的功能标志:
    - `new-reporting-feature`(当前30%发布)
    - `beta-dashboard-v2`(10%发布)
    
    **调查是否只向启用这些标志之一的用户展示?**"

Without PostHog MCP (fallback):

当PostHog MCP不可用时(备选方案):

If MCP tools fail or aren't available, ask the user directly:
"I don't have access to query your PostHog directly.

**Do you know the event name for when users [complete the action]?** 
(If not, we can target by page URL instead)"
Or for properties:
"**What's the property name for [plan/segment] in your PostHog?**
(e.g., 'plan', 'subscription_tier', etc.)"

如果MCP工具失败或不可用,直接询问用户:
"我无法直接查询你的PostHog。

**你知道用户[完成操作]时的事件名称吗?** 
(如果不知道,我们可以通过页面URL来定位)"
或者关于属性:
"**你的PostHog中[套餐/细分群体]对应的属性名称是什么?**
(例如:'plan'、'subscription_tier'等)"

Step 5: Configure Timing

步骤5:配置时间安排

Ask:
"**Should this survey show once per user, or repeat over time?**

- Once is good for most feedback surveys
- Recurring works for NPS (e.g., every 90 days)"
If recurring, follow up:
"**How often should it repeat?**"

提问:
"**这个调查应该每个用户展示一次,还是定期重复展示?**

- 一次展示适合大多数反馈调查
- 定期重复适合NPS(例如每90天一次)"
如果用户选择定期重复,跟进提问:
"**应该多久重复一次?**"

Step 6: Confirm and Create

步骤6:确认并创建

Summarize and ask for final confirmation:
"Here's the survey I'll create:

**Name:** [name]
**Questions:**
1. [Q1]
2. [Q2]

**Audience:** [targeting details]
**Schedule:** [once/recurring]

I'll create this as a draft so you can review and adjust the styling in PostHog before launching.

**Ready to create it?**"
Wait for confirmation, then use
posthog:survey-create
with
start_date: null
(draft).

总结信息并请求最终确认:
"我将创建的调查信息如下:

**名称:** [名称]
**问题:**
1. [问题1]
2. [问题2]

**受众:** [定位详情]
**时间安排:** [一次/定期重复]

我会将其创建为草稿,以便你在PostHog中审核并调整样式后再发布。

**可以创建了吗?**"
等待确认,然后使用
posthog:survey-create
并设置
start_date: null
(草稿)。

Step 7: After Creation

步骤7:创建完成后

"Done! Here's your survey: [link]

It's saved as a draft. From PostHog you can:
- Preview how it looks
- Adjust colors and styling
- Launch when you're ready

**Anything else you'd like help with?**"

"完成!这是你的调查:[链接]

它已保存为草稿。在PostHog中你可以:
- 预览外观
- 调整颜色和样式
- 准备好后发布

**还有其他需要帮助的吗?**"

MCP Query Patterns

MCP 查询模式

Finding events for targeting

查找用于定位的事件

1. User says: "Users who created a report"
2. Query: posthog:event-definitions-list with q="report"
3. Present matches: "I found `report_created`, `report_viewed`, `report_shared`. Which one?"
4. User confirms
1. 用户说:"创建报告的用户"
2. 查询:posthog:event-definitions-list并设置q="report"
3. 展示匹配结果:"我找到了`report_created`、`report_viewed`、`report_shared`。选哪一个?"
4. 用户确认

Finding person properties

查找用户属性

1. User says: "Paid users only"
2. Query: posthog:properties-list with type="person"
3. Look for: plan, subscription, tier, pricing-related properties
4. Present: "I found a `plan` property with values free/pro/enterprise. Should we target `plan` is not `free`?"
5. User confirms
1. 用户说:"仅限付费用户"
2. 查询:posthog:properties-list并设置type="person"
3. 查找:plan、subscription、tier、定价相关属性
4. 展示:"我找到了`plan`属性,取值为free/pro/enterprise。我们应该定位`plan`不等于`free`的用户吗?"
5. 用户确认

Checking existing surveys

检查现有调查

1. Before creating, query: posthog:surveys-get-all
2. Check for similar names or targeting
3. If found: "You have an existing [survey name] with similar targeting. Create new or modify existing?"
1. 创建前,查询:posthog:surveys-get-all
2. 检查是否有相似名称或定位
3. 如果找到:"你已有一个定位相似的[调查名称]。创建新调查还是修改现有调查?"

Finding feature flags

查找功能标志

1. User mentions beta/feature rollout
2. Query: posthog:feature-flag-get-all
3. Present relevant flags: "I found `beta-feature-x`. Link the survey to this flag?"

1. 用户提到测试版/功能发布
2. 查询:posthog:feature-flag-get-all
3. 展示相关标志:"我找到了`beta-feature-x`。是否将调查与此标志关联?"

Example Conversation (With MCP)

对话示例(使用MCP)

User: "I want to create a survey"
Claude: "I'll help you create a survey in PostHog. Here's what we'll figure out together:
  1. Goal – What do you want to learn?
  2. Questions – What to ask and how
  3. Audience – Who should see this?
  4. Timing – When and how often?
Let's start. What do you want to learn from this survey?"

User: "I want to know if the new export feature is easy to use"
Claude: "Great! This is perfect for a Customer Effort Score (CES) survey.
Here's the standard approach:
  • Q1 (Rating 1-7): 'How easy was it to use the export feature?'
  • Q2 (Open text, for low scores): 'What would make it easier?'
Does this work, or would you like to customize it?"

User: "That works"
Claude: "Perfect. Now let's decide who should see this.
Who should see the survey? For example:
  • Everyone
  • Users who've used the export feature
  • A specific segment"

User: "People who have used the export feature"
Claude: [Queries posthog:event-definitions-list with q="export"]
"I found these export-related events in your PostHog:
  • export_completed
    (2.3k times this month)
  • export_started
    (2.8k times this month)
  • export_failed
    (145 times this month)
Which event should trigger the survey? I'd recommend
export_completed
so users have finished the action."

User: "Yes, export_completed"
Claude: "Got it—survey shows after
export_completed
.
Should this survey show once per user, or repeat over time?"

User: "Once"
Claude: "Here's the survey I'll create:
Name: Export Feature CES Questions:
  1. Rating (1-7): 'How easy was it to use the export feature?'
  2. Open text (low scores): 'What would make it easier?'
Audience: Users who trigger
export_completed
Schedule: Once per user
I'll create this as a draft so you can review it in PostHog before launching.
Ready to create it?"

User: "Yes"
Claude: [Creates survey via posthog:survey-create with start_date: null]
"Done! Here's your survey: [link]
It's saved as a draft. You can preview it, adjust the styling, and launch when ready.
Anything else you'd like help with?"

用户: "我想创建一个调查"
Claude: "我将帮助你在PostHog中创建调查。我们将一起确定以下内容:
  1. 目标 – 你想了解什么?
  2. 问题 – 要问什么以及如何提问
  3. 受众 – 谁应该看到这个调查?
  4. 时间安排 – 何时以及多久展示一次?
让我们开始。你想通过这次调查了解什么?"

用户: "我想知道新的导出功能是否易于使用"
Claude: "很好!这非常适合**客户费力指数(CES)**调查。
标准设置为:
  • Q1(1-7评分): '使用导出功能有多容易?'
  • Q2(开放式文本,针对低分用户): '怎样能让它更简单?'
这个方案对你适用吗,还是你想自定义?"

用户: "这个方案可以"
Claude: "完美。现在让我们确定谁会看到这个调查。
谁应该看到这个调查? 例如:
  • 所有人
  • 使用过导出功能的用户
  • 特定细分群体"

用户: "使用过导出功能的人"
Claude: [查询posthog:event-definitions-list并设置q="export"]
"我在你的PostHog中找到了这些导出相关事件:
  • export_completed
    (本月2.3k次)
  • export_started
    (本月2.8k次)
  • export_failed
    (本月145次)
应该用哪个事件触发调查? 我推荐
export_completed
,这样用户已经完成了操作。"

用户: "好的,选export_completed"
Claude: "明白了——调查将在
export_completed
事件触发后展示。
这个调查应该每个用户展示一次,还是定期重复?"

用户: "一次"
Claude: "我将创建的调查信息如下:
名称: 导出功能CES调查 问题:
  1. 评分(1-7):'使用导出功能有多容易?'
  2. 开放式文本(低分用户):'怎样能让它更简单?'
受众: 触发
export_completed
事件的用户 时间安排: 每个用户展示一次
我会将其创建为草稿,以便你在PostHog中审核后再发布。
可以创建了吗?"

用户: "可以"
Claude: [通过posthog:survey-create创建调查并设置start_date: null]
"完成!这是你的调查:[链接]
它已保存为草稿。你可以预览它,调整样式,准备好后发布。
还有其他需要帮助的吗?"

Example Conversation (Without MCP)

对话示例(未使用MCP)

User: "People who have used the export feature"
Claude: [MCP query fails or unavailable]
"I can't query your PostHog directly. Do you know the event name for when someone completes an export?
If not, we can target by URL instead (e.g., show on the exports page)."

User: "I think it's called export_done"
Claude: "Got it—I'll use
export_done
as the trigger event.
Should this survey show once per user, or repeat?"

用户: "使用过导出功能的人"
Claude: [MCP查询失败或不可用]
"我无法直接查询你的PostHog。你知道用户完成导出时的事件名称吗?
如果不知道,我们可以通过URL来定位(例如:在导出页面展示)。"

用户: "我认为是export_done"
Claude: "明白了——我将使用
export_done
作为触发事件。
这个调查应该每个用户展示一次,还是定期重复?"

Question Design Reference

问题设计参考

See references/question-examples.md for:
  • 22 survey templates with proven questions
  • Targeting recommendations per survey type
  • Branching logic examples
查看references/question-examples.md获取:
  • 22个带有验证问题的调查模板
  • 每种调查类型的定位建议
  • 分支逻辑示例