# Deck Docs Overview (/docs) # Welcome to Deck’s Docs Learn about Deck’s features, permissions, and integrations. *** ## Why Deck Modern product teams face the **Scattered Feedback Problem** — feedback lives in CRMs, survey tools, and interview recordings, making it nearly impossible to have a full picture of the customer. Deck solves this by connecting all those dots. * **Centralised insights** — Combine survey, CRM, and interview feedback into one shared workspace. * **Integrations that matter** — Sync CRMs, messaging apps, or survey tools. We're always adding more ways to sync data into Deck. * **Automatic synthesis** — Deck’s Agents extracts themes, insights, and summaries from raw feedback in minutes and organize them into topics you can take good decisions from. * **Decision-ready context** — Integrate with CRMs to filter insights by account size, churn risk, or user segment. *** ## Explore Deck ### Getting Started Create your workspace, follow the setup checklist, explore sample data, and add your first feedback source. [-> Getting Started](/features/getting-started) ### Data Points Learn how Deck helps you capture and organise customer feedback across your stack.\ [-> Features Overview](/data-points/categories) ### Dashboard Start from Deck's overview dashboard to scan weekly changes across feedback, opportunities, NPS, and initiatives.\ [-> Dashboard](/features/dashboard) ### Integrations See how Deck connects to tools like Salesforce, Slack, and Fillout.\ [-> Integrations](/integrations/salesforce) ### Public API Build scripts, automations, and integrations on top of Deck’s API for both read access and scoped Build write actions.\ [-> Public API](/docs/public-api) {/* ### Environment Understand how Deck's environment works. [→ Permissions](/environment) */} ### Feedback Methods Learn how Deck automatically extracts themes and insights from customer feedback.\ [-> Insights](/feedback-methods/user-interviews) # Categories (/docs/data-points/categories) # Categories Categories are labels added to each insight that describe the type of feedback it represents. Every insight is assigned one of the following categories: * **Pain Points**: Frustrations or difficulties the customer is experiencing * **Bugs and Errors**: Technical issues, broken functionality, or unexpected behavior * **Usability Issue**: Problems with how easy or intuitive something is to use * **General Feedback**: Observations or comments that do not fit neatly into another category * **Delight**: Positive reactions, praise, or things the customer loves * **Feature Request**: Suggestions for new functionality or improvements Categories help you filter insights based on what your customers intend to communicate. For example, you can filter to show only Pain Points when you want to identify the most pressing problems to solve, or filter to Feature Requests when planning your next product cycle. Categories are tightly connected to sentiment — Pain Points will always carry negative sentiment, and Delight will always carry positive sentiment. However, the distinction between categories and sentiment is important as your data grows. Categories tell you *what kind* of feedback it is, while sentiment tells you *how the customer feels*. Using both together lets you prioritize more effectively: you might choose to fix a bug that has strong negative sentiment before addressing a usability issue with milder frustration. Deck's AI agents assign categories automatically during synthesis. You do not need to label insights manually, though you can adjust a category if the AI made an incorrect assignment. # Insights (/docs/data-points/insights) # Insights At Deck, an insight is the atomic unit of customer feedback. Insights can be findings from user quotes, customer Slack messages, support tickets, survey responses, or any other connected feedback source. They are the foundation of how Deck works. A theme is made out of a collection of insights that relate to the same topic. Together, insights and themes give you a structured, searchable view of everything your customers are telling you. ## What an Insight Contains Each insight has the following data attached to it: * **Name**: A short, descriptive title picked by you or Deck's AI agents that captures the user's intention * **Customer quote**: The original words said by the customer that led to the insight * **Sentiment**: The tone of the customer's quote (positive, negative, or neutral) * **Category**: A label that classifies the insight into a predefined type (such as Pain Point, Feature Request, or Delight) * **Theme**: The overarching subject the insight belongs to ## How Insights Are Generated When feedback enters Deck — whether from an interview transcript, a Slack message, a support ticket, or a survey response — Deck's AI synthesis agents process it automatically. The agents read through the content, identify distinct pieces of customer feedback, and extract each one as a separate insight. For example, a single user interview might produce several insights if the customer discussed multiple topics. Each insight is linked back to the original source so you can always trace it to the full context. ## Working with Insights You can browse, search, and filter insights across your entire organization in the **Visualize** environment. Use filters to narrow down by theme, category, sentiment, or source type to find exactly the feedback you need. Insights from all your connected integrations appear in one unified view, making it easy to spot patterns across different feedback channels. # Subthemes (/docs/data-points/subthemes) # Subthemes Subthemes are available on **Starter** and **Business** plans. Organizations on the Free plan do not have access to Subthemes. Subthemes are AI-detected sub-groupings within feedback themes. Where a theme captures a broad topic area (e.g., "Onboarding Experience"), subthemes surface the specific recurring topics within it (e.g., "Unclear first-time setup steps", "Missing getting started guide"). ## What Are Subthemes? When Deck synthesizes your feedback themes each week, it groups related insights into subthemes — tighter clusters of feedback that share a common thread. Each subtheme includes: * **Insight count** — how many feedback pieces belong to this subtheme * **Sentiment breakdown** — the ratio of positive, negative, and neutral insights * **Trend direction** — whether this subtheme is growing, shrinking, or stable compared to the previous period. The colour indicates *impact*: green means things are improving (positive feedback rising or negative feedback declining), red means things are worsening, and muted means the subtheme has mixed or neutral sentiment * **AI synthesis** — a narrative summary, key quotes, and a sentiment timeline generated by Deck's AI Subthemes give you a more granular view than themes alone, making it easier to identify exactly what users are saying rather than just what topic area they're discussing. ## Viewing Subthemes Navigate to **Visualize → Subthemes** in the sidebar to see all subthemes across your organization. Summary statistics (total subthemes, total themes covered, total insights, and an overall sentiment breakdown) appear at the top of the page. When the **By Theme** sort mode is active, subthemes are grouped by their parent theme in a collapsible accordion — expand a group to see its subthemes. When any other sort mode is active (Trending, High Negative, Latest, Sudden Changes), subthemes appear as a flat sorted list across all themes — each pattern card displays the parent theme name below the pattern name so you can identify context at a glance. ### Sorting Options Use the tabs at the top of the page to change how subthemes are sorted: | Sort mode | What it shows | | ------------------ | ----------------------------------------------------------- | | **By Theme** | Subthemes grouped by their parent theme | | **Trending** | Subthemes with the most upward momentum in insight volume | | **High Negative** | Subthemes with the highest proportion of negative sentiment | | **Latest** | Most recently synthesized subthemes first | | **Sudden Changes** | Subthemes with unusually sharp spikes or drops in volume | ### Filtering You can narrow the list using the filter controls in the top-right: * **Search** — filter by pattern name * **Segments** — scope subthemes to a specific customer segment ### Opening a Subtheme Click any subtheme card to open that subtheme's dedicated detail page inside its parent theme. The subtheme detail view shows the full AI synthesis for the selected subtheme, including: * A narrative summary of what users are saying * Key quotes from the underlying insights * A sentiment timeline showing how sentiment has shifted over time * Related subthemes within the same theme From the parent theme, you can return to the **Overview** page to see the broader theme-level analytics, including category breakdowns and the full insights table. ## When Are Subthemes Generated? Subthemes are created automatically as part of the **weekly theme synthesis** cron job (runs Sunday evenings UTC). A theme must have a sufficient number of insights before subthemes are extracted from it. If you do not see subthemes yet, check back after the next weekly synthesis cycle or ensure your organization has enough feedback ingested. ## Subthemes in Deck Intelligence You can ask Deck Intelligence (the AI chat widget) questions about subthemes directly: * "What subthemes do you see in the Onboarding theme?" * "Which subthemes have the most negative sentiment?" * "Break down the Product Usability theme into subthemes" Deck Intelligence will look up subthemes from the latest synthesis and include links to the relevant theme pages in its response. ## Subthemes via MCP If you use the [MCP integration](/docs/integrations/mcp) to connect an AI assistant to Deck, the `explore_subthemes` tool gives programmatic access to subthemes: * List all subthemes across themes (sorted by insight count) * Search subthemes by keyword or intent (e.g., "onboarding friction", "payment issues") * Filter subthemes by theme or customer segment * Drill into a specific pattern to see its synthesis blocks, insight IDs, and sibling subthemes * Each pattern response includes a direct link to the canonical subtheme detail view in Deck Subtheme access via MCP requires a **Starter** plan or higher. If your organization is on the Free plan, the `explore_subthemes` tool will return a guidance message explaining the limitation and suggesting alternative tools. # Themes (/docs/data-points/themes) # Themes Themes are the overarching areas of your product that Deck's AI agents detect based on your customer feedback. For example, for a streaming company, recurring themes could be "Offline Streaming", "Content Recommendation Experience", or "New Content". These may all be recurring topics in the customer's mind, and once Deck detects customers are speaking about them, Deck creates these themes. Every time a customer mentions one of these topics again, Deck automatically adds the new feedback as an insight under the relevant theme. ## How Themes Are Created Deck's synthesis agents analyze every piece of incoming feedback — whether it comes from user interviews, support tickets, Slack messages, NPS surveys, or any other connected source. When the agents identify a recurring topic that does not match an existing theme, they create a new one automatically. Each theme includes a descriptive name and a summary that captures what customers are saying about that area. As more feedback flows in, the theme grows with additional insights, giving you a fuller picture of how customers feel about that part of your product. Structured survey questions are handled separately from this global theme library. Deck can use those question dimensions inside survey analysis, but it does not turn every rating prompt or multiple-choice option into a global theme. ## Managing Themes You can view and manage all themes in the **Visualize** environment. From there, you can: * **Browse themes** to see which areas of your product receive the most feedback * **Open a theme overview** to see sentiment trends, category breakdowns, and the underlying insights in one place * **Track trends over time** to see whether a theme is growing or fading * **Merge or rename themes** if the AI created duplicates or used a name you want to adjust Themes are the primary way Deck organizes feedback at scale. Instead of reading through hundreds of individual messages, you can focus on the themes that matter most to your product decisions. ## Theme Detail Experience When you open a theme, Deck starts on the **Overview** page for that theme. The overview combines: * An editable **theme title** in the page header so you can rename the theme without leaving the detail view * A **sentiment timeline** showing how positive and negative feedback changes over time * A **sentiment breakdown** of the feedback in the theme * An **insight category breakdown** so you can quickly see whether the theme is driven by pain points, feature requests, bugs, or other categories * A **Theme Insights** table with the specific insights and quotes behind the theme If your organization has access to Subthemes, the overview also shows a lightweight **Subthemes** summary card. You can use that card to jump straight into a specific subtheme without losing the context of the parent theme. You can still switch to: * **Interview Highlights** for video-backed evidence * **All Insights** for the full paginated list of insights in the theme ## AI Synthesis (Subthemes View) For themes with enough feedback (5 or more insights), Deck automatically generates a rich **Subthemes** synthesis view. Each subtheme opens in its own dedicated detail page nested under the parent theme. The synthesis is rebuilt weekly and includes up to 10 content blocks, depending on the data available: | Block | What it shows | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | AI Narrative | A concise written summary of the theme's key signals | | Key Quotes | Verbatim customer quotes that best represent the theme. Deck shows up to three quote cards at a time and lets you page through the rest with arrow controls. | | Sentiment Timeline | How sentiment has shifted over time | | Sentiment Breakdown | Promoter / neutral / detractor distribution | | Sources Breakdown | Which feedback channels (interviews, tickets, Slack, etc.) contribute most | | Video Highlights | Short video clips from interviews where customers discuss this theme | | Stat Callout | A headline number or metric extracted from the feedback | | Insights Table | A filterable table of all insights in the theme | | Comparison | Side-by-side breakdown across segments or time periods | | Related Subthemes | Other themes that co-occur with this one | If a theme has fewer than 5 insights it shows a **Below Threshold** notice instead of the full synthesis view. Open a subtheme either from the **Visualize → Subthemes** page or from the **Subthemes** summary card on the theme overview. # Unified Contacts (/docs/features/contacts) # Unified Contacts Deck's unified contacts system automatically consolidates customer feedback from all your integrated tools, giving you a complete view of each customer's interactions and feedback. ## How It Works When you integrate tools like Intercom, Zendesk, Slack, PostHog, or upload NPS surveys, Deck automatically: 1. **Identifies customers** across different platforms using their email, phone number, or platform-specific IDs 2. **Creates a unified contact** that represents the same person across all tools 3. **Links all feedback** (support tickets, survey responses, user interviews, etc.) to that contact This means you can see every piece of feedback from a customer in one place, regardless of which tool it came from. ## Viewing Contact Information Contact information is automatically displayed throughout Deck: * **Intercom integration page**: See contacts associated with your Intercom conversations * **Zendesk integration page**: View contacts linked to support tickets * **Feedback timeline**: See which contact provided each piece of feedback ## How Contacts Are Matched Deck uses intelligent matching to identify the same person across different tools: ### Email Matching * Automatically normalizes email addresses (handles Gmail dots and plus-signs, Outlook variations) * Example: `john.doe+tag@gmail.com` and `johndoe@gmail.com` are recognized as the same person ### Platform IDs Deck also matches contacts using platform-specific identifiers: * Intercom user IDs * Zendesk requester IDs * Slack user IDs * PostHog distinct IDs * Salesforce contact IDs * HubSpot contact IDs ### Phone Numbers If available, phone numbers are also used to match contacts across platforms. ## Contact Information For each contact, Deck stores: * **Name**: Display name from any integrated platform * **Email**: Primary email address * **Phone**: Phone number (if available) * **Company**: Associated company name * **Avatar**: Profile picture from integrated platforms * **Activity**: First and last seen timestamps * **Feedback sources**: All platforms where this contact has provided feedback ## Feedback Timeline Each contact has a unified feedback timeline showing: * **Customer service tickets** from Intercom and Zendesk * **NPS responses** from surveys * **Survey responses** from custom surveys * **User interview insights** from uploaded transcripts * **Slack messages** from connected channels * **PostHog events** from product analytics All feedback is chronologically organized, making it easy to understand a customer's journey and sentiment over time. ## Privacy & Data Management * Contacts are **organization-scoped** - your team only sees contacts associated with your organization * Contact data is automatically updated when new feedback is received * Historical feedback is automatically linked to contacts when integrations are first set up * Contact merging is logged for audit purposes ## Technical Details ### Supported Identity Types Deck supports the following identity types for contact matching: * EMAIL * PHONE * INTERCOM\_ID * ZENDESK\_ID * SLACK\_ID * POSTHOG\_ID * SALESFORCE\_ID * HUBSPOT\_ID * GONG\_ID ### Automatic Backfilling When you connect a new integration, Deck automatically: 1. Processes all historical feedback 2. Creates or updates contacts based on that feedback 3. Links all historical data to the appropriate contacts This happens in the background without any action required from you. ## Best Practices 1. **Connect multiple tools**: The more integrations you connect, the more complete your contact profiles become 2. **Use consistent email addresses**: Encourage customers to use the same email across platforms for better matching 3. **Review feedback by contact**: When analyzing feedback, group by contact to understand individual customer journeys 4. **Track customer accounts**: Link contacts to customer accounts in your CRM for company-level insights ## Common Questions **Q: What happens if a contact changes their email?** A: Deck stores all email addresses as separate identities. Both old and new emails will be associated with the same contact. **Q: Can I manually merge duplicate contacts?** A: Manual contact merging is planned for a future release. Currently, contacts are merged automatically when matching identities are detected. **Q: Is contact data shared across organizations?** A: No, contacts are completely isolated by organization. Your team only sees contacts associated with your organization's data. **Q: How far back does historical data go?** A: When you connect an integration, Deck processes all available historical data from that platform. # CSV Import (/docs/features/csv-import) # CSV Import CSV Import lets you bring historical feedback data into Deck in bulk. Upload a CSV file, map your columns to the right fields, and Deck processes each row through the same AI pipeline used for live integrations — extracting themes, generating insights, and making your data available in dashboards. ## Supported Feedback Types You can import five types of feedback via CSV: | Type | Format | Required Fields | Optional Fields | | ------------------ | ------------------------------------------------------ | ---------------------------- | ------------------------------------------------------------------------- | | **NPS** | Flat (one row per response) | `score` (0–10) | `reason`, `respondent_email`, `respondent_name`, `response_date` | | **User Interview** | Flat | `transcript` | `interview_date`, `interviewee_name`, `interviewee_email` | | **CS Ticket** | Flat | `subject`, `body` | `requester_email`, `requester_name`, `created_date`, `status`, `priority` | | **Feedback** | Flat | `content` | `source`, `respondent_email`, `respondent_name`, `submitted_date` | | **Survey** | Pivoted (one row per respondent, questions as columns) | At least one question column | `respondent_email`, `respondent_name` | Survey imports use a different file format than other types — see [Survey CSV Format](#survey-csv-format) below. ## Downloading a Template Before preparing your data, you can download a pre-formatted CSV template for any feedback type. Templates include all supported column headers with two example rows so you can see the expected format. From **Manage → CSV Uploads**, click **Upload CSV**, select your feedback type, and use the **Download Template** link on the upload step. ## Survey CSV Format Survey imports use a **pivoted (wide) format** — each column is a survey question, and each row represents one respondent's answers. This is the native export format from all major survey platforms. ### Supported platforms Deck automatically detects your survey platform from the file structure: | Platform | Detection method | | ---------------- | ------------------------------------------------------------ | | **Qualtrics** | 3-row header block (question text, import ID, display order) | | **SurveyMonkey** | 2-row header block (question / sub-question) | | **Typeform** | Single header row with boolean Yes/No column groups | | **Google Forms** | Single header row; plain column names | | **Unknown** | Single header row; generic heuristics | Platform detection is shown as a badge on the Preview step. If the wrong platform is detected, you can continue — column classification in the next step gives you full control. ### Question types Deck infers the type of each question from your answer data: | Type | Description | Credit cost | | ----------------- | ------------------------------------------- | -------------------------- | | **NPS** | 0–10 numeric scale with "How likely…" label | 0 | | **Rating Scale** | Numeric 1–5 or 1–7 scale | 0 | | **Yes / No** | Binary yes/no answers | 0 | | **Multi-select** | Respondent selected multiple options | 0 | | **Single-select** | One option chosen from a list | 0 | | **Free Text** | Open-ended text response | Uses AI processing credits | Structured answer types (everything except Free Text) are stored directly without LLM processing and cost **0 credits**. Free Text answers are processed by the AI analysis pipeline and use credits based on the amount of text processed. ### Downloading the survey template The survey template (`deck-survey-template.csv`) uses the pivoted format with example questions for every supported type, including a tips row that Deck automatically strips. Download it from the upload wizard's Preview step. *** ## How to Import a CSV For all types except Survey, the wizard guides you through four steps: **Upload → Preview → Map → Review**. For **Survey** uploads, the wizard uses a six-step flow: **Upload → Preview → Classify → Question Types → Review → Submit**. ### 1. Prepare your file Export your feedback data from your existing tool (survey platform, CRM, helpdesk, etc.) as a CSV. Column names do not need to match Deck's field names exactly — you'll map them in step 3. Maximum file size is 10 MB. ### 2. Upload your file Go to **Manage → CSV Uploads** in your workspace and click **Upload CSV**. Drop your file into the upload area or click to browse. Deck automatically detects the feedback type from your column headers where possible. You can confirm or change the detected type before continuing. ### 3. Preview The Preview step shows you the first rows of your parsed file so you can confirm the data looks correct. For **Survey** uploads, Deck parses the pivoted structure at this step and shows you a platform detection badge (e.g., "Qualtrics detected"). Continue to proceed to column classification. ### 4. Classify columns *(Survey only)* This step appears only for Survey uploads. Deck shows every column from your file alongside 2–3 sample answers and its auto-detected role: | Role | Meaning | | ------------ | ------------------------------------------------------------------------- | | **Question** | A survey question — will be analyzed | | **Metadata** | Contact info (email, name, date) — used to link respondents, not analyzed | | **Skip** | Column will be ignored | You can change the role for any column using the dropdown. Skipped columns are collapsed into a separate section so you can un-skip them if needed. ### 5. Question types *(Survey only)* After classifying, Deck shows each question column with its inferred type (NPS, Rating Scale, Yes/No, etc.) and 2–3 sample answers. A live **credit counter** shows your estimated cost using the formula: > **Respondents × Free Text questions = credits** You can override the detected type for any question using the dropdown. The credit counter updates in real time as you change types. ### 4 / 6. Map columns *(non-Survey)* For NPS, User Interview, CS Ticket, and Feedback uploads, Deck displays your CSV columns alongside the required and optional fields for the selected type. Deck auto-maps columns it recognizes by common names (e.g., a column named `email` or `customer_email` is automatically mapped to **Respondent Email**). You can override any auto-mapped field. ### 5 / 7. Review validation results After mapping (or after Question Types for surveys), Deck validates every row. You'll see a summary of: * **Valid rows** — ready for processing * **Invalid rows** — listed with the specific validation error * **Duplicate rows removed** — exact duplicates are automatically excluded For Survey uploads, Deck skips column-level validation and instead shows a summary of respondents and the credit cost formula. ### 6 / 8. Submit and credit handling For non-Survey uploads, submit any file with valid rows. Deck applies credit policy when the upload is created, so the final usage can vary based on the amount of text analyzed by Deck's AI pipeline. For Survey uploads, only **Free Text** questions consume credits. Structured questions are stored without AI processing. A survey with only structured questions (NPS, Rating Scale, etc.) costs **0 credits**. If overages are disabled and the upload is larger than your current processing budget, Deck queues the rows it can process now and saves the rest as waiting for credits. If no rows can be processed, the upload is saved but processing does not start until credits are available. Confirm and submit. Deck queues the upload immediately and begins processing in the background. ## Tracking Progress Once submitted, your upload appears in the **Manage → CSV Uploads** table with a live status badge: | Status | Meaning | | ----------------------- | -------------------------------------------------------------------------- | | **Pending** | Queued, processing not yet started | | **Processing** | Rows are being processed by the AI pipeline | | **Completed** | All rows processed successfully | | **Partially Completed** | Some rows succeeded, some permanently failed | | **Waiting for Credits** | Some or all rows were saved but cannot process until credits are available | | **Failed** | The upload encountered a critical failure | Click any row in the table to open the detail view, which shows a progress bar, row counts, and error messages for failed rows. The page refreshes automatically every 10 seconds while an upload is active, so you don't need to manually reload. When an import finishes (on any page in your workspace), a toast notification appears confirming how many rows were processed — and linking directly to the upload detail view. ## Retrying Failed Rows If any rows fail permanently (after 3 internal retry attempts), you can retry them from the detail view using the **Retry Failed** button. This re-queues only the failed rows for another processing attempt. Retried rows consume credits just like the original submission. Rows waiting for credits are different from failed rows. They are held because of credit limits, not because the row content failed validation or processing. In the current version, there is no manual resume button in the CSV wizard; Deck can process more waiting rows after credits are available. ## How Deck Processes Your Data Once submitted, Deck processes your CSV rows through the same AI pipeline as live integrations: 1. **Contact matching** — If a row includes an email address, Deck attempts to link it to an existing contact in your workspace (from CRM integrations). 2. **AI analysis** — Each row is analyzed by the appropriate AI agent for its feedback type. 3. **Persistence** — Results are written to the correct tables alongside your other feedback data. 4. **Theme and insight linking** — Themes are auto-created or matched to existing ones; insights are linked to relevant themes. 5. **Cache refresh** — Your dashboards and visualizations update to include the new data. Processing is sequential within your organization (one upload at a time) to ensure consistent credit accounting and avoid data conflicts. If your workspace still has onboarding sample data, Deck removes that sample data before importing CSV rows. If sample cleanup cannot complete, the CSV import is stopped and can be retried. ## Deleting an Upload You can permanently delete a completed or failed CSV upload along with all the data Deck created from it — responses, insights, and themes. To delete an upload: 1. Go to **Manage → CSV Uploads**. 2. Click the **⋯** (more) menu on the row you want to remove. 3. Select **Delete** and confirm the dialog. A few things to know: * **Active uploads cannot be deleted.** The Delete option is disabled for uploads with a **Pending** or **Processing** status. Wait for the upload to finish before deleting it. * **The deletion is permanent.** All responses, insights, and theme associations created by that upload are removed. This action cannot be undone. * **Credits are not refunded.** Deleting an upload does not restore the credits consumed when it was processed. * **Survey uploads show a deletion preview.** Before you confirm, the dialog shows exactly how many survey responses, answers, and insights will be deleted so you know the full scope of the operation. ## Best Practices * **Start with a small test file** — Import 20–50 rows first to verify your column mapping produces the expected results before uploading thousands of rows. * **Include email addresses** — Rows with respondent or requester emails are linked to your existing contacts, making your data more useful in filtered views. * **Clean up invalid rows before uploading** — The validation step tells you exactly which rows fail and why. Fix them in your source file for a cleaner import. * **One upload at a time** — Uploads are processed sequentially per organization. You can submit multiple uploads, but they will queue behind each other. # Dashboard (/docs/features/dashboard) # Dashboard Dashboard is a high-level **Visualize** overview for weekly scanning. It gives you a fast, cross-feature snapshot of what changed recently so you can decide where to drill in next. ## Accessing the dashboard Dashboard remains available at **`/visualize/dashboard`** as the high-level overview screen for weekly scanning. The primary Visualize navigation currently opens **Themes** first. If you land on dashboard from a direct link or internal handoff, the full dashboard experience is still available. ## What you'll see * A weekly summary card highlighting the most important customer signals for the current dashboard view * A KPI strip showing: * **Insights (Last 7 Days)** * **Sentiment Breakdown** (compact timeline) * **Initiatives In Progress** * **New Opportunities (Last 7 Days)** * **Negative sentiment rising** and **Positive sentiment rising** cards to surface fast-moving changes * **Net Promoter Score** summary showing the current score, recent movement, and the themes influencing the shift * **New Themes & Patterns Created** highlighting recently surfaced topics * **Initiatives In Progress** and **New Opportunities** tables for quick drill-in from dashboard * **Themes Going Quiet** showing issues or requests that are cooling off ## First-run sample data New workspaces with no real feedback may show onboarding sample data on Dashboard. The sample workspace demonstrates the full Deck loop before you import your own feedback: * feedback becomes themes and patterns * ranked opportunities appear in the backlog * initiatives show how customer evidence can become action plans * dashboard cards show realistic customer signal changes * sample interviews open as already-completed examples, so you can inspect the transcript, themes, and linked insights without waiting for processing You can delete sample data from Dashboard. Deck asks you to confirm, then keeps the dialog open with a loading state while deletion finishes. Deleting sample data removes only the onboarding sample feedback, themes, opportunities, initiatives, and signals that Deck created for setup. Your real workspace data is not deleted. When you add your first real feedback source, Deck removes sample data before the import or sync starts. If that cleanup cannot finish, the real ingest is stopped and can be retried. ## Filters and refresh * Dashboard usually opens on the latest daily snapshot available for your organization * Dashboard is currently account-wide. It does not respond to the global segment filter, and the segment picker is hidden while you are on this page * If Deck cannot use a saved snapshot for the requested date, it falls back to the closest available persisted snapshot or a live server-side computation so the page still renders * During route transitions, Deck shows a dashboard-shaped loading skeleton so the layout stays stable while the snapshot-backed payload resolves * The weekly summary is designed to call out what changed, what keeps recurring, what improved, or what is cooling off rather than just listing raw counts * When there is not enough signal for an AI-written narrative, Deck still shows a generated fallback summary instead of leaving the header blank, and that fallback keeps the same short, natural style ## How to use it Use Dashboard as your starting point when you want to: * scan the latest customer signal at a glance * review the latest 7-day insight volume and sentiment trend * spot new or worsening themes before opening a detailed report * see which themes are accelerating, cooling off, or translating into opportunities * connect customer sentiment to active opportunities and initiatives * decide whether to drill into [Themes](/data-points/themes), [NPS Score](/features/nps-score), [Opportunity Backlog](/features/opportunity-backlog), or [Initiatives](/features/initiatives) ## What dashboard is best for Dashboard is best for fast triage and weekly scanning. Use the dedicated pages across Visualize and Build when you want deeper filtering, editing, or source-by-source investigation. # Deck Intelligence (/docs/features/deck-intelligence) # Deck Intelligence Deck Intelligence is an in-app AI chat assistant that lets you query your feedback data in plain English. Instead of navigating reports manually, you can ask questions like "What are enterprise customers complaining about?" or "How has NPS changed for churned accounts?" and get a direct answer with links to the underlying feedback. ## Availability Deck Intelligence is available on **Business** and **Enterprise** plans. If you are on a lower tier, upgrading your subscription enables the feature immediately. ## Opening the Chat Widget A chat icon appears in the bottom-right corner of every page in the app. Click it to open the chat panel. The widget is available as: * A **popover** on desktop — stays anchored to the corner while you keep working * A **drawer** on mobile — slides up from the bottom ## Asking Questions Type your question in the input field and press **Enter** (or click Send). The assistant reads your organization's feedback data in real time and streams a response back. Good questions to try: * "What themes are most common among detractors this month?" * "Summarize the top complaints from Zendesk tickets in Q1" * "Which customer segment has the highest NPS?" * "Are there any insights about the onboarding experience?" * "What subthemes do you see in the Pricing theme?" * "Which subthemes have the most negative sentiment right now?" ## Citations Every factual claim in the assistant's response is backed by a citation — a direct link to the insight, theme, NPS response, or customer service ticket the answer draws from. Citations appear as numbered references in the text and are listed in a **Sources** section below the response. Click any citation to open the original piece of feedback in a new tab. ## Page Context Deck Intelligence is aware of which page you are on. When you open the chat while viewing a specific theme or insight, the assistant automatically focuses on that topic without you needing to repeat the context. You can still ask general questions — page context only narrows the default scope. ## Suggested Questions When the chat is empty, a set of **Starter Questions** appears. These are tailored to the page you are viewing and help you get started quickly. Click any suggestion to send it immediately. ## Limitations * The assistant only has access to feedback data within your organization — it cannot browse the web or access external databases * Very large date ranges may take a few extra seconds to process * Deck Intelligence does not modify any data — it is read-only ## Privacy All questions and responses are scoped to your organization. No data is shared across organizations. Queries are processed by Deck's AI infrastructure and are subject to the same data handling policies as all other AI features in the product. # Getting Started (/docs/features/getting-started) # Getting Started Deck's first-run setup helps you create a workspace, choose how you want to add feedback, and start from either sample data or your own sources. ## Welcome flow When you create a new workspace, Deck asks what kind of feedback you want to work with first: * CSV or NPS imports * User interviews * Integrations such as Slack, Intercom, Zendesk, Salesforce, HubSpot, Attio, or Notion * Plan and workspace setup tasks Your choices become a setup checklist in the app header after onboarding. The checklist points you to the right upload, integration, billing, or MCP setup page and updates as tasks are completed. If you choose to upload feedback during onboarding, Deck opens the same CSV, NPS, or interview upload wizard you can use later from the app. If you close the wizard before submitting, you can reopen it from the onboarding step without losing your setup choices. ## Sample workspace data If your workspace does not have real feedback yet, Deck can show sample dashboard data after onboarding. This lets you explore how feedback becomes themes, opportunities, initiatives, and dashboard signals before importing your own data. The sample data is only for onboarding. It is marked separately from your real feedback and can be removed from the dashboard. ## Adding your own data You can add real feedback from the setup checklist or directly from the relevant page: | Source | Where to go | | --------------------------------- | ----------------------------- | | CSV or NPS file | **Manage -> CSV Uploads** | | Interview recording or transcript | **Manage -> User Interviews** | | Product or support integration | **Settings -> Integrations** | | MCP access for AI assistants | **Settings -> MCP** | When you add your first real source, Deck removes onboarding sample data before importing your feedback. If sample cleanup cannot complete, Deck stops the import and asks you to retry so sample data is not mixed with real customer data. ## Credit checks during setup AI processing uses credits. If overages are disabled and your workspace is running low, Deck may keep some credits available for activation work such as feedback synthesis, theme synthesis, NPS synthesis, and initiative generation. For large CSV imports, rows that cannot be processed immediately because of credit limits are saved as waiting for credits instead of being discarded. You can still review the upload, and more rows can be processed after credits are available. ## Finishing setup Open the **Setup** checklist in the app header whenever you want to continue setup. When all checklist tasks are complete, the checklist is hidden automatically. You can also choose **Don't show again** to hide the checklist without completing every task. # Initiatives (/docs/features/initiatives) # Initiatives Initiatives is a feature in the **Build** section that helps you turn customer feedback into actionable product strategy. You describe a topic or project area, and Deck's AI pipeline analyzes your feedback data — themes, subthemes, insights, NPS responses, and customer segments — to generate a structured initiative document with an overview and supporting evidence. ## Accessing Initiatives Navigate to **Build → Initiatives** in the sidebar. You'll see a list of all initiatives for your organization, along with their status, sentiment signal, and linked insight count. Click any initiative to open its detail view. ## Changing Initiative Status You can change an initiative's status directly from the list — no need to open the detail page. Click the status badge in the **Status** column to open a picker, then select the new status. The change takes effect immediately. ## Creating an Initiative 1. From the Initiatives list, click **New Initiative**. 2. Enter a title and, optionally, a **goal** — a one-line statement describing the desired outcome. 3. A detail page opens in an empty state. 4. Click **Generate with AI** to open the generation modal. 5. Enter a topic or project description (e.g., "Improve the onboarding flow for enterprise customers"). 6. Click **Generate** — Deck's AI agents will analyze your feedback data and write the initiative for you. While generation is running you'll see a live **Generating** state that shows each step the AI pipeline is taking (gathering evidence, synthesizing themes, writing the overview, etc.). ### Creating from an opportunity You can also create an initiative directly from an opportunity in **Build → Opportunity Backlog**: 1. Open an opportunity detail page. 2. Click the **⋯** menu in the top-right. 3. Select **Create Initiative**. 4. Deck opens the same initiative dialog with the title and goal pre-filled from the opportunity so you can edit before saving. When you create the initiative this way, Deck also links it back to the original opportunity so it appears in that opportunity's **Related Initiatives** menu. ## Initiative Structure Each initiative has a **Goal** field at the top and three content tabs: | | | | ---------------- | ------------------------------------------------------------------------------------------------- | | **Goal** | One-line statement of the desired outcome. Click to edit inline — it saves automatically | | **Overview tab** | Rich-text document describing the initiative: context, problem statement, and recommended actions | | **Evidence tab** | Supporting feedback data: relevant insights, quotes, and subthemes surfaced from your org's data | | **Outcomes tab** | Track the results after shipping (for future use) | ## Editing Initiative Content Both the Overview and Evidence tabs use a rich-text editor built on **Plate.js**. You can: * Format text with headings, bold, italic, lists, and code blocks * Insert links, media, and callouts * Use `/` (slash commands) to insert blocks * Drag and drop blocks to reorder content Content **saves automatically** as you type. A small status indicator in the header shows when a save is in progress or has completed. If a save fails, the indicator alerts you so you can retry. ## Deleting an Initiative Open the initiative detail page, click the **⋯** menu in the top-right corner, and select **Delete**. You'll be asked to confirm before the initiative is permanently removed. ## Initiative Statuses | Status | Meaning | | ---------------- | -------------------------------------------------------------------- | | **Draft** | Newly created initiative — not yet ready to share or act on | | **Exploring** | Still gathering data and refining the scope | | **Building** | Actively in development | | **Ready to Act** | Initiative is defined and prioritized — ready for your team to start | | **Completed** | Shipped or resolved | | **Archived** | No longer active; hidden from the default list view | ## How AI Generation Works When you trigger AI generation, Deck runs a multi-phase pipeline: 1. **Evidence discovery** — Deck expands your topic into multiple search queries and retrieves relevant data across all your feedback sources: insights, themes, subthemes, NPS verbatims, support tickets, and customer segments. This phase is fully deterministic — no AI tokens are consumed, so it completes in seconds. 2. **Deep exploration** — An AI agent explores your feedback data further using the initial discovery as a guide. It searches with natural customer-language queries, drills into relevant themes, and iterates across your data to gather comprehensive evidence before writing begins. 3. **Content generation** — The collected evidence is synthesized into structured content for the Overview (strategic narrative) and Evidence (supporting data) tabs. ### Segment-scoped generation If an initiative has one or more **segments** assigned, AI generation automatically scopes its evidence gathering to those segments. This means the generated content reflects feedback specifically from your target customer groups rather than your entire user base. The generated content reflects the actual feedback data in your Deck workspace at the time of generation. You can regenerate at any time to refresh the analysis. # NPS Score (/docs/features/nps-score) # NPS Score Deck automatically detects and analyzes Net Promoter Score (NPS) feedback from your customer conversations, giving you insights into customer satisfaction trends. ## What is NPS? Net Promoter Score is a customer satisfaction metric measured on a 0-10 scale. Respondents are classified into three categories: * **Promoters (9-10)**: Loyal enthusiasts who fuel growth * **Passives (7-8)**: Satisfied but unenthusiastic customers * **Detractors (0-6)**: Unhappy customers who can damage your brand Your NPS score is calculated as: `% Promoters - % Detractors` (ranging from -100 to +100). ## How It Works Deck automatically: 1. **Detects NPS feedback** from your integrated channels (Slack, surveys, customer conversations) 2. **Extracts scores, reasons, and concise response titles** using AI to identify NPS responses in free-form text 3. **Links to themes** by connecting feedback to product themes you're tracking 4. **Generates insights** with weekly AI synthesis of trends, patterns, and actionable recommendations ## Enabling NPS Analysis NPS analysis is automatically enabled when Deck first detects NPS feedback in your organization. You can also manually enable it in **Settings → Organization → NPS Score Analysis**. When enabled, NPS feedback receives specialized analysis. When disabled, it's processed as regular insights. ## Viewing Your NPS Dashboard Navigate to **Visualize → NPS Score** to access your NPS dashboard with these sections: ### Summary * Overall NPS score and trend * Response distribution (Promoters, Passives, Detractors) * NPS over time chart with rolling 30-day windows * Key insights on converting Passives to Promoters and winning back Detractors ### Respondent Analysis * Detailed breakdown by respondent type * Score distributions within each category (shown only when synthesis data is available) * Trending themes for each group ### Detractors, Passives, and Promoters Dedicated views for each respondent type showing: * Percentage trends over time * Top themes and concerns * Individual feedback responses * AI-generated insights specific to that group When synthesis is still processing, you'll see a "NPS Synthesis In Progress" message. Synthesis runs weekly, with results typically available on Monday. ## NPS Over Time Tracking The NPS over time chart shows how your customer satisfaction evolves with: * **Rolling 30-day windows** - Each data point represents your NPS score calculated from responses in the prior 30 days * **7-day intervals** - New data points every 7 days for trend clarity * **3-month history** - Default view shows the last 90 days of rolling scores * **Automatic date handling** - Uses response dates when available, falling back to submission dates This rolling window approach smooths out daily fluctuations and reveals meaningful trends in customer satisfaction over time. ## Filtering Your Data Use the filters at the top of the NPS dashboard to focus on specific subsets of your data: ### Date Range * Last 7, 30, or 90 days * All time ### Segment Filter If you have [Customer Segments](/features/segments) set up, a **Segment** filter lets you view NPS data for a specific customer cohort (e.g., Enterprise, SMB, or Free users). Comparing NPS scores across segments reveals which customer tiers are most satisfied and where to focus improvement efforts. ## Linking NPS to Accounts When NPS responses include email addresses or names, Deck automatically links them to your customer accounts from Salesforce, HubSpot, or other CRM integrations. This enables: * Filtering by customer segment * Tracking individual customer satisfaction over time * Connecting feedback to account attributes ## NPS Sources Deck can detect NPS feedback from: * **PostHog** - Automatically sync and analyze NPS survey responses from PostHog * **Slack messages** - When customers share NPS scores in synced channels * **CSV uploads** - Import existing NPS survey results * **Survey tools** - Typeform, SurveyMonkey, Qualtrics, Hotjar, Sprig, Fillout * **Custom integrations** - API imports from your own systems ### PostHog NPS Integration When you connect PostHog and sync surveys containing NPS questions (0-10 scale), Deck automatically: * **Detects NPS questions** using both explicit question types and smart pattern recognition * **Imports scores and feedback** - Both the numeric score (0-10) and any follow-up text responses * **Classifies respondents** - Automatically categorizes as Promoters (9-10), Passives (7-8), or Detractors (0-6) * **Calculates NPS** - Your NPS score is calculated from PostHog survey data * **Processes feedback** - Follow-up text responses are analyzed by AI to extract themes and insights * **Includes in dashboards** - PostHog responses appear in all NPS visualizations and insights * **Enables auto-sync** - New responses are continuously imported and analyzed **Automatic NPS Detection:** Deck uses two methods to identify NPS questions in PostHog surveys: 1. **Explicit detection** - Questions with type "NPS" are automatically recognized 2. **Pattern-based detection** - Rating-scale questions are analyzed for NPS indicators in the survey name or question text (e.g., "How likely are you to recommend", "Net Promoter Score") No configuration needed - just sync your PostHog surveys and Deck handles the rest. Learn more about setting up PostHog in the [PostHog Integration](/integrations/posthog) guide. ## Weekly Synthesis Deck automatically generates weekly NPS synthesis reports that include: * Overall score trends and changes * Top themes by respondent type * Insights on what differentiates Promoters from Passives * Recommendations for addressing Detractor concerns * Score breakdowns and distributions These synthesis results power the visualizations in your NPS dashboard. ## Best Practices 1. **Enable early** - Turn on NPS analysis as soon as you start collecting NPS data 2. **Review weekly** - Check your dashboard regularly to catch trends early 3. **Focus on Passives** - Converting Passives to Promoters has the biggest NPS impact 4. **Link to actions** - Use Detractor themes to prioritize product improvements 5. **Track over time** - Use date filters to understand seasonal patterns and measure improvements # Opportunity Backlog (/docs/features/opportunity-backlog) # Opportunity Backlog Opportunity Backlog is a feature in the **Build** section that turns synthesized customer feedback into a ranked list of product opportunities. Deck groups opportunities into four categories so teams can review where to act next: * **Pain Points** * **Feature Requests** * **Usability Issues** * **Bugs & Errors** ## Accessing the backlog Navigate to **Build → Opportunity Backlog** in the sidebar. When you click **Build** in the environment switcher, Deck now opens the Opportunity Backlog first so you land directly on the ranked list of product opportunities. If your organization does not have a backlog snapshot yet, the page shows an empty state until the backlog pipeline runs. ## Backlog list The main backlog page shows a table of ranked opportunities for the active category tab. Each row includes: * **Rank** — the relative priority inside the current category * **Opportunity** — title and short description * **Impact** — a normalized impact score * **Sentiment** — whether the underlying evidence skews positive or negative * **Insights** — how many insights support the opportunity * **Contacts** — linked customer count when a CRM integration is connected * **Trend** — whether the signal is rising, falling, or flat You can click table headers to sort the list. When segments are enabled for your org, you can also assign a segment inline from the backlog table to scope an opportunity to a specific customer group. ## Opportunity detail Click any opportunity to open its detail page. The detail view is split into two tabs: | Tab | What it shows | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Overview** | Executive-brief summary, impact and sentiment metrics, a monthly sentiment timeline from linked insights, an insight sentiment breakdown, segment scope, and AI-authored narrative | | **Insights & Subthemes** | The supporting evidence behind the opportunity, including linked insights and related subtheme context | The overview page is designed to help you make a quick prioritization decision without having to manually cross-reference multiple reports. ### Sentiment signals in the Overview tab * **Sentiment Over Time** groups linked sentiment-tagged insights by month so you can see whether the opportunity is being driven by positive, neutral, or negative feedback over time. * **Insight Sentiment Breakdown** summarizes the same evidence as a quick positive/neutral/negative distribution. * If an opportunity does not have any sentiment-tagged linked insights yet, Deck shows an empty state instead of estimating a trend. ## Opportunity actions Each opportunity detail page has a **⋯** menu with three actions: | Action | What it does | | ----------------------- | ------------------------------------------------------------------------------------- | | **Related Initiatives** | Shows initiatives already linked to this opportunity | | **Create Initiative** | Opens the initiative creation dialog with the opportunity's title and goal pre-filled | | **Archive Opportunity** | Soft-archives the opportunity so it no longer appears in the default backlog views | Archiving removes the opportunity from the normal backlog list and detail navigation, but it does not delete the underlying record. ## Turning opportunities into initiatives The fastest way to move from evidence to execution is to create an initiative directly from an opportunity: 1. Open the opportunity detail page. 2. Choose **Create Initiative** from the action menu. 3. Review the pre-filled title and goal. 4. Save the initiative. Deck links the newly created initiative back to the opportunity automatically, so the opportunity's **Related Initiatives** submenu stays up to date. ## When the backlog updates The opportunity backlog is generated from Deck's background analysis pipeline rather than from manual row entry. New opportunities appear after the backlog job runs and writes a fresh snapshot for your organization. # Customer Segments (/docs/features/segments) # Customer Segments Customer Segments let you group customers into named cohorts — such as "Enterprise," "SMB," or "Churned" — and then filter all of Deck's analytics by those segments. This makes it easy to compare how different customer groups experience your product and where each group's feedback is trending. ## How Segments Work Each segment is a named group with an optional color and a set of rules that determine which contacts belong to it. Deck automatically classifies contacts and insights into the correct segments using a combination of: 1. **Rule-based assignment** — contacts are matched by attributes such as email domain, company name, or plan type 2. **AI classification** — when no rule matches, an LLM classifier reads the content of an insight and assigns the most appropriate segment 3. **Manual assignment** — you can assign a segment directly from any insight detail view Once a contact is in a segment, all of their insights inherit that segment, so filtering is always consistent. ## Creating a Segment 1. Go to **Settings → Segments** 2. Click **New Segment** 3. Enter a name and choose a color 4. Optionally add rules (see below) 5. Click **Save** Your new segment is immediately available as a filter across the app. Segment names must be unique within your organization. If a name is already in use, Deck asks you to choose a different one before saving. The same rule applies when you rename an existing segment. ## Segment Rules Rules let you automatically assign contacts to a segment without any manual work. Each rule targets one attribute and one value: | Rule type | Example | | ---------------------------- | ----------------------------------------------------------------------- | | Email domain | `@enterprise-corp.com` | | Company name | `Acme Inc` | | Plan | `enterprise` | | Integration source | All feedback from Zendesk, Intercom, or Slack | | Integration tags | Intercom or Zendesk conversations tagged `vip` | | Integration custom attribute | Zendesk or Intercom ticket field — e.g., `customer_tier` = `enterprise` | | Slack channel | Feedback from a specific Slack channel | You can add multiple rules to a segment. A contact is placed in the segment if **any** rule matches. After saving a new rule, Deck can retroactively apply it to your existing contacts — just confirm when prompted. ### Integration Rules Integration rules match feedback based on where it came from and properties of the source ticket or conversation. * **Source only** — match all feedback from a given integration (e.g., all Zendesk tickets). * **Tags** — match Zendesk or Intercom tickets that carry a specific tag (e.g., `enterprise`, `billing`). * **Custom attributes** — match Zendesk or Intercom tickets where a custom field equals a specific value (e.g., `customer_tier` = `Gold`). Custom attribute keys and values are matched case-insensitively. * **Slack channels** — match Slack messages from a specific channel (e.g., `#vip-customers`). When you save an integration rule that uses tags or custom attributes, Deck can backfill existing tickets by fetching the latest metadata from the source integration before re-evaluating the rule. ## Segment Analytics Navigate to **Settings → Segments** to see a cross-segment view of your feedback: * **Overview cards** — total insights, average NPS, and top themes per segment * **Trend chart** — how each segment's feedback volume changes over time * **Comparison chart** — side-by-side NPS or theme breakdown across segments Use the date range picker to focus on a specific period. ## Filtering by Segment A **Segment** filter appears at the top of: * Themes * Categories * Insights Hub * NPS Score * Theme detail pages Select one or more segments to narrow every view to that audience. Your selection is reflected in the URL so you can share filtered views with teammates. ## Segment Assignment on Upload When uploading a CSV or user interview, you can assign a default segment during the upload wizard. Any insights created from that upload will inherit the selected segment. Similarly, PostHog survey integrations let you specify a segment so all responses from that survey are pre-classified. ## Managing Segments From **Settings → Segments** you can: * **Edit** a segment's name, color, or rules * **Delete** a segment — deleting removes the segment and all assignments; contacts and insights are not deleted ## Best Practices 1. **Start broad** — create segments that match your highest-level customer tiers (e.g., Free, Pro, Enterprise) before adding finer-grained ones 2. **Use email domain rules** — for B2B customers this is the most reliable automatic classifier 3. **Review unassigned insights** — after setting up segments, check if there are insights with no segment and add rules to capture them automatically 4. **Compare NPS by segment** — the segment comparison chart quickly reveals which customer tier is driving promoter or detractor trends # Surveys (/docs/feedback-methods/surveys) # Survey Analysis Deck automatically imports and analyzes survey responses from integrated platforms, extracting structured insights from both free-text and structured responses. ## Supported Survey Platforms * **PostHog** - In-app product surveys and NPS tracking * More survey platforms coming soon ## Question Types Supported Deck recognizes and processes these question types: ### Free-Text Questions * **Open-ended responses** - AI extracts insights, sentiment, and themes * **Comment boxes** - Follow-up explanations and detailed feedback * **"Why?" questions** - Reasoning behind ratings or choices ### Structured Questions * **NPS (Net Promoter Score)** - 0-10 likelihood-to-recommend scale * **Rating scales** - 1-5 stars, 1-10 scales, emoji ratings * **CSAT (Customer Satisfaction)** - Satisfaction ratings * **CES (Customer Effort Score)** - Effort ratings * **Single choice** - Radio button selections * **Multiple choice** - Checkbox selections * **Yes/No** - Boolean questions * **Dropdown** - Select from options ## How Survey Analysis Works ### 1. Automatic Import When you connect a survey platform, Deck: * Syncs survey definitions and questions * Imports all responses with timestamps * Matches respondents to customer accounts when email addresses are available ### 2. AI-Powered Free-Text Analysis For open-ended questions, Deck's AI: * **Extracts insights** from responses containing substantive feedback (10+ meaningful words) * **Skips generic responses** like "N/A", "good", "fine", or empty answers * **Preserves verbatim quotes** from the original response * **Detects sentiment** (positive, negative, neutral) * **Assigns themes** from your existing theme library * **Categorizes feedback** as pain points, feature requests, delights, usability issues, or bugs * **Creates new themes** when responses cover topics not in your theme library ### 3. Structured Data Processing For rating, selection, and numeric questions: * Values are stored as queryable structured insights * Connected to customer accounts for segmentation analysis * Available for filtering and trend analysis * Grouped by survey question or matched to an existing theme when there is a clear fit ### 4. Multi-Question Context When a survey has multiple questions: * Each answer is processed individually * Responses are kept together by respondent for context * Free-text follow-ups to rating questions are linked ## Using Survey Insights ### View All Survey Responses Access survey data through your integration management page (e.g., **Manage → PostHog**): * Browse all responses by survey * Filter by date range, respondent, or sentiment * Search for specific feedback topics * View response trends over time ### Filter by Question Type Narrow down to specific question types: * View all NPS responses together * See rating scale trends * Analyze free-text feedback separately * Compare structured vs. qualitative data ### Connect to Themes Survey insights are automatically linked to your theme library: * See which global themes appear most in open-ended survey responses * Track theme sentiment across surveys * Identify emerging patterns in feedback * Compare open-ended survey themes to other feedback sources Structured survey questions are kept in survey context so a rating prompt or multiple-choice dimension does not clutter your global theme library. ### Segment by Customer When respondents are matched to accounts: * Filter responses by customer segment * Analyze feedback from specific account tiers * Track sentiment by customer type * Connect survey data to CRM attributes (via Salesforce integration) ## Best Practices ### Survey Design * **Mix question types** - Combine ratings with follow-up "why?" questions for rich insights * **Keep it short** - Shorter surveys get more completion, more data to analyze * **Ask "why?"** - Follow up structured questions with free-text to capture reasoning ### Analysis Tips * **Review AI extractions** - Check that insights accurately represent responses * **Refine themes** - Update theme descriptions to improve AI matching * **Track over time** - Compare survey responses across time periods * **Combine sources** - Cross-reference survey insights with user interviews and support tickets ### Respondent Matching To enable customer account matching: * Collect email addresses in your surveys when possible * Ensure email addresses match those in your CRM (Salesforce, HubSpot, etc.) * Deck will automatically link responses to accounts ## Privacy and Data Handling * Survey responses are encrypted in transit and at rest * Only authorized team members can access survey data * AI analysis happens in secure, isolated environments * Verbatim quotes are preserved exactly as written * Respondent PII is only stored when explicitly collected in surveys # Gmail (/docs/integrations/gmail) # Gmail Integration Connect Gmail to automatically pull customer emails into Deck and extract product insights using AI. Once connected, Deck can read messages from your inbox (filtered by label), identify feedback, and synthesize it alongside your other feedback sources. ## What Gets Synced When you connect Gmail to Deck, you can sync: * **Messages** — Emails from your Gmail inbox, optionally filtered by label * **Labels** — Your existing Gmail labels, used to scope which messages Deck reads ## Setting Up the Integration 1. Navigate to **Settings → Integrations** 2. Find **Gmail** in the available integrations 3. Click **Connect** and authorize Deck to access your Gmail account via Google OAuth 4. Once connected, you can trigger an initial sync or wait for the scheduled sync to run ## Filtering by Label Rather than importing your entire inbox, you can point Deck at a specific Gmail label — for example, a label called "User Feedback" that you apply to relevant customer emails. Deck will only process messages that carry that label. To use label filtering: 1. Create a label in Gmail (e.g., `User Feedback`) 2. Apply that label to emails you want Deck to analyze 3. In **Settings → Integrations → Gmail**, select the label from the dropdown Deck can also create a new label for you directly from the integration settings page. ## How the Sync Works 1. **Fetch messages** — Deck retrieves emails from Gmail (filtered by label if configured) 2. **Extract content** — Email body and metadata are extracted from each message 3. **AI analysis** — The feedback synthesis pipeline identifies insights, themes, and customer signals 4. **Link to contacts** — Insights are associated with the sender's contact profile The sync runs asynchronously — after you trigger it, processing continues in the background and new insights appear in your workspace as they are generated. ## Triggering a Sync You can manually trigger a Gmail sync at any time: 1. Go to **Settings → Integrations → Gmail** 2. Click **Sync Now** Deck will fetch the latest messages and process them through the AI pipeline. ## Managing the Integration From **Settings → Integrations → Gmail** you can: * View connection status * Select or create a label to filter messages * Trigger a manual sync * Disconnect the integration ## Privacy and Security Deck uses Google's secure OAuth flow for authentication. We only read the messages and labels you authorize — we do not send emails or modify your Gmail account in any way. All data is encrypted in transit and at rest, and is scoped exclusively to your organization. # Gong (/docs/integrations/gong) # Gong Integration Connect Gong to automatically analyze sales calls and customer conversations for product insights. ## What Gets Synced When you connect Gong to Deck, we sync: * **Calls** - Recorded sales and customer calls * **Transcripts** - Automatic transcriptions from Gong ## Setting Up the Integration 1. Navigate to **Settings → Integrations** 2. Find **Gong** in the available integrations 3. Click **Connect** and authorize Deck to access your Gong workspace 4. Choose which calls to sync (all calls or specific filters) ## How It Works Once connected, Deck: 1. **Fetches call recordings and transcripts** from Gong 2. **Analyzes conversations** to extract product feedback and customer insights 3. **Identifies patterns** across sales calls 4. **Links to themes** to track feature requests and pain points ## Use Cases * **Sales call analysis** - Extract product feedback from prospect conversations * **Win/loss insights** - Understand why deals are won or lost * **Feature request tracking** - Identify most requested features from sales calls * **Competitive intelligence** - Surface competitor mentions and comparisons * **Objection handling** - Understand common objections and concerns ## Managing the Integration Manage your Gong integration in **Settings → Integrations → Gong**: * View sync status * Configure call filters * Disconnect the integration ## Privacy and Security Deck uses Gong's secure API for data access. We only analyze calls you authorize and use the data solely to generate insights for your team. # Granola (/docs/integrations/granola) # Granola Integration Connect Granola to automatically import your meeting notes and transcripts into Deck, so every customer conversation generates product insights without any manual effort. ## What Gets Imported When you connect Granola to Deck, we import: * **Meeting notes** — Granola's AI-enhanced notes from your meetings * **Transcripts** — Full transcripts associated with each meeting document ## Setting Up the Integration 1. Navigate to **Settings → Integrations** 2. Find **Granola** in the available integrations 3. Click **Connect** 4. In Granola, go to **Settings → API** and generate a new API key 5. Paste your Granola API key when prompted 6. Click **Save** — Deck will verify the connection and activate the integration ## How It Works Once connected, Deck: 1. **Fetches your meeting documents** from Granola, including notes and transcripts 2. **Analyzes conversations** to extract product feedback, feature requests, and customer pain points 3. **Links insights to themes** so patterns across meetings are automatically grouped 4. **Associates feedback with contacts** when customer emails are present in your notes ## Use Cases * **Customer call analysis** — Extract actionable insights from every customer-facing meeting * **Internal research synthesis** — Surface patterns from user research sessions captured in Granola * **Feature request tracking** — Automatically identify and group feature requests mentioned in meetings * **Pain point discovery** — Find recurring frustrations across customer conversations ## Managing the Integration Manage your Granola integration from **Settings → Integrations → Granola**: * View connection status and last sync time * Trigger a manual sync to import the latest documents * Disconnect the integration ## Privacy and Security Deck accesses your Granola data using your personal API key. Only documents available under your Granola account are imported. Your API key is stored securely and never exposed to the frontend. # Intercom (/docs/integrations/intercom) # Intercom Integration Connect Intercom to automatically analyze customer support conversations for product insights using AI. ## What Gets Synced When you connect Intercom to Deck, we sync: * **Conversations** - Customer support conversations with full message history * **Contacts** - Customer contact information for linking insights to accounts * **Tags** - Conversation tags for better categorization * **Custom attributes** - Ticket custom fields (e.g., `customer_tier`, `plan`) used for segment rule matching ## Setting Up the Integration > **Plan requirement:** Intercom requires the **Business plan or above**. If your workspace is on Free or Starter, the integration page shows an upgrade prompt instead of the connect or reconnect action. 1. Navigate to **Settings → Integrations** 2. Find **Intercom** in the available integrations 3. Click **Connect** and authorize Deck to access your Intercom workspace 4. Configure your sync settings: * **Sync Frequency** - Choose how often to sync (hourly, daily, weekly) * **Auto-sync** - Enable automatic background syncing * **Contact Sync** - Choose whether to import customer contact profiles (see below) ## How It Works Once connected, Deck automatically: 1. **Retrieves conversations** from your Intercom workspace based on your sync schedule 2. **Filters for relevance** - Uses AI to skip spam or empty noise while still analyzing support conversations that may reveal product friction, education gaps, or repeated support demand 3. **Analyzes messages** - Extracts customer pain points, feature requests, and issues 4. **Links to contacts** - Associates insights with customer profiles 5. **Generates insights** - AI synthesis pipeline creates structured insights with: * Customer quotes (verbatim from conversations) * Identified themes * Confidence scores * Quality assessments ## Automated Sync Your Intercom conversations sync automatically based on your settings: * **Hourly** - Syncs new conversations every hour * **Daily** - Syncs once per day * **Weekly** - Syncs once per week You can also manually trigger a sync at any time from the integration settings page. ### First-Time Sync When you first connect Intercom, Deck performs a comprehensive initial sync: * **Automatically fetches the last 90 days** of conversation history * **Processes conversations in batches** to respect API rate limits * **Syncs incrementally** - future syncs only fetch new or updated conversations * **Rate-limited** - Batches are processed with delays to prevent API throttling * **Real-time status** - A syncing banner appears on the integration page showing progress while conversations are being imported The sync starts **immediately** after you connect your account (no waiting for scheduled syncs), and you'll see a "Syncing conversations..." banner with a loading indicator while the import is in progress. This ensures you have historical context from recent conversations without overwhelming your Intercom API limits. ## Viewing Imported Conversations See all imported conversations in **Settings → Integrations → Intercom**: * View conversation count and sync status * See when conversations were last synced * Monitor processing status for each conversation ## AI Synthesis Pipeline Each conversation goes through a 4-stage AI synthesis pipeline: 1. **Relevance Classification** - Filters out spam or empty noise and generates a concise, descriptive title for each conversation. Routine support or resolved questions may continue when they reveal customer friction, education gaps, or repeated support demand 2. **Ticket Analysis** - Understands customer context, frustration levels, and key moments 3. **Insight Synthesis** - Extracts insights, quotes, and themes using Claude Sonnet 4. **Quality Review** - Validates quotes, assigns confidence scores, filters low-quality insights Only high-quality insights with verified customer quotes are surfaced in your Deck workspace. ### Automatic Conversation Titles When Intercom sends a conversation with a generic title like "New conversation" or no subject at all, Deck automatically generates a descriptive title during AI processing — for example, "Export feature broken after latest update" or "Unable to find integrations in navigation". This makes it easier to identify conversations at a glance in your Deck workspace. ## Segment Rules You can use Intercom as the basis for segment rules in **Settings → Segments**: * **Source** — assign all Intercom conversations to a segment automatically * **Tags** — match conversations that carry a specific Intercom tag (e.g., `enterprise`, `vip`) * **Custom attributes** — match conversations where a ticket custom field equals a specific value (e.g., `customer_tier` = `Gold`); key and value are matched case-insensitively When you create or update a rule that uses tags or custom attributes, Deck fetches the latest metadata from Intercom before re-evaluating existing conversations. ## Use Cases * **Support pattern analysis** - Identify recurring issues across conversations * **Feature request tracking** - Surface feature requests from customer messages * **Bug detection** - Identify bugs mentioned in support conversations * **Customer sentiment** - Understand frustration levels and satisfaction * **Product gaps** - Discover where customers struggle with your product * **CRM linking** - Connect insights to customer accounts in your CRM ## Contact Sync Deck can automatically import customer contact profiles from your Intercom conversations and link them to insights. This makes it easy to see which customers are behind specific feedback. **To enable contact sync:** 1. Go to **Settings → Integrations → Intercom** 2. Find the **Contact Sync** card 3. Toggle **Sync Contacts** on When enabled, Deck fetches full contact details from Intercom for each conversation it processes — name, email, phone, and company — and stores them in your Deck contacts. > **Plan requirement:** Contact syncing requires the **Starter plan or above**. If you're on the free plan, the toggle is disabled. You can upgrade in **Settings → Billing**. When contact sync is **off**, Deck still processes and analyzes conversations for insights — it just won't import or link contact profiles. ## Managing the Integration Manage your Intercom integration in **Settings → Integrations → Intercom**: * View imported conversations * Adjust sync frequency and settings * Enable or disable contact sync * Monitor sync job status * Disconnect the integration ## Privacy and Security Deck uses Intercom's secure OAuth for authentication. We only access conversations you authorize and process them solely for insight generation. Customer data is encrypted in transit and at rest. ### Email Redaction When viewing imported conversations in Deck, customer email addresses are automatically redacted for privacy. Only the first character and the domain are shown — for example, `john@example.com` appears as `j***@example.com`. This applies to both message authors and conversation requesters displayed in the conversation thread view. # Model Context Protocol (MCP) (/docs/integrations/mcp) # Model Context Protocol (MCP) Integration The Model Context Protocol (MCP) integration allows you to connect AI assistants and code editors to your Deck organization's customer feedback data. This enables your AI tools to access insights, themes, feedback, and scoped Build workflows directly during conversations or while coding. **Supported clients**: Claude Desktop, Claude Code, ChatGPT, Cursor, VS Code, Windsurf, Zed, Codex, and v0 by Vercel. ## What is MCP? Model Context Protocol is an open standard introduced by Anthropic that enables AI assistants to securely connect to external data sources. MCP provides a universal interface for AI systems to read data, execute functions, and handle contextual prompts. The protocol has been adopted by major AI providers including OpenAI and is now managed by the Agentic AI Foundation under the Linux Foundation. Deck's MCP server provides a secure OAuth interface for AI assistants to query your customer feedback data and execute bounded Build actions that you explicitly request. ## Features The Deck MCP server provides 14 intent-based tools that give AI assistants access to your feedback data and selected Build actions: ### Overview & Context * **get\_overview** - Get a complete snapshot of your feedback landscape: organization context, data counts, top themes, and recent activity. When your organization has customer segments enabled, also returns the list of available segments so the AI can offer segment-filtered analysis. * **get\_user\_context** - Identify who is connected so the AI can personalize its responses. * **select\_organization** - Choose which Deck organization the AI should use when your account belongs to more than one organization. ### Themes & Subthemes * **explore\_themes** - Browse all feedback themes or drill into a specific theme to see sentiment breakdowns, category distributions, and associated insights. When your organization uses customer segments, you can scope a theme's stats and insights to a specific segment to see how that audience perceives a given topic. * **explore\_subthemes** - Explore AI-detected subthemes (subthemes) within your feedback. List all subthemes across themes, filter by a specific theme or customer segment, or drill into a single pattern to see its synthesis narrative, key quotes, sentiment timeline, and related subthemes. ### Insights & Search * **explore\_insights** - Search for specific feedback by keyword, browse recent insights by time window (e.g., last 24 hours or last 7 days), filter by sentiment or category, or get full details on a specific insight including quotes and video snippets. Supports filtering by customer segment across all modes. ### Transcripts & Sources * **read\_transcript** - Read the full original conversation behind any feedback source, including speaker segments, timestamps, and all insights extracted from it. Works for interviews, sales calls, support tickets, surveys, and app reviews. * **list\_sources** - See all feedback sources in your organization, filtered by type or processing status. ### NPS Analysis * **explore\_nps** - Deep-dive into your Net Promoter Score data. Get an overall summary, drill into promoters, passives, or detractors, explore score trends over time, get AI-generated recommendations for improvement, or look up a specific NPS response by ID. NPS analysis and subtheme exploration through MCP require a Starter plan or higher. If your organization is on the Free plan, the AI receives a guidance response instead of a broken tool error, so it can suggest themes, insights, transcripts, sources, or overview tools as alternatives. ### Build Workflows * **explore\_build\_initiatives** - List active or completed initiatives, or open one initiative by name or ID. * **explore\_opportunity\_backlog** - Review the current opportunity backlog or open a specific opportunity with evidence and linked initiatives. * **mutate\_initiative\_build** - Create an initiative, update its title or goal, change status, update strategy sections, or assign customer segments. * **mutate\_opportunity\_build** - Archive an opportunity, assign segments, link an initiative, or create an initiative from an opportunity. Mutation tools are intentionally narrow. They do not generate backlog stories, delete arbitrary records, or perform broad admin changes. ## Setup ### Prerequisites * A Deck account with feedback data * Organization admin access (to configure MCP settings) * One of the following AI assistants: * Claude Desktop (macOS or Windows) * Claude Code (CLI) * ChatGPT Plus, Pro, Business, Enterprise, or Education (with Developer Mode) * Cursor * Visual Studio Code * Windsurf * Zed * Codex (OpenAI) * v0 by Vercel ### Step 1: Enable MCP Access for Your Organization Organization admins must first enable MCP access: 1. Navigate to **Settings → MCP** in your Deck organization 2. Toggle **Enable MCP Access** to on 3. Select which roles can connect via MCP: * **Admins** - Organization administrators * **Members** - Regular organization members 4. Click **Save Changes** ### Step 2: Configure Your AI Assistant Choose the setup instructions for your preferred AI assistant below. *** ## Claude Desktop Add the following to your MCP configuration file: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` ```json { "mcpServers": { "deck": { "command": "npx", "args": ["-y", "mcp-remote@latest", "https://mcp.getdeck.io/mcp"] } } } ``` After saving the configuration: 1. Restart Claude Desktop completely 2. Claude will automatically detect the OAuth configuration from Deck's MCP server 3. Follow the Clerk OAuth flow to sign in to your Deck account 4. Grant access to the MCP integration 5. The connection will automatically use your default organization **Verify Connection**: Look for the MCP server indicator (hammer icon) in the bottom-right corner of the input box. Click it to view available Deck tools. *** ## Claude Code Claude Code supports MCP servers via CLI commands. Use the following to connect to Deck: ### Add the Deck MCP Server ```bash # Add Deck MCP server (stored locally by default) claude mcp add --transport http deck https://mcp.getdeck.io/mcp ``` ### Authenticate Once added, authenticate within Claude Code: ```bash # Start Claude Code claude # Open MCP management > /mcp # Follow the browser prompts to login with your Deck account ``` ### Installation Scopes You can configure the scope of your MCP installation: ```bash # Local scope (default) - private to you, stored in ~/.claude.json claude mcp add --transport http deck https://mcp.getdeck.io/mcp # Project scope - shared with team via .mcp.json file claude mcp add --transport http deck --scope project https://mcp.getdeck.io/mcp # User scope - cross-project, personal configuration claude mcp add --transport http deck --scope user https://mcp.getdeck.io/mcp ``` ### Management Commands ```bash # List all configured MCP servers claude mcp list # Get details for Deck server claude mcp get deck # Remove the Deck server claude mcp remove deck # Check server status (within Claude Code) > /mcp ``` *** ## ChatGPT ChatGPT supports MCP servers through the Connectors feature in Developer Mode. ### Prerequisites * ChatGPT Plus, Pro, Business, Enterprise, or Education subscription * Developer Mode enabled ### Enable Developer Mode 1. Open ChatGPT settings 2. Navigate to **Apps & Connectors → Advanced settings** 3. Enable **Developer mode** Note: For Business/Enterprise workspaces, an admin must first enable Developer Mode in **Workspace Settings → Permissions & Roles**. ### Add Deck Connector 1. Go to **Settings → Apps & Connectors** 2. Click **Create** under Connectors 3. Enter the following details: * **Name**: Deck Customer Feedback * **Description**: Access customer insights, themes, and feedback from Deck * **MCP Server URL**: `https://mcp.getdeck.io/mcp` * **Authentication mode**: OAuth 4. Select **"I trust this application"** to confirm 5. Click **Create** 6. Complete the Clerk OAuth login flow when prompted ### How ChatGPT Connects ChatGPT uses OAuth 2.1 with PKCE (Proof Key for Code Exchange) and Dynamic Client Registration: 1. ChatGPT queries Deck's OAuth discovery endpoint 2. Registers dynamically as an OAuth client 3. Initiates Authorization Code + PKCE flow 4. You authenticate with your Deck credentials 5. Access tokens are attached to all subsequent MCP requests ### Limitations * **OAuth only** - API key authentication is not supported * **No machine-to-machine grants** - Client credentials and service accounts are not supported * **HTTPS required** - ChatGPT only connects to secure endpoints *** ## Cursor Cursor has built-in MCP support. You can add Deck using either the quick install or manual configuration. ### Quick Install [Click here to install Deck in Cursor](cursor://anysphere.cursor-deeplink/mcp/install?name=Deck\&config=eyJ1cmwiOiJodHRwczovL21jcC5nZXRkZWNrLmlvL21jcCJ9) This will automatically configure Cursor with the Deck MCP server. ### Manual Configuration 1. Open Cursor Settings (`Cmd/Ctrl + ,`) 2. Navigate to **Features → MCP** 3. Click **Add new MCP server** 4. Enter the following: * **Name**: Deck * **URL**: `https://mcp.getdeck.io/mcp` 5. Save and authenticate when prompted Alternatively, you can edit your Cursor MCP configuration file directly: **macOS**: `~/.cursor/mcp.json` **Windows**: `%APPDATA%\Cursor\mcp.json` ```json { "mcpServers": { "deck": { "url": "https://mcp.getdeck.io/mcp" } } } ``` *** ## Visual Studio Code VS Code supports MCP servers through the built-in MCP extension. ### Setup 1. Open the Command Palette (`Ctrl/Cmd + Shift + P`) 2. Search for **"MCP: Add Server"** 3. Select **Command (stdio)** 4. Enter the following command: ``` npx -y mcp-remote@latest https://mcp.getdeck.io/mcp ``` 5. When prompted for a name, enter **Deck** 6. Follow the OAuth prompts to authenticate with your Deck account ### Verify Connection Open the Command Palette and run **"MCP: List Servers"** to verify Deck is connected. *** ## Windsurf Windsurf supports MCP servers through its Cascade settings. ### Setup 1. Open Windsurf Settings 2. Navigate to **Cascade → MCP servers** 3. Click **Add custom server** 4. Add the following configuration: ```json { "deck": { "command": "npx", "args": ["-y", "mcp-remote@latest", "https://mcp.getdeck.io/mcp"] } } ``` 5. Save the configuration 6. Restart Windsurf if prompted 7. Follow the OAuth prompts to authenticate with your Deck account *** ## Zed Zed supports MCP through context servers in its settings. ### Setup 1. Open Zed Settings (`Cmd + ,`) 2. Add the Deck context server to your configuration: ```json { "context_servers": { "deck": { "command": { "path": "npx", "args": ["-y", "mcp-remote@latest", "https://mcp.getdeck.io/mcp"] } } } } ``` 3. Save the settings file 4. Follow the OAuth prompts to authenticate with your Deck account *** ## Codex (OpenAI) OpenAI's Codex CLI supports MCP servers with the experimental remote MCP feature. ### Enable Remote MCP (First Time Only) If this is your first time using remote MCP in Codex, enable it in your config: Edit `~/.codex/config.toml`: ```toml [experimental] rmcp = true ``` ### Add Deck Server ```bash codex mcp add deck --url https://mcp.getdeck.io/mcp ``` ### Authenticate After adding, run Codex and follow the OAuth prompts to authenticate with your Deck account. *** ## v0 by Vercel v0 supports MCP servers through its connections settings. ### Setup 1. Open v0 Settings 2. Navigate to **Connections** 3. Click **Add Connection** or look for MCP integrations 4. Enter the Deck MCP URL: `https://mcp.getdeck.io/mcp` 5. Follow the OAuth prompts to authenticate with your Deck account Once connected, v0 can access your Deck customer feedback data when generating UI designs and code. *** ## Generic MCP Clients For any MCP-compatible tool not listed above, use these connection details: ### HTTP Transport (Recommended) **URL**: `https://mcp.getdeck.io/mcp` ### stdio Transport (via mcp-remote) **Command**: `npx` **Arguments**: `["-y", "mcp-remote@latest", "https://mcp.getdeck.io/mcp"]` Most MCP clients support one of these transport methods. Refer to your client's documentation for specific configuration instructions. *** ## Usage Examples Once connected, you can ask your AI assistant questions about your customer feedback. Here are example prompts organized by use case: ### Discovery & Overview * "Give me a summary of all customer feedback themes" * "What are the top 5 most mentioned issues this quarter?" * "How many insights do we have in each category?" ### Sentiment Analysis * "Show me all negative sentiment insights from last month" * "Compare positive vs negative feedback trends" * "Which themes have the most negative sentiment?" * "What's the overall sentiment distribution across our feedback?" ### Deep Dive Research * "Search for insights related to pricing concerns" * "What did customers say about the onboarding experience?" * "Show me the full transcript from the most recent user interview" * "Find all feedback mentioning competitor products" ### Cross-Reference Analysis * "Which feedback sources mention both 'pricing' and 'value'?" * "List all insights in the 'Feature Requests' category" * "Show me themes that appear across multiple feedback types" ### NPS & Satisfaction * "What is our current NPS score?" * "Show me what our detractors are saying" * "How has our NPS trended over the last 6 months?" * "What are the top recommendations to improve our NPS?" * "What percentage of our responses are promoters vs detractors?" ### Product Planning * "What features are customers requesting most?" * "Summarize pain points mentioned in user interviews this month" * "What do customers love most about our product?" * "Identify the top 3 issues we should prioritize fixing" ### Segment Analysis If your organization uses customer segments, the AI can break down feedback by segment: * "Show me feedback from enterprise customers only" * "What are the top themes for our SMB segment?" * "Compare sentiment between our free and paid user segments" * "Which subthemes are most common in the mobile segment?" The AI assistant will use the MCP tools to query your Deck data, suggest next steps, and perform scoped Build actions only when you ask it to. *** ## Managing Access & Connections ### Access Control (Admin Only) Organization admins can control MCP access from **Settings → MCP**: * **Enable/Disable MCP**: Toggle MCP access on or off for the entire organization * **Role-Based Access**: Choose which roles can connect: * Enable for admins only for restricted access * Enable for both admins and members for broader team access * Changes take effect immediately - users with unauthorized roles will be denied access ### Connection Analytics Admins can monitor MCP usage: * View the **Active Connections** list to see who is currently connected via MCP * Each connection shows: * User name and avatar * Last connection time * Client name (e.g., "Claude Desktop", "ChatGPT", "Cursor", "VS Code") * Use this to audit access and ensure only authorized users are connecting ### Disabling Access If MCP is disabled: * All connection attempts will be denied immediately * Existing active connections will lose access on their next request * Users will see an authorization error in their AI assistant * Re-enabling MCP restores access for authorized roles *** ## Security Deck's MCP server implements robust security measures: ### Authentication * **OAuth 2.0 / 2.1**: All connections use Clerk OAuth for secure authentication * **PKCE Support**: Proof Key for Code Exchange prevents authorization code interception attacks * **Dynamic Client Registration**: Supports RFC 7591 for clients like ChatGPT that register dynamically * **Token Management**: OAuth tokens are managed securely by Clerk with automatic refresh ### Data Protection * **Read-first design**: Most MCP tools are read-only and return links back to Deck for review * **Bounded mutations**: Build mutation tools are limited to specific initiative and opportunity actions * **Organization Scoping**: Connections are automatically scoped to your organization * **Role-Based Access**: Admins control which roles can connect via MCP ### Access Control * Sign out or revoke access at any time from the MCP server interface * Organization admins can disable MCP access instantly for all users * View active connections and audit access subthemes *** ## Troubleshooting ### Connection Issues **Server not appearing in Claude Desktop:** 1. Verify the MCP server URL is correct: `https://mcp.getdeck.io/mcp` 2. Check JSON syntax in your configuration file 3. Restart Claude Desktop completely (quit and reopen) 4. Check logs: * macOS: `~/Library/Logs/Claude/mcp*.log` * Windows: `%APPDATA%\Claude\logs` **Claude Code connection issues:** 1. Verify the server was added: `claude mcp list` 2. Try removing and re-adding: `claude mcp remove deck` then add again 3. Re-authenticate via `/mcp` command **ChatGPT connector issues:** 1. Ensure Developer Mode is enabled in settings 2. Verify you have a Plus or Pro subscription 3. Check that the MCP Server URL is exactly: `https://mcp.getdeck.io/mcp` 4. Try removing and recreating the connector **Cursor connection issues:** 1. Verify the server appears in **Settings → Features → MCP** 2. Check that the URL is exactly: `https://mcp.getdeck.io/mcp` 3. Try using the [quick install link](cursor://anysphere.cursor-deeplink/mcp/install?name=Deck\&config=eyJ1cmwiOiJodHRwczovL21jcC5nZXRkZWNrLmlvL21jcCJ9) 4. Restart Cursor and re-authenticate **VS Code connection issues:** 1. Ensure you have an MCP extension installed and enabled 2. Run **"MCP: List Servers"** from Command Palette to verify Deck is configured 3. Check that `npx` is available in your system PATH 4. Try removing and re-adding the server **Windsurf connection issues:** 1. Verify the configuration in **Cascade → MCP servers** 2. Ensure the JSON syntax is correct 3. Restart Windsurf after making configuration changes 4. Check that `npx` is available in your system PATH **Zed connection issues:** 1. Verify the `context_servers` configuration in Zed settings 2. Ensure the JSON syntax is valid 3. Check that `npx` is available in your system PATH 4. Try restarting Zed **Codex connection issues:** 1. Verify experimental rmcp is enabled in `~/.codex/config.toml` 2. Run `codex mcp list` to verify Deck is configured 3. Try removing and re-adding: `codex mcp remove deck` then add again 4. Ensure you're running a recent version of Codex ### Authorization Errors **"Access Denied" error:** * Check that MCP is enabled for your organization * Verify your role is allowed (admin or member, depending on settings) * Contact your organization admin to verify MCP settings **OAuth flow not completing:** * Ensure you're signed in to your Deck account * Try signing out of Deck and re-authorizing * Clear browser cookies and try again * Verify you belong to a Deck organization **"OAuth discovery failed" (ChatGPT):** * This may indicate a temporary server issue * Wait a few minutes and try again * Ensure your network allows connections to `mcp.getdeck.io` ### Access Control Issues If you suddenly lose access, your organization admin may have: * Disabled MCP entirely * Changed the allowed roles and your role is no longer permitted Contact your organization admin to request access restoration. *** ## Support For additional help with the MCP integration, contact the Deck support team or visit our documentation at docs.getdeck.io. # Notion (/docs/integrations/notion) # Notion Integration Connect your Notion workspace to Deck and import pages, databases, and documents directly — turning your existing research, notes, and feedback into structured insights. ## What You Can Import Deck can import any Notion content that contains customer feedback or research: * **Pages** — interview notes, user research documents, meeting summaries * **Database entries** — structured feedback logs, NPS responses, support ticket summaries * **Nested pages** — browse your full workspace hierarchy and select individual pages ## Setting Up the Integration 1. Navigate to **Settings → Integrations** 2. Find **Notion** and click **Connect** 3. Authorize Deck to access your Notion workspace 4. Select which pages and databases Deck should have access to > **Tip:** You can grant access to specific pages rather than your entire workspace. To add more pages later, return to **Settings → Integrations → Notion** and update the accessible pages. ## Importing Content Once connected, you can import Notion content from **Manage → Notion**. The import wizard walks you through four steps: ### Step 1 — Browse Browse your Notion workspace and select the pages or database entries you want to import. You can navigate nested pages and select multiple items at once. ### Step 2 — Classify Tell Deck what type of content each page contains. Deck uses this to apply the right analysis: | Content type | Best for | | ------------------- | ------------------------------------------- | | **User Interview** | Interview notes, 1:1 conversation summaries | | **Survey Response** | Structured survey answers, NPS responses | | **Support Ticket** | Customer support conversations and feedback | | **Sales Call** | Sales call notes, demo feedback | Select the content type and Deck automatically pre-fills the field mappings for you. ### Step 3 — Map Fields Review and adjust how your Notion content maps to Deck's data model: * **Participant** — who the feedback is from * **Date** — when the feedback was collected * **Content** — the main body of the feedback Drag and drop to reorder or reassign fields. ### Step 4 — Review & Import Preview the mapped data and confirm the import. Deck processes each page through the AI synthesis pipeline and generates insights, themes, and quotes. ## Viewing Your Imports After importing, each Notion page appears in the **Manage → Notion** section with: * **Status** — processing, complete, or error * **Segment** — the customer segment assigned to this import (if segments are enabled) * **Date imported** * **Delete** — remove an import if needed ### Assigning a Segment You can tag each Notion import with a customer segment so all insights from that page are automatically classified under that segment. Click the **Segment** cell for any import and select from your existing segments. This is useful when you know a Notion page contains feedback from a specific customer tier or cohort (e.g., "Enterprise interviews" or "Beta users"). Insights from Notion imports appear alongside your other feedback in **Insights** and **Themes**. ## Tips for Best Results * **Use clear page titles** — Deck uses these as the interview/document title in your workspace. * **Include speaker labels in notes** — For interview notes written in `Speaker: text` format, Deck can identify individual speakers. * **Import focused documents** — Highly structured pages (e.g. a dedicated interview notes page) produce better insights than mixed-purpose documents. * **Batch related content** — Import pages from the same research session together so themes are identified across them. # PostHog (/docs/integrations/posthog) # PostHog Integration Connect PostHog to automatically analyze product survey responses for customer insights. ## What Gets Synced When you connect PostHog to Deck, we sync: * **Surveys** - Survey configurations, questions, and question types * **Responses** - Individual user responses to your PostHog surveys * **Free-text answers** - Open-ended survey responses are analyzed by AI to extract structured insights * **Structured data** - Ratings, NPS scores, multiple choice, and other structured responses ## Setting Up the Integration 1. Navigate to **Settings → Integrations** 2. Find **PostHog** in the available integrations 3. Click **Connect** and authorize Deck to access your PostHog project 4. Choose which surveys to sync If your workspace still contains onboarding sample data, Deck removes that sample data before the first PostHog sync imports real survey responses. If cleanup cannot finish, the sync is stopped and can be retried so sample feedback is not mixed with real customer data. ## How It Works Once connected, Deck: 1. **Retrieves survey responses** from your PostHog project 2. **Maps question types** - Automatically identifies free-text, ratings, NPS, single/multiple choice, and other question types 3. **Analyzes free-text feedback** - Uses AI to extract structured insights, sentiment, and themes from open-ended responses 4. **Processes structured responses** - Captures ratings, selections, and numeric data as queryable insights without adding survey-only question dimensions to your global theme library 5. **Links to user data** - Matches responses to customer accounts when email addresses are available 6. **Detects NPS responses** - Automatically identifies and processes NPS questions for score tracking ## Use Cases * **In-app feedback** - Analyze feedback collected within your product * **Feature satisfaction** - Understand how users feel about specific features * **NPS tracking** - Automatically process NPS survey responses * **User research** - Capture insights from product surveys * **Beta feedback** - Gather feedback during feature rollouts ## AI-Powered Survey Analysis ### Free-Text Analysis Open-ended survey questions are automatically analyzed to extract actionable insights: * **Insight extraction** - AI identifies meaningful feedback from free-text responses * **Sentiment analysis** - Each response is classified as positive, negative, or neutral * **Theme assignment** - Responses are automatically tagged with relevant themes * **Category detection** - Feedback is categorized (pain points, feature requests, usability issues, etc.) * **Quote preservation** - Original verbatim quotes are preserved for context The AI skips non-actionable responses (e.g., "N/A", "good", "no comment") and focuses on substantive feedback containing 10+ meaningful words. When AI creates a new theme from PostHog feedback, Deck validates the theme description first so placeholder or generic descriptions are repaired before the theme is saved. ### Structured Data Processing Non-text question types are processed as structured insights: * **Rating scales** - Numeric ratings (1-5, 1-10, etc.) * **NPS scores** - 0-10 likelihood-to-recommend scores * **Single/multiple choice** - Selected options captured as structured data * **Yes/no questions** - Boolean responses * **CSAT & CES scores** - Customer satisfaction and effort scores ### Automatic NPS Detection Deck automatically detects and processes NPS questions in your PostHog surveys using two methods: 1. **Explicit NPS Question Type** - Surveys with question type "NPS" (0-10 scale) are automatically recognized 2. **Smart Pattern Recognition** - For rating-scale questions, Deck analyzes the survey name and question text to identify NPS patterns (e.g., "How likely are you to recommend...", "Net Promoter Score", "NPS Survey") When an NPS question is detected, Deck: * Captures the 0-10 score and classifies respondents as Promoters (9-10), Passives (7-8), or Detractors (0-6) * Extracts any follow-up text responses for AI analysis * Generates concise AI-written insight titles for analyzed NPS feedback * Automatically creates entries in your NPS Score dashboard * Links feedback to themes and generates insights **Score-Only vs. Score + Feedback:** * **With follow-up text** - The score and feedback are analyzed by AI to extract themes, sentiment, and insights * **Score-only** - The numeric score is recorded deterministically without LLM processing (more efficient for large volumes) This automatic detection means you don't need to configure anything - just connect PostHog and sync your surveys. Deck will identify and process NPS questions automatically. ## Managing the Integration ### Settings Page Manage your PostHog integration in **Settings → Integrations → PostHog**: * View connection status * Select which surveys to sync * Configure automatic sync settings * View imported response count * Disconnect the integration ### Per-Survey Segment Assignment You can assign a customer segment to each synced survey so all responses from that survey are automatically classified under that segment. In the survey table, click the **Segment** cell for any survey and choose from your existing segments. This is useful when different surveys target different customer groups — for example, assigning "Enterprise" to a survey sent only to enterprise accounts. ### PostHog Management Page Access detailed survey management at **Manage → PostHog** (`/manage/posthog`): * **View all synced surveys** - See all surveys you've imported from PostHog * **Import prevention** - Previously imported surveys are clearly marked and cannot be re-imported to prevent duplicates * **Response counts** - Track how many responses have been synced for each survey * **Last sync time** - See when each survey was last updated * **Survey insights** - View AI-extracted insights from free-text responses in a clean, scannable table * **Expandable insights** - Click on any insight to reveal supporting quotes inline without leaving the page * **Individual responses** - Browse and search through survey responses by respondent, date, or question * **Theme analysis** - See which themes emerge from survey feedback * **Question breakdown** - View responses organized by question with sentiment and category analysis #### Insights Table Features The PostHog insights table provides a comprehensive view of AI-extracted insights: * **Insight Name** - The main insight extracted from survey responses * **Themes** - Automatically tagged themes associated with the insight * **Sentiment** - Visual badge showing positive, negative, or neutral sentiment * **Category** - Feedback categorization (e.g., Pain Points, Feature Requests, Usability Issues) * **Expandable Quotes** - Click any row to reveal the full verbatim quote that supports the insight * **Quick Links** - Jump to the full insight detail page to see connections to other feedback sources ### Automatic Sync Configure your PostHog integration to automatically sync new responses: 1. Go to **Settings → Integrations → PostHog** 2. Toggle **Auto Sync** to enable automatic updates 3. Choose sync frequency: hourly, daily, or manual 4. New responses will be automatically imported and analyzed ## Privacy and Security Deck uses PostHog's secure API for data access. We only analyze survey responses you authorize and process them solely for insight generation. # Zendesk (/docs/integrations/zendesk) # Zendesk Integration Connect Zendesk to automatically analyze support tickets for customer insights and product feedback using AI. ## What Gets Synced When you connect Zendesk to Deck, we sync: * **Tickets** - Customer support tickets with full comment history * **Users** - Customer information for linking insights to accounts * **Tags** - Ticket tags for better categorization * **Metadata** - Priority, status, assignee, and other ticket details * **Custom fields** - Ticket custom attributes (e.g., `customer_tier`, `plan`) used for segment rule matching ## Setting Up the Integration > **Plan requirement:** Zendesk requires the **Business plan or above**. If your workspace is on Free or Starter, the integration page shows an upgrade prompt instead of the connect or reconnect action. 1. Navigate to **Settings → Integrations** 2. Find **Zendesk** in the available integrations 3. Click **Connect** and authorize Deck to access your Zendesk account 4. Configure your sync settings: * **Sync Frequency** - Choose how often to sync (hourly, daily, weekly) * **Auto-sync** - Enable automatic background syncing * **Contact Sync** - Choose whether to import customer contact profiles (see below) ## How It Works Once connected, Deck automatically: 1. **Retrieves tickets** from your Zendesk account based on your sync schedule 2. **Filters for relevance** - Uses AI to skip spam or empty noise while still analyzing support tickets that may reveal product friction, education gaps, or repeated support demand 3. **Analyzes messages** - Extracts customer pain points, feature requests, and issues from ticket comments 4. **Links to users** - Associates insights with customer profiles 5. **Generates insights** - AI synthesis pipeline creates structured insights with: * Customer quotes (verbatim from ticket comments) * Identified themes * Confidence scores * Quality assessments ## Automated Sync Your Zendesk tickets sync automatically based on your settings: * **Hourly** - Syncs new and updated tickets every hour * **Daily** - Syncs once per day * **Weekly** - Syncs once per week You can also manually trigger a sync at any time from the integration settings page. ### First-Time Sync When you first connect Zendesk, Deck performs a comprehensive initial sync: * **Automatically fetches the last 90 days** of ticket history * **Processes tickets in batches** to respect API rate limits * **Syncs incrementally** - future syncs only fetch new or updated tickets * **Rate-limited** - Batches are processed with delays to prevent API throttling * **Real-time status** - A syncing banner appears on the integration page showing progress while tickets are being imported The sync starts **immediately** after you connect your account (no waiting for scheduled syncs), and you'll see a "Syncing tickets..." banner with a loading indicator while the import is in progress. This ensures you have historical context from recent support interactions without overwhelming your Zendesk API limits. ## Viewing Imported Tickets See all imported tickets in **Settings → Integrations → Zendesk**: * View ticket count and sync status * See when tickets were last synced * Monitor processing status for each ticket ## AI Synthesis Pipeline Each ticket goes through a 4-stage AI synthesis pipeline: 1. **Relevance Classification** - Filters out spam or empty noise and generates a concise, descriptive subject for each ticket. Routine support or resolved questions may continue when they reveal customer friction, education gaps, or repeated support demand 2. **Ticket Analysis** - Understands customer context, frustration levels, and key moments in the conversation 3. **Insight Synthesis** - Extracts insights, quotes, and themes using Claude Sonnet 4. **Quality Review** - Validates quotes against original messages, assigns confidence scores, filters low-quality insights Only high-quality insights with verified customer quotes are surfaced in your Deck workspace. ### Automatic Ticket Subjects When Zendesk sends a ticket with a generic subject like "No Subject" or "Untitled Conversation", Deck automatically generates a descriptive subject during AI processing — for example, "Question about supported export file formats" or "Password reset request for user account". This makes it easier to identify tickets at a glance in your Deck workspace. ## Segment Rules You can use Zendesk as the basis for segment rules in **Settings → Segments**: * **Source** — assign all Zendesk tickets to a segment automatically * **Tags** — match tickets that carry a specific Zendesk tag (e.g., `enterprise`, `billing`) * **Custom attributes** — match tickets where a custom field equals a specific value (e.g., `customer_tier` = `Gold`); key and value are matched case-insensitively When you create or update a rule that uses tags or custom attributes, Deck fetches the latest metadata from Zendesk before re-evaluating existing tickets. ## Use Cases * **Issue tracking** - Identify recurring customer problems across tickets * **Feature requests** - Capture product enhancement requests from customer messages * **Bug identification** - Surface bugs reported through support tickets * **Customer satisfaction** - Understand sentiment and frustration levels across support interactions * **Product improvements** - Prioritize improvements based on support ticket patterns * **CRM linking** - Connect insights to customer accounts in your CRM ## Contact Sync Deck can automatically import customer contact profiles from your Zendesk tickets and link them to insights. This helps you trace feedback back to specific customers and accounts. **To enable contact sync:** 1. Go to **Settings → Integrations → Zendesk** 2. Find the **Contact Sync** card 3. Toggle **Sync Contacts** on When enabled, Deck fetches the requester's full profile from Zendesk for each ticket it processes — name, email, and phone — and stores them in your Deck contacts. > **Plan requirement:** Contact syncing requires the **Starter plan or above**. If you're on the free plan, the toggle is disabled. You can upgrade in **Settings → Billing**. When contact sync is **off**, Deck still processes and analyzes tickets for insights — it just won't import or link contact profiles. ## Managing the Integration Manage your Zendesk integration in **Settings → Integrations → Zendesk**: * View imported tickets * Adjust sync frequency and settings * Enable or disable contact sync * Monitor sync job status * Disconnect the integration ## Privacy and Security Deck uses Zendesk's secure OAuth for authentication. We only access tickets you authorize and use the data solely to generate insights for your team. Customer data is encrypted in transit and at rest. ### Email Redaction When viewing imported tickets in Deck, customer email addresses are automatically redacted for privacy. Only the first character and the domain are shown — for example, `jane@example.com` appears as `j***@example.com`. This applies to both message authors and ticket requesters displayed in the ticket thread view. # API Access (/docs/org-settings/api-access) # API Access The API Access settings let you enable Deck's Public API for your organization and manage the API keys your team uses to authenticate requests. You can use the Public API to read your Deck data (insights, themes, patterns, initiatives) from external tools, scripts, or integrations. Go to **Settings → API Access** to manage these settings. ## Enabling the Public API By default, the Public API is disabled for your organization. An admin must enable it before any API keys can be used. **To enable the Public API:** 1. Go to **Settings → API Access** 2. Toggle **Enable Public API** to on 3. Select which roles can access the API (see [Role Access](#role-access) below) 4. Click **Save** Only org admins can enable or disable the Public API and change role permissions. ## Role Access When the Public API is enabled, you control which roles are allowed to use it. You can grant access to: * **Admins** — org admins can always create keys and call the API if access is enabled * **Members** — extend API access to non-admin members of your org By default, only admins are allowed. Adjust this based on how broadly you want to expose your Deck data externally. ## Managing API Keys Once the Public API is enabled, you can create personal API keys to authenticate your requests. ### Creating an API Key 1. In **Settings → API Access**, scroll to the **API Keys** section 2. Click **New Key** 3. Enter a descriptive name (e.g. "My integration script" or "Zapier connection") 4. Click **Create** 5. Copy the key value shown — **you will not be able to see it again** API keys start with `dk_` and are tied to your user account within your organization. Save your API key immediately after creation. For security, the full key value is only shown once. ### Using Your API Key Include your API key in requests to the Public API using either: * `Authorization: Bearer dk_your_key_here` header * `X-API-Key: dk_your_key_here` header The base URL for the API and available endpoints are described in the OpenAPI spec at `/api/v1/openapi`. ### Revoking an API Key To revoke a key that is no longer needed or may be compromised: 1. Go to **Settings → API Access** 2. Find the key in the **API Keys** list 3. Click the delete icon next to the key 4. Confirm revocation in the dialog Revoked keys stop working immediately and cannot be restored. ## Security Notes * API keys grant read-only access to your org's Deck data * Each key is scoped to the creating user's role — if a user's role changes or they leave the org, their keys are automatically restricted * Keys can be created with an expiration date. Revoke unused keys as a security best practice. * All API requests are logged for audit purposes ## Learn More If you want to build against the Public API, start here: * [Public API overview](/docs/public-api) * [Authentication and access](/docs/public-api/authentication) * [Resource reference](/docs/public-api/resources) * [Examples](/docs/public-api/examples) # Billing & Credits (/docs/org-settings/billing) # Billing & Credits Deck uses a **credit-based billing system** where AI processing operations (like interview synthesis, feedback analysis, and NPS detection) consume credits from your monthly allocation. ## Understanding Credits ### What are Credits? Credits are the currency for AI processing in Deck. Each AI operation consumes a specific amount of credits based on complexity: * **Interview Synthesis**: Processes transcripts and extracts themes * **Feedback Analysis**: Analyzes customer service tickets and feedback * **NPS Analytics**: Identifies and analyzes Net Promoter Score feedback in customer communications * **Survey Processing**: Synthesizes survey responses * **Company Research**: Enriches organizations with external data ### Credit Types Your total available credits come from three sources: 1. **Base Credits**: Monthly allocation included with your plan (resets each billing cycle) 2. **Rollover Credits**: Unused credits from the previous month (expire after 60 days) 3. **Overage Credits**: Additional credits purchased when you exceed your base allocation (if overage is enabled) ## Viewing Your Credit Balance Navigate to **Settings → Billing** to see your credit dashboard: ### Current Month Tab * **Credit Usage Card**: Visual breakdown of total credits, used credits, and remaining balance * **Credit Breakdown**: Detailed view of base, rollover, and overage credits * **Overage Settings**: Enable or disable pay-as-you-go overage charges ### Analytics Tab * **Usage by User**: See which team members are consuming credits * **Usage by Pipeline**: Understand which AI operations use the most credits ### Manage Tab * **Transaction History**: Detailed log of all credit allocations and consumption * **Manage Billing**: Update your payment method or subscription in Stripe ## Credit Warnings & Blocked State ### Low Credit Warning When your credits fall below 20% of your monthly allocation, you'll see a warning banner at the top of the app: * **Yellow Alert**: Less than 20% remaining * **Red Alert**: Less than 10% remaining ### Activation reserve When overage is disabled, Deck keeps a portion of your total credits available for activation work that helps your workspace become useful after data is added. This includes feedback synthesis, theme synthesis, NPS weekly synthesis, and initiative generation. Large background or import jobs may be paused or partially queued before all credits are exhausted so those activation workflows can still run. If you enable overages, Deck can continue processing beyond your included credits according to your overage settings. ### Blocked State If you exhaust all available credits and overage is **disabled**, your organization will enter a blocked state: * ❌ AI processing is paused (interviews, feedback analysis, etc.) * ✅ You can still view existing data and insights * 📧 You'll receive email notifications about the blocked state **To unblock:** 1. Enable overage charges in **Settings → Billing → Overage Settings**, or 2. Wait for your billing period to renew and receive new base credits ## Pricing Tiers & Feature Limits Deck offers four pricing tiers with different credit allocations and feature limits: ### FREE Tier * **200 credits/month** * 2 integrations maximum * 1 Slack feedback channel * Basic features only ### STARTER Tier * **2,500 credits/month** * 5 integrations maximum * 3 Slack feedback channels * NPS Analytics enabled * Passkey authentication ### BUSINESS Tier * **7,500 credits/month** * Unlimited integrations * 10 Slack feedback channels * CRM integration enabled * NPS Analytics enabled * Passkey authentication * SAML/SSO support ### ENTERPRISE Tier * **20,000 credits/month** or a custom contracted credit allocation * Unlimited integrations * Unlimited Slack feedback channels * All features enabled * Dedicated support ### Database Hosting Free organizations use shared regional infrastructure. Starter annual and Business organizations that are still on shared storage are moved to dedicated database hosting automatically during regional maintenance windows after the plan is active. No action is required from your team, and existing data remains available during the migration. Enterprise database hosting is handled through your contract and account team. ## Feature Limit Enforcement When you reach a feature limit for your tier: ### Integration Limits If you've reached your maximum integrations, you'll see an error when trying to add a new integration. **To add more:** 1. Remove an existing integration to free up a slot, or 2. Upgrade to a higher tier ### Slack Channel Limits If you've reached your Slack channel limit, you cannot add more channels. **To add more:** 1. Remove an existing channel, or 2. Upgrade to a higher tier ### Tier-Gated Features Some features are only available on specific tiers: * **CRM Integration**: BUSINESS tier and above * **Intercom and Zendesk integrations**: BUSINESS tier and above * **NPS Analytics**: STARTER tier and above * **SAML/SSO**: BUSINESS tier and above If you try to access these features on a lower tier, you'll see an upgrade prompt. ## Grandfathering on Downgrades If you downgrade your plan, your existing resources remain active: * **Example**: You have 8 integrations on BUSINESS and downgrade to STARTER (5 max) * Your 8 integrations stay connected and functional * You cannot add new integrations until you're under the limit (5 or fewer) This grandfathering policy prevents disruption to your existing workflows. ## Overage Charges ### How Overage Works If you enable overage charges in your billing settings: 1. When you exhaust your base + rollover credits, Deck automatically purchases overage credits 2. You're charged per credit consumed beyond your allocation 3. Overage charges appear on your next Stripe invoice ### Enabling Overage from a Warning Banner When your credits are exhausted or nearly depleted, a warning banner appears at the top of the app. Clicking **Enable Overages** in that banner opens a confirmation dialog before making any changes. Review the dialog and click **Enable Overages** to confirm, or **Cancel** to dismiss without enabling. Overage can only be enabled on paid plans. When an admin confirms, Deck first updates the Stripe subscription so it can track metered overage usage. If Stripe cannot be updated, overage stays disabled and no policy change is applied to your workspace. ### Overage Rates Overage rates vary by tier: * **STARTER**: $0.05 per credit * **BUSINESS**: $0.04 per credit * **ENTERPRISE**: $0.03 per credit, unless your contract specifies custom pricing ### Spending Limits You can optionally set a maximum overage spending limit: 1. Go to **Settings → Billing → Overage Settings** 2. Enable overage charges 3. Set a monthly spending cap (e.g., $100) When you hit the spending cap, your organization will enter a blocked state until the next billing cycle. ## Frequently Asked Questions ### When do credits reset? Credits reset at the start of each billing cycle, which aligns with your Stripe subscription renewal date. ### What happens to unused credits? Unused base credits roll over to the next month and expire after 60 days. For example: * **Month 1**: 2,500 credits allocated, 2,000 used → 500 rollover * **Month 2**: 2,500 new credits + 500 rollover = 3,000 total available * **Month 3**: If you didn't use the rollover credits in Month 2, they expire ### Can I purchase additional credits without overage? Currently, additional credits can only be purchased via overage charges. Contact support if you need a bulk credit package. ### How do I upgrade or downgrade my plan? Go to **Settings → Billing** and compare plans from the pricing modal. Admins can choose monthly or annual billing, start an upgrade from Deck, or use the billing management flow for supported downgrades and subscription changes. Free-to-paid changes open Stripe Checkout; changes from an existing paid plan open a Stripe-hosted confirmation flow for your current subscription. If an open beta discount is active, Deck applies it automatically during checkout. Otherwise, Stripe checkout allows manual promotion code entry. The pricing modal also includes an **Ask Your Agent About Pricing** prompt. You can copy it into your AI assistant when you want help comparing Deck plans against your current usage. ### What if I run out of credits mid-analysis? Deck checks your credit balance before starting any AI processing job. If you have no credits available when you submit a file or request: * You'll see an immediate error: *"Credit limit exceeded. Enable overages or wait for next billing period."* * No processing starts, so you're not charged for a failed job * Enable overage charges or wait for your billing cycle to renew, then resubmit For large CSV uploads, Deck may process the rows that fit within your current budget and mark the remaining rows as waiting for credits. Those rows are not discarded. ## Cancelling Your Subscription You can cancel your STARTER or BUSINESS subscription directly from the Deck billing page — no need to go through Stripe. ### How Cancellation Works Deck uses **end-of-period cancellation**: your plan stays active until the end of your current billing period, and you will not be charged again after that. 1. Go to **Settings → Billing → Manage Tab** 2. Find the **Cancel Subscription** card 3. Click **Cancel Subscription** to open the cancellation dialog 4. Review the features you will lose when the plan ends 5. If a lower-cost plan is available, you can choose to **downgrade** instead of cancelling 6. Select a cancellation reason (optional but appreciated) 7. Click **Confirm Cancellation** — your subscription will be scheduled to end on your next billing date ### What Happens After You Cancel * Your plan remains **fully active** until the end of the current billing period * You will see a **Cancellation Scheduled** notice in your billing settings showing the exact end date * After the period ends, your account moves to the FREE tier ### Reactivating a Cancelled Subscription Changed your mind? You can reactivate at any time before the cancellation date: 1. Go to **Settings → Billing → Manage Tab** 2. Find the **Subscription Cancellation** card showing your scheduled end date 3. Click **Keep Subscription** to reactivate immediately Your subscription will continue normally and you will not lose any access. ### Which Plans Can Be Cancelled In-app cancellation is available for **STARTER** and **BUSINESS** plans. FREE plans have no subscription to cancel. ENTERPRISE plans — please contact your account manager. ## Need Help? Contact support at [support@getdeck.io](mailto:support@getdeck.io) or through the in-app chat for billing assistance. # Privacy Settings (/docs/org-settings/privacy) # Privacy Settings Deck's privacy settings give organization admins control over how personally identifiable information (PII) is handled across your workspace. Navigate to **Settings → Privacy** to manage these options. ## PII Redaction When PII redaction is enabled, Deck automatically masks names, email addresses, and phone numbers for all members across all views. | Data type | Redacted example | | --------- | ------------------ | | Email | `j***@example.com` | | Name | `J*** D***` | | Phone | `***-***-4567` | ### Enabling PII Redaction 1. Go to **Settings → Privacy** 2. Toggle **Enable PII redaction** on 3. The change takes effect immediately for all members Only organization admins can enable or disable PII redaction. ### How It Works PII redaction applies at two layers: 1. **Display layer** — existing AI outputs (insights, quotes, synthesis results) are masked before being shown to any member 2. **AI output layer** — when new content is synthesized, the AI pipelines are instructed to anonymize names, emails, and phone numbers in generated text This means even historical insights are covered without requiring re-processing. ### When to Use PII Redaction PII redaction is useful when: * Sharing Deck with team members who should not see customer contact details * Operating in privacy-sensitive industries (healthcare, finance, etc.) * Complying with internal data minimization policies * Letting external contractors or agencies review feedback without exposing customer identities # Reindexing Settings (/docs/org-settings/reindexing) # Reindexing Settings Use **Settings -> Reindexing** to queue an on-demand cleanup run for one theme. This is useful when a theme has become too broad, category-like, or mixed with insights that should belong elsewhere. ## On-demand reindexing An admin selects a source theme and starts a reindexing run. Deck then reviews the insights in that theme, moves them to better matching destination themes when appropriate, creates missing destination themes when needed, and soft-deletes the source theme after the cleanup finishes. Use it for themes such as: * **Bugs & Errors** * **Usability Issues** * **Feature Requests** * Other catch-all themes that are hiding more specific customer signals Only organization admins can trigger reindexing runs. ## Running reindexing 1. Go to **Settings -> Reindexing** 2. Choose the theme you want to clean up 3. Click **Run on-demand reindexing** Deck queues the run immediately. If another reindexing run is already active for your organization, Deck skips the new request and keeps the existing run in progress. ## What happens next Reindexing runs in the background. Large themes may be processed in several batches so Deck can safely move insights without blocking the app. During the run, Deck may: * Move insights from the selected theme into existing themes * Create new destination themes when no existing theme is a good fit * Preserve other theme assignments already attached to each insight * Remove the selected source theme after all affected insights have been moved The page no longer manages an automatic monthly reorganization schedule or shows monthly assurance history. Reindexing changes are applied automatically once you start the run. Review the selected source theme carefully before triggering it. # Security Features (/docs/org-settings/security) # Security Features Deck provides multiple layers of security to protect your account, data, and users. The available security features depend on your pricing tier. ## Available Security Features ### Credential Stuffing Prevention **Available in:** All tiers (Free, Starter, Business, Enterprise) Credential stuffing protection helps prevent automated attacks where bad actors try stolen username/password combinations from other breaches to access your account. **How it works:** * Monitors login attempts for suspicious patterns * Blocks automated credential testing attempts * Protects against brute force attacks using compromised credentials * No action required from you - protection is always active ### Bot Signup Detection **Available in:** All tiers (Free, Starter, Business, Enterprise) Bot signup detection prevents automated bots from creating fake accounts in your organization, keeping your data clean and preventing abuse. **How it works:** * Analyzes signup behavior patterns to distinguish humans from bots * Blocks suspicious automated signup attempts * Prevents spam accounts from polluting your user data * Runs automatically during account creation ### Passkeys (FIDO2) **Available in:** Starter, Business, and Enterprise tiers Passkeys provide passwordless authentication using FIDO2 standard, offering stronger security than traditional passwords. **Benefits:** * No password to remember or type * Phishing-resistant authentication * Uses biometric authentication (fingerprint, Face ID) or hardware security keys * Faster and more convenient than passwords **How to enable:** 1. Go to **Settings → Security** 2. Select **Add Passkey** 3. Follow your device's prompts to register your passkey 4. Use your passkey for future logins instead of a password **Supported devices:** * Modern smartphones with biometric authentication * Laptops with fingerprint readers or Face ID * Hardware security keys (YubiKey, etc.) ### SAML/SSO **Available in:** Business and Enterprise tiers Single Sign-On (SSO) with SAML 2.0 allows your organization to manage authentication through your identity provider. **Benefits:** * Centralized user management through your IdP * Enforce your organization's authentication policies * Automatic user provisioning and de-provisioning * Single login for all your team's applications **Supported Identity Providers:** * Okta * Microsoft Entra ID (Azure AD) * Google Workspace * OneLogin * JumpCloud * Any SAML 2.0-compliant identity provider **How to set up:** 1. Contact your Deck account manager or [support@getdeck.io](mailto:support@getdeck.io) 2. Provide your IdP metadata URL or XML file 3. Our team will configure SAML for your organization 4. Test the connection with a test user 5. Roll out to your organization **Enterprise-only features:** * Force SAML/SSO login - disable password-based authentication * Just-in-time (JIT) user provisioning * Automated role assignment based on IdP attributes * SCIM support for user lifecycle management ## Security by Tier | Feature | Free | Starter | Business | Enterprise | | ------------------------------ | ---- | ------- | -------- | ---------- | | Credential stuffing prevention | ✅ | ✅ | ✅ | ✅ | | Bot signup detection | ✅ | ✅ | ✅ | ✅ | | Passkeys (FIDO2) | ❌ | ✅ | ✅ | ✅ | | SAML/SSO | ❌ | ❌ | ✅ | ✅ | ## Additional Security Best Practices Regardless of your tier, follow these best practices: 1. **Use strong passwords** - At least 12 characters with a mix of letters, numbers, and symbols 2. **Enable two-factor authentication (2FA)** - Add an extra layer of security to your account 3. **Review audit logs** - Regularly check who's accessing your account and when 4. **Limit admin access** - Only give admin privileges to users who need them 5. **Keep software updated** - Use the latest version of your browser and operating system ## Need More Security? If you need additional security features or have specific compliance requirements, contact our sales team to discuss Enterprise options: * **Email:** [sales@getdeck.io](mailto:sales@getdeck.io) * **In-app:** Settings → Support → Contact Sales # Authentication and Access (/docs/public-api/authentication) # Authentication and Access Every Public API request is verified before Deck returns data. Deck does not just check that a key exists. It also checks whether the organization allows API access and whether the key owner is still allowed to use the API. ## Access model Each successful request depends on four things: 1. a valid API key 2. Public API being enabled for the organization 3. the key owner’s current role being allowed 4. the requested scope being enabled ## API keys Deck API keys are: * created in **Settings → API Access** * owned by a specific user * scoped to a specific organization * evaluated against endpoint-required scope (`read` or `write`) ## How requests are authorized For every authenticated endpoint, Deck performs these checks: 1. extract the API key from the request headers 2. verify the key 3. resolve the key’s organization and owner 4. load the organization’s Public API settings 5. require Public API to be enabled for that organization 6. verify the owner still belongs to that organization 7. verify the owner’s current role is allowed 8. verify the endpoint’s required scope is enabled If any of those checks fail, the request is rejected immediately. ## Scope model * `read` scope is used by all read endpoints (`GET /themes`, `GET /insights`, etc.) * `write` scope is required by Build mutation endpoints: * `POST /build/initiatives` * `POST /build/opportunities` Write endpoints additionally require an `Idempotency-Key` header. ## Organization policy Go to **Settings → API Access** to control who can use the Public API. Organization admins can: * enable or disable Public API access * choose which org roles can use it Supported roles today: * admins * members By default: * Public API is disabled * only admins are allowed ## Key ownership Key ownership matters because access is evaluated against the owner’s **current** permissions, not just the state at the moment the key was created. This means: * if a user loses access, their key stops working * if a user leaves the organization, their key is revoked * org members can only manage their own keys in the UI * org admins can see and revoke all keys for the organization If a user loses access to the organization, their key stops working. ## Headers Preferred: ```http Authorization: Bearer dk_us_... ``` Supported fallback: ```http X-API-Key: dk_us_... ``` ## Error responses All error responses use the same shape: ```json { "error": { "code": "INVALID_API_KEY", "message": "Invalid or expired API key." } } ``` ## Common access errors | Code | Status | Meaning | | -------------------- | ------ | ----------------------------------------------------------------------------------- | | `UNAUTHORIZED` | 401 | No key was sent | | `INVALID_API_KEY` | 401 | The key is invalid, expired, revoked, or malformed | | `API_DISABLED` | 403 | Public API is disabled for the org, or the org is not eligible for a gated resource | | `ROLE_NOT_ALLOWED` | 403 | The key owner is not allowed to use the API | | `MEMBERSHIP_REVOKED` | 403 | The key owner no longer belongs to the org | | `SCOPE_NOT_ALLOWED` | 403 | The requested scope is not enabled | ## Tenant isolation The Public API is organization-scoped by design: * the organization is resolved from the verified key * clients never send an `orgId` * all reads are filtered to the authenticated organization This protects against accidental cross-org access and keeps integrations simple for clients. ## Subthemes access The `/subthemes` endpoints have one extra rule: the organization must also be eligible for the subthemes feature. If not, those requests return `403 API_DISABLED` even if the Public API is otherwise enabled. ## Related pages * [Public API](./index.mdx) * [Resource Reference](./resources.mdx) * [Examples](./examples.mdx) # Examples (/docs/public-api/examples) # Examples Use these examples as starting points for your own scripts and integrations. ## Set base variables ### Shell ```bash export DECK_API_BASE="https://api.getdeck.io/api/v1" export DECK_API_KEY="YOUR_KEY" ``` ### JavaScript helper ```ts const baseUrl = "https://api.getdeck.io/api/v1"; const apiKey = process.env.DECK_API_KEY!; async function deckFetch(path: string) { const response = await fetch(`${baseUrl}${path}`, { headers: { Authorization: `Bearer ${apiKey}`, }, }); const body = await response.json(); if (!response.ok) { throw new Error(`${body?.error?.code ?? "UNKNOWN"}: ${body?.error?.message ?? "Request failed"}`); } return body; } ``` ## Verify your key ```bash curl --request GET \ --url "$DECK_API_BASE/me" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## List themes ```bash curl --request GET \ --url "$DECK_API_BASE/themes?limit=10" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## Paginate through themes ```ts async function listAllThemes() { let cursor: string | null = null; const allThemes = []; while (true) { const query = new URLSearchParams({ limit: "100" }); if (cursor) query.set("cursor", cursor); const page = await deckFetch(`/themes?${query.toString()}`); allThemes.push(...page.data); if (!page.pagination.has_more || !page.pagination.next_cursor) { break; } cursor = page.pagination.next_cursor; } return allThemes; } ``` ## Fetch negative insights for a theme ```bash curl --request GET \ --url "$DECK_API_BASE/insights?theme_id=THEME_ID&sentiment=NEGATIVE&limit=20" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## Get insight detail ```bash curl --request GET \ --url "$DECK_API_BASE/insights/INSIGHT_ID" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## List active initiatives ```bash curl --request GET \ --url "$DECK_API_BASE/initiatives?status=building&limit=10" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## Get initiative sections ```bash curl --request GET \ --url "$DECK_API_BASE/initiatives/INITIATIVE_ID" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## Search subthemes ```bash curl --request GET \ --url "$DECK_API_BASE/subthemes?q=onboarding&limit=10&offset=0" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## Paginate subthemes ```ts async function listAllSubthemes() { const pageSize = 50; let offset = 0; const allSubthemes = []; while (true) { const page = await deckFetch(`/subthemes?limit=${pageSize}&offset=${offset}`); allSubthemes.push(...page.data); if (!page.pagination.has_more) { break; } offset += page.pagination.limit; } return allSubthemes; } ``` ## Get a full subtheme ```bash curl --request GET \ --url "$DECK_API_BASE/subthemes/PATTERN_ID" \ --header "Authorization: Bearer $DECK_API_KEY" ``` ## Download the OpenAPI spec ```bash curl --request GET \ --url "$DECK_API_BASE/openapi" ``` ## Python example ```python import os import requests base_url = "https://api.getdeck.io/api/v1" api_key = os.environ["DECK_API_KEY"] response = requests.get( f"{base_url}/themes?limit=5", headers={"Authorization": f"Bearer {api_key}"}, timeout=30, ) response.raise_for_status() for theme in response.json()["data"]: print(theme["id"], theme["name"], theme["insight_count"]) ``` ## Common error handling All error responses use: ```json { "error": { "code": "INVALID_API_KEY", "message": "Invalid or expired API key." } } ``` Useful client behavior: * `401` errors: verify the key and header format * `403` errors: verify org settings, role access, or subthemes entitlement * `400` errors: fix invalid filters or cursors * `500` and `503` errors: retry with backoff and surface the failure # Public API (/docs/public-api) # Public API Deck’s Public API gives your team a stable way to read structured customer feedback data and execute scoped Build mutations. It is built for internal tools, automations, reporting pipelines, partner integrations, and workflows that need direct access to Deck themes, insights, initiatives, subthemes, and approved Build write actions. ## What you can do * verify a key and inspect the resolved organization and role * list and retrieve themes with insight counts * fetch insights with theme, sentiment, and category filters * read initiatives and their structured content sections * execute approved Build write mutations for initiatives and opportunities * access subtheme analysis for eligible organizations * generate your own client from Deck’s OpenAPI specification ## Before you start To use the Public API, all of the following must be true: * your organization has **Public API** enabled in **Settings → API Access** * your current org role is allowed by the API access policy * you have created an API key in Deck Write access is limited to `POST /build/initiatives` and `POST /build/opportunities`, requires write scope, and always requires `Idempotency-Key`. ## Quickstart ### 1. Create an API key Go to **Settings → API Access** and create a key for your user account. Keys start with a `dk_` prefix, for example: * `dk_us_...` * `dk_eu_...` * `dk_au_...` ### 2. Verify the key Use the `/me` endpoint first: ```bash curl --request GET \ --url https://api.getdeck.io/api/v1/me \ --header "Authorization: Bearer dk_us_your_key_here" ``` Successful response: ```json { "data": { "org_id": "org_123", "user_id": "user_123", "role": "org:admin", "scope": "read" } } ``` ### 3. Fetch your first resource ```bash curl --request GET \ --url "https://api.getdeck.io/api/v1/themes?limit=10" \ --header "Authorization: Bearer dk_us_your_key_here" ``` ## Base URL Production: ```text https://api.getdeck.io/api/v1 ``` ## Authentication You can send your API key using either: ```http Authorization: Bearer dk_us_... ``` or ```http X-API-Key: dk_us_... ``` ## Available resources | Endpoint | Purpose | | ----------------------------- | -------------------------------------------- | | `/me` | Verify the key and inspect resolved identity | | `/themes` | List themes | | `/themes/{themeId}` | Get a single theme | | `/insights` | List insights | | `/insights/{insightId}` | Get a single insight | | `/initiatives` | List initiatives | | `/initiatives/{initiativeId}` | Get a single initiative | | `/build/initiatives` | Execute one initiative build mutation | | `/build/opportunities` | Execute one opportunity build mutation | | `/subthemes` | List subthemes | | `/subthemes/{subthemeId}` | Get a single subtheme | | `/openapi` | Fetch the OpenAPI 3.1 spec | ## Pagination Deck uses two pagination styles: * **Cursor pagination** for themes, insights, and initiatives * **Offset pagination** for subthemes Treat cursor values as opaque. Do not parse or construct them yourself. ## OpenAPI spec The Public API contract is published at: ```text /api/v1/openapi ``` Use it to: * inspect the latest schema * generate typed clients * import requests into your API tools ## Next steps * [Authentication and Access](./authentication.mdx) * [Resource Reference](./resources.mdx) * [Examples](./examples.mdx) # Resource Reference (/docs/public-api/resources) # Resource Reference This page documents the human-readable shape of the v1 Deck Public API. The machine-readable contract is available from the OpenAPI endpoint. ## Endpoint summary | Method | Path | Description | Pagination | | ------ | ----------------------------- | -------------------------------------------- | ---------- | | `GET` | `/openapi` | OpenAPI 3.1 specification | none | | `GET` | `/me` | Verify the key and inspect resolved identity | none | | `GET` | `/themes` | List themes | cursor | | `GET` | `/themes/{themeId}` | Get a theme by ID | none | | `GET` | `/insights` | List insights | cursor | | `GET` | `/insights/{insightId}` | Get an insight by ID | none | | `GET` | `/initiatives` | List initiatives | cursor | | `GET` | `/initiatives/{initiativeId}` | Get an initiative by ID | none | | `POST` | `/build/initiatives` | Execute one initiative build mutation | none | | `POST` | `/build/opportunities` | Execute one opportunity build mutation | none | | `GET` | `/subthemes` | List subthemes | offset | | `GET` | `/subthemes/{subthemeId}` | Get a subtheme by ID | none | ## `/me` Use this endpoint to confirm that your key works and see the identity Deck resolved from it. ### Response fields | Field | Meaning | | --------- | --------------------------------------------------------- | | `org_id` | The authenticated organization | | `user_id` | The key owner | | `role` | The key owner’s current role | | `scope` | The authorized scope for this endpoint (`read` for `/me`) | ## `/themes` Lists themes for the authenticated organization. ### Query parameters | Parameter | Type | Notes | | --------- | ------- | ------------------------ | | `limit` | integer | default `50`, max `100` | | `cursor` | string | opaque pagination cursor | ### Theme fields | Field | Meaning | | --------------- | ------------------------- | | `id` | Theme ID | | `name` | Theme name | | `color` | Theme color | | `notes` | Optional notes | | `insight_count` | Number of linked insights | | `created_at` | Creation timestamp | | `updated_at` | Last update timestamp | ## `/insights` Lists insights for the authenticated organization. ### Query parameters | Parameter | Type | Notes | | ----------- | ------- | --------------------------------- | | `limit` | integer | default `50`, max `100` | | `cursor` | string | opaque pagination cursor | | `theme_id` | string | filter to a specific theme | | `sentiment` | string | `POSITIVE`, `NEGATIVE`, `NEUTRAL` | | `category` | string | category filter | ### Supported categories * `PAIN_POINTS` * `DELIGHTS` * `GENERAL_FEEDBACK` * `FEATURE_REQUESTS` * `USABILITY_ISSUES` * `BUGS_AND_ERRORS` ### Insight list fields | Field | Meaning | | ------------ | ----------------------------- | | `id` | Insight ID | | `name` | Insight title | | `sentiment` | Sentiment classification | | `category` | Insight category | | `quote` | Representative customer quote | | `themes` | Linked theme references | | `created_at` | Creation timestamp | | `updated_at` | Last update timestamp | ## `/insights/{insightId}` Returns a single insight with richer source metadata. Additional fields include: * `feedback_id` * `contact_id` * `user_email` * `user_name` * `interview_date` ## `/initiatives` Lists initiatives for the authenticated organization. ### Query parameters | Parameter | Type | Notes | | --------- | ------- | --------------------------- | | `limit` | integer | default `50`, max `100` | | `cursor` | string | opaque pagination cursor | | `status` | string | initiative lifecycle status | ### Supported statuses * `draft` * `exploring` * `building` * `ready_to_act` * `completed` * `archived` ### Initiative fields | Field | Meaning | | -------------------------- | ------------------------- | | `id` | Initiative ID | | `title` | Initiative title | | `slug` | URL slug | | `description` | Optional short summary | | `goal` | Optional goal statement | | `status` | Initiative status | | `leveraged_insights_count` | Number of linked insights | | `created_at` | Creation timestamp | | `updated_at` | Last update timestamp | ## `/initiatives/{initiativeId}` Returns a single initiative plus structured content sections. Additional fields: * `sections` * `last_generated_at` Each section includes: * `key` * `content` * `updated_at` ## Build write surfaces Build writes are action-based and strictly bounded. Required on every mutation: * `Idempotency-Key` header (1-128 chars) * one action payload per request * org policy that allows write scope for the key owner Explicit non-goals: * backlog generation endpoints * story generation endpoints * arbitrary delete endpoints ## `/build/initiatives` Executes one initiative mutation action. ### Supported actions | Action | Required fields | Optional fields | | ---------------- | ------------------------------------------ | ------------------ | | `create` | `title` | `goal`, `owner_id` | | `update_title` | `initiative_id`, `title` | none | | `update_goal` | `initiative_id`, `goal` | none | | `update_status` | `initiative_id`, `status` | none | | `upsert_section` | `initiative_id`, `section_type`, `content` | `metadata` | | `set_segments` | `initiative_id`, `segment_ids` | none | ## `/build/opportunities` Executes one opportunity mutation action. ### Supported actions | Action | Required fields | Optional fields | | ------------------------------------ | --------------------------------- | ------------------ | | `archive` | `opportunity_id` | none | | `set_segments` | `opportunity_id`, `segment_ids` | none | | `link_initiative` | `opportunity_id`, `initiative_id` | none | | `create_initiative_from_opportunity` | `opportunity_id`, `title` | `goal`, `owner_id` | ## Idempotency behavior * Same key + same normalized payload returns the original response with `idempotency.replayed=true` * Same key + different payload returns `409 IDEMPOTENCY_CONFLICT` * Reusing the same key while the original matching request is still running also returns `409 IDEMPOTENCY_CONFLICT` ## `/subthemes` Lists subthemes synthesized from theme-level or segment-level analysis. Subthemes are only available to organizations eligible for the subthemes feature. ### Query parameters | Parameter | Type | Notes | | ------------ | ------- | ----------------------------------------------------------- | | `limit` | integer | default `50`, max `100` | | `offset` | integer | zero-based offset | | `theme_id` | string | filter to a specific theme | | `segment_id` | string | filter to a specific segment when segments are enabled | | `q` | string | case-insensitive search against pattern name or description | ### Subtheme fields | Field | Meaning | | --------------------- | -------------------------------------- | | `id` | Subtheme ID | | `name` | Subtheme name | | `description` | Subtheme description | | `insight_count` | Number of contributing insights | | `sentiment_breakdown` | Positive, negative, and neutral counts | | `theme_id` | Parent theme ID | | `theme_name` | Parent theme name | | `theme_color` | Parent theme color | | `segment_id` | Segment context when present | | `synthesized_at` | Timestamp of the synthesis used | ## `/subthemes/{subthemeId}` Returns full synthesized subtheme detail. Additional fields: * `insight_ids` * `blocks` * `theme` * `related_subthemes` Use this endpoint when you need more than the summary list and want the full subtheme context. ## Pagination ### Cursor pagination Used by: * themes * insights * initiatives Response shape: ```json { "pagination": { "next_cursor": "opaque-string-or-null", "has_more": true } } ``` ### Offset pagination Used by: * subthemes Response shape: ```json { "pagination": { "total": 120, "has_more": true, "offset": 0, "limit": 50 } } ``` ## OpenAPI spec The latest API contract is available at: ```text /api/v1/openapi ``` Use it when you want the exact field types or need to generate a client. ## Related pages * [Public API](./index.mdx) * [Authentication and Access](./authentication.mdx) * [Examples](./examples.mdx) # User Interviews (/docs/feedback-methods/user-interviews) # User Interviews User interviews need no introduction. It is the art of talking to your customer to uncover improvement opportunities and improve your product. At Deck, you're able to: 1. Upload a customer interview video or audio file — or paste/upload a raw **transcript** directly, 2. Add your research goal and discussion guide, 3. Get the interview auto-tagged by Deck's Agents (in less than 5 minutes), 4. Visualize and edit the interview post-agentic synthesis. We try and make designers and researchers' tasks as easy as possible so you can spend time doing what matters most: actually taking decisions out of the information you have. ## Upload options | Method | Best for | | ---------------------------- | ----------------------------------------------------------------------- | | **Video or audio file** | Recorded interviews — Deck transcribes automatically via AssemblyAI | | **Transcript file or paste** | When you already have a transcript (`.vtt`, `.txt`, Google Meet export) | Both paths produce the same AI-powered insights, themes, and quotes. See [Transcript Upload](/docs/feedback-methods/user-interviews/transcript-upload) for details on the transcript path. ## Uploading a Video or Audio Interview 1. Navigate to **Manage → User Interviews** 2. Click **Add Interview** — a guided upload wizard opens 3. Select **Interview Video** as the input type 4. Drop your video or audio files onto the upload area — you can add multiple files at once 5. Deck advances automatically to the **Interview Details** step as your files begin uploading 6. Fill in each interview's name, date, and optionally a customer email directly in the table 7. Need to add more files? Click **Add More** to include additional recordings without starting over 8. Once all files finish uploading, click **Upload Interviews** to submit > **Tip:** You can edit the interview name and date for each file while uploads are still in progress — you don't have to wait. ## What Happens After Submission Once you click **Upload Interviews**, Deck immediately adds your interviews to the interviews list with a **Processing** status — no page refresh needed. You can navigate away and come back; the list will update as each interview finishes. Behind the scenes, Deck's AI agents: 1. **Transcribe** the audio or video via AssemblyAI 2. **Extract insights** — key themes and pain points are identified 3. **Map quotes** — verbatim quotes are linked to each insight 4. **Tag themes** — insights are grouped into your existing themes or new ones are created 5. **Generate a summary** — a narrative overview of the interview is produced Processing typically completes in under 5 minutes. You'll see the status change from **Processing** to the interview view once it's ready. When you open a processed interview, Deck highlights the transcript passages connected to each insight and saves those placements so the same highlights reload quickly next time. # Transcript Upload (/docs/feedback-methods/user-interviews/transcript-upload) # Transcript Upload Don't have a video or audio file? No problem. Deck lets you upload a raw interview transcript and get the same AI-powered synthesis, themes, and insights as a full video interview — in seconds. ## Supported Formats Deck automatically detects and parses transcript formats: | Format | How to export | Auto-detected? | | --------------------------- | ---------------------------------------------------------------------------------------- | ------------------- | | **WebVTT** (`.vtt`) | Export from Zoom, Teams, Google Meet, or most transcription tools | Yes | | **Google Meet** (`.txt`) | Download the transcript from a Google Meet recording | Yes | | **Otter.ai** | Export transcript from Otter.ai or copy from the web app | Yes | | **Zoom** (`.vtt` or `.txt`) | Download the auto-transcript from Zoom cloud recordings | Yes | | **Lookback** | Export session transcript from Lookback | Yes | | **Plain Text** | Any unformatted text separated by blank lines — no speaker labels or timestamps required | Yes (3+ paragraphs) | You can also paste the transcript text directly — Deck handles format detection automatically. > **Tip:** If Deck picks the wrong format, the speaker segments shown in the Review step will look off. Use the manual format selector in the transcript input step to correct it before proceeding. ## How to Upload a Transcript 1. Navigate to **Manage → User Interviews** 2. Click **Add Interview** — a guided upload wizard opens 3. Select **Interview Transcript** as the input type 4. Choose how you want to add your transcript: * **Upload a file** — drag and drop a `.vtt`, `.txt`, or `.docx` file onto the drop zone * **Manual Entry** — paste the transcript directly into the text area 5. Deck automatically detects the format and shows you the segment count and detected format 6. Click **Next** to proceed to **Interview Details** 7. Fill in the interview metadata (name, date, and optionally a customer email) 8. Click **Next** to proceed to the **Review** step 9. Edit speaker assignments and segment text as needed directly in the transcript editor 10. Click **Upload Interview** to start AI processing ## Interview Details In the Interview Details step, fill in your interview metadata: | Field | Required | Description | | ------------------ | -------- | ------------------------------------------------------------ | | **Interview Name** | Yes | A label for this interview (e.g. "User Research Session #3") | | **Interview Date** | Yes | When the interview took place | | **User Email** | No | Your customer's email address | The **Interview Name** and **Interview Date** must be provided before you can advance to the Review step. ## Editing the Transcript Once parsed, you can edit the transcript directly in the Review step before submitting: * **Rename a speaker** — click any speaker badge and type directly to rename it inline; all segments attributed to that speaker update automatically * **Edit segment text** — click any segment's text area to correct transcription errors * **Delete a segment** — remove any segment that doesn't belong in the interview This is especially useful with Plain Text transcripts, where all content is initially assigned to a single speaker. You can rename speaker badges and re-attribute segments to the correct participants before processing. > **Note:** Edits apply only to what Deck processes — your original file is not modified. ## What Happens Next Once you submit, Deck's AI agents process the transcript the same way they process video interviews: 1. **Insight extraction** — key themes and pain points are identified 2. **Quote mapping** — verbatim quotes are linked to each insight 3. **Theme tagging** — insights are grouped into your existing themes or new ones are created 4. **Summary generation** — a narrative summary of the interview is produced Processing typically completes in under 2 minutes. ## Tips for Best Results * **Minimum length:** Transcripts must be at least 100 words and 10 lines. Very short excerpts won't be processed. * **Maximum length:** Up to 50,000 words are supported. * **Speaker labels:** Make sure speaker names are consistent throughout the transcript (e.g., always "Jane Smith" not sometimes "Jane" and sometimes "Interviewer"). * **Clean transcripts:** Remove any introductory notes or boilerplate that isn't part of the conversation itself. ## Transcript vs. Video — What's Different? | | Video/Audio | Transcript | | ---------------------- | -------------------------- | -------------------------- | | Transcription | Automatic via AssemblyAI | You provide the transcript | | Video clips | Available (jump to moment) | Not available | | Processing time | \~5 minutes | \~2 minutes | | Insights & themes | ✓ | ✓ | | Speaker identification | ✓ | ✓ | | Quote extraction | ✓ | ✓ | # Attio (/docs/integrations/crms/attio) Attio is a modern **Customer Relationship Management (CRM)** platform that, within Deck, lets you sync your **People and Company records directly into insights**. Once Attio is connected to your workspace, Deck enriches your customer feedback data — letting you **filter, segment, and prioritize insights by real business context from your CRM.** *** ## Why connect Attio? Integrating Attio with Deck allows your team to: * **Unify context** — tie every insight to the right person or company record. * **Segment intelligently** — understand which customers or accounts are driving specific themes. * **Prioritize with confidence** — see which companies are affected by a problem before deciding what to fix. * **Report impact faster** — connect product decisions to the customers and accounts that matter most. *** ## How the integration works 1. **Enable Attio** Go to **Settings → Integrations → Attio**, and connect your org. Deck uses OAuth to securely authenticate your account. 2. **Automatic record sync** After connecting, Deck reads your Attio **People** and **Companies** records and uses them to enrich feedback and insights. 3. **Insight enrichment** When feedback is processed, Deck matches it to the right Attio record. For example: * Feedback from a contact at "Acme Inc." will link to the corresponding company in Attio. * Insights inherit the associated Attio record for filtering and segmentation. Deck **does not modify** your Attio data — it only reads People and Company records for enrichment. *** ## Data refresh & security * Records are fetched on demand when enrichment is needed. * Deck never writes to Attio — it only reads data. * All data is encrypted in transit and at rest. * You can disconnect Attio at any time from the **Integrations** page. *** ## Filtering themes by Attio fields Once Attio is connected and you've selected which fields to sync, you can filter themes and insights by Attio People or Company attributes directly from the themes view. 1. Go to **Visualize → Themes** (list or detail view). 2. Click the **Attio** filter button in the header. 3. Add one or more filter conditions — choose a field (e.g. "Job Title"), an operator (e.g. "Equals"), and a value. 4. Click **Apply filters**. Deck fetches matching records and narrows the themes view to insights linked to those contacts or companies. You can stack multiple filters and clear them all at once with the **Clear all** button. *** ## Selecting which fields to sync By default Deck reads all available Attio People and Company attributes. You can choose which fields appear as filter options: 1. Go to **Settings → Integrations → Attio**. 2. Under **Field selection**, pick the People and Company attributes you want to filter by. 3. Click **Save**. Only enabled fields will appear in the filter popover. *** ## Notes * People and Company records are synced separately — both object types are available for enrichment and filtering. * Attio filtering is applied in-memory on the Deck side. Unlike HubSpot (which uses a server-side Search API), Deck fetches records from Attio and evaluates your filter conditions locally. Large workspaces may see slightly longer apply times. # HubSpot (/docs/integrations/crms/hubspot) HubSpot is a **Customer Relationship Management (CRM)** software that, within Deck, enables your organization to **sync customer Companies and Contacts directly to insights in Deck.** Once HubSpot is connected to your workspace, Deck automatically enriches your customer feedback data — letting you **filter, segment, and prioritize insights by real business metrics.** *** ## Why connect HubSpot? Integrating HubSpot with Deck allows your team to: * **Unify context** — tie every insight to the right customer record. * **Segment intelligently** — filter themes and insights by HubSpot fields like *Annual Revenue*, *Lifecycle Stage*, *Industry*, or *Customer Health Score*. * **Prioritize with confidence** — understand which customers are affected by specific problems, and which accounts matter most. * **Report impact faster** — show how product decisions relate to revenue, retention, and other CRM metrics. *** ## Example questions Deck can answer with HubSpot Once connected, Deck can help you answer questions such as: 1. What were our highest-paying customers' pain points last quarter? 2. Which churned customers mentioned implementation friction? 3. Are expansion-stage accounts requesting specific integrations? 4. How do product issues differ between SMB vs. Enterprise customers? 5. What themes correlate most with upsell opportunities? *** ## How the integration works 1. **Enable HubSpot** Go to **Settings → Integrations → HubSpot**, and connect your org. Deck uses OAuth to securely authenticate your account. 2. **Choose which properties to sync** During setup, you'll select which **Company** and **Contact** fields to bring in (e.g. `Annual Revenue`, `Industry`, `Lifecycle Stage`, etc.). Deck stores only the fields you select. 3. **Automatic enrichment** When new feedback or interviews are uploaded, Deck matches them to the right customer record. For example: * Feedback from "Acme Inc." will automatically link to the `Acme` Company in HubSpot. * Insights generated from that feedback will inherit selected CRM properties. 💡 Deck **does not modify** your HubSpot data — it only reads selected fields for enrichment. *** ## Filtering insights by HubSpot properties Once you've configured HubSpot field selection in your integration settings, you can filter themes and insights by those properties: 1. **Navigate to a theme** — Go to any theme detail page or themes list page 2. **Open HubSpot filters** — Click the filter icon and select "HubSpot" 3. **Build your filter** — Choose between: * **Company properties** — Filter by company-level attributes (e.g., Annual Revenue, Industry) * **Contact properties** — Filter by contact-level attributes (e.g., Job Title, Lifecycle Stage) 4. **Select your criteria** — Choose an operator and enter values: * `equals` — Exact match * `not_equal` — Exclude specific values * `contains_token` — Partial text match * `greater_than` / `less_than` — Numeric comparisons * `has_property` / `not_has_property` — Check if field is populated You can apply multiple filters at once to create sophisticated segments. *** ## Mapping custom fields Because each HubSpot setup is unique, you can **select any custom or standard properties** from your HubSpot instance. For example: If you have custom properties like `Customer_Health_Score__c` or `Contract_Value`, you can select them during field configuration and use them for filtering. *** ## Data refresh & security * Data is refreshed **on demand** when you apply filters. * Deck never writes to HubSpot — it only reads data. * All data is encrypted in transit and at rest. * You can disconnect HubSpot anytime from the **Integrations** page. We do not store any of your HubSpot data in our own databases besides customer ID and company ID. *** # Salesforce (/docs/integrations/crms/salesforce) Salesforce is a **Customer Relationship Management (CRM)** software that, within Deck, enables your organization to **sync customer Accounts and Contacts directly to insights in Deck.** Once Salesforce is connected to your workspace, Deck automatically enriches your customer feedback data — letting you **filter, segment, and prioritize insights by real business metrics.** *** ## Why connect Salesforce? Integrating Salesforce with Deck allows your team to: * **Unify context** — tie every insight to the right customer record. * **Segment intelligently** — filter themes and insights by Salesforce fields like *ARR*, *Lifecycle Stage*, *Industry*, or *Churn Risk*. * **Prioritize with confidence** — understand which customers are affected by specific problems, and which accounts matter most. * **Report impact faster** — show how product decisions relate to revenue, retention, and other CRM metrics. *** ## Example questions Deck can answer with Salesforce Once connected, Deck can help you answer questions such as: 1. What were our highest-paying customers’ pain points last quarter? 2. Which churned customers mentioned implementation friction? 3. Are expansion-stage accounts requesting specific integrations? 4. How do product issues differ between SMB vs. Enterprise customers? 5. What themes correlate most with upsell opportunities? *** ## How the integration works 1. **Enable Salesforce**\ Go to **Settings → Integrations → Salesforce**, and connect your org. Deck uses OAuth to securely authenticate your account. 2. **Choose which properties to sync**\ During setup, you’ll select which **Account** and **Contact** fields to bring in (e.g. `ARR`, `Industry`, `Customer Tier`, etc.).\ Deck stores only the fields you select. 3. **Automatic enrichment**\ When new feedback or interviews are uploaded, Deck matches them to the right customer record.\ For example: * Feedback from "Acme Inc." will automatically link to the `Acme` Account in Salesforce. * Insights generated from that feedback will inherit selected CRM properties. 💡 Deck **does not modify** your Salesforce data — it only reads selected fields for enrichment. *** ## Mapping custom fields Because each Salesforce setup is unique, Deck allows you to **map your own field names** to internal Deck properties. For example:\ If one customer's ARR field is `arr__c` and another's is `annual_revenue`, both can be mapped to "ARR" in Deck for consistent reporting. *** ## Data refresh & security * Data is refreshed **automatically every 24 hours** or on demand. * Deck never writes to Salesforce — it only reads data. * All data is encrypted in transit and at rest. * You can disconnect Salesforce anytime from the **Integrations** page. We do not store any of your Salesforce data in our own databases besides customer ID and account ID. *** # Daily Channel Synthesis (/docs/integrations/slack/daily-channel-synthesis) # Daily Channel Synthesis Once you have connected Slack and added the Deck Bot to your channels, Deck automatically syncs and synthesizes messages from those channels on a daily basis. This means your team's Slack conversations are continuously turned into structured, actionable customer insights without any manual effort. ## How It Works 1. **Message syncing**: Deck syncs new messages from each connected Slack channel throughout the day. Messages are fetched in small batches to keep the process fast and reliable. 2. **Classification**: Each message is analyzed by Deck's AI agents to determine whether it contains customer feedback or is general conversation. Only messages identified as feedback move to the next step. 3. **NPS routing**: Messages that look like NPS responses are routed to Deck's NPS processor so scores and respondent feedback can be tracked correctly. For substantive feedback, Deck stores a concise synthesized title for the resulting NPS insight. 4. **Insight extraction**: Non-NPS feedback messages are synthesized into insights. Deck identifies the customer quote, assigns a sentiment, picks a category (such as Pain Point, Feature Request, or Delight), and links the insight to a relevant theme. 5. **Theme assignment**: If a matching theme already exists, the insight is added to it. If the feedback describes something new, Deck creates a new theme automatically. ## What Gets Synthesized Deck focuses on messages that contain customer feedback. Common examples include: * Customer support conversations forwarded to a Slack channel * Feedback shared by sales or customer success teams * Product requests or bug reports posted by teammates * Customer quotes or survey responses shared in channels Messages that are general team chatter, bot notifications, or join/leave events are automatically filtered out. ## Viewing Synthesized Insights After synthesis, your insights appear in two places: * **Visualize environment**: Browse and filter all insights alongside data from your other integrations. Slack-sourced insights are treated the same as insights from interviews, support tickets, or surveys. * **Manage Slack page**: See each connected channel, the individual messages that were synced, and which insights were created from those messages. This is helpful for tracing an insight back to its original Slack message. * **NPS reporting**: Slack messages detected as NPS responses also contribute to your NPS analytics (score trends and respondent breakdowns). ## Tips for Best Results * **Dedicate channels to customer feedback**: Channels that mix internal team chatter with customer feedback will still work, but dedicated feedback channels produce cleaner results. * **Share full customer quotes**: When your team shares feedback in Slack, including the customer's actual words helps Deck extract more accurate insights. * **Connect multiple channels**: You can connect as many channels as your plan allows. Each channel is synced and synthesized independently. ## Channel Limits by Plan The number of Slack channels you can connect depends on your pricing tier: | Plan | Max Slack Channels | | ---------- | ------------------ | | Free | 1 | | Starter | 3 | | Business | 10 | | Enterprise | Unlimited | To add more channels, upgrade your plan or remove an existing channel to free up a slot. # Slack (/docs/integrations/slack) Slack is a collaborative work messaging app that enables teams to perform async tasks. Once Slack is connected to your workspace, you'll be able to: * Connect the Deck Bot to the Slack channels where you receive customer feedback, * Auto-sync and synthesize those feedback messages into Deck, add them to new or existing themes, and visualize them in the Visualize environment. * Route NPS-style Slack messages into Deck's NPS analytics pipeline automatically. *** ## Connecting with Slack *You will need to be both a Slack admin and a Deck admin to sync both.* Follow these steps to connect with Slack in your org: 1. Go to **Settings > Integrations** by clicking on the top hand side's avatar. 2. In the Integrations page, look for Slack. Click on the Slack card once you find it, 3. You should now be in the Slack page. **Click 'Connect'**, 4. A Slack OAuth flow will appear, asking you to sign in and authorize Deck on your Slack organization, 5. Once you accept, Slack will be connected to Deck. 6. You will need to be both a Slack and Deck admin to do that. ## Adding DeckBot to Slack channels In order to sync channels and messages into Deck, you'll need to add the Deck Bot to all Slack groups you want to sync messages from. To do that, follow these steps: 1. Find the channels you want to sync with, 2. On each channel's text field, write /invite Deck, 3. The option to invite Deck Bot should appear in your screen. Select that one, 4. After selecting Deck to join all channels, we'll start syncing and synthesizing your customer messages ## Managing Insights coming from Slack Once your messages are being synced into Deck, they'll be turned into insights by **Deck's Synthesis Agents.** They'll all be shown in the **[Slack Page](https://getdeck.io/manage/slack) in the Manage environment**. You can then visualize these insights like any other in the Visualize environment. If you hold a Researcher role and want to edit or delete these insights (or just see which messages have turned into which insights), you can go to the Manage Slack page. You'll be able to see each individual channel and all messages for each channel in the group. # Insights Delivery (/docs/integrations/slack/insights-delivery) # Insights Delivery to Slack Deck can send a daily summary of newly discovered insights directly to a Slack channel of your choice. This keeps your team informed about fresh customer feedback without needing to open the Deck app. ## How It Works Every day, Deck checks whether any new insights were created for your organization in the past 24 hours. If there are new insights, Deck formats them into a clear, organized message and posts it to your configured Slack channel. The daily notification includes: * **New insights grouped by category** (Pain Points, Feature Requests, Bugs, Delight, etc.) * **Insight names and customer quotes** so you can quickly understand what customers are saying * **Theme associations** showing which broader themes the new insights belong to If there are no new insights on a given day, Deck skips the notification to keep your channel noise-free. ## Enabling Insight Notifications To start receiving daily insight summaries in Slack: 1. Make sure Slack is connected to your Deck organization (see the [Slack setup guide](/integrations/slack)) 2. Go to **Settings > Integrations > Slack** 3. Enable **Insight Notifications** 4. Select the Slack channel where you want to receive the daily summary The Deck Bot must be a member of the target channel. If it is not already, invite it by typing `/invite Deck` in that channel. ## What the Notifications Look Like Each notification is formatted using Slack's Block Kit for easy readability. Insights are grouped by category, and each insight shows its name and the original customer quote. The message also includes a link back to Deck so you can explore the insights in more detail. ## Configuring the Delivery Channel You can change the delivery channel at any time: 1. Go to **Settings > Integrations > Slack** 2. Update the channel selection under **Insight Notifications** 3. The next daily notification will be sent to the new channel ## Tips * **Choose a channel your product team monitors**: This ensures the right people see new feedback as it comes in. * **Pair with Daily Channel Synthesis**: Combine insight notifications with [daily channel synthesis](/integrations/slack/daily-channel-synthesis) for a complete feedback loop — Deck reads from your Slack channels and writes summaries back. * **Use a dedicated channel**: Consider creating a channel like `#deck-insights` to keep notifications organized and easy to find. # Company context (/docs/org-settings/context/company-information) ## Company information Company information captures the **high‑level story of your business**: your mission, target segments, business model, and what “success” looks like for your customers. This is not marketing copy — it’s the pragmatic context you’d give a new PM or researcher on their first day so they can immediately understand which problems matter most. When Deck’s Agents read your feedback, this context helps them **interpret the same words differently** depending on your market, ICP, and strategy. ### Best practices for company information * **Write for a new teammate**: Explain your company as if you’re onboarding a senior PM who has never seen your product before. * **Anchor on customers**: Emphasize who your ideal customers are, what jobs they hire you for, and what outcomes they care about. * **Be specific about segments**: Call out key slices like SMB vs. Enterprise, self‑serve vs. sales‑led, or primary industries you focus on. * **Capture strategic focus**: Mention current bets or themes (e.g. “improve onboarding for mid‑market customers in fintech”). * **Keep it alive**: Revisit this section whenever your positioning, ICP, or go‑to‑market focus changes. ### Example company descriptions * **B2B SaaS – Revenue Operations Platform**\ We help mid‑market and enterprise B2B companies standardize how they manage their revenue funnel. Our primary users are RevOps leaders and Sales managers who want cleaner data, better pipeline visibility, and faster forecasting. We sell via a sales‑assisted motion in North America and Western Europe, with contracts typically between $40–250k ARR. * **Fintech – SMB Payments & Invoicing**\ Deck of Pay helps service‑based small businesses (agencies, consultancies, trades) get paid faster. Our customers care most about reducing time‑to‑cash, avoiding manual reconciliation, and keeping client experiences professional. Our focus today is English‑speaking markets, with strong adoption among solo founders and 2–20 person teams. * **Healthcare – Patient Engagement Platform**\ We work with hospital systems and large clinics that want to improve patient communication and reduce no‑shows. Our primary stakeholders are Clinical Operations and Patient Experience teams. We integrate tightly with existing EHRs and must always operate within strict compliance requirements (HIPAA, SOC 2, etc.). # Organization Context (/docs/org-settings/context) import { Callout } from 'fumadocs-ui/components/callout'; Organization context settings are only editable by **organization admins**. Members can view the settings pages but cannot make changes. Deck lets you add high‑quality **organization context** so that Deck's Agents can interpret, group, and prioritize your customer feedback in a way that actually matches your business. There are three core types of context you can maintain for each organization: * **[Company Information](https://docs.getdeck.io/docs/org-settings/context/company-context)** – who you are, how you operate, and who you serve. * **[Product Information](https://docs.getdeck.io/docs/org-settings/context/product-information)** – what you offer, how it works, and how customers use it. * **[Keywords](https://docs.getdeck.io/docs/org-settings/context/keywords)** – the exact words, phrases, and internal jargon your customers and team use. *** ## How context improves Deck's Agents When you keep these three types of context up to date, Deck's Agents can: * **Group feedback more accurately** around the right product areas and company priorities. * **Name themes and insights** using language that matches how your team actually talks. * **Disambiguate similar terms** across industries, products, or personas (e.g. "accounts" in CRM vs. billing). * **Highlight what matters** for your specific strategy, not just what's mentioned most often. * **Give product teams a head start** by summarizing feedback in a way that feels native to your company. # Keywords (/docs/org-settings/context/keywords) ## Keywords Keywords capture the **exact terms and phrases** your customers and internal teams use to talk about your product, problems, and workflows. They teach Deck’s Agents your organization’s language so that synonyms, acronyms, and local jargon are interpreted correctly when clustering and labeling insights. Good keywords go beyond simple feature names and include **customer‑phrased problems**, domain‑specific terminology, and common abbreviations. ### Best practices for keywords * **Start from real conversations**: Pull phrases from call transcripts, support tickets, community posts, and sales notes rather than inventing them. * **Include synonyms and variants**: Add multiple ways customers refer to the same idea (e.g. “usage‑based pricing”, “metered billing”, “consumption pricing”). * **Capture internal jargon carefully**: Document team‑specific terms (e.g. “Smart Sync”, “Campaigns v2”) and explain what they mean in plain language first. * **Focus on recurring concepts**: Prioritize words and phrases that show up frequently across interviews, NPS comments, and tickets. * **Review periodically**: As your product and market evolve, remove outdated terms and add new ones to keep the language model aligned. ### Example keyword sets * **B2B SaaS – Revenue Operations Platform**\ “pipeline hygiene”, “stale opportunities”, “close‑date push”, “MEDDPICC”, “forecast override”, “deal desk”, “QBR deck”, “multi‑threading” * **Fintech – SMB Payments & Invoicing**\ “getting paid on time”, “late invoices”, “payment link”, “card fees”, “ACH payout delay”, “deposit schedule”, “Stripe alternative”, “invoice reminders” * **Healthcare – Patient Engagement Platform**\ “no‑show”, “appointment adherence”, “SMS opt‑out”, “recall campaign”, “missed follow‑up”, “patient portal”, “reminder fatigue”, “care gap outreach” *** # Product context (/docs/org-settings/context/product-context) ## Product information Product information explains **what you actually ship**: your core modules, workflows, surfaces, and the main value they deliver. Think of this as the “tour of the product” you would give to a PM joining the team or a sales engineer ramping up — focused on functionality and value, not roadmap. This context helps Deck’s Agents **map feedback to the right parts of your product** and understand how different features connect. ### Best practices for product information * **Describe core modules and workflows**: Break your product into major areas (e.g. “Dashboard, Workflows, Reporting, Admin”) and explain what each is for. * **Connect to user goals**: For each module, describe what users are trying to accomplish and what “success” looks like. * **Include canonical flows**: Call out the 3–5 most important journeys (e.g. “invite a teammate”, “launch a new campaign”, “approve an invoice”). * **Note constraints and edge cases**: Mention important limitations, dependencies, or regulations that shape how the product behaves. * **Avoid roadmap details**: Focus on what exists and how it works today so Deck can interpret feedback against the current experience. ### Example product descriptions * **B2B SaaS – Revenue Operations Platform**\ Our product has three main modules: **Pipeline Workspace**, **Data Health**, and **Forecasting**. Pipeline Workspace lets sales managers create and manage views of opportunities across teams. Data Health surfaces duplicate or missing CRM data and guides reps through clean‑up workflows. Forecasting aggregates opportunity data into roll‑up forecasts for sales and finance leaders. * **Fintech – SMB Payments & Invoicing**\ Merchants create branded invoices, send them via email or link, and accept card or ACH payments through our hosted payment page. An **Invoices** tab shows outstanding and paid invoices, while a **Payouts** tab shows when funds will land in their bank account. A light **Client Manager** lets them see history per customer without needing a full CRM. * **Healthcare – Patient Engagement Platform**\ Our platform sends appointment reminders via SMS and email, lets patients confirm or reschedule, and syncs those changes back to the EHR. A **Campaigns** area supports bulk educational messages to specific patient cohorts. An **Analytics** module shows trends in no‑show rates, response rates, and preferred channels by demographic. ***