Creating Surveys
PostHogOfficialPublished by PostHog
- Skill
- Tool integration
- Data and AI
- MIT
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a structured process for creating and deploying PostHog surveys, including NPS, CSAT, hosted forms, and headless API-driven surveys. It guides users through selecting the appropriate survey type, defining audience targeting, and configuring display conditions to optimize response rates. The workflow emphasizes verifying survey configurations before launch and provides best practices for question design, trigger timing, and audience segmentation to ensure effective data collection.
What it does
- Guides the selection of survey types based on delivery requirements.
- Assists in designing survey questions for optimal response rates.
- Configures audience targeting and display conditions for in-app surveys.
- Manages the creation and review of survey drafts via MCP.
- Facilitates the launch process and verifies survey status.
- Provides guidance on updating existing surveys and troubleshooting configuration errors.
When to use it
- When you need to create a new survey or feedback form in PostHog.
- Before calling the survey-create tool to ensure the configuration is valid.
- When you need to define specific audience segments or event-based triggers.
- When you need to review or update an existing survey draft.
Advantages
- Promotes higher response rates through evidence-based design recommendations.
- Ensures survey configurations are verified before deployment.
- Streamlines the creation process by integrating directly with MCP.
- Helps avoid common pitfalls like overly complex questions or improper targeting.
Usage examples
- “Create an NPS survey for users who just completed a checkout.”
- The agent will draft an NPS survey, configure it to trigger on the 'checkout_completed' event, and ask for your approval before launching.
- “I need a hosted feedback form for our product page.”
- The agent will create an external_survey configuration, omitting in-app targeting, and provide you with the management URL.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/posthog/creating-surveys/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip creating-surveys.zip -d .agents/skills
Documentation by PostHog
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.
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.
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
conditionsfor 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
appearanceunless customization is needed.whiteLabel: truerequires the organization's white-labelling entitlement (Enterprise). Do not infer it from a request for custom colors. Verify entitlement before setting it.surveyPopupDelaySecondsmust be non-negative.Leave optional fields unset when unused. Do not fill them with
nullas 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_datein 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
apisurveys, 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.
Files
- ATTRIBUTION.mdAdded by AutoGineer851 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md7.6 KiB
- references/examples.md2.1 KiB
- references/response-rates.md2.4 KiB
ATTRIBUTION.md
Attribution
This folder is an unmodified copy of the Agent Skill "creating-surveys", distributed by AutoGineer (https://autogineer.com/agent-skills).
Commit: a5d30e775d092e16e198f7b582f1f66dac2cee45
Published by: PostHog (https://github.com/PostHog)
Publisher: PostHog (https://github.com/PostHog)
Licence: MIT License (https://github.com/PostHog/skills/blob/a5d30e775d092e16e198f7b582f1f66dac2cee45/LICENSE)
Licence evidence: repository licence LICENSE
Retrieved: 2026-11-07
The skill's own files are unmodified copies. AutoGineer is not affiliated with or endorsed by the author or the publisher.
Files added by AutoGineer
ATTRIBUTION.md: this file, written by AutoGineer
LICENSE: copied from LICENSE
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Published by
- PostHog
- Publisher
- PostHog (Official)
- Source
- PostHog/skills · skills/omnibus/creating-surveys · commit a5d30e7
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by PostHog.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download creating-surveys.zip