AI USE CASES YOU CAN REUSE.English edition · Individuals, independents, small businesses
PostHog

Establishment of surveys

creating-surveys

In brief

Creates and initiates post-hog surveys through the K0, including NPS/CSAT popovers, hosted feedback forms, and headless surveys. Guides the selection of the type of survey, audience targeting, draft review and preparation for launch. Use when asked Strength Survey or Form, or before calling the Survey-Creater. To study the delivery or responses of an existing survey, use debugging surveys instead.

What it does

  • Choose delivery and questions
  • Check the audience and appearance
  • Create and review project

Who it is for, and an example

People whose task is to: Create and launch PostHog surveys through the 'K0', including NPS/CSAT popovers, feedback forms and headless surveys.

Example request: "Investigation Creation: Creates and launches post-hog surveys through the K0, including NPS/CSAT popovers, hosted feedback forms, and headless surveys. »

Creates and initiates post-hog surveys through the K0, including NPS/CSAT pop registrars, hosted feedback forms, and headless surveys. Example written by iadujour.fr from the SKILL.md, not tested.

Install

Claude Code : /plugin marketplace add PostHog/skills, puis /plugin install posthog-all@posthog-skills (README).

/plugin marketplace add PostHog/skills
/plugin install posthog-all@posthog-skills

Works with

  • Claude Code

Source: K0: marketplace K1: K2: Other agents are not appointed.

Level: Intermediate

Supposes a project already in place at the publisher and the tools described in the K0.

Good to know

PostHog Official Deposit (github.com/PostHog/skills). Skills for product analytics, feature indicators, error tracking and team workflows.

SKILL.md excerpt

The original description, which the agent reads to decide whether to load the skill (in English):

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 sur […]

Quoted from SKILL.md at commit 445764b . The folder also contains 2 extra files (references/).

The SKILL.md has 139 lines and 5 main sections:

  • Choose the delivery and questions
  • Verify the audience and appearance
  • Create and review the draft
  • Launch and verify delivery
  • Recover from errors

Licence: MIT

Checked on 13 November 2026 : fichier de licence du dépôt.

The licence allows reuse: the full SKILL.md text is reproduced below, unmodified, with its licence notice.

Full SKILL.md text

Reproduced unmodified from PostHog/skills (commit 445764b) , © PostHog, under licence MIT (original licence file ).

Show the original SKILL.md (139 lines, in English)
---
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`, confirm:

- The user authorized launch for the reviewed audience and configuration.
- The survey is not archived and has no `end_date` in the past. If reopening an
  existing survey, unarchive it or clear/extend its end date only as authorized.
- For in-app delivery, surveys are enabled in the project and the app's SDK
  supports the requested features. Event-triggered surveys need the actual
  triggering event in the app. Creating an event name in configuration does not
  instrument that event.
- For `api` surveys, the application implementation handles display and event
  capture. Creating and launching the definition does not implement that code.

Use `posthog:survey-launch` with `id`, then verify the returned state. Report
whether the survey is a draft, launched, or awaiting an SDK/setup step. For hosted
forms, return a verified public form URL when available; `_posthogUrl` is the
management page and is not a respondent link.

Use `posthog:survey-stats` or `posthog:surveys-responses-list` to check subsequent
activity. Zero responses immediately after launch do not prove delivery failed.
For a survey that should have been shown, follow `debugging-surveys`.

## Recover from errors

Read the validation field and reason before retrying. For appearance failures,
check branding entitlement and the supplied appearance fields. For targeting
failures, verify cohort support and rule structure. Preserve requested behavior
when correcting inputs; explain any change that affects the audience or branding.

Creation is not idempotent. After a timeout or uncertain result, use
`posthog:surveys-get-all` to find and inspect a possible existing draft before
retrying creation. A matching name alone is not proof that it is the same survey.
Source. Card written by iadujour.fr from: Frontmatter, sections and body of the deposit. Checked on 13 November 2026. PostHog/skills .

In the directory

Use cases and guides that share a theme, industry or tool with this skill.

SAME PUBLISHER

Other PostHog skills: Observability and monitoring

Whole category
PostHogObservability and monitoring

Add PostHog Error Tracking

instrument-error-tracking

Add PostHog error tracking to capture and monitor exceptions.

Tools: Claude CodeLevel: Advancedupdated 12/11/2026
PostHogObservability and monitoring

Add PostHog AI Observability

instrument-llm-analytics

Add PostHog AI Observability to track the use of the AI model.

Tools: Claude CodeLevel: Advancedupdated 12/11/2026
PostHogObservability and monitoring

Add a PostHog log capture

instrument-logs

Add PostHog log capture to track application logs.

Tools: Claude CodeLevel: Intermediateupdated 12/11/2026
DISCUSSION

Comments.

A field note, a question, a precision on this skill? Comments are reviewed before publication.

Published comments

Loading comments…

    Leave a comment

    Moderation charter. Every comment is reviewed before publication. We refuse hate speech, insulting or discriminatory language, advertising, spam and promotional links, off-topic posts and other people’s personal data.