Skip to content
Data
Skill

/creating-surveys

Creates and launches PostHog surveys through MCP, including NPS/CSAT popovers, hosted feedback forms, and headless surveys. Guides survey type selection, audience targeting, draft review, and launch readiness. Use when asked to create a survey or form, or before calling

From plugin
posthog
41k172 skills11 agents2 commands3 MCP

Claude Code

$ npx -y skills add posthog/posthog --skill creating-surveys --agent claude-code

SKILL.md

creating-surveys.SKILL.md
name: creating-surveys
description: >
  Creates and launches PostHog surveys through MCP, including NPS/CSAT popovers,
  hosted feedback forms, and headless surveys. Guides survey type selection,
  audience targeting, draft review, and launch readiness. Use when asked to
  create a survey or form, or before calling survey-create. For investigating
  an existing survey's delivery or responses, use debugging-surveys instead.

Creating surveys

Create a useful draft from the user's goal, then verify its audience and delivery before launch. The workflow can run through MCP without opening the survey editor.

Choose the delivery and questions

Infer the name, purpose, and questions from the request. Ask only for missing information that changes who receives the survey or how it is delivered.

| User's goal | Survey type | Delivery requirement | | --------------------------------------- | ----------------- | ---------------------------------------------------- | | Feedback inside an app | `popover` | A supported PostHog SDK with surveys enabled | | Always-available feedback button | `widget` | SDK support and a widget configuration | | A shareable hosted form | `external_survey` | A hosted survey link; no in-app targeting | | A custom form built in application code | `api` | The app renders questions and captures survey events |

Inspect the current tool schema for question types, scales, branching, and translations instead of guessing their JSON shapes. Minimal starting points are in [examples](references/examples.md).

Design for responses

These choices go with higher response rates in in-app surveys. Apply the question advice by default. Recommend the trigger and audience advice, and ask before adding a trigger or audience the user did not request, since both change who receives the survey. The evidence and its limits are in [response rates](references/response-rates.md).

  • **Trigger on the moment you are asking about.** Recommend showing the survey

after the event that marks it, such as a completed checkout or a used feature, through `conditions.events`. Event-triggered surveys get about twice the responses of page-based ones. A URL condition alone does about as well as showing the survey on every page. Confirm the event exists in the project before using it.

  • **Make the first question one click.** Start with a single choice or a short

rating. Surveys that open with an open-text question get about a fifth of the responses. Ask "why" in an optional open question after it.

  • **Keep it short.** About 4 in 10 people who start a two- or three-question

survey stop before the end. Prefer one to three questions unless the user requests more.

  • **Turn partial responses on** with `enable_partial_responses: true`, so the

first answer is kept when someone stops. It defaults to off when a survey is created through the API.

  • **Recommend a targeted audience.** Surveys shown to a person or cohort

audience get more responses than surveys shown to everyone.

  • **Keep any popup delay under 15 seconds.** Longer delays go with fewer

responses.

Survey names, questions, and appearance text are public content. Do not copy private customer details into them without making that visibility clear first.

Verify the audience and appearance

  • Use `conditions` for URL, event, device, and linked-flag-variant conditions.

Resolve existing event and flag identifiers before using them. A URL condition does not define a person or cohort audience.

  • Use `targeting_flag_filters.groups[].properties[]` for person, group, or cohort

targeting. Groups are alternative rules; properties within a group must all match. Preserve the intended audience when translating the request.

  • Cohorts containing behavioral filters cannot be used directly for survey

targeting. Explain the restriction and offer a supported static snapshot or another equivalent audience definition. A snapshot does not update with the original cohort. Get agreement before making that tradeoff; never drop a rule or broaden the audience to make a failed request pass.

  • Hosted forms (`external_survey`) do not use in-app display conditions or

targeting flags. Do not attach those fields to a hosted form.

  • Omit `appearance` unless customization is needed. `whiteLabel: true` requires

the organization's white-labelling entitlement (Enterprise). Do not infer it from a request for custom colors. Verify entitlement before setting it. `surveyPopupDelaySeconds` must be non-negative.

  • Leave optional fields unset when unused. Do not fill them with `null` as a

substitute for omission; question fields and nested objects have different nullability rules.

Create and review the draft

Call `posthog:survey-create` with the resolved configuration. Omit `start_date` for a draft. If the user already asked for immediate launch, continue through the readiness check and launch without asking for the same approval again.

Keep the returned survey `id`. Subsequent survey tools use `id`, not a question ID, feature flag ID, or survey name.

Read the saved survey with `posthog:survey-get`. Review the questions, type, audience, schedule, response limit, and branding with the user. Show the MCP survey app when the client supports it; otherwise give a concise text review. Always include the returned `_posthogUrl`. A saved configuration is not evidence that an in-app popup has rendered successfully.

For changes, call `posthog:survey-update` after fetching the saved survey. Questions, conditions, appearance, targeting, and translations may replace nested values. Preserve unchanged fields and existing question IDs, which link questions to collected responses. Omit IDs only for new questions.

Launch and verify delivery

Before `posthog:survey-launch`, con

Read more
@posthog
Ships withposthog

:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.

41k172 skills11 agents3 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
40.7k
Star history of posthog/posthog on GitHub, a chart by star-history.com

Other skills on posthog.

mcp-servers

mcp-servers

Install, configure, authenticate, and troubleshoot MCP (Model Context Protocol) servers for this agent. Use when the user asks to…

@posthog@posthogInstall Skill
dynamic-workflows

dynamic-workflows

Designs and runs task-specific JavaScript harnesses with the `workflow` tool. Use for broad, long-running, highly structured, or…

@posthog@posthogInstall Skill
subagent-orchestration

subagent-orchestration

How and when to delegate work to subagents via the `subagent` tool (Explore, Plan, General). Use when a task involves codebase…

@posthog@posthogInstall Skill
checking-member-access

checking-member-access

Explains what a member or a role can do in a PostHog project, using the access control MCP tools. Use when the user asks what…

@posthog@posthogInstall Skill
analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

@posthog@posthogInstall Skill
analyzing-expensive-users

analyzing-expensive-us…

Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top…

@posthog@posthogInstall Skill

More skills from other plugins.

context-loader
Auto-invoked

context-loader

Search memories from earlier Pi sessions in this repository. Use it when earlier work may already explain the code, error,…

mem07d69k
@mem0ai@mem0aiInstall Skill
qmd

qmd

Search local markdown knowledge bases, notes, docs, and wikis with QMD. Use when users ask to find notes, retrieve documents,…

qmd4w31k
@tobi@tobiInstall Skill

Questions about creating-surveys.

Which coding agents can use creating-surveys?
creating-surveys installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.