# Help Center

<h2 align="center">What can we help you find?</h2>

<p align="center">Browse the topics below or use the GitBook assistant to ask anything you need help with.</p>

<p align="center"><button type="button" class="button primary" data-action="ask" data-icon="sparkles">Ask GitBook AI</button> <a href="mailto:support@birdie.ai" class="button secondary">Contact support</a></p>

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h4><i class="fa-leaf">:leaf:</i></h4></td><td><strong>Getting started</strong></td><td>Get help with the basics</td><td><a href="/pages/ce2412b53684dceb2b04aeae8fd0a545b5284fa9">/pages/ce2412b53684dceb2b04aeae8fd0a545b5284fa9</a></td></tr><tr><td><h4><i class="fa-book">:book:</i></h4></td><td><strong>Core Concepts &#x26; Entities</strong></td><td>Deep dive understanding</td><td><a href="/pages/ucGtp3Dqe9MoKS5f6kB1">/pages/ucGtp3Dqe9MoKS5f6kB1</a></td></tr><tr><td><h4><i class="fa-bullhorn">:bullhorn:</i></h4></td><td><strong>Customer Intelligence</strong></td><td>Listen and act</td><td><a href="/pages/v0HEBmEcFTyXaxbgtX9n">/pages/v0HEBmEcFTyXaxbgtX9n</a></td></tr><tr><td><h4><i class="fa-headset">:headset:</i></h4></td><td>Frontline Intelligence</td><td>Monitor and assess</td><td><a href="/pages/cdT54MNAQHTBxD6Zzl9S">/pages/cdT54MNAQHTBxD6Zzl9S</a></td></tr><tr><td><h4><i class="fa-gear">:gear:</i></h4></td><td><strong>Admin &#x26; Settings</strong></td><td>Manage your account</td><td><a href="/pages/PWZIawRGbljuqbN8h1EU">/pages/PWZIawRGbljuqbN8h1EU</a></td></tr><tr><td><h4><i class="fa-plug">:plug:</i></h4></td><td><strong>Integrations &#x26; Data Ingestion</strong></td><td>Extend your workflow</td><td><a href="/pages/jhPxI9jymPm4CFE1MTbU">/pages/jhPxI9jymPm4CFE1MTbU</a></td></tr><tr><td><h4><i class="fa-bullhorn">:bullhorn:</i></h4></td><td><strong>Product updates</strong></td><td>See what’s new</td><td><a href="/pages/QHphxQ7vQgoQwcWlWyU6">/pages/QHphxQ7vQgoQwcWlWyU6</a></td></tr></tbody></table>


# Frequently Asked Questions

Can't find what you're looking for? Every product area keeps its own FAQ close to the relevant docs — this page indexes all of them in one place. You can also [contact support](mailto:support@birdie.ai) or ask your Customer Success Manager.

## General

<details>

<summary>Does Birdie train AI models on my data?</summary>

No. Birdie's AI is trained on public and synthetic datasets, never on customer data. See the [Architecture & Tech FAQ](/admin-and-settings/security/faqs-architecture-and-tech#ai-and-nlp-models) and [UK, GDPR & Data Privacy FAQ](/admin-and-settings/security/uk-gdpr-and-data-privacy-faq) for details.

</details>

<details>

<summary>Is my data anonymized? Where is it hosted?</summary>

Yes. See the [Security & Data Protection Overview](/admin-and-settings/security/security-and-data-protection-overview), [PII & PHI anonymization](/admin-and-settings/security/pii-and-phi-anonymization), and the region-specific [LGPD](/admin-and-settings/security/lgpd-data-privacy) / [UK & GDPR](/admin-and-settings/security/uk-gdpr-and-data-privacy-faq) FAQs.

</details>

<details>

<summary>What's the difference between Areas, Segments, Opportunities, and Reasons?</summary>

These are Birdie's core taxonomy concepts. See [Core Concepts & Entities](https://github.com/birdie-ai/gitbook/tree/main/core-concepts-and-entities/README.md) for definitions, or the [Glossary](/getting-started/glossary).

</details>

<details>

<summary>How do I get help beyond this Help Center?</summary>

Ask your Customer Success Manager, or email <support@birdie.ai>.

</details>

## Customer Intelligence

* [Dashboard Tabs — Troubleshooting & FAQs](/customer-intelligence/dashboards-and-reporting/dashboard-tabs#troubleshooting-and-faqs)
* [Custom Dashboards — Common Questions](/customer-intelligence/dashboards-and-reporting/custom-dashboards#common-questions)
* [Dashboard Widgets — Common Questions](/customer-intelligence/dashboards-and-reporting/dashboard-widgets#common-questions)
* [AI Prompt Widget — Common Questions](/customer-intelligence/dashboards-and-reporting/dashboard-widgets/ai-prompt-widget#common-questions)
* [Waterfall Chart (Beta) — Troubleshooting & FAQs](/customer-intelligence/dashboards-and-reporting/dashboard-widgets/waterfall-chart-beta#troubleshooting-and-faqs)
* [How to analyze Opportunities — Common Questions](/customer-intelligence/opportunities/how-to-analyze-opportunities#common-questions)

## Frontline Intelligence

* [Manual Evaluation — Troubleshooting & FAQs](/frontline-intelligence/manual-evaluation#troubleshooting-and-faqs)
* [Monitor Evaluations — Troubleshooting & FAQs](/frontline-intelligence/manual-evaluation/monitor-evaluations#troubleshooting-and-faqs)
* [Agent Feedback — Troubleshooting & FAQs](/frontline-intelligence/agent/agent-feedback#troubleshooting-and-faqs)

## Admin & Settings

* [Organization — Troubleshooting & FAQs](/admin-and-settings/organization#troubleshooting-and-faqs)
* [Notification Channels — Troubleshooting & FAQs](/admin-and-settings/notifications/channels#troubleshooting-and-faqs)
* [Alerts — Troubleshooting & FAQs](/admin-and-settings/notifications/alerts#troubleshooting-and-faqs)
* [Workspaces — Troubleshooting & FAQs](/admin-and-settings/workspaces#troubleshooting-and-faqs)
* [Initiatives — Troubleshooting & FAQs](/admin-and-settings/initiatives#troubleshooting-and-faqs)
* [SSO Groups — FAQ](/admin-and-settings/security/sso-groups#faq)
* [FAQs - Architecture & Tech](/admin-and-settings/security/faqs-architecture-and-tech) *(full page)*
* [UK, GDPR & Data Privacy FAQ](/admin-and-settings/security/uk-gdpr-and-data-privacy-faq) *(full page)*

## Integrations & Data Ingestion

* [Metadata Imports — FAQ](/integrations-and-data-ingestion/metadata-imports#frequently-asked-questions)
* [Agent & Supervisor Mapping — FAQ](/integrations-and-data-ingestion/agent-supervisor-mapping#frequently-asked-questions)
* [Data Anonymizer User Guide — FAQ](/admin-and-settings/security/data-anonymizer-user-guide#frequently-asked-questions)
* [Birdie MCP Server — Troubleshooting](/integrations-and-data-ingestion/birdie-mcp-server#troubleshooting)


# Platform Overview

## Platform Overview

Birdie organizes and analyzes feedback in a structured manner, enabling your team to track trends, identify opportunities, and prioritize actions based on concrete data. This guide presents the platform's structure and its key concepts, serving as a reference point to facilitate your daily navigation and usage.

If you require additional support, check our team availability for live training sessions or to clarify questions via shared groups (your Slack, Teams, Google Chat, WhatsApp groups) or email <support@birdie.ai>.

### Birdie Methodology

Birdie is based on the MIPM (Monitor, Identify, Prioritize, Measure), a continuous improvement cycle inspired by the PDCA model. It structures feedback analysis into five main stages. To put it simply, it empowers your team to:

{% stepper %}
{% step %}

### Centralize Feedback

Consolidate all customer interactions into a single flow, preserving relevant metadata (segments, profiles, channels).
{% endstep %}

{% step %}

### Understand

Discover and measure recurring problems and requests to understand factors impacting customer experience.
{% endstep %}

{% step %}

### Prioritize and Act

Use Birdie's data analysis to support decision-making on which actions should be prioritized. Create, share and follow up with ongoing Initiatives to address prioritized actions.
{% endstep %}

{% step %}

### Measure Results

Evaluate the impact of implemented initiatives through the platform's tracking functionalities.
{% endstep %}
{% endstepper %}

These pillars ensure that your company can transform feedback into concrete improvements, monitoring each step of the process in a structured manner.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/HNUeOcxg-K.png)

## Platform Structure

Birdie offers a set of structural concepts to organize data, access, analysis, and actions. The main elements are described below.

### Organization and Workspace – Access Systems

Birdie offers flexibility in team and data management, allowing access to multiple Organizations and collaboration in Workspaces with permission control.

#### **Organizations – Access to Multiple Companies**

* Highest hierarchical level, ensuring total data separation between companies or business units.
* Users can access multiple Organizations without switching logins.

<div data-full-width="false"><img src="/files/ztZh5Wrv8Z9sWOKU9OXs" alt=""></div>

#### **Workspaces – Segmentation and Access Control**

* Within an Organization, Workspaces organize access to Collections (sets of Areas and Opportunities).
* Allow different teams to access only data and features that is relevant to their functions.

![](/files/TKgq61OBVOzPenJMIjm0)

{% hint style="warning" %}
Workspaces require the Enterprise plan. Talk to us.

Learn more about this feature by accessing the [release note](/product-updates-changelog/2025-q1/februrary-2025).
{% endhint %}

### Collections – Data Organization

Collections structure and group data within Birdie, allowing quick access to insights organized by major categories, such as Products, Squads, or Journeys. They are composed of Areas, Opportunities, Segments and Criteria and offer a hierarchical view that facilitates analysis.

![](/files/hlN2QRpvIc8WXrxI8JY1)

#### What are Collections?

* Units that bring together data and analyses related to a specific set of areas, opportunities, segments or criterion.
* Organizable by different parameters, such as product, team, or customer journey.
* Can be set as either Public (visible to the entire Organization) or Private (accessible only to its creator).
* Users can pin collections for quick access.

#### Relationship between Collections, Areas, and Opportunities

* Areas represent broad topics analyzed within the organization, while Opportunities are specific analyses within these areas.
* Collections group and structure these elements, making navigation and prioritization of insights more efficient.

### Custom Dashboards – Tell Data-Driven Stories

Custom Dashboards empower you to craft personalized views of your data, focusing on the insights that matter most. Instead of navigating multiple reports, you can consolidate key metrics, trends, and patterns in a single, interactive space.

With fully Custom Dashboards, you can:

* Create fully personalized dashboards using widgets like text blocks, charts, and tables.
* Track trends over time with dynamic visualizations.
* Visualize key insights in a way that best suits your workflow and strategic goals.
* Improve collaboration by centralizing essential data for decision-making.

For more information about Dashboards, refer to the complete [documentation](https://ask.birdie.ai/voice-of-customer/dashboards-and-reporting).

### Initiatives

An Initiative is an action plan designed to activate a change based on a discovered opportunity. It functions like a task or to-do item that the CX or Operations Team—responsible for monitoring Customer Intelligence—creates to escalate an issue or opportunity to another team within the company for resolution.

![](/files/j84m91RCQ9RBeilLYEFB)

For more information, check the full documentation:

* <https://ask.birdie.ai/voice-of-customer/initiatives>

### Data Analysis – How to Explore and Interpret

The Data Analysis page allows exploring metrics, identifying patterns, and extracting strategic insights. It combines the former Exploration and Areas & Opportunities pages into a single, streamlined experience. Use the available filters and analytical tools to segment information and understand the most relevant trends.

![](/files/SKFnTu1rm3Fk4gaXWzGA)

#### Areas of Interest

* Areas represent broad themes analyzed within the organization, allowing monitoring of patterns and assessing impacts over time.
* Each area contains specific metrics for quantitative analysis and action prioritization.

For details check the [Areas article](/core-concepts-and-entities/areas).

#### Opportunities

* Opportunities are specific insights within an Area, highlighting emerging trends and critical points for decision-making.
* Detailed analysis allows understanding the impact of each opportunity in the overall context.

For details check the [Opportunities article](/customer-intelligence/opportunities).

#### Segments

* Segments allow categorizing customers or feedback based on specific characteristics, adding an extra layer of context to the analysis.
* Identify which groups are most impacted by certain problems, assess trends over time, and compare metrics between segments.

For details check the [Segments article](/core-concepts-and-entities/segments).

#### How to Use Filters?

* Filters allow users to create areas and segments, analyze specific areas and opportunities, and define the context in which Skye operates.
* They refine analysis by selecting criteria such as period, category, or segment, facilitating comparison and pattern identification.

Full documentation on [using filters](/customer-intelligence/exploration-and-analysis/using-filters-in-birdie)

#### What are Sentiments and Intentions

* Automatic classification of sentiments and intentions helps interpret qualitative feedback, revealing tone and purpose of interactions.

Documentation on [signal, sentiments and intentions](/core-concepts-and-entities/signal-sentiments-and-intentions)

### Skye – AI Analysis Assistant

Skye is Birdie's intelligent assistant, developed to assist in data interpretation and facilitate qualitative analyses. Unlike quantitative metrics, which are more explored within Opportunities, Skye enables a deeper look into unstructured data, assisting in the discovery of trends and strategic insights.

#### How to Use Skye

* Access Skye by clicking the blue bird icon in the bottom left corner of the page (within an Area, Opportunity, or on the exploration page).

#### How Skye Assists in Analysis

* Identifies patterns and hidden insights in qualitative feedback.
* Operates based on applied filters to tailor analyses to the relevant context.
* Helps discover new opportunities within feedback, facilitating their addition to the platform for further quantification and monitoring.

More details on [using skye](/customer-intelligence/exploration-and-analysis/understanding-and-using-skye-in-birdie)

#### Analysis Page Structure

The analysis page is designed to facilitate data interpretation, providing actionable insights. All interface elements align with the applied filters. Key components include:

* General Metrics: Quantitative overview of filtered data with key performance indicators.
* Chart: Visual representations of trends, aiding in identification of variations and correlations among metrics. The chart can be customized but will show the Organization overall feedback count as default.

<img src="/files/qxr4LFMDm5vncPmqoCwR" alt="" width="563">

* What's Happening: An AI-generated summary providing relevant insights based on identified data patterns.

<img src="/files/xNx7ScLPMqDbeZghB56A" alt="" width="375">

* Comments: Displays filtered results with options for expanded views to support in-depth analysis.

![](/files/T7SDXWcPKEinvnaGGeYk)

* Metrics Table: Separate tabs and tables covering Areas, Opportunities, Reason, Criteria and Segments for detailed metric comparisons and prioritization.

![](/files/OHX60kw1713teTFIPvak)

## Summary

Birdie provides a robust and flexible platform for feedback management and analysis, enabling teams to transform data into actionable insights. By understanding and utilizing Organizations, Workspaces, Collections, Areas, Opportunities, Segments, Initiatives, and tools like Skye and Custom Dashboards, your organization can monitor, identify, prioritize, and measure continuous improvements.

For additional support: in-app chat (Intercom), email [support@birdie.ai](https://email:support@birdie.ai), or live training sessions.


# Birdie Methodology (MIPM Cycle)

Birdie is built around a continuous improvement cycle called MIPM — Monitor, Identify, Prioritize, Measure.

It’s inspired by the classic PDCA model, but tailored for Customer Experience (CX) and Customer Intelligence programs.

The goal: help your team turn scattered feedback into structured insights and measurable improvements.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/2QUyxzcNuZ.png)

## The 4 Pillars of MIPM

{% stepper %}
{% step %}

### Monitor

Centralize all your customer feedback into Birdie — from support tickets, app reviews, surveys, social mentions, or data warehouse exports.

* Keep the original context and metadata (segments, channels, profiles, behavior).
* Ensure nothing gets lost, no matter where feedback comes from.
  {% endstep %}

{% step %}

### Identify

Use Birdie’s AI to surface patterns, recurring issues, and customer requests.

* Spot signals, sentiments, and intentions in unstructured feedback.
* Group related feedback into Areas (broad themes) and Opportunities (specific insights).
* Quantify how often issues appear and who they affect.
  {% endstep %}

{% step %}

### Prioritize

Not every problem is equally urgent. Birdie helps you decide what matters most.

* Compare Opportunities by volume, impact, and affected segments.
* Link feedback trends to business KPIs.
* Create Initiatives to act on high-priority insights and assign them to owners.
  {% endstep %}

{% step %}

### Measure

Track whether your actions are paying off.

* Measure changes in metrics (NPS, CSAT, churn, adoption, etc.) after Initiatives are delivered.
* Use before-and-after comparisons to validate business impact.
* Share dashboards and updates to keep stakeholders aligned.
  {% endstep %}
  {% endstepper %}

## Why it Works

The MIPM cycle ensures that CX and Product teams don’t just collect feedback — they use it to drive continuous improvement.

With this framework:

* You’ll always know what customers are saying,
* You’ll focus on the issues that matter most,
* And you’ll prove the ROI of customer-centric actions.

## What to Read Next

* [Understanding Areas](/core-concepts-and-entities/areas)
* [Understanding Opportunities](/core-concepts-and-entities/understanding-and-creating-opportunities-in-birdie)
* [Using Initiatives](/customer-intelligence/initiatives)
* [Telling Stories with Dashboards](broken://pages/873aa0a32e7f3fef9fb27647594dd2be106e6f65)


# Glossary

Use this page as a quick definition reference for Birdie concepts and features.

For metric formulas and metric-specific definitions, use the [Metrics Glossary page](/getting-started/metrics-glossary).

## A

* **Account (Audience)** - an optional entity used to segment feedback at the company/account level (e.g., "Acme Inc.").
* **Active customers** - the customer volume input used to enable and calculate the Contact Rate metric.
* **Agent** - a support person whose conversations are monitored in [FI module](/frontline-intelligence/product-overview).
* **Agent Feedback** - a workflow to create and track coaching feedback for agents, with a manual status lifecycle.
* **AI Prompt Widget** - a dashboard widget that runs a prompt on the filtered dataset and returns a narrative answer (optionally comparing two contexts).
* **Alert** - a notification triggered by a condition, delivered via a configured channel (e.g., Slack/email).
* **Area** - a broad theme derived from feedback that aggregates trends, issues, and insights across the organization.
* **Area of Interest** - another name for an Area.
* **Audience** - the set of Accounts and Users used for segmentation and joins during analysis.

## B

* **Batch ID** - an optional ingestion field used to group uploaded records into a batch.
* **Breakdown** - a chart setting that splits a metric by a dimension (e.g., by segment, source, or reason).

## C

* **Calibration** - a review step where you validate and align an AI-created entity (commonly Opportunities and Criteria) with your expectations.
* **Channel** - where something is delivered or collected (e.g., a feedback source channel, or a notifications delivery channel).
* **Chart** - a visualization of a metric over time or by breakdown, used in Exploration pages and dashboards.
* **Collection** - a container that groups Areas and Opportunities, often mirroring products, squads, journeys, or themes.
* **Comment** - a collaborative thread on an Area/Opportunity/Reason used to discuss insights and actions.
* **Conversation** - an ingested thread of messages (e.g., a support ticket) that Birdie can summarize and analyze.
* **Criteria** - the service evaluation rules used to score and monitor service quality.
* **Criteria Catalog** - the admin area where FI criteria are created, edited, grouped into collections, and calibrated.
* **Critical Criterion** - an FI criterion that, if failed, makes the whole interaction fail regardless of other weights.
* **CSAT** - Customer Satisfaction Score; a common feedback source/metric used across Birdie.
* **CSV Export / Import** - a structured export format (multiple CSVs) used to analyze Birdie data outside the app and re-import into tools like Excel.
* **Custom Chart** - a saved chart configuration in Exploration (chart type, interval, metric, breakdown, top N, filters).
* **Custom Dashboard** - a user-built dashboard made of widgets to monitor metrics and share insights.
* **Custom Fields** - organization-specific fields used for filtering, segmentation, and joins.
* **Custom Table (Widget)** - a dashboard widget that renders a table with configurable columns and multiple metrics.

## D

* **Dashboard** - a curated set of widgets to track and communicate metrics and insights.
* **Dashboard visibility** - dashboards belong to the environment they were created in (Organization-level or Workspace-level).
* **Dashboard Widget** - a dashboard building block (Text, Chart, Number, Table, Custom Table, Prompt).
* **Data Lake / File-based ingestion** - an ingestion path where Birdie ingests prepared files from storage or a warehouse (high control and compliance).
* **DeBERTa** - a self-hosted language model Birdie uses for specific NLP tasks.
* **Digest** - a scheduled notification recap, usually sent to a channel.

## E

* **Elasticsearch query string** - the advanced keyword filter syntax Birdie supports for proximity search and complex queries.
* **Exploration** - the analysis experience where you explore feedback using filters, charts, segments, and tables.
* **Export / Import CSV** - the feature used to export Birdie feedback mappings and open them reliably in spreadsheets.

## F

* **Feedback** - a single user-submitted record (e.g., NPS response or app review) analyzed alongside conversations.
* **Feedback Details** - a filter field group that includes core text fields and org-specific attributes.
* **Filter** - a rule that scopes the dataset used by charts, tables, AI summaries, and Skye.
* **Foundation model** - a base LLM/SLM used as a building block for AI capabilities (summaries, classification, RAG).

## G

* **GenAI** - generative AI capabilities used for summaries, enrichment, and assistant experiences.

## H

* **Hallucination** - an AI failure mode where the model generates unsupported claims; Birdie mitigates this with data-grounding and controls.
* **Has Aspect** - a filter indicating whether a comment contains actionable, relevant content (as opposed to generic/noise).

## I

* **Impact Score** - a dissatisfaction-weighted metric that summarizes impact for a theme, using organization-defined source weights.
* **Indicator (Header)** - the metric cards shown at the top of navigation pages, including period-over-period variation.
* **Ingestion API** - Birdie's REST API for uploading conversations, messages, feedbacks, and optional audience data.
* **Initiative** - an action plan designed to activate a change based on a discovered opportunity.
* **Intention** - a classification that captures what the user is trying to do (e.g., Problem, Request, Question).
* **IP filtering** - an access control that restricts Birdie access to approved IP ranges (typically used with SSO).

## K

* **Keyword filter** - a text filter that supports AND, OR, parentheses, and proximity operators.
* **Kind** - the ingestion schema type that defines additional fields for a record's origin (e.g., support\_ticket, review, nps).

## L

* **LGPD** - Brazil's data protection law; Birdie supports anonymization and region handling to help with compliance.
* **LLM** - Large Language Model; used for generative features like summaries and assistant answers.
* **LLaMA** - an open model that Birdie can self-host for specific workloads.

## M

* **Manual Criterion** - an FI criterion flagged as requiring human evaluation (bypasses AI assessment).
* **Message** - one entry inside a Conversation (e.g., a ticket reply), uploaded via the ingestion API.
* **Metric** - a numeric measure computed over feedback (counts, scores, rates, impact); details live in the Metrics Glossary.
* **Metrics Header** - the top summary block on analysis pages showing key metrics for the current filter context.
* **MIPM** - Birdie's continuous improvement cycle: Monitor, Identify, Prioritize, Measure.

## N

* **Native connector** - a standard integration that pulls data from a well-known SaaS source via API credentials.
* **NLP** - Natural Language Processing; used for enrichment tasks like sentiment and intention detection.
* **Noise** - feedback that lacks actionable content and is filtered out by signal detection.
* **Notification** - an outbound message from Birdie (alerts, digests) delivered to configured channels.
* **NPS** - Net Promoter Score; a common feedback source/metric used across Birdie.
* **Number Widget** - a dashboard widget that displays a single KPI for fast monitoring.

## O

* **OpenID** - an authentication protocol supported for SSO.
* **Opportunity** - a specific insight derived from feedback that highlights trends, issues, or areas for improvement.
* **Opportunity Status** - labels that indicate an opportunity lifecycle state (e.g., Pending Calibration, Rejected, Processing).
* **Organization** - the top-level tenant boundary in Birdie; it controls base settings, metrics logic, and global defaults.

## P

* **PDCA** - a classic improvement loop (Plan, Do, Check, Act) that inspired Birdie's MIPM cycle.
* **PHI** - Protected Health Information; handled via anonymization/redaction to avoid sensitive data storage.
* **PII** - Personally Identifiable Information; removed/redacted during ingestion by Birdie or by your company pipeline.
* **Public / Private (Collections)** - visibility settings for collections (organization-wide vs creator-only).

## Q

* **Qualtrics** - an integration used to ingest Qualtrics feedback into Birdie.
* **Quality Score** - an FI score computed from criteria (weights and critical rules) across reasons, areas, and agents.

## R

* **RAG** - Retrieval-Augmented Generation; grounds AI answers in your data instead of free-form generation.
* **Reason (Contact Reason)** - an FI category that represents why customers contacted you, used to apply criteria and monitor agent performance.
* **REST ingestion API** - the programmatic ingestion method where your systems upload records directly to Birdie endpoints.
* **RoBERTa** - a self-hosted language model Birdie uses for specific NLP tasks.

## S

* **Segment** - a defined group of customers/feedback built from profile or behavior criteria, used to slice analysis.
* **Segment Collection** - a grouping mechanism for segments so you compare like-with-like (e.g., Lifecycle vs Firmographics).
* **Sentiment** - the emotional tone classification applied to feedback (Positive, Neutral, Negative, with levels).
* **Signal** - feedback that contains meaningful, actionable content (as opposed to noise).
* **Skye** - Birdie's AI assistant that answers questions and helps discover insights within the current filter context.
* **Source** - where feedback came from (e.g., NPS, tickets, reviews, social).
* **SSO** - Single Sign-On; integrates Birdie with your identity provider (often paired with IP filtering).

## T

* **Table Widget** - a dashboard widget for structured data exploration with sorting and filtering.
* **Template (Dashboard)** - a dashboard shared across workspaces as a starting point, usually controlled by organization admins.
* **Text Widget** - a dashboard widget that supports Markdown to add narrative, instructions, and context.

## U

* **Unit costs** - cost inputs used to compute potential savings metrics in Organization settings.
* **User (Audience)** - an optional entity used to segment feedback at the individual level (e.g., end-user profile).

## V

* **Customer Intelligence** - the practice and product surface focused on understanding and acting on customer feedback.

## W

* **Widget** - a component inside a Custom Dashboard (charts, tables, numbers, text, prompts).
* **Workspace** - a scoped environment inside an organization that controls data visibility, settings overrides, and access by role.

## Z


# Metrics Glossary

## Overall

* **Count**\
  Total count of feedback records, summing all ingested sources. Empty feedback, with little or no comment, will be counted.
* **Relevant Feedback Count**\
  Total count of relevant feedback records, summing all ingested sources. Empty, unreadable, or incomprehensible feedback will not be counted.
* **%Count**\
  Percentage of feedback filtered by a specific criterion relative to the organization's total feedback count.\
  Example: If 100 is the count of feedback after applying a filter and 200 is the organization's total, the % count will be 50%.
* **Sentiment Score**\
  The sentiment score is calculated by subtracting the total number of negative feedback from the total number of positive feedback.\
  Example: A sentiment score of +80 indicates satisfaction. A sentiment score of -20 indicates dissatisfaction.
* **%Count Over Area**\
  Percentage of feedback, given a filter, relative to the total feedback count in a specific area.\
  Example: An opportunity with 100 feedback records in an area with 5,000 feedback records will have a % count over the area of 2%.
* **%Count Over Collection**\
  Percentage of feedback, given a filter, relative to the total feedback count in a specific collection.\
  Example: An opportunity with 100 feedback records in a collection with 10,000 feedback records will have a % count over the collection of 1%.
* **Impact Score**\
  The impact score indicates the average dissatisfaction of a specific theme across the company's various channels.\
  Weight: W1, W2 … Wn\
  Source: S1, S2 … Sn

  Formula:\
  ![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/cqK2DqysFk.png)
* **Opportunity Impact Tag**<br>

  * A classification that assigns a discrete and qualitative label (e.g., P1, P2, Critical) to an opportunity based on its numerical **Impact Score**. It allows for a quicker and more intuitive understanding of an opportunity's priority level. The process works as follows:

    * **Range Mapping:** The system takes the Impact Score value of an opportunity.
    * **Category Assignment:** Based on pre-defined value ranges for each client, it assigns a label (an "impact level").
    * **Visualization:** This classification is visible on the platform, allowing for quick identification of the importance of each opportunity.

    The assigned tag can also be manually overridden if an opportunity is considered relevant due to specific business rules, for example. When this happens, the manually set tag will be visually marked with an asterisk (\*).

    > **Note:** As this is a metric with a custom configuration, the client needs to contact the Customer Success (CS) team to change the value ranges and category labels.

  \ <img src="/files/YueocJDstimpCnqY1BhR" alt="" data-size="original">

***

## Tickets

* **Potential saving**\
  Count of tickets in an Area or Opportunity, multiplied by the "unit service cost" defined in "Organization Settings."\
  Example: A count of 10,000 tickets with a unit service cost of $5.00 results in a potential saving of $50,000.
* **Contact rate**\
  The ratio of tickets to the number of active customers.\
  Example: In a given month, 100,000 tickets were created, and there are 100,000 active customers. The contact rate is 100%.
* **TCSAT Count**\
  Absolute count of CSAT tickets. Example: Tickets with little or no comments are counted.
* **%TCSAT Count**\
  Percentage of CSAT tickets filtered by a criterion relative to the organization's total.\
  Example: If 100 is the CSAT ticket count after applying a filter and 200 is the organization's total count, the %TCSAT Count is 50%.
* **TCSAT Score**\
  The score of positive responses (4 or 5) relative to the total number of responses.\
  Example: A CSAT score of 50 means 50% of the responses received a score of 4 or 5.
* **TNPS Count**\
  Absolute count of NPS tickets. Example: Tickets with little or no comments are counted.
* **%TNPS Count**\
  Percentage of NPS tickets filtered by a criterion relative to the organization's total.\
  Example: If 100 is the NPS ticket count after applying a filter and 200 is the organization's total count, the %TNPS Count is 50%.
* **TNPS Score**\
  The score is calculated as %Promoters − %Detractors.\
  Example: If 20% are promoters and 40% are detractors, the NPS score will be -20.

***

## Social Media Posts

* **Unsatisfied Count**\
  Absolute count of posts containing negative comments.
* **%Unsatisfied**\
  Percentage of unsatisfied posts relative to all the organization's posts.\
  Example: If 10 people post negative feedback out of 100 posts, the %Unsatisfied is 10%.
* **%Unsatisfied over Collection**\
  Percentage of unsatisfied posts (with negative comments) relative to the total number of posts in a collection.\
  Example: If 10 people post negative feedback out of 200 posts in a collection, the %Unsatisfied is 5% for that collection.
* **%Unsatisfied over Area**\
  Percentage of unsatisfied posts (with negative comments) relative to the total number of posts in an area.\
  Example: If 10 people post negative feedback out of 200 responses in an area, the %Unsatisfied is 5% for that area.
* **%Unsatisfied Count/All Comments**\
  Percentage of unsatisfied posts relative to all posts in the organization that contain comments.\
  Example: If 10 people post negative feedback out of 100 posts (with comments), the %Unsatisfied is 10%.
* **%Unsatisfied Count/All Area Comments**\
  Percentage of unsatisfied posts (with negative comments) relative to the total number of posts with comments in an area.\
  Example: If 10 people post negative feedback out of 200 responses (with comments) in an area, the %Unsatisfied is 5% for that area.
* **%Unsatisfied Count/All Collection Comments**\
  Percentage of unsatisfied posts (with negative comments) relative to the total number of posts with comments in a collection.\
  Example: If 10 people post negative feedback out of 200 posts (with comments) in a collection, the %Unsatisfied is 5% for that collection.

***

## NPS

* **Score**\
  The score is calculated as: %Promoters − %Detractors.\
  Example: If 20% are promoters and 40% are detractors, the NPS score will be -20.
* **%Det./Detractors**\
  Percentage of NPS detractors (score 0 to 6) in a filter relative to the organization's total detractors.\
  Example: In a collection, area, segment, or opportunity with 10 detractors out of 100 detractors in the organization, the value will be 10%.
* **%Pro./Promoters**\
  Percentage of NPS promoters (score 9 or 10) in a filter relative to the organization's total promoters.\
  Example: In a collection, area, segment, or opportunity with 10 promoters out of 100 promoters in the organization, the value will be 10%.
* **%Neu./Neutrals**\
  Percentage of NPS neutrals (score 7 or 8) in a filter relative to the organization's total neutrals.\
  Example: In a collection, area, segment, or opportunity with 10 neutrals out of 100 neutrals in the organization, the value will be 10%.
* **%Detractors/All comments**\
  Percentage of detractors (score 0 to 6) relative to all NPS responses in the organization that contain comments.\
  Example: If 10 people gave scores between 1 and 6 out of 100 responses with comments, the %Detractors is 10%.
* **%Promoters/All comments**\
  Percentage of promoters (score 9 or 10) relative to all NPS responses in the organization that contain comments.\
  Example: If 10 people gave scores 9 or 10 out of 100 responses with comments, the %Promoters is 10%.
* **%Neutrals/All comments**\
  Percentage of neutrals (score 7 or 8) relative to all NPS responses in the organization that contain comments.\
  Example: If 10 people gave scores 7 or 8 out of 100 responses with comments, the %Neutrals is 10%.
* **%Detractors/All responses**\
  Percentage of detractors (score 0 to 6) relative to all NPS responses in the organization.\
  Example: If 10 people gave scores between 1 and 6 out of 100 responses, the %Detractors is 10%.
* **%Promoters/All responses**\
  Percentage of promoters (score 9 or 10) relative to all NPS responses in the organization.\
  Example: If 10 people gave scores 9 or 10 out of 100 responses, the %Promoters is 10%.
* **%Neutrals/All responses**\
  Percentage of neutrals (score 7 or 8) relative to all NPS responses in the organization.\
  Example: If 10 people gave scores 7 or 8 out of 100 responses, the %Neutrals is 10%.
* **%Detractors/All area**\
  Percentage of detractors (score 0 to 6) relative to all NPS responses in an area.\
  Example: If 10 people gave scores between 1 and 6 out of 200 responses in an area, the %Detractors is 5%.
* **%Detractors/All area comments**\
  Percentage of detractors (score 0 to 6) relative to all NPS responses in an area that contain comments.\
  Example: If 10 people gave scores between 1 and 6 out of 200 responses (with comments) in an area, the %Detractors is 5%.
* **Detractors count**\
  Absolute count of NPS responses with a score from 0 to 6.
* **Neutrals count**\
  Absolute count of NPS responses with a score of 7 or 8.
* **Promoters count**\
  Absolute count of NPS responses with a score of 9 or 10.
* **Potential improvement**\
  Potential improvement in the NPS score if detractors and neutrals become promoters.
* **Potential improvement over collection**\
  Potential improvement in the NPS score if detractors and neutrals become promoters in a specific collection.

***

## CSAT

* **Score**\
  Percentage of positive responses (4 or 5) relative to the total responses.\
  Example: A CSAT score of 50 means that 50% of the responses had a score of 4 or 5.
* **AVG Rating**\
  Sum of all received scores divided by the total number of respondents.\
  Example: If one person gave a score of 1 and another gave a score of 5, the AVG Rating is 2.5.
* **Unsatisfied Count**\
  Absolute count of responses with a score of 1 or 2.
* **Neutrals Count**\
  Absolute count of responses with a score of 3.
* **Satisfied Count**\
  Absolute count of responses with a score of 4 or 5.
* **%Unsatisfied Count/All Comments**\
  Percentage of unsatisfied responses relative to all CSAT responses in the organization that contain comments.\
  Example: If 10 people gave low scores (1 or 2) out of 100 responses (with comments), the %Unsatisfied is 10%.

***

## Reviews

* **AVG Rating**\
  Sum of all received ratings divided by the total number of reviews.\
  Example: If one person gave a rating of 1 and another gave a rating of 5, the AVG Rating is 2.5.
* **Unsatisfied Count**\
  Absolute count of reviews with 1 or 2 stars.
* **Neutrals Count**\
  Absolute count of reviews with 3 stars.
* **Satisfied Count**\
  Absolute count of reviews with 4 or 5 stars.
* **%Unsatisfied Count/All Comments**\
  Percentage of unsatisfied reviews (1 or 2 stars) relative to all reviews in the organization that contain comments.\
  Example: If 10 people gave ratings of 1 or 2 out of a total of 100 reviews, the %Unsatisfied is 10%.
* **%Unsatisfied Count/All Area Comments**\
  Percentage of unsatisfied reviews (1 or 2 stars) relative to all reviews with comments in a given area.\
  Example: If 10 people gave ratings of 1 or 2 out of a total of 100 reviews (with comments) in the area, the %Unsatisfied is 10%.
* **%Count Over Area**\
  Percentage of reviews from a filter relative to the total reviews in a given area.\
  Example: An opportunity with 20 reviews in an area with 100 reviews will have a %Count Over Area of 20%.

***

## Segments

* **Opportunity Prevalence Rate**\
  Percentage of the opportunity in the segment divided by the percentage of the opportunity in the organization.\
  Example: If an opportunity appears in 10% of the feedback within a segment and in 2.5% of the feedback across the organization, then the prevalence rate is 4. This indicates that the chance of the opportunity occurring in the segment is 4 times higher than expected in the workspace.
* **Prevalence Difference**\
  Percentage of the opportunity in the segment minus the percentage of the opportunity in the organization.\
  Example: If an opportunity appears in 10% of the feedback within a segment and in 2.5% of the feedback across the organization, the prevalence difference is 7.5%. This indicates that the prevalence of the opportunity is 7.5% higher than expected in the organization.


# Signal, Sentiments and Intentions

When feedback data is ingested into Birdie, it undergoes an AI-powered enrichment process to extract deeper meaning and structure from unstructured text. This process classifies each feedback entry based on three complementary dimensions:

* Signal – whether the feedback contains valuable, actionable content
* Sentiment – the emotional tone expressed in the feedback
* Intention – the purpose or intent behind what the user is saying

These classifications help filter out irrelevant inputs, highlight meaningful themes, and enable smarter analysis across teams.

## Signal Detection

### Definition

The goal of Signal Detection is to filter out irrelevant or low-quality feedback (referred to as "noise") and retain only the valuable content (referred to as "signal") that contains meaningful information for analysis.

### Purpose

This task ensures we focus our analysis only on feedback that contributes actionable insights, improving model performance and dashboard relevance.

### Examples

* Noise: “Good morning!” (greeting), “#@@#” (nonsense), “Good” (too short)
* Signal: “The new feature is useful.”, “I need help to understand this…”

## Sentiment

Birdie’s AI identifies and tags sentiments expressed in feedback. Each piece of feedback may include more than one sentiment, and Birdie classifies them accordingly.

![](/files/7n00L2rrHvE6p5MGKrAg)

| Sentiment | Sentiment Level | Description                                                                                                  |
| --------- | --------------- | ------------------------------------------------------------------------------------------------------------ |
| Positive  | Only positive   | All feedback sentences contain only positive sentiments                                                      |
|           | Mostly positive | More than half of the feedback sentences contain positive sentiment, even if combined with other sentiments. |
|           | Any Positive    | There is some mention containing positive sentiment in the feedback sentences.                               |
| Neutral   | Only Neutral    | All feedback sentences contain only neutral sentiment.                                                       |
|           | Mostly Neutral  | More than half of the feedback sentences contain neutral sentiment, even if combined with other sentiments.  |
|           | Any Neutral     | There is some mention containing neutral sentiment in the feedback sentences.                                |
| Negative  | Only Negative   | All feedback sentences contain only negative sentiment.                                                      |
|           | Mostly Negative | More than half of the feedback sentences contain negative sentiment, even if combined with other sentiments. |
|           | Any Negative    | There is some mention containing negative sentiment in the feedback sentences.                               |

## Intention

Intention classification captures the underlying purpose of what the user is expressing. A single feedback entry may include multiple intentions.

![](/files/e2ujPM6Na8v42cca7KcT)

| Intention       | Description                                                                                                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Compliment**  | Sentences that express admiration or positive recognition regarding some aspect of the product or service.                                                                            |
| **Problem**     | Sentences that express a problematic situation, difficulty, or challenge that the feedback author is facing.                                                                          |
| **Question**    | Sentences that seek specific information or clarifications and are generally formatted as a question.                                                                                 |
| **Request**     | Sentences that express a request, desire, or need for something.                                                                                                                      |
| **Information** | Sentences that provide information or clarifications without necessarily expecting a response. Similar to a neutral description of a situation before mentioning a Praise or Problem. |
| **Solution**    | Sentences that propose a response, solution, or method to resolve a Problem or situation presented by the feedback author.                                                            |


# Areas

## What Are Areas in Birdie?

In Birdie, an Area of Interest represents a broad theme derived from customer feedback that aggregates multiple insights, trends, and issues across your organization. These areas capture overarching patterns and recurring challenges, enabling teams to gain a comprehensive understanding of customer sentiment. By effectively managing Areas of Interest, organizations can monitor long-term trends, consolidate related opportunities, and prioritize strategic initiatives that drive customer satisfaction and business growth.

![](/files/3L4g5k0gZXGnuGjdjy6W)

Page Structure of an Area

{% stepper %}
{% step %}

### Unique Identifier (ID)

The Unique Identifier (ID) of an area in Birdie is a specific identification code designed to streamline how you search for, reference, and share information within the platform and with collaborators.
{% endstep %}

{% step %}

### Title and Description

A clear and concise title accompanied by a detailed description that outlines the focus and significance of the Area of Interest.
{% endstep %}

{% step %}

### Tabs

There a few tabs to better divide and navigate the information of an Area. They are: Overview, Opportunities, Reason, Criteria, Segments, Agents and Supervisors.

The available tabs are directly related to what modules of Birdie you have available in your account.
{% endstep %}

{% step %}

### Overview Chart and Metrics

A summary section displaying a chart with the Area feedback count and essential [metrics](/getting-started/metrics-glossary) related to the Area, such as overall feedback count, customer impact scores, and trend analyses.

![](/files/FOqeN45YbFpZ0Hscd15i)
{% endstep %}

{% step %}

### What's Happening

An AI-generated summary that provides an overview of the data within the Area, offering immediate insights into its context and relevance. You can hover your mouse over this block and click the "Read all" button that appears to read all the content generated by Skye.

![](/files/jvGlVzRkdnOHv1gTlXZ2)
{% endstep %}

{% step %}

### Table with Opportunities

A structured table listing opportunities associated with the Area, providing quick access to actionable items and trends. [Learn more about opportunities…](/core-concepts-and-entities/understanding-and-creating-opportunities-in-birdie)

![](/files/vsiUtAAorhwDt58z9Zjw)
{% endstep %}

{% step %}

### Segments

Specific segments of feedback linked to the Area, enabling targeted analysis. For more information on segments, refer to the [Segments Documentation](/core-concepts-and-entities/segments).

![](/files/YXxV3rbu2DpZWYMC1jLf)
{% endstep %}

{% step %}

### Skye

Birdie's AI assistant is integrated into the Area page to help users deepen their understanding of the overarching trends and challenges within that area. Within an Area, Skye can provide in-depth insights into overall customer svelentiment and impact, detect underlying issues or related patterns, suggest potential actions or focus areas to address recurring challenges, and highlight emerging trends or patterns in the feedback that may guide strategic decisions. [Learn more about Skye](/customer-intelligence/exploration-and-analysis/understanding-and-using-skye-in-birdie)

![](/files/RJRqGffbYMLzWBYxBlpl)
{% endstep %}

{% step %}

### Feedbacks

A space for you and your team to explore and find insights about the feedbacks from each source that are related to the Area.

![](/files/gNXlgX1ptd95OkCnkIrc)
{% endstep %}
{% endstepper %}

By understanding and utilizing these components, teams can effectively analyze and address Areas of Interest to drive continuous improvement within their organization.

## What Are the Requirements to Create an Area of Interest?

![](/files/0BwjXlamb4YcKwI56pKV)

To set up a new Area of Interest in Birdie, the following requirements must be met:

* Clear Definition of Context: Determine the scope and focus of the area (e.g., a specific product category or business process).
* Available Data Filtering: Ensure that the necessary information to create the area is centralized in Birdie. This includes having access to relevant feedback data where the identified keywords or phrases are present. For more detailed instructions on how to apply filters in Birdie, please refer to our [Filters Documentation](/customer-intelligence/exploration-and-analysis/using-filters-in-birdie).
* Access to the Feature: Creating Areas is available to all users during their analysis, following the same process as creating segments.

Finally, add a name, [<mark style="color:$warning;">select the collection related</mark>](#user-content-fn-1)[^1] and add a description to complete the creation of the new Area of Interest.

## Explore the Power of Areas of Interest

Step into Birdie and discover how the Areas of Interest feature can transform your customer feedback into actionable insights. By leveraging our intuitive interface and advanced tools like Skye, you can monitor specific topics, track emerging trends, and drive impactful improvements across your organization. Get started now and unlock a new level of understanding that fuels better decision-making and continuous growth!

[^1]: Review if this is really going to be necessary


# Collections

## What are Collections?

* A container for Areas, Opportunities and Criteria.
* Can represent products, squads, journeys, or themes.
* Helps teams focus only on what’s relevant to them.

To access your existing Collections, click on the "Organization" title, on the Exploration page.

![](/files/AWiMCK8kpUH97D8lESFy)

### Key Feature

* Organize: Group and organize your Areas, Opportunities and Criteria, making it easy to access and work on these groups.

{% hint style="success" %}

### Best Practices

* Create Collections that reflect how your company is structured (by squad, by journey, by region).
* Keep them focused and manageable — don’t overload a single Collection.
  {% endhint %}

## Related Articles

* [Understanding Areas](https://birdievoc.tawk.help/article/understanding-and-creating-areas-in-birdie)
* [Understanding Opportunities](https://birdievoc.tawk.help/article/understanding-and-creating-opportunities-in-birdie)


# Segments

{% tabs %}
{% tab title="What is Segmentation in Birdie?" %}
Segmentation is an advanced feature in Birdie AI that allows you to categorize your customers into different groups or "segments" based on specific profile characteristics or behaviors. This functionality adds a powerful layer of context to feedback analysis, helping you understand not only "what" customers are saying but also "who" is saying it.

With Segmentation, you can:

* Identify the customer groups most impacted by critical issues.
* Track feedback trends within a specific segment over time.
* Prioritize segments for action based on impact and relevance.
* Compare metrics across different segments to understand which groups are better or worse served.

![Segmentation illustration](/files/gFEkJVHGVHMpFVBP5dP4)

This feature is designed to help CX, Product, and Marketing teams prioritize initiatives that directly impact user experience and drive meaningful results, such as:

* Reducing support contact rate.
* Increasing satisfaction and NPS.
* Lowering churn.

## Types of Analysis Possible with Segmentation

Segmentation enables a much more targeted analysis, allowing you to:

* Identify critical issues by segment: Discover which problems are most recurrent within a specific segment.
* Measure impact by group: Determine the impact of issues or opportunities on specific customer segments.
* Track trends and comparisons: Evaluate how satisfaction metrics, NPS, or other KPIs change over time for different segments and compare results between them.

![Segmentation analysis](/files/iPBvFGTH78SI20RnYxil)

### Visualization examples

* Visualization of Segments in an Area<br>

  <figure><img src="/files/tsvkt2P9z0ICLf0s2wuZ" alt=""><figcaption></figcaption></figure>
* Visualization of Segments in an Opportunity<br>

  <figure><img src="/files/pI98OMpVMYnWgSFAmLEA" alt=""><figcaption></figcaption></figure>

## Use Case Examples

* CX Team: Identify that premium customers are reporting increased support wait times and prioritize solutions for this segment.
* Product Team: Discover that customers in a specific segment are experiencing issues with a newly launched feature, enabling targeted improvements.
* Marketing Team: Analyze feedback from a customer segment that participated in a recent campaign to measure impact and adjust future messaging.

## What Are the Requirements to Create a Segmentation?

![Requirements](/files/Jr4fGbcNjtqNANgVsK2Z)

To set up a new segmentation in Birdie, the following requirements must be met:

{% stepper %}
{% step %}

### Define the criteria

Determine the characteristics that define the segment (e.g., age range, geographic location, subscription type).
{% endstep %}

{% step %}

### Ensure the necessary data is available

Make sure the information needed to create the segment is centralized in Birdie. This can include:

* Imported profile data (Custom Fields).
* Integrations with other sources like CRM (e.g., Salesforce) or Product Analytics (e.g., Mixpanel).
  {% endstep %}

{% step %}

### Access to the feature

Creating segments is available for users with administrative permissions. All users can access segments during their analysis.
{% endstep %}

{% step %}

### Apply the filters

After defining the criteria, apply these filters in the application. For detailed instructions on how to apply filters in Birdie, see the Filters Documentation:\
[Using filters in Birdie](/customer-intelligence/exploration-and-analysis/using-filters-in-birdie)
{% endstep %}
{% endstepper %}

{% hint style="info" %}
Creating segments requires admin permissions to set them up, but once created, all users can use them in their analysis.
{% endhint %}

Segmentation is an essential tool to enhance the accuracy and relevance of your analyses in Birdie. Explore it now and uncover new opportunities to transform your customer experience!
{% endtab %}

{% tab title="Organizing Segments with Collections" %}

## Why Segment Collections Matter

* Segments help you slice insights by different lenses: customer profiles, behavior, lifecycle status, etc.
* But not every segment type is directly comparable.
* Segment Collections keep these lenses organized, so you don’t compare unlike groups or lose track of valuable cuts.

## How Segment Collections Work

* Each Collection groups a family of segments.
* Users can:
  * Compare segments within the same collection (e.g. churned vs. retained customers).
  * Avoid mixing cross-domain comparisons that don’t make sense (e.g. Industry vs. Daily Active).
* Collections can be named intuitively (“CRM Status”, “Behavioral Cohorts”, “Firmographics”) so everyone navigates insights smoothly.

## Best Practices for Organizing Segments<br>

* Create one collection per “dimension” of segmentation (Firmographics, Behaviors, Lifecycle).
* Agree internally on naming conventions (e.g. “DAU > 30” vs. “High DAU”).
* Use Collections as a training tool — new team members will quickly see “how we slice data here.”
* Review Collections quarterly: retire unused segments, align with evolving CRM or analytics sources.

## How to create a collection of Segments

* Navigate to your Segments tab in Exploration
* Select the Segment you want to group into a collection (e.g.: These 3 segments related to Customer Size)

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/z4uRhoxnyr.png)

* Click in Save Collection
* Give your Collection a name

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/b5aIFVCDum.png)

* Change Segments table to group by collections

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/y0xI3n6l6y.png)

* Done!
* Now, get even more insightful analysis from your segmented data

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/7Sr-qF1u2t.png)
{% endtab %}
{% endtabs %}


# Understanding and Creating Opportunities in Birdie

## What Are Opportunities in Birdie?

In Birdie, an Opportunity represents a specific insight derived from customer feedback that highlights emerging trends, critical issues, or areas for improvement. These insights enable teams to delve into granular details, understand root causes, and identify actionable areas that can enhance the overall customer experience. By effectively managing Opportunities, organizations can prioritize initiatives that directly impact customer satisfaction and business growth.

![](/files/zMUJiuH6dKi2LiC2RK0N)

## Page Structure of an Opportunity

Each Opportunity in Birdie is organized into several key components:

{% stepper %}
{% step %}

### Title and Description

A clear and concise title accompanied by a detailed description outlining the nature of the Opportunity.
{% endstep %}

{% step %}

### Tabs

There a few tabs to better divide and navigate the information of an Opportunity. They are: Overview, Areas, Opportunities and Segments.

[Areas](/core-concepts-and-entities/areas): Areas that the Opportunity is related to.

[Opportunities](/customer-intelligence/opportunities): Other Opportunities that are related to this one.

[Segments](/core-concepts-and-entities/segments): Specific segments of feedback linked to the Opportunity
{% endstep %}

{% step %}

### Overview Chart and Metrics

A summary section displaying a chart with the Opportunity feedback count and essential [metrics](/getting-started/metrics-glossary) related to the Opportunity, such as overall feedback count, customer impact scores, and trend analyses.

![](/files/mN42kq3qrWscw8oT05kH)
{% endstep %}

{% step %}

### What's Happening

An AI-generated summary that provides an overview of the data, offering immediate insights into the Opportunity's context and significance.

![](/files/ilmo6co07AuXsMWFamEf)
{% endstep %}

{% step %}

### Skye

Birdie's AI assistant is integrated into the Opportunity page to help users deepen their understanding of the identified issue. Within an Opportunity, Skye can:

* provide in-depth insights into the nature and extent of the problem,
* detect related or underlying issues associated with the current Opportunity,
* suggest potential actions or focus areas to effectively address the identified problems,
* highlight emerging trends or patterns in the feedback that may influence the Opportunity.

![](/files/pheBekHdYivzIQwBSsbU)
{% endstep %}

{% step %}

### Feedbacks

A space for you and your team to explore and find insights about the feedbacks from each source that are related to the Opportunity.

![](/files/LW9h2rVZIMzo704CdBT9)
{% endstep %}
{% endstepper %}

By understanding and utilizing these components, teams can effectively analyze and address Opportunities to drive continuous improvement within their organization.

***

## How to Create Opportunities in Birdie

In Birdie, there are two ways to create an Opportunity:

{% stepper %}
{% step %}

### From an Area of Interest

If you already know of a problem that you want to quantify and explore further:

* Navigate to the desired Area of Interest.
* Click the "Add Opportunity" buttonon the top right corner.
* Provide a title and description for the new Opportunity.

For more detailed guidance on working with Areas of Interest, see the [Areas of Interest Documentation](/core-concepts-and-entities/areas).

![](/files/LBY75EQbREV2UlA1UC38)

![](/files/08Q2oNiwjD0uCCSCNKAM)
{% endstep %}

{% step %}

### Via the Skye Chat

To add an Opportunity through the Skye chat:

* Ensure you are within an Area or within an existing Opportunity (applied filters will shape Skye's search results).
* Ask Skye to search for Opportunities; she will present a list.
* Click the "+Add" button on an Opportunity entry to add it to your workflow.

For details on using filters and leveraging Skye, see the [Filters Documentation](/customer-intelligence/exploration-and-analysis/using-filters-in-birdie) and the [Skye Usage Documentation](/customer-intelligence/exploration-and-analysis/understanding-and-using-skye-in-birdie).

![](/files/zZzIMbKshF1cHDhTEnem)
{% endstep %}
{% endstepper %}

***

## Explore the Power of Opportunities

Step into Birdie and discover how the Opportunity feature can transform your customer feedback into actionable insights. By leveraging our intuitive interface and advanced tools like Skye, you can pinpoint critical issues, quantify challenges, and drive impactful improvements across your organization. Get started now and unlock a new level of understanding that fuels better decision-making and continuous growth!


# Product Overview

Birdie's Customer Intelligence act as a centralized command center that transforms raw customer sentiment into actionable business strategy. By leveraging advanced Natural Language Processing (NLP), the platform ingests unstructured qualitative feedback from multiple channels—such as surveys, social media, and support tickets—to categorize into Opportunities. Users can navigate using Exploration to uncover deep-seated customer pain points.

Beyond analysis, the platform features a management system where insights are directly converted into strategic Initiatives. Teams can assign owners, set key performance indicators (KPIs), and track the real-time impact of specific improvements on customer satisfaction scores. To report to stakeholders receive high-level summaries and data visualizations that bridge the gap between hearing the customer and driving measurable organizational change.

## Explore the avaliable features

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h4><i class="fa-compass">:compass:</i></h4></td><td><strong>Exploration</strong></td><td>Find feedback insights</td><td><a href="/pages/Goa6SJlZry9c3p7A8UW3">/pages/Goa6SJlZry9c3p7A8UW3</a></td></tr><tr><td><h4><i class="fa-lightbulb">:lightbulb:</i></h4></td><td><strong>Opportunities</strong></td><td>Categorize feedbacks</td><td><a href="/pages/bd4229ae7a5e5cb18ee0a10b1355c1e053a09a04">/pages/bd4229ae7a5e5cb18ee0a10b1355c1e053a09a04</a></td></tr><tr><td><h4><i class="fa-bullseye-arrow">:bullseye-arrow:</i></h4></td><td><strong>Initiatives</strong></td><td>Track progress</td><td><a href="/pages/016de836f55d57a8fa6801b4476d378dc7ef3e1d">/pages/016de836f55d57a8fa6801b4476d378dc7ef3e1d</a></td></tr><tr><td><h4><i class="fa-gauge-low">:gauge-low:</i></h4></td><td>Dashboards &#x26; Reporting</td><td>Tell stories</td><td><a href="/pages/F8x6BCkZ9LGQ1RO790sA">/pages/F8x6BCkZ9LGQ1RO790sA</a></td></tr></tbody></table>


# Exploration & Analysis


# Custom charts in Exploration pages

#### What's New

<figure><img src="/files/uy0AFKQlrNRhtGILh7wK" alt=""><figcaption></figcaption></figure>

Previously, any changes you applied to a chart were temporary and valid only during your navigation.\
Now, you can edit chart settings and save them, so your customized chart will remain available every time you return.

{% hint style="info" %}
Saved customizations are personalized. Your changes won’t affect other users’ charts.
{% endhint %}

## Default Chart Settings

When you first open an exploration page, the chart will display:

* Chart type: Line chart
* Metric: Overall Count
* Breakdown: Aggregated at the Organization level (all data, no breakdown)

## How to Customize Your Chart

<figure><img src="/files/9NEaJNHDg1xqZM1oTSgo" alt=""><figcaption></figcaption></figure>

1. Click Edit chart.
2. Select your chart type.
3. Go to the setup tab.
4. In Metric, select the metric you want to track.
5. In Breakdown, choose how to segment your data.
   * Use the Selection button (on the right) to narrow down the values of the chosen dimension.
   * Example: You can break your chart by Customer Segments, but only include Customer Tier segments by applying a filter.
6. Optionally, limit breakdown values to the top N.
   * The chart will show only the top N values, ranked by your chosen metric.
7. If using a pivot table, configure breakdowns for both rows and columns.

Once you’re happy with the setup, click Done. Your customized chart will be saved and ready for you next time.

{% hint style="warning" %}
Customizations are applied globally across all exploration pages. You can’t save different setups per page, but you can edit and change them at any moment.
{% endhint %}


# Indicators in the Exploration Overview

On every navigation page, you can see an Overview block displaying a chart and metrics. Although this header is customizable for each environment, its structure adheres to certain standard patterns.

![Header example](/files/TRtcuKFQEmrP3uHO6Ten)

The first indicator always pertains to the overall set of feedback. In the "Ovewview" block, the primary metric is the feedback count, while the secondary metric is the Impact Score.

![General block](/files/zgFFEQksJIwwXMiyCQsX)

The Impact Score represents the average level of dissatisfaction for a specific theme across the various channels of the company. Learn more [Metrics Glossary](/getting-started/metrics-glossary).

The remaining metrics depend on the collection of feedback sources ingested into the account, and their configuration can be adjusted per account. Thus, each environment can feature any combination of metrics; however, by default, all sources use the count as the primary metric and a secondary metric relevant to that source.

For example:

* For NPS, the secondary metric is the Score
* For Reviews, the secondary metric is the Average Rating

![Source examples](/files/ta2K9HG1sKqRaZ1iECZZ)

In all cases, the variation indicator is based on the primary metric and uses the date filter to compare the current period with the previous period. Hovering over this metric reveals the reference period.

![Variation hover](/files/TEP2yJiDwERdNTlw4sro)

For detailed information on each metric, please consult our [Metrics Glossary](/getting-started/metrics-glossary).


# Using filters in Birdie

## How to use Filters?

Filters in Birdie are essential tools that allow users to create [areas](/core-concepts-and-entities/areas) and [segments](/core-concepts-and-entities/segments), analyze specific areas and [opportunities](/core-concepts-and-entities/understanding-and-creating-opportunities-in-birdie), and define the context in which [Skye](/customer-intelligence/exploration-and-analysis/understanding-and-using-skye-in-birdie) operates. Understanding how to apply both simple and advanced filters enhances data analysis and decision-making processes.

## Filtering Criteria

Regardless of the filter type, the following predefined fields are available for filtering:

* Feedback Intention: Categorizes the purpose behind the feedback.
* Sentiment: Indicates the emotional tone of the feedback.
* Source: Identifies where the feedback was submitted.
* Feedback Details: Provides specific content of the feedback.
* Custom Fields: Allows filtering based on user-defined criteria.

![](/files/eTwacHP662X9x95PwVdg)

Within "Feedback Details," in addition to organization-specific fields, there are two standard filtering options:

* Signal: This filter identifies whether the feedback contains interpretable text. Options are "Yes" (the feedback includes text) or "No" (the feedback does not include text).

  * Yes: Detailed customer service interactions where customers provide comprehensive explanations.
  * No: Blank responses or extremely brief comments lacking context, such as an empty feedback form or a single character input.

  While most tickets, like in-depth customer service conversations, will have a "Yes" signal due to their structured sentences, feedback from app reviews, CSAT (Customer Satisfaction) surveys, and NPS (Net Promoter Score) surveys may not, especially if they lack substantive comments.
* Has Aspect: This filter determines whether the comment contains actionable and relevant content. Options are "Yes" (the comment has actionable content) or "No" (the comment lacks actionable content).
  * Yes: "The app crashes when I try to upload a photo."
  * No: Generic remarks like "Great!" or "Didn't like it," which don't provide specific insights.

For detailed information on sentiments and intentions, please refer to the dedicated [documentation](/core-concepts-and-entities/signal-sentiments-and-intentions) on these topics.

Please note that "Feedback Details," "Source," and "Custom Fields" are specific to each organization. If you have any questions or need clarification regarding these fields, please consult our internal team for assistance.

### Keyword Filters

For targeted searches, especially when dealing with specific subjects, keyword filters are highly effective. By utilizing the search icon on the upper right corner within the exploration page, you can filter feedback containing specific keywords.

![](/files/AReTZaFpNg1bKyrCOfhW)

**Example of search:**

```
card AND (request OR delivery OR receiving) AND -(limit)
```

* Using "OR" for Multiple Keywords: To filter feedback containing any of several keywords, separate them with "OR".
  * Example: "Zelle OR credit OR debit"
    * This filters feedback containing "Zelle," "credit," or "debit".
* Using "AND" for Combined Keywords: To filter feedback containing all specified keywords, use "AND".
  * Example: "card AND credit"
    * This filters feedback containing both "card" and "credit".
* Combining "AND" and "OR" for Specific Searches: For more refined searches, combine both operators.
  * Example: "card AND (credit OR debit)"
    * This filters feedback containing "card" and either "credit" or "debit".

### Advanced Search Capabilities

Birdie’s search also supports the complete set of options available in [Elasticsearch’s Query String Syntax](https://www.elastic.co/docs/reference/query-languages/query-dsl/query-dsl-query-string-query#query-string-query-notes), including proximity operators and other advanced parameters.

For example, you can use proximity search to find terms that appear close to each other, regardless of order:

```
"suspended account"~3
```

This finds results where suspended and account appear within three words of each other in any order (e.g., "account is currently suspended", "suspended due to account issues").

## Types of Filters

### Simple Filters

These are cumulative filters connected by an "AND" relationship. When multiple simple filters are applied, Birdie displays data that meets all specified criteria simultaneously.

<img src="/files/thajp0kkp4DuuToAuauJ" alt="" width="307">

### Advanced Filters

Advanced filters enable more complex data segmentation through the use of "AND" and "OR" operators. This functionality allows for nuanced data queries, facilitating precise analysis. For a comprehensive understanding of advanced filter clauses, refer to Birdie's documentation on filter clauses.

![](/files/xrhbg5UYl80oXCTOUfCR)

## Getting Started with Filters

Mastering the use of simple and advanced filters in Birdie empowers users to conduct precise analyses and tailor the feedback environment to their needs. By effectively utilizing these filtering options, you can enhance the relevance of insights and optimize the use of Skye within the platform.


# Conversation Features Fields

Filter conversations using enriched timing, volume, and participant fields extracted from tickets.

## Overview

Conversation Features Fields are enrichment fields extracted from conversation tickets.

Birdie calculates them from the messages inside each conversation.

These fields help you filter conversations by:

* response speed
* message volume
* handoff behavior
* participant activity
* conversation duration

Use them when you want to analyze operational behavior, not just customer sentiment or text content.

{% hint style="info" %}
These fields are available for conversation-based sources that include message timestamps and participant metadata.
{% endhint %}

## How these fields work

Birdie groups these fields by participant type:

* **Agent** = human support agent
* **Bot** = automated assistant
* **Agent Or Bot** = the full business side of the conversation
* **Customer** = the end user
* **Conversation** = the conversation as a whole

Most field names also follow a pattern:

* **Duration Seconds** = elapsed time in seconds
* **Messages Count** = number of messages
* **Turns Count** = number of exchanges
* **First Posted At / Last Posted At** = first or last message timestamp
* **Response Delay** = wait time between one side sending a message and the other replying

### Common use cases

You can use these fields to answer questions like:

* Which tickets had a slow first agent response?
* Which chats were handled mostly by bots?
* Which conversations required multiple agent handoffs?
* Which tickets had long total duration but few customer messages?
* Which chats ended with a bot versus a human agent?

## Field reference

### Agent fields

These fields describe human agent activity in the conversation.

| Field                                                                    | Description                                                             |
| ------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| **Conversation Features Agent Conversation Duration Seconds**            | Total duration a human agent was active in the session.                 |
| **Conversation Features Agent Distinct Ids Count**                       | Number of unique human agents who messaged in this chat.                |
| **Conversation Features Agent First Posted At**                          | Timestamp of the first message from a human agent.                      |
| **Conversation Features Agent First Response Delay To Bot Seconds**      | Time elapsed between the last Bot message and the first Agent response. |
| **Conversation Features Agent First Response Delay To Customer Seconds** | Wait time between the customer's message and the agent's first reply.   |
| **Conversation Features Agent Last Posted At**                           | Timestamp of the final message sent by a human agent.                   |
| **Conversation Features Agent Messages Count**                           | Total number of messages sent by human agents.                          |
| **Conversation Features Agent Response Delay To Customer Avg Seconds**   | Average wait time for all human agent replies to the customer.          |
| **Conversation Features Agent Response Delay To Customer Max Seconds**   | The longest wait time a customer experienced for a human agent reply.   |
| **Conversation Features Agent Response Delay To Customer P50 Seconds**   | Median response time for human agents.                                  |
| **Conversation Features Agent Response Delay To Customer P90 Seconds**   | 90th percentile response time for human agents.                         |
| **Conversation Features Agent Response Delay To Customer Sum Seconds**   | The total combined wait time for all agent responses in the chat.       |
| **Conversation Features Agent Turns Count**                              | Total exchanges between customer and the human agent.                   |

### Bot fields

These fields describe bot activity in the conversation.

| Field                                                                  | Description                                                         |
| ---------------------------------------------------------------------- | ------------------------------------------------------------------- |
| **Conversation Features Bot Conversation Duration Seconds**            | Total duration the automated bot was active in the session.         |
| **Conversation Features Bot First Posted At**                          | Timestamp of the first message sent by the bot.                     |
| **Conversation Features Bot First Response Delay To Customer Seconds** | Wait time between the customer's message and the bot's first reply. |
| **Conversation Features Bot Last Posted At**                           | Timestamp of the final message sent by the bot.                     |
| **Conversation Features Bot Messages Count**                           | Total number of messages sent by the bot.                           |
| **Conversation Features Bot Response Delay To Customer Avg Seconds**   | Average speed of the bot's responses.                               |
| **Conversation Features Bot Response Delay To Customer Max Seconds**   | The slowest response time recorded for the bot.                     |
| **Conversation Features Bot Response Delay To Customer P50 Seconds**   | Median response time for the bot.                                   |
| **Conversation Features Bot Response Delay To Customer P90 Seconds**   | 90th percentile response time for the bot.                          |
| **Conversation Features Bot Response Delay To Customer Sum Seconds**   | The total combined wait time for all bot responses in the chat.     |
| **Conversation Features Bot Turns Count**                              | Total exchanges between customer and the bot.                       |

### Agent or Bot fields

These fields describe the full business side of the conversation, combining human and automated replies.

| Field                                                                           | Description                                                          |
| ------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| **Conversation Features Agent Or Bot Conversation Duration Seconds**            | Combined duration of activity from either the human or the bot.      |
| **Conversation Features Agent Or Bot First Posted At**                          | Timestamp of the first message sent by the business side.            |
| **Conversation Features Agent Or Bot First Response Delay To Customer Seconds** | First response time regardless of whether a human or bot replied.    |
| **Conversation Features Agent Or Bot Last Posted At**                           | Timestamp of the final message from the business side.               |
| **Conversation Features Agent Or Bot Messages Count**                           | Total messages sent by both agents and bots.                         |
| **Conversation Features Agent Or Bot Response Delay To Customer Avg Seconds**   | Combined average response time for the entire business side.         |
| **Conversation Features Agent Or Bot Response Delay To Customer Max Seconds**   | The longest wait time for any business response.                     |
| **Conversation Features Agent Or Bot Response Delay To Customer P50 Seconds**   | Combined median response time.                                       |
| **Conversation Features Agent Or Bot Response Delay To Customer P90 Seconds**   | Combined 90th percentile response time.                              |
| **Conversation Features Agent Or Bot Response Delay To Customer Sum Seconds**   | The total combined wait time for all business responses in the chat. |
| **Conversation Features Agent Or Bot Turns Count**                              | Total exchanges between customer and the business side.              |

### Customer fields

These fields describe customer activity in the conversation.

| Field                                                            | Description                                                                                                                    |
| ---------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Conversation Features Customer Conversation Duration Seconds** | Difference in seconds between the customer’s first and last message.                                                           |
| **Conversation Features Customer First Posted At**               | Timestamp of the customer's first message.                                                                                     |
| **Conversation Features Customer Last Posted At**                | Timestamp of the customer's last message.                                                                                      |
| **Conversation Features Customer Messages Count**                | Total count of messages sent by the customer.                                                                                  |
| **Conversation Features Customer Turns Count**                   | Total number of turns initiated by the customer. A turn happens when another author type replies after the customer's message. |

### Conversation-level fields

These fields describe the conversation as a whole.

| Field                                                     | Description                                                                          |
| --------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| **Conversation Features Conversation Duration Seconds**   | Difference in seconds between the first message and the last message.                |
| **Conversation Features First Posted At**                 | Timestamp of the first message sent in the conversation.                             |
| **Conversation Features Last Posted At**                  | Timestamp of the last message sent in the conversation.                              |
| **Conversation Features Messages Count**                  | Grand total of all messages from all participants.                                   |
| **Conversation Features Last Agent Or Bot Author Type**   | Categorizes the final respondent as `Agent` or `Bot`.                                |
| **Conversation Features Last Agent Or Bot Id**            | ID of the specific agent or bot who sent the last message.                           |
| **Conversation Features Last Agent Or Bot Supervisor Id** | ID of the supervisor linked to the agent who ended the chat. Used in Agent QA flows. |

## Tips for filtering

When building filters with these fields:

* use **duration** and **delay** fields for SLA-like analysis
* use **messages count** and **turns count** for complexity analysis
* use **first posted** and **last posted** fields for time-based slicing
* use **last agent or bot** fields to analyze who closed the interaction

For the main filter guide, see [Using filters in Birdie](/customer-intelligence/exploration-and-analysis/using-filters-in-birdie).


# Organizing Segments with Collections

## Why Segment Collections Matter

* Segments help you slice insights by different lenses: customer profiles, behavior, lifecycle status, etc.
* But not every segment type is directly comparable.
* Segment Collections keep these lenses organized, so you don’t compare unlike groups or lose track of valuable cuts.

## How Segment Collections Work

* Each Collection groups a family of segments.
* Users can:
  * Compare segments within the same collection (e.g. churned vs. retained customers).
  * Avoid mixing cross-domain comparisons that don’t make sense (e.g. Industry vs. Daily Active).
* Collections can be named intuitively (“CRM Status”, “Behavioral Cohorts”, “Firmographics”) so everyone navigates insights smoothly.

## Best Practices for Organizing Segments

* Create one collection per “dimension” of segmentation (Firmographics, Behaviors, Lifecycle).
* Agree internally on naming conventions (e.g. “DAU > 30” vs. “High DAU”).
* Use Collections as a training tool — new team members will quickly see “how we slice data here.”
* Review Collections quarterly: retire unused segments, align with evolving CRM or analytics sources.

## How to create a collection of Segments

{% stepper %}
{% step %}

### Open Segments in Exploration

Navigate to your Segments tab in Exploration.
{% endstep %}

{% step %}

### Select Segments to Group

Select the Segment you want to group into a collection (e.g.: These 3 segments related to Customer Size).

![](/files/hYENcQhv9sVDCyUwAYqO)
{% endstep %}

{% step %}

### Save as a Collection

Click Save Collection.

![](/files/j3xSoiZTH1Ne9zmuQSHK)
{% endstep %}

{% step %}

### Name the Collection

Give your Collection a name.
{% endstep %}

{% step %}

### Group View by Collections

Change Segments table to group by collections.

![](/files/nVnd4ByofCL1gGmXFN8c)
{% endstep %}

{% step %}

### Done

Now, get even more insightful analysis from your segmented data.

![](/files/Wln2oVBb1KoojmdmCwO6)
{% endstep %}
{% endstepper %}


# Understanding and Using Skye in Birdie

## What is Skye?

Skye is an artificial intelligence assistant designed to help users navigate through insights and make informed decisions. While Skye strives to provide accurate and helpful information, it is continually learning and may not always have complete information. Users are encouraged to verify important details when necessary. The assistant's icon—a blue bird—is located in the bottom-left corner when you're on an area, opportunity, or exploration page.

![](/files/8ZCwMtUkWJB8MCcsWPRW)

### Main Features:

* Discover Opportunities in Reported Problems: Skye generates a list of opportunities based on feedback about area problems, allowing them to be added by clicking "+Add".
* Explore and Refine Opportunities: Skye suggests new insights and allows deeper analyses related to the current opportunity, assisting in exploring specific solutions.
* Ask a Question: Allows the user to ask about patterns, recurring problems, causes of dissatisfaction, among others.

### How to use Skye?

Skye is a versatile tool within Birdie that adapts to various contexts, enhancing your ability to extract and analyze customer feedback effectively. It offers flexibility in how you interact with it, allowing for both structured and unstructured engagements.

### Using Skye in Different Contexts

Skye's functionality adapts based on whether you're interacting within an area or an opportunity, and it responds dynamically to the filters you've applied. This adaptability allows Skye to present information that aligns precisely with your current focus, enhancing the relevance and specificity of the insights provided. For more detailed information on how to apply filters in Birdie, access the complete documentation: <https://ask.birdie.ai/article/using-filters-in-birdie-by-arisasakaguti>

### Engaging with Skye: Templates vs. Open Querying

Skye supports two primary modes of interaction:

* Using Templates: Skye offers predefined templates that guide your feedback analysis, ensuring consistency and comprehensiveness in your approach.
* Open Querying: Alternatively, you can engage Skye with open-ended questions, allowing for a more exploratory analysis tailored to specific inquiries.

![](/files/LwngaTtpwOdqdKCi1Xmc)

{% tabs %}
{% tab title="Exploration Page" %}
Skye on the Exploration Page

On the Exploration Page, Skye serves as a powerful tool to delve into customer feedback. It enables you to filter and search through vast amounts of data, facilitating the discovery of actionable insights. This feature is particularly useful for identifying trends and patterns in customer sentiment.
{% endtab %}

{% tab title="Areas" %}
Using Skye in Areas

Within defined areas, Skye immerses itself in the established context, enabling a deep dive into particular segments of your customer base or product lines. This immersion facilitates a nuanced understanding of feedback and opportunities within that area. For more detailed information about areas of interest, refer to the [documentation](/core-concepts-and-entities/areas).

Skye offers several pathways to explore opportunities and insights inside areas:

* Discover Opportunities in Reported Issues: Identify potential opportunities based on customer feedback related to reported issues, allowing them to be added by clicking "+Add".
* Discover Requested Features: Highlight opportunities stemming from customer requests for new features.
* Ask a Question: Engage directly with Skye to inquire about specific data or insights within the area.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/Yt0CPn9kEJ.png)
{% endtab %}

{% tab title="Opportunities" %}
Using Skye in Opportunities

When engaging with opportunities, Skye immerses itself in the context of potential improvements or innovations identified through customer feedback. This approach facilitates a nuanced understanding of feedback and opportunities within that opportunity. For more detailed information about opportunities, refer to the [documentation](/customer-intelligence/opportunities)

Skye offers several pathways to explore opportunities and insights within opportunities:

* Refine an Existing Opportunity: Delve deeper into identified opportunities to uncover more granular insights, allowing for the development of more targeted and effective strategies.
* Discover Opportunities in Reported Issues: Identify potential opportunities based on customer feedback related to reported issues.
* Ask a Question: Engage directly with Skye to inquire about specific data or insights within the opportunity.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/8u4TsDPP_m.png)
{% endtab %}
{% endtabs %}

### Chat Features

Within the chat interface with Skye, users have access to several features designed to enhance workflow and analysis efficiency. These features are located in the bottom-right corner of the chat window:

![](/files/efpDNBu2vIOab7hcsycM)

* ~~Restart Chat: Clears the current conversation history, allowing you to begin a new discussion with Skye.~~
* Copy response (available after each Skye message): Copies Skye's response, facilitating documentation and sharing of analyses.
* Add Specific Context: Filter feedback by origin or type (e.g., CSAT, Tickets, Author ID). Select desired filters and click "Save Changes."\
  Note: more specific filters may reduce analyzed feedback volume.
* Speed Model: Choose the speed and quantity of feedback Skye analyzes, balancing depth vs time.

## Getting Started with Skye

To start using Skye in Birdie, click on the chat icon located in the bottom-left corner of the platform. Engage with Skye by initiating a conversation, exploring features like restarting chats, copying conversations, and customizing settings. Utilizing these functionalities will enhance your analytical processes and tailor your experience to meet your specific needs. Start interacting with Skye today to fully harness its potential!


# Opportunities (Opps)

An Opportunity in Birdie represents a specific insight extracted from customer feedback, highlighting emerging trends, critical issues, or areas for improvement. These insights allow teams to analyze minute details, identify root causes, and find strategic actions to enhance the customer experience.

Effectively managing Opportunities helps organizations prioritize initiatives that directly impact customer satisfaction and business growth.

![Opportunity illustration](/files/FlayKKiluZerMaYDLvKM)

***

### Structure of an Opportunity

Each Opportunity in Birdie is organized into several essential components:

* **Title and Description**. A clear and objective title accompanied by a detailed description that explains the nature of the Opportunity.
* **Metrics Header**. A summary section that displays relevant metrics, such as the number of associated feedback, customer impact indices, and trend analyses.

![Metrics header](/files/4N3V8cM6N6Xry5u6ea51)

### Associated Areas

The Opportunity can be linked to one or more Areas of interest within the organization. Read more about [Areas](/core-concepts-and-entities/areas).

![Associated areas](/files/4XRP56ScLdSF8Ge0NEAO)

## Advanced Features

### What's happening

An AI-generated summary that provides an overview of the data, offering immediate insights about the context and importance of the Opportunity.

### Segments

Specific sets of feedback linked to the Opportunity, enabling targeted analyses. Read more about [Segments](/core-concepts-and-entities/segments).

![Segments](/files/FlayKKiluZerMaYDLvKM)

### Charts

Visual representations of data, including graphs and tables that illustrate patterns, trends, and correlations related to the Opportunity.

![Charts](/files/YluEXlAfVjOK5PW1cq0k)

## Skye - AI Assistant

Birdie's AI assistant integrated into the Opportunity page to deepen understanding of the identified problem. Within an Opportunity, Skye can:

* Provide detailed insights about the nature and extent of the problem;
* Detect related or underlying issues;
* Suggest actions or focus areas to resolve the issue effectively;
* Identify emerging trends in feedback that may impact the Opportunity.

![Skye AI assistant](/files/FGAYGYzVtrTZsPxG0hRC)

## Comments

A collaborative space where team members can discuss insights, suggest actions, and share observations about the Opportunity based on customer comments.

![Comments](/files/R42yA1iUu9FCaOty70zA)

{% hint style="info" %}
Best Practices

* Understand and use all components to analyze and resolve Opportunities effectively.
* Use comments to your team's advantage to maximize insights.
  {% endhint %}

Further reading

* [Understanding and creating Areas in Birdie](/core-concepts-and-entities/areas)
* [How to use the Segments in Birdie](/core-concepts-and-entities/segments)


# Opportunity Status

## What the Statuses Mean

Here are the different types of status you might see, and what you can do about them:

<figure><img src="/files/ASLUvFKZPkZy74ikKJ7J" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/NfywQLQS65F9IeLtJoF4" alt=""><figcaption></figcaption></figure>

* Pending Calibration:\
  This opportunity requires calibration from your team. You may want to help us align with your expectations
  * Action: calibrate the opportunity.
* Rejected:\
  In rare cases, an opportunity might be rejected — usually when there’s an issue with how it was created, like a vague description or a low relevance count. These require your review.
  * Action: review and decide whether to update or remove.
* Processing in Progress:\
  Sometimes you’ll see something like “25% Processing” on an opportunity. This means it’s still going through our data processing pipeline. Once complete, the label will disappear, and the opportunity will be ready to use.
  * Action: wait — it will be completed automatically.
* With Specialists:\
  This tag means our internal team is taking a closer look at the opportunity. You don’t need to act, but you’ll be notified once it’s ready.
  * Action: none — we’re taking care of it.

## Ready to Go

If an opportunity shows no status, it’s complete and ready to:

* Be added to an Initiative
* Be monitored in Dashboards
* Be shared with your team

<br>


# How to analyze Opportunities

After an Opportunity is quantified in Birdie, it becomes a rich source of insights about patterns, trends, and emerging problems in your customers' feedback. Analyzing Opportunities allows you to identify root causes, monitor impact over time, segment issues by different criteria, and make informed decisions about where to invest resources to improve the customer experience.

### Components of the Opportunities page

* Metrics Header:
  * Total volume of feedbacks identified;
  * Frequency of occurrence of the opportunity;
  * Temporal trends (growth, decline, seasonality);
  * Distribution across channels, products, or segments;
* "What's Happening":
  * Summary automatically generated by AI highlighting main insights;
  * Emerging patterns in feedbacks;
  * Correlations with other factors;
* Segments and Filters:
  * Analyze the distribution of the opportunity by period, channel, product, region, etc;
  * Compare different groups to identify significant variations.
* Skye Integrated:
  * Ask specific questions about the opportunity;
  * Explore root causes and associated factors;
  * Request suggestions for actions or areas of focus.
* Related Feedbacks:
  * List of feedbacks classified as containing the opportunity;
  * Possibility to explore specific examples for additional context.

### Types of possible analyses

* Temporal Analysis:
  * Identify if the opportunity is growing or declining;
  * Detect seasonal or cyclical patterns;
  * Correlate with business events or changes.
* Segmented Analysis:
  * Compare incidence across different channels;
  * Analyze variations by product or service;
  * Identify customer profiles most impacted.
* Correlation Analysis:
  * Explore relationships with other opportunities;
  * Identify factors that amplify or reduce occurrence;
  * Discover interdependencies between problems.
* Impact Analysis:
  * Measure total volume of affected customers;
  * Calculate relative frequency per segment;
  * Estimate impact on the business or satisfaction.

### Step-by-Step Guide for effective analysis

1. Examine general metrics: Understand the volume, frequency, and trend of the opportunity;
2. Read the AI summary: Absorb the main insights identified automatically;
3. Segment the data: Use filters to explore variations by different criteria;
4. Converse with Skye: Ask specific questions to deepen the analysis;
5. Explore examples: Review specific feedbacks to contextualize the data;
6. Document insights: Record conclusions and next steps identified.

## Example

Scenario: Analyze opportunity "Difficulty finding information about fees"

### Analysis performed

* Metrics: 1,200 feedbacks identified in the last 3 months, 15% growth;
* Segmentation: 80% concentrated in the digital channel, higher incidence in individual customers;
* Question to Skye: "What are the most mentioned fees by customers?";
* Main insight: Maintenance fee is the biggest problem, especially in the mobile app;
* Recommended action: Improve visibility of fee information in the app.

### Useful questions for Skye

* ​About root causes:
  * "What are the main factors that cause this opportunity?"
  * "In what contexts does this opportunity appear most?"
* About impact:
  * "How does this opportunity affect customer satisfaction?"
  * "What is the profile of customers most impacted?"
* About solutions:
  * "What actions could reduce this opportunity?"
  * "Are there best practices observed in the feedbacks?"

## Best Practices

* Combine quantitative analysis (metrics) with qualitative (examples);
* Use segmentation to identify priority groups;
* Explore correlations with other opportunities or business metrics;
* Ask specific questions to Skye to deepen insights;
* Document conclusions and next steps for responsible teams;
* Monitor trends regularly to detect changes;

## Common Questions

* How often should I analyze opportunities?\ <mark style="color:$info;">Weekly analysis is recommended for critical opportunities and monthly for others;</mark>
* Can I export the data for external analysis?\ <mark style="color:$info;">Yes, you can export feedbacks and use complementary tools if necessary.</mark>

## Read also

* [Opportunities](/customer-intelligence/opportunities)
* [Using Birdie's AI agent, Skye](/customer-intelligence/exploration-and-analysis/understanding-and-using-skye-in-birdie)
* [How to use filters in Birdie](/customer-intelligence/exploration-and-analysis/using-filters-in-birdie)


# Initiatives

## What Are Initiatives in Birdie?

In Birdie, the power of centralizing, exploring, and uncovering hidden opportunities from user feedback allows teams to deep dive into granular details and understand root causes. However, uncovering insights is only the beginning—eventually, action is required. This is where Initiatives come into play.

An Initiative is an action plan designed to activate a change based on a discovered opportunity. It functions like a task or to-do item that the CX or Operations Team—responsible for monitoring Customer Intelligence—creates to escalate an issue or opportunity to another team within the company for resolution.

## How to Create an Initiative

There are two ways to create an Initiative in Birdie:

### From an Existing Opportunity

If you've identified an opportunity and need to take action, you can create an Initiative directly from the Opportunity Page:

* Click the Add to Initiative button at the top right corner.
* Give it a name and save.
* A new Initiative is created and automatically associated with the given opportunity.
* Add all necessary details, such as assignee, description, and external links.

![](/files/LtU56PNmMDtglznr4gSr)

### From the Initiatives Page

To create an Initiative independently:

* Navigate to the Initiatives Overview Page.
* Click the Create Initiative button on the top right corner.
* Add relevant details and later associate it with one or more existing opportunities, agents or criteria.

![](/files/8EqHCqYEn6EnG6Cu1ewd)

## Key Associations to Keep in Mind

A single opportunity can be linked to multiple initiatives if different teams need to address it separately.

* Example: A product issue might require a new FAQ by Product Marketing, a bug fix by Engineering, and a process update by Customer Support.

A single initiative can be linked to multiple opportunities, agents or criterion when a single solution addresses multiple issues.

* Example: A new feature release may resolve several different pain points across different customer journeys.

## Example: Initiatives in Action

Imagine a CX Team in a digital bank startup monitoring Customer Intelligence within the "Credit Card" product. They track the "Credit Card Invoice Payment" journey and uncover a major issue: Delayed credit limit release after invoice payment.

Through root cause analysis, they discover that users expect an immediate credit limit release upon invoice payment. However, they are unaware of the payment confirmation process that occurs before the release.

To address this, the CX Team needs to escalate the issue. They do so by creating an Initiative in Birdie.

* Initiative Name: Improve communication about invoice payment and limit release process
* Assignee: Product Marketing Team
* Description: Highlights findings and the need for better FAQ or communication materials to set proper user expectations, reducing complaint volume.
* Additional Details: The assignee can add an estimated due date and an external link to an internal task management tool (e.g., Jira, Trello, Asana).

## Managing and Tracking Initiatives

{% stepper %}
{% step %}

### Initiative Listing and Filtering

All created Initiatives are listed under the Initiative Page in Birdie. Here, teams can:

* View all Initiatives created to address different opportunities.
* Filter by Owner, Assignee or Status to track responsibilities across departments.

![](/files/imVE1SOwlor4snxyr0Ts)
{% endstep %}

{% step %}

### Initiative Status Control

Each Initiative follows a status workflow:

* To Do → Initial status when the Initiative is created.
* Doing → Assigned teams are actively working on it.
* Done → The Initiative is completed and action has been taken.
* Custom Status → You can create any number of custom status on your Settings page > Custom status.

<img src="/files/H15sIfEdoMGm7xndzLun" alt="" width="563">

When an Initiative is marked as Done, a Release Date is required —indicating when the change went live.
{% endstep %}
{% endstepper %}

## Tracking Impact and ROI

By providing a Release Date, Birdie automatically:

* Adds a timeline annotation to the Opportunity Timeline Chart.
* Helps teams visually track changes in related metrics, such as:
  * Did the volume of related complaints drop after the release?
  * Did the associated NPS score increase?

When teams can demonstrate and share the impact and ROI of the Initiative, it strengthens the case for Customer Intelligence-driven improvements and helps close the loop with related clients.

![](/files/5EocnCMvsW9rb4r2CJYt)

***

## Why Are Initiatives Important?

The Initiative feature in Birdie is a crucial part of the Customer Intelligence workflow, bridging the gap between insight discovery and action. It ensures that:

* Opportunities are not just identified but acted upon.
* Teams have a structured process to track, manage, and measure impact.
* CI teams can communicate and collaborate effectively with other departments.

By leveraging Initiatives, organizations ensure that Customer Intelligence efforts translate into meaningful, measurable improvements, ultimately enhancing customer experience and business outcomes.

## Getting Started with Initiatives

To start using Initiatives in Birdie, navigate to the Initiative Page, create a new Initiative, assign responsibilities, and start tracking impact today!


# Dashboards & Reporting


# Custom Dashboards

## What are Custom Dashboards and what are they for?

In Birdie, Custom Dashboards function as personalized interfaces that allow teams to visualize and analyze data according to their specific needs. Using Widgets — such as text blocks, charts, and tables — users can create dashboards that highlight the most relevant metrics and insights for their objectives. This customization ensures that teams can focus on the most important data, facilitating strategic decision-making.

### Benefits of Custom Dashboards

* Faster and more efficient analysis: Consolidates frequently used charts and visualizations into a single interface;
* Improved collaboration: Facilitates the sharing of information between teams;
* Better data presentation: Improves communication and alignment between stakeholders;
* Focus on important data: Reduces time spent navigating through multiple pages

### Types of available Widgets

Widgets are the main components of Birdie's Custom Dashboards, allowing you to display data in different formats:

* **Line** — Illustrates trends and patterns over time through a continuous line visual representation.
* **Bar** — Illustrates trends and patterns over time using vertical bars to show data distribution.
* **Horizontal bar** — Similar to bar charts, but oriented horizontally for easier ranking of information.
* **Stacked bar** — Shows the composition of categories by stacking multiple data series within each bar.
* **Comparison** — Compares the performance of data groups over past periods.
* **Multi-series** — Plots multiple data series together to reveal relationships and trends across groups.
* **Number** — Highlights a specific metric as a single value for quick and constant monitoring.
* **Text** — Perfect for notes, explanations, or highlights of important insights within your dashboard.
* **Table** — Structured display of data in rows and columns for detailed analysis.
* **Custom table** — A flexible, structured display of data that can be tailored to specific analytical needs.
* **Prompt** — Allows you to add AI-powered prompts to generate insights dynamically.

<figure><img src="/files/qlrEOAFQXjYQJeMtLy8K" alt="" width="563"><figcaption></figcaption></figure>

### Step-by-Step Guide to create a Dashboard

{% stepper %}
{% step %}

### Create a new Dashboard

Locate and click on the option to create a "new dashboard", available in the dashboards section.

<figure><img src="/files/wspQjmSE3llV0TXvdsPL" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Name and description

* Name: Enter a descriptive title that reflects the purpose of the dashboard;
* Description: Provide a brief summary of the dashboard's objectives.
  {% endstep %}

{% step %}

### Add widgets

<figure><img src="/files/hJBvKylU0s6oHUtXB1nc" alt=""><figcaption></figcaption></figure>

Add the widget using the "+ Add widget" button, then choose a type to start configuring it:

**General tab**

* Type: Which visualization to use, line, bar, AI prompt, etc.
* Title & Subtitle: A clear title that indicates the content or purpose

<figure><img src="/files/NOYSmVzGj6Zi3FjG5GK5" alt="" width="375"><figcaption></figcaption></figure>

**Setup tab**

* Metric: What aggregation to show.
* Breakdown: How to subdivide the view, when applicable
* Limit: Choose a limit of breakdown items to be displayed.
* Other configurations: Based on the type of widget you are configuring, items on the set up tab will vary.

<figure><img src="/files/0IoNmSAhdPqzHlphy5Kc" alt="" width="375"><figcaption></figcaption></figure>

**Filter tab**

* Filter: Apply relevant filters to customize the displayed data
* Temporal aggregation: Choose between Day, Week, Month or Year.
* Advanced filters: Set up any type of advanced filters to improve your data visualization.
* Ignore global filter: Toggle this option to make this widget ignore global filters configured on the Dashboard.

<figure><img src="/files/qiR59FLj41CGwVPdmYj5" alt="" width="375"><figcaption></figcaption></figure>

**Customization tab**

* Series name: Change the name of the data series.
* Series color: Change the color of the data series on the chart.

<figure><img src="/files/yj8eOxG1srgmpYr6CCzu" alt="" width="375"><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

### Advanced features for analysis

* **Widget Aggregation:** Each widget can have its own temporal configuration​

<figure><img src="/files/CFgJ8x8QIzWDxxinxqko" alt=""><figcaption></figcaption></figure>

#### Available interactions

* **Tooltips:** Hover over chart elements for detailed information​;

<figure><img src="/files/PhTms51W6CIBTZhkePlp" alt=""><figcaption></figcaption></figure>

* **Interactive legend:** Click on legend items to hide/highlight data series​;

<figure><img src="/files/v6Gm7vL1PykGhT9OIUSQ" alt=""><figcaption></figcaption></figure>

## Example

Scenario: Create a dashboard to monitor customer satisfaction with credit cards.

Dashboard: "Satisfaction - Credit Cards"\
Included Widgets:

* Number Widget: "Current NPS" - shows the most recent NPS score;
* Chart Widget: "Satisfaction Evolution" - timeline with monthly trend;
* Table Widget: "Top 5 Problems" - list of most reported problems;
* Text Widget: "Main Insights" - summary of key findings.

## Best Practices

* Use descriptive titles that reflect the purpose of the dashboard;
* Combine different types of widgets for a complete view;
* Apply relevant filters to personalize the displayed data;
* Take advantage of temporal configurations for granular analysis;
* Use text blocks to contextualize the presented data.

## Common Questions

* Can I share dashboards with other teams?\ <mark style="color:$info;">Yes, Custom Dashboards facilitate the sharing of information between stakeholders.</mark>
* Can each widget have different filters?\ <mark style="color:$info;">Yes, each widget can be configured independently with its own filters and aggregations.</mark>

## Read also

* \[How to use filters in Birdie]
* \[Dashboard Widgets]
* \[How to create custom charts]
* \[Birdie Platform Overview]<br>


# Dashboard tabs

Tabs allow you to organize widgets within a dashboard into distinct, named sections — making it easier to navigate complex dashboards and group related data without creating multiple separate dashboards.

### Overview

When a dashboard grows to cover multiple topics or teams, scrolling through a long list of widgets becomes inefficient. Tabs let you divide a dashboard's content into clearly labelled sections. Each tab holds its own set of widgets, and viewers switch between them with a single click.

Tabs are created and managed in dashboard edit mode. Viewers see the tab navigation automatically.

<img src="/files/itlS9tTINW4iaFC0KXSz" alt="Dashboard with two tabs visible in view mode" width="563">

### Adding a Tab

{% stepper %}
{% step %}

#### Open the dashboard in edit mode

Navigate to the dashboard you want to edit and click **Edit** in the top right corner of the page.
{% endstep %}

{% step %}

#### Add a new tab

Click **+ Add Tab** on the right side of the tab bar. A new tab will appear in the tab row with a default name ready to be edited.
{% endstep %}

{% step %}

#### Name the tab

Type a name for the tab directly in the tab input field. Tab names can be up to 50 characters long. Press **Enter** or click away to confirm.
{% endstep %}

{% step %}

#### Add widgets to the tab

With the new tab selected, add widgets to it as you normally would. Widgets are always scoped to the tab that is active when they are created.
{% endstep %}

{% step %}

#### Save the dashboard

Click **Save dashboard** in the top right corner to apply your changes. {% endstep %} {% endstepper %}

{% hint style="info" %}
Each dashboard supports a maximum of 8 tabs.
{% endhint %}
{% endstep %}
{% endstepper %}

### Renaming a Tab

Open the dashboard in edit mode, click directly on the tab name, and type the new name. The 50 character limit applies. Click **Save dashboard** to confirm.

{% hint style="warning" %}
If you enter a name longer than 50 characters, a validation message will appear and the name will not be saved until it is shortened.
{% endhint %}

### Deleting a Tab

{% hint style="info" %}
Deleting a tab removes all widgets contained within it. This action cannot be undone. Make sure you no longer need the widgets on that tab before proceeding.
{% endhint %}

Open the dashboard in edit mode and hover over the tab you want to delete. Click the trash icon that appears to the right of the tab name, then click **Save dashboard** to persist the deletion. To undo before saving, click **Discard changes** — a confirmation modal will appear before any unsaved changes are lost.

### Navigating Tabs in View Mode

In view mode, the tab bar is displayed below the dashboard title and description. Click any tab name to switch to that tab's content. The active tab is indicated by an underline.

Tabs are always visible to anyone with access to the dashboard — no additional configuration is required.

### Limits and Constraints

| Constraint                 | Limit         |
| -------------------------- | ------------- |
| Maximum tabs per dashboard | 8             |
| Maximum widgets per tab    | 20            |
| Maximum tab name length    | 50 characters |

{% hint style="info" %}
Widget limits apply per tab, not per dashboard. A dashboard with 4 tabs can hold up to 80 widgets in total.
{% endhint %}

### Troubleshooting & FAQs

**Q: The "+ Add Tab" button is not visible. Why?** A: The button is hidden when the dashboard is not in edit mode.

**Q: I see a "Tab name cannot exceed 50 characters" message. What should I do?** A: Shorten the tab name to 50 characters or fewer. The name will not save until it meets the character limit.

**Q: I accidentally deleted a tab. Can I recover it?** A: If you have not yet clicked **Save dashboard**, click **Discard changes** to revert all unsaved edits. If the dashboard was already saved, the tab and its widgets cannot be recovered.

**Q: Can I reorder tabs?** A: Yes, tabs can be reordered in the edit mode. Hover your mouse on them and the reorder icon will appear on the left of the tab name. Click on it and drag the tab to the position you want it to be.

**Q: Do tabs affect how a dashboard is shared?** A: No. When you share a dashboard, all tabs are visible to the recipient. It is not possible to share individual tabs independently.


# Dashboard visibility in Workspaces

With this new structure, dashboards now belong directly to the environment where they were created, either at the **Organization level** or within a **specific Workspace**. This brings more clarity, context, and productivity to your daily work.

#### What's Changing?

* **Organization Dashboards:** remain visible to all members who have access to the Organization level.
* **Workspace Dashboards:** are only visible within the Workspace where they were created.
* **Clear separation:** when navigating inside a specific Workspace, you will no longer see dashboards from other Workspaces.
* Cross-workspace sharing as templates: Organization admins can now share dashboards with specific Workspaces as templates, ensuring alignment and consistency across teams.

{% hint style="info" %}
Important: all dashboards created up until now will appear as Organization dashboards, ensuring that nothing is lost during this transition.
{% endhint %}

## How to Create a Dashboard in the Right Place

{% stepper %}
{% step %}

### Choose the right environment

Check whether you are navigating at the Organization level or inside a specific Workspace.

* If you’re in a Workspace, the dashboard will only be visible within that Workspace.
* If you’re at the Organization level, the dashboard will be accessible to everyone in the Organization.
  {% endstep %}

{% step %}

### Create the dashboard

* Click on “+ New Dashboard.”
* Give it a name and configure the widgets you need.
  {% endstep %}

{% step %}

### Share

* Open the desired dashboard.
* Click on “Share.”
* Select the role: “Viewer”, “Editor” or “Admin”.
* Choose if you want to share with:

  * The entire Organization (if you’re at the Organization level)
  * The current Workspace (if you’re inside a Workspace)
  * A specific person This ensures your team receives relevant information quickly and securely, without the risk of unauthorized changes.

  <figure><img src="/files/MjZhhtiOEvFbhCWNvv2L" alt="" width="563"><figcaption></figcaption></figure>

{% endstep %}
{% endstepper %}

## Share Dashboards as Templates

<figure><img src="/files/JmgwZa2zyp5sSqCuNZUN" alt="" width="563"><figcaption></figcaption></figure>

It is now possible to share dashboards across Workspaces as templates, ensuring consistent structures and aligned analyses across different areas.

What this means:

* An Organization admin can create dashboards, click “Share”, and select the Workspaces where that dashboard will be available as a template.
* Within each Workspace, the dashboard will appear in view-only mode.
* Edits can only be made from the original dashboard created at the Organization level.

This guarantees consistency and saves time, as all Workspaces start from the same foundation, without the risk of local changes affecting alignment.

<details>

<summary>💬 Got questions or want to share your feedback?</summary>

Get in touch with our support team. Your opinion is essential for us to keep improving the dashboard experience. Let us know what you think of this update!

</details>


# Dashboard Widgets

## What are Dashboards Widgets and what are they for?

Dashboards Widgets are the main components of Birdie's Custom Dashboards. They function as building blocks that allow you to display data in different formats, organizing information in a visual and intuitive way. With widgets, you can transform raw data into understandable visualizations that facilitate analysis and strategic decision-making.

### Available types of Widgets

<figure><img src="/files/YweuykSYSABXpWnnhcRN" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/4jtGWALP0rmGb3W0t3i6" alt=""><figcaption></figcaption></figure>

Birdie offers six main types of widgets to meet different visualization needs:

* **Text Blocks**: Used to contextualize information and highlight insights;
  * Ideal for notes, explanations, and methodological guidance;
  * Useful for complementing charts and metrics with interpretations.
* **Charts (Line, Bar, Horizontal bar, Stacked Bar, Comparison and Multi-series)**: Display data visually to facilitate quick interpretations;
  * Show trends over time;
  * Compare different data categories;
  * Facilitate pattern identification.
* **Number**: Highlight key metrics in a compact format;
  * Ideal for KPIs and performance indicators;
  * Facilitate quick and continuous monitoring.
* **Table**: Present structured data for detailed analysis.
  * Facilitate granular analysis;
  * Allow sorting and filtering for advanced exploration.
* **Custom Table**: Present structured data that can be customized for detailed analysis.
  * Can mix up several metrics;
  * Facilitate granular analysis;
  * Allow sorting and filtering for advanced exploration.
* **Prompt**: Skye agent answers for textual insights.
  * Natural language prompts;
  * Allow two contexts to ease crossing data.

### Widget Configuration

For each widget added to your dashboard, you have four tabs of configuration:

* General: The place for you to select the widget type and to define it's name and subtitle;
* Setup: Where you select metrics, breakdowns and all other data that will be shown in the widget. Items on this tab vary based on the type of widget selected;
* Filter: Place for you to select the time filter of the data on the widget and also for you to create any kind of advanced filters to narrow what you want to see on the widget;
* Customization: Tab for you to change series names and colors.

<figure><img src="/files/DfgA9fU33MmxvMygHWNC" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/yIoiBLz5C0YIc8c2N9AF" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/VSrNSaXuCIQtyOT0M4X6" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/w2EQuJKVQWKUcbNAZwSY" alt="" width="563"><figcaption></figcaption></figure>

## Best Practices

* Use descriptive names that clearly reflect the widget's content;
* Combine different types of widgets for a complete view of your data;
* Apply specific filters to personalize the information displayed;
* Use text blocks to contextualize charts and numbers;
* Keep it simple - don't overload the dashboard with too many widgets.

## Common Questions

* Can I move widgets in the dashboard after creating them? → Yes, you can reorganize widgets by dragging them to new positions.
* How many widgets can I add to a dashboard? → There is no specific limit, but we recommend focusing on the most important ones for better usability.

## Read also

* [Custom Dashboards](/customer-intelligence/dashboards-and-reporting/custom-dashboards)
* [Using filters in Birdie](/customer-intelligence/exploration-and-analysis/using-filters-in-birdie)
* [How to edit custom charts in Exploration Pages](/customer-intelligence/exploration-and-analysis/custom-charts-in-exploration-pages)
* [Header indicators](/customer-intelligence/exploration-and-analysis/indicators-in-the-header)

<br>


# Line Chart

### What is the Line Chart Widget?

The Line Chart is one of the core widget types available in Birdie Dashboards. It is designed to help you visualize how a metric evolves over time by plotting data points connected by a continuous line. With support for multiple series displayed simultaneously, the Line Chart makes it easy to track trends, identify peaks and drops, and compare performance across different areas, teams, or feedback channels, all within a single view.

#### How to extract the most value from the Line Chart?

The Line Chart is most valuable when your primary question involves change over time. Use it when you want to answer questions such as:

* How has the volume of feedback from my different support channels changed over the past 30 days?
* Which areas of the product are generating the most feedback this quarter compared to last?
* Are certain feedback categories growing or declining week over week?

Because the Line Chart supports breakdowns by dimensions like Areas or Opportunities, you can layer multiple series onto one chart and immediately see which segments are driving changes in your data.

<img src="/files/oar2gjb9FznbFEV1csyg" alt="Line chart widget preview on a Dashboard" width="563">

### Setting up a Line Chart

{% stepper %}
{% step %}

### Select the widget type

When adding a new widget to your dashboard, select **Line** from the widget type options at the top of the configuration panel.
{% endstep %}

{% step %}

### Add a title and subtitle

In the **Title** field, enter a clear name for your widget. You can also add an optional **Subtitle** to provide additional context for other users viewing the dashboard.
{% endstep %}

{% step %}

### Configure the data source

Navigate to the **Setup** tab to define what data the chart will display.

* **Metric**: Select the metric you want to track. For example, choose **Overall** to display aggregate feedback counts across all sources.
* **Breakdown**: Select a dimension to split the metric into multiple series. For instance, selecting **Areas** will render one line per area on the chart.
* **Selection**: Use the selection dropdown to choose which specific items within the breakdown to include. By default, all available items are selected.
* **Limit**: Set the maximum number of series displayed on the chart. This is useful when a breakdown returns many results and you only want to surface the most relevant ones.

<figure><img src="/files/zYgWz91TXp4Nun2m85Ks" alt="" width="563"><figcaption></figcaption></figure>

{% hint style="info" %}
You can toggle **Set vertical axis range** to manually define the minimum and maximum values for the Y-axis, which is useful for standardizing charts across your dashboard.
{% endhint %}
{% endstep %}

{% step %}

### Configure display settings

Still in the **Setup** tab, scroll down to the **Display settings** section.

* **Always show values on chart**: Enable this toggle to display exact data point values directly on the chart lines, making it easier to read precise figures without hovering.
  {% endstep %}

{% step %}

### Set filters

Navigate to the **Filter** tab to control the time range and granularity of the data shown.

* **Date range**: Select the period you want the chart to cover. The default is **Last 30 days**.
* **Time aggregation**: Choose how data is grouped along the X-axis. The default is **Week**, which plots one data point per week.
* **Advanced filters**: Use the **Add filter** option to refine the data further, for example, by a specific tag, sentiment, or source. You can also enable **Ignore global filter** if you want this widget to display independently of any dashboard-level filters.
  {% endstep %}

{% step %}

### Customize series labels and colors

Navigate to the **Customization** tab to review and edit how each series is labeled and colored on the chart.

* Each breakdown item appears as a numbered series (Serie 1, Serie 2, and so on).
* You can rename any series label by editing the text field next to it.
* Click the color swatch to change the color assigned to that series.

<img src="/files/dcaVkGYMX5JAv2AQCpOQ" alt="Customization tab showing series labels and color pickers" width="563">

{% hint style="info" %}
Renaming series labels is especially useful when the default breakdown names are long or technical. Clearer labels make the chart easier to read for teammates who may not be familiar with the underlying data structure.
{% endhint %}
{% endstep %}

{% step %}

### Save the widget

Once you are satisfied with the configuration, click **Save changes** to add the Line Chart to your dashboard.

{% hint style="info" %}
Remember to save the Dashboard itself after setting up the widget, otherwise your changes will not be persisted.
{% endhint %}
{% endstep %}
{% endstepper %}


# Bar Chart

### What is the Bar Chart Widget?

The Bar Chart is a core widget type available in Birdie Dashboards. It displays data as vertical bars, making it easy to compare values across different categories at a glance. With support for a primary and secondary breakdown, the Bar Chart lets you layer an additional dimension onto your data, for example, comparing feedback volumes across areas and further segmenting each bar by date, giving you a more granular view of how your metrics are distributed.

#### How to extract the most value from the Bar Chart?

The Bar Chart works best when you want to compare a metric across discrete categories rather than tracking it continuously over time. Use it when you want to answer questions such as:

* Which areas of the product received the most feedback in the last 30 days?
* How is feedback volume distributed across different support channels this quarter?
* Within each feedback area, how does the volume break down by week?

Adding a secondary breakdown is particularly useful when you want to understand not just which category leads, but also how that category is composed, for example, splitting each bar by date to reveal whether a high-volume area has been consistently active or driven by a single spike.

<img src="/files/UoO2LEWlsiXkFsh4YmgK" alt="Bar Chart widget preview" width="563">

### Setting up a Bar Chart

{% stepper %} {% step %}

{% stepper %}
{% step %}

### Select the widget type

When adding a new widget to your dashboard, select **Bar** from the widget type options at the top of the configuration panel.
{% endstep %}

{% step %}

### Add a title and subtitle

In the **Title** field, enter a clear name for your widget. You can also add an optional **Subtitle** to provide additional context for other users viewing the dashboard.
{% endstep %}

{% step %}

### Configure the vertical axis

Navigate to the **Setup** tab. The **Vertical axis** section controls the metric plotted on the Y-axis of the chart.

* **Metric**: Select the metric you want to measure. For example, choose **Overall** to display aggregate feedback counts.
* **Set vertical axis range**: Toggle this on to manually define the minimum and maximum values for the Y-axis. This is useful for standardizing charts across your dashboard or focusing on a specific value range.
  {% endstep %}

{% step %}

### Configure the horizontal axis

The **Horizontal axis** section controls how data is grouped and displayed along the X-axis.

* **Primary breakdown**: Select the main dimension to group your data by. For example, selecting **Areas** will render one bar per area on the chart.
* **Selection**: Choose which specific items within the primary breakdown to include. By default, all available items are selected.
* **Limit**: Set the maximum number of bars displayed. This is useful when a breakdown returns many results and you only want to surface the most relevant ones.
* **Secondary breakdown**: Optionally, add a second dimension to further segment each bar. For example, selecting **Date** will split each primary bar into sub-segments by time period, turning the chart into a grouped or stacked view.
* **Secondary breakdown Limit**: Set the maximum number of segments shown within each primary bar.

{% hint style="info" %}
Using a secondary breakdown can significantly increase the visual complexity of the chart. Keep the limit values low for both breakdowns to maintain readability, especially when presenting to a broad audience.
{% endhint %}
{% endstep %}

{% step %}

### Configure display settings

Still in the **Setup** tab, scroll down to the **Display settings** section.

* **Always show values on chart**: Enable this toggle to display exact data point values directly on each bar, making it easier to read precise figures without hovering.
  {% endstep %}

{% step %}

### Set filters

Navigate to the **Filter** tab to control the time range and granularity of the data shown.

* **Date range**: Select the period you want the chart to cover. The default is **Last 30 days**.
* **Time aggregation**: Choose how data is grouped over time. The default is **Week**.
* **Advanced filters**: Use the **Add filter** option to refine the data further, for example, by a specific tag, sentiment, or source. You can also enable **Ignore global filter** if you want this widget to display independently of any dashboard-level filters.
  {% endstep %}

{% step %}

### Customize series labels and colors

Navigate to the **Customization** tab to review and edit how each series is labeled and colored on the chart.

* Each breakdown item appears as a numbered series (Serie 1, Serie 2, and so on).
* You can rename any series label by editing the text field next to it.
* Click the color swatch to change the color assigned to that series.

![Customization tab showing series labels and color pickers](/files/RbBRUCUad1Fn21iNq8Zw)

{% hint style="info" %}
Renaming series labels is especially useful when the default breakdown names are long or technical. Clearer labels make the chart easier to read for teammates who may not be familiar with the underlying data structure.
{% endhint %}
{% endstep %}

{% step %}

### Save the widget

Once you are satisfied with the configuration, click **Save changes** to add the Bar Chart to your dashboard.

{% hint style="info" %}
Remember to save the Dashboard itself after setting up the widget, otherwise your changes will not be persisted.
{% endhint %}
{% endstep %}
{% endstepper %}


# Horizontal Bar Chart

## Horizontal Bar Chart

### What is the Horizontal Bar Chart Widget?

The Horizontal Bar Chart is a widget type available in Birdie Dashboards. It displays data as horizontal bars, ranking categories from top to bottom by their metric value. This orientation makes it especially easy to read and compare category labels of varying lengths, each bar extends to the right in proportion to its value, with the exact figure displayed alongside it.

#### How to extract the most value from the Horizontal Bar Chart?

The Horizontal Bar Chart is ideal when your focus is on ranking or comparing discrete categories by volume or score, and legibility of category names matters. Use it when you want to answer questions such as:

* Which feedback areas generated the highest volume of responses in the last 30 days?
* Which topics are driving the most mentions across my customer base right now?

Because bars are arranged vertically with labels on the left, this widget handles long or multi-word category names much more cleanly than a vertical bar chart. It is particularly well-suited for dashboards where the category dimension, such as Areas, Opportunities, or feedback channels, is the most important variable.

<img src="/files/wIxoVE1mqtacSxhLGefj" alt="Horizontal Bar Chart widget preview" width="563">

### Setting up a Horizontal Bar Chart

{% stepper %}
{% step %}

### Select the widget type

When adding a new widget to your dashboard, select **Horizontal bar** from the widget type options at the top of the configuration panel.
{% endstep %}

{% step %}

### Add a title and subtitle

In the **Title** field, enter a clear name for your widget. You can also add an optional **Subtitle** to provide additional context for other users viewing the dashboard.
{% endstep %}

{% step %}

### Configure the data source

Navigate to the **Setup** tab to define what data the chart will display.

* **Metric**: Select the metric you want to measure. For example, choose **Overall** to display aggregate feedback counts across all sources.
* **Breakdown**: Select the dimension to group your data by. Each item in the breakdown will appear as a separate horizontal bar. For example, selecting **Areas** will render one bar per area.
* **Selection**: Use the selection dropdown to choose which specific items within the breakdown to include. By default, all available items are selected.
* **Limit**: Set the maximum number of bars displayed. This caps how many breakdown items appear on the chart, keeping it focused on the most significant results.
* **Set vertical axis range**: Toggle this on to manually define the minimum and maximum values for the horizontal scale.
  {% endstep %}

{% step %}

### Configure display settings

Still in the **Setup** tab, scroll down to the **Display settings** section.

* **Always show values on chart**: Enable this toggle to display exact data point values directly alongside each bar, making it easier to read precise figures at a glance.
  {% endstep %}

{% step %}

### Set filters

Navigate to the **Filter** tab to control the time range and granularity of the data shown.

* **Date range**: Select the period you want the chart to cover. The default is **Last 30 days**.
* **Time aggregation**: Choose how data is grouped over time. The default is **Week**.
* **Advanced filters**: Use the **Add filter** option to refine the data further, for example, by a specific tag, sentiment, or source. You can also enable **Ignore global filter** if you want this widget to display independently of any dashboard-level filters.
  {% endstep %}

{% step %}

### Customize series labels and colors

Navigate to the **Customization** tab to review and edit how each series is labeled and colored on the chart.

* Each breakdown item appears as a numbered series (Serie 1, Serie 2, and so on).
* You can rename any series label by editing the text field next to it.
* Click the color swatch to change the color assigned to that series.

![Customization tab showing series labels and color pickers](/files/TwXYCm0Lx4QXRHDJD1Cw)

{% hint style="info" %}
Renaming series labels is especially useful when the default breakdown names are long or technical. Clearer labels make the chart easier to read for teammates who may not be familiar with the underlying data structure.
{% endhint %}
{% endstep %}

{% step %}

### Save the widget

Once you are satisfied with the configuration, click **Save changes** to add the Horizontal Bar Chart to your dashboard.

{% hint style="info" %}
Remember to save the Dashboard itself after setting up the widget, otherwise your changes will not be persisted.
{% endhint %}
{% endstep %}
{% endstepper %}


# Stacked Bar Chart

### What is the Stacked Bar Chart Widget?

The Stacked Bar Chart is a widget type available in Birdie Dashboards. It displays data as vertical bars where each bar is divided into segments representing a secondary breakdown dimension, for example, stacking individual feedback areas within each weekly time period. This makes it easy to see both the total volume for each primary category and how that total is composed across a secondary dimension, all in a single view.

The Stacked Bar Chart also offers two additional display modes that make it one of the most flexible chart types in Birdie: a **100% stacked** view that normalizes all bars to the same height and shows relative proportions instead of absolute values, and a **horizontal layout** toggle that reorients the entire chart to render bars horizontally.

#### How to extract the most value from the Stacked Bar Chart?

Use the Stacked Bar Chart when you need to understand both the magnitude and the composition of a metric at the same time. It is most useful when you want to answer questions such as:

* How has total feedback volume changed week over week, and which areas contributed most to each week's total?
* Which time periods saw the highest concentration of feedback from a specific channel?
* Are certain areas consistently dominating the feedback mix, or does the composition shift over time?

Enabling the **100% stacked column** mode is particularly valuable when comparing composition across time periods where absolute volumes differ significantly, for example, a week with 2,000 responses and a week with 400 responses are shown at the same height, making it easy to compare the proportional breakdown without the volume difference distorting the picture.

<img src="/files/AEFx4EmkqPv9AT4XMZqo" alt="Stacked Bar Chart widget preview" width="563">

### Setting up a Stacked Bar Chart

{% stepper %}
{% step %}

### Select the widget type

When adding a new widget to your dashboard, select **Stacked bar** from the widget type options at the top of the configuration panel.
{% endstep %}

{% step %}

### Add a title and subtitle

In the **Title** field, enter a clear name for your widget. You can also add an optional **Subtitle** to provide additional context for other users viewing the dashboard.
{% endstep %}

{% step %}

### Configure the vertical axis

Navigate to the **Setup** tab. The **Vertical axis** section controls the metric plotted on the Y-axis of the chart.

* **Metric**: Select the metric you want to measure. For example, choose **Overall** to display aggregate feedback counts.
* **Set vertical axis range**: Toggle this on to manually define the minimum and maximum values for the Y-axis. This is useful for standardizing charts across your dashboard or focusing on a specific value range.
  {% endstep %}

{% step %}

### Configure the horizontal axis

The **Horizontal axis** section controls how data is grouped and segmented across the X-axis.

* **Primary breakdown**: Select the main dimension to group your data by. Each item in this breakdown will appear as a separate bar on the chart. For example, selecting **Date** will render one bar per time period.
* **Selection**: Choose which specific items within the primary breakdown to include. By default, all available items are selected.
* **Limit**: Set the maximum number of bars displayed on the chart.
* **Secondary breakdown**: Select the dimension used to segment each bar into stacked portions. For example, selecting **Areas** will split each bar into colored segments, one per area, that stack to form the total bar height.
* **Secondary breakdown Limit**: Set the maximum number of segments shown within each bar.

{% hint style="info" %}
The secondary breakdown is what creates the stacking. Without it, the chart will behave like a standard bar chart with a single color per bar. Choose a secondary breakdown that meaningfully segments your primary metric. Common choices include Areas, Opportunities, or feedback channels.
{% endhint %}
{% endstep %}

{% step %}

### Configure display settings

Still in the **Setup** tab, scroll down to the **Display settings** section. The Stacked Bar Chart offers three display options:

* **Always show values on chart**: Enable this to display exact data point values directly on each segment, making precise figures readable without hovering.
* **Show 100% stacked column**: Enable this to normalize all bars to the same full height, showing each segment as a percentage of the total rather than as an absolute value. This is useful for comparing the proportional composition of bars across time periods or categories, regardless of differences in total volume.
* **Horizontal layout**: Enable this to reorient the chart so that bars extend horizontally rather than vertically. This can improve readability when the primary breakdown produces many bars, or when category labels are long.

{% hint style="info" %}
**Show 100% stacked column** and **Horizontal layout** can be enabled independently or together. When both are active, the chart renders as a 100% stacked horizontal bar chart.
{% endhint %}
{% endstep %}

{% step %}

### Set filters

Navigate to the **Filter** tab to control the time range and granularity of the data shown.

* **Date range**: Select the period you want the chart to cover. The default is **Last 30 days**.
* **Time aggregation**: Choose how data is grouped over time. The default is **Week**.
* **Advanced filters**: Use the **Add filter** option to refine the data further, for example, by a specific tag, sentiment, or source. You can also enable **Ignore global filter** if you want this widget to display independently of any dashboard-level filters.
  {% endstep %}

{% step %}

### Customize series labels and colors

Navigate to the **Customization** tab to review and edit how each series is labeled and colored in the chart.

* Each secondary breakdown item appears as a numbered series (Serie 1, Serie 2, and so on).
* You can rename any series label by editing the text field next to it.
* Click the color swatch to change the color assigned to that series.

{% hint style="info" %}
With many stacked segments, clear color choices and short label names become especially important. Consider renaming long breakdown names to shorter aliases to keep the chart legend readable.
{% endhint %}
{% endstep %}

{% step %}

### Save the widget

Once you are satisfied with the configuration, click **Save changes** to add the Stacked Bar Chart to your dashboard.

{% hint style="info" %}
Remember to save the Dashboard itself after setting up the widget, otherwise your changes will not be persisted.
{% endhint %}
{% endstep %}
{% endstepper %}


# Comparison Chart

## What is the Comparison Chart Widget?

In Birdie, the Comparison Chart is a type of widget that can be added to your Dashboards. It is a powerful tool for analyzing differences in performance over time. It allows you to compare a specific metric from the current period against its performance in a previous period, all within a single chart. This helps you quickly identify growth, decline, and other important patterns in your data.

### How to extract the most value from Comparison Charts?

When you need to understand how a metric is performing now versus in the past, the Comparison Chart is the ideal tool. For example, you can use it to answer questions like:

* "How does the volume of feedback from this month compare to last month's?"
* "Is our Net Promoter Score (NPS) trending up or down compared to the same period last year?"
* "Are we getting more mentions related to 'Product Quality' in the last 7 days compared to the 7 days before that?"

The chart visualizes this by showing data for the current period and the comparison period side-by-side for each category, making it easy to spot differences at a glance.

<figure><img src="/files/HxMFIJMCiSCwRIJb4c96" alt="screenshot of the comparison chart set up screen"><figcaption><p>Comparison chart set up screen</p></figcaption></figure>

### Setting up a Comparison Chart

Follow these steps to add and set up a Comparison Chart widget on your dashboard:

1. **Select the Widget Type**: When adding a new widget to your dashboard, select **Comparison** from the ‘Widget type’ dropdown menu.
2. **Choose a Metric**: In the **Metric** field, select the data you want to analyze. This could be anything from the overall count of responses to a specific score like CSAT or NPS.
3. **Set the Comparison Period**: This is the core of the chart's configuration. In the **Period** dropdown, choose the timeframe you want to compare against your current data filter. Your options are:
   * **Previous period**: This compares the data from your selected date filter with the immediately preceding period of the same length. For instance, if your dashboard is filtered to show the "Last 30 days," the chart will automatically compare it to the 30 days just before that.
   * **Starting at specific date:** Maintains the duration of your selected time window but allows you to define a custom start date for the comparison. For example, if your filter is "Last 7 Days," you can choose exactly which date the 7-day comparison window begins.
4. **Add a Breakdown (Optional)**: To analyze the comparison across different categories, you can select a dimension in the **Breakdown** field. For example, breaking down by 'Areas' or 'Opportunities' will show you a period-over-period comparison for each specific item. You can also set a limit on the number of breakdown results shown (max. 50).
5. **Add Title and Subtitle**: Give your widget a clear and descriptive **Title** and an optional **Subtitle** to provide context for other users.
6. **Customize Display Settings**: On the right-hand side, you can fine-tune the chart's appearance:
   * **Set Y-axis range**: Manually set the minimum and maximum values for the Y-axis.
   * **Always show values on chart**: Toggle this on to display the exact numerical values directly on the chart's bars or lines.
7. **Save the Widget**: Once you are satisfied with your configuration, click **Save widget** to add it to your dashboard.

Your new Comparison Chart will now be live, providing you with valuable at-a-glance insights into your metric's performance over time.

Don't forget to save the Dashboard after you're done setting up the widget.


# Multi-series Chart

## What is the Multi-series Chart Widget?

The Multi-series Chart is a versatile widget that empowers you to analyze and compare two different data series simultaneously. By plotting two metrics on the same chart, you can uncover relationships, correlations, and trends that might not be visible with single-metric charts. This is especially powerful when you need to see how one metric influences or compares to another over the same time period.

### How to extract the most value from the Multi-series chart?

Use the Multi-series Chart when you want to answer complex analytical questions that involve comparing two distinct datasets. For example:

* How does the volume of all feedback (`Overall: Count`) correlate with the percentage of feedback related to a specific topic (`Overall: % Count`)?
* Is there a relationship between our CSAT scores and the number of support tickets (`Tickets`) over the last quarter?
* How does the trend for NPS compare to the trend for Social Media mentions?

The widget can display both metrics on a shared Y-axis or on two separate Y-axes (a dual-axis chart), which is ideal for comparing metrics with different scales, such as a raw count and a percentage.

<figure><img src="/files/fb8tnnaXoyEnetjzMivA" alt=""><figcaption><p>Multi-series chart set up screen</p></figcaption></figure>

### Setting up a Multi-series Chart

Follow these steps to add and set up a Multi-series Chart on your dashboard:

1. **Select the Widget Type**: When adding a new widget, choose **Multi-series chart** from the ‘Widget type’ dropdown menu.
2. **Configure the Primary Series**:
   * **Primary serie**: This will always be displayed as a **Line** chart.
   * **Primary metric**: Select the first metric you want to analyze.
   * **Primary breakdown (Optional)**: You can break down this metric by a specific category (e.g., Areas, Opportunities) to see more granular trends. You can also limit the number of breakdown results shown.
3. **Configure the Secondary Series**:
   * **Secondary serie**: Choose if you want to display this series as a **Line** or a **Bar** chart.
   * **Secondary metric**: Select the second metric for your comparison. This can be the same as the primary metric or a different one.
   * **Secondary breakdown (Optional)**: Apply a separate breakdown for your secondary metric if needed and set a limit for the results.
4. **Add Title and Subtitle**: Give your widget a clear **Title** and an optional **Subtitle** to explain what is being analyzed.
5. **Customize Display Settings**: On the right side of the configuration panel, you can fine-tune the chart's appearance and axes:
   * **Show Y-axis for secondary metric**: If you're displaying two different metrics, the chart will require a dual Y-axis to ensure both data sets are scaled accurately. If you're displaying the same metric, you'll be able to toggle on and off the seconday Y-axis, according to how you the chart to look like.
   * **Set Y-axis range**: If the secondary Y-axis is enabled, you can manually set the value range for both the primary and secondary axes independently.
   * **Always show values on chart**: Toggle this on to display the exact data points on the chart.
6. **Save the Widget**: After you've configured the series and display settings, click **Save widget** to add your new Multi-series Chart to the dashboard.

Don't forget to save the Dashboard after you're done setting up the widget.


# Number Widget

### What is the Number Widget?

The Number widget is a widget type available in Birdie Dashboards. Rather than plotting data on a chart, it displays a single metric as a large, prominent number, making it ideal for surfacing key figures at a glance. It also supports a **secondary metric** displayed beneath the primary value, allowing you to add context directly to the widget without needing a separate element.

The Number widget is the simplest and most focused widget type in Birdie. It has no breakdown, no axes, and no series, just one or two metrics rendered clearly on the dashboard.

#### How to extract the most value from the Number Widget?

Use the Number widget when a single figure is the most important thing a viewer needs to see. It works best for headline metrics that anchor a dashboard and give immediate context to the charts around them. For example:

* What is the total number of feedback responses received in the last 30 days?
* What percentage of all responses does a specific area represent across the organisation?
* What is the current overall CSAT or NPS score?

Pairing a primary metric (such as a raw count) with a secondary metric (such as a percentage of total) gives viewers both the absolute figure and the relative context in a single compact widget.

<img src="/files/QXZEcYC5F54Kj0yK5Y6e" alt="Number widget preview" width="263">

### Setting up a Number Widget

{% stepper %}
{% step %}

### Select the widget type

When adding a new widget to your dashboard, select **Number** from the widget type options at the top of the configuration panel.
{% endstep %}

{% step %}

### Add a title and subtitle

In the **Title** field, enter a clear name for your widget. You can also add an optional **Subtitle** to provide additional context for other users viewing the dashboard.
{% endstep %}

{% step %}

### Configure the data

Navigate to the **Setup** tab to define the metrics the widget will display.

* **Primary metric**: Select the main metric to display as the large headline figure. For example, choose **Overall** to show the total count of feedback responses within the selected date range.
* **Secondary metric**: Optionally, select a second metric to display beneath the primary value. This appears as a smaller supplementary figure and is useful for adding proportional or contextual information. For example, selecting **Overall: % Count over organization (All responses)** will show what percentage of total organisational responses the primary count represents.

<img src="/files/tjLC4LLsVcV2DpkmBXRk" alt="Setup tab showing primary and secondary metric fields" width="375">

{% hint style="info" %}
The secondary metric is optional. If you only need to display a single figure, leave the secondary metric field empty.
{% endhint %}
{% endstep %}

{% step %}

### Set filters

Navigate to the **Filter** tab to control the time range of the data shown.

* **Date range**: Select the period you want the widget to cover. The default is **Last 30 days**.
* **Advanced filters**: Use the **Add filter** option to refine the data further, for example, by a specific tag, sentiment, or source. You can also enable **Ignore global filter** if you want this widget to display independently of any dashboard-level filters.

<img src="/files/Uo6Vkt4DDnU7xK46JSoB" alt="Filter tab showing date range and advanced filter settings" width="375">

{% hint style="info" %}
Unlike chart widgets, the Number widget does not have a time aggregation setting. The value displayed always represents the total or aggregate across the entire selected date range.
{% endhint %}
{% endstep %}

{% step %}

### Save the widget

Once you are satisfied with the configuration, click **Save changes** to add the Number widget to your dashboard.

{% hint style="info" %}
Remember to save the Dashboard itself after setting up the widget, otherwise your changes will not be persisted.
{% endhint %}
{% endstep %}
{% endstepper %}


# Text Widget

Learn how to use Markdown in the Text widget whenever you need to create explanations, instructions, or contextual information in your dashboards.

### How to apply basic formatting?

{% stepper %}
{% step %}

#### Italics

Use single asterisks or single underscores to format text in *italics*. Example:

\*text\* or \_text\_

![](/files/S0vAyrBscdCee896ndrY)
{% endstep %}

{% step %}

#### Bold

Use double asterisks or double underscores to make text **bold**. Example:

\*\*text\*\* or \_\_text\_\_

![](/files/EGLfyyFvrN9tRFLAPssf)
{% endstep %}

{% step %}

#### Bold + Italics

Use three asterisks or three underscores to combine ***bold and italics***. Example:

\*\*\*text\*\*\* or \_\_\_text\_\_\_

![](/files/BF2oV240lkUqKuwqjkN9)
{% endstep %}

{% step %}

#### Strikethrough

Use double tildes (\~\~) to strike through text. Example:

\~\~text\~\~

![](/files/8m1tuptKqVZR2rYfU3lO)
{% endstep %}
{% endstepper %}

***

### How to create titles and subtitles?

You can use six levels by adding # at the beginning of a line. The more hashtags you use, the lower the heading level.

\# Heading 1

\## Heading 2

\### Heading 3

\#### Heading 4

\##### Heading 5

\###### Heading 6

![](/files/kU02e2GYCbaIbbGxrO5e)

***

### How to create lists?

{% stepper %}
{% step %}

#### Bullet lists (unordered)

Use \*, - or + followed by a space. Example:

\- Item 1

\+ Item 2

\* Item 3

![](/files/ciSVORcBDzhz6D3bqMio)
{% endstep %}

{% step %}

#### Task lists (checklists)

Use - \[ ] or - \[x]. Example:

\- \[ ] Pending task

\- \[x] Completed task

![](/files/z732p5MtJ1AYFS0F8QOk)
{% endstep %}

{% step %}

#### Nested lists

Use four spaces or a tab to nest lists. Examples:

\* First level

\* Second level

\* Third level

![](/files/bLIHj2g94h1dTg3lDXc1)
{% endstep %}
{% endstepper %}

### How to add quotes?

Use > at the beginning of the line. Example:

\> Simple quote

\>> Quote inside another

![](/files/y4MIRAlV9FyhxCMmz5hp)

### How to insert a horizontal line?

Add three or more asterisks (\*), hyphens (-), or underscores (\_) on a line, optionally separated by spaces. Example:

\*\*\*

\---

\----

![](/files/c3Awz8NlP1mcHoLSblDH)

### How to create clickable links?

Create a link by placing the link text in brackets, followed immediately by the URL in parentheses. Example:

\[text to link]\(<http://example.com>)

![](/files/4rgQetFTTJ5NKJfscAZH)

### How to create tables?

You can create tables using either the Text or Table widget. To create one through the Text widget, use vertical bars | to structure the cells and hyphens to separate the header. Example:

\| Header | Column 1 | Column 2 | Column 3 |

\|:------ |:-------- |:--------:| --------:|

\| 1. Row | is | is | is |

\| 2. Row | left | nicely | right |

\| 3. Row | aligned | centered | aligned |

![](/files/vPORspaxdF0raDU6bRKv)

To create one using the Table widget, simply gp back to the General tab, select “Table” and go the Setup tab to customize it.

![](/files/znxF0ij5qT6IBO8KqP9t)

<figure><img src="/files/QdFMRailD7GmpgGXYmvv" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Best Practices

* Use short, clear titles
* Separate long sections with horizontal lines
* Prefer lists for operational information
* Avoid excessive formatting — keep it simple
* Use tables to define rules, criteria, and values
* Use images only when essential
  {% endhint %}

### Read also

* [Telling stories with Custom Dashboards](broken://pages/873aa0a32e7f3fef9fb27647594dd2be106e6f65)


# Table Widget

## Table Widget

### What is the Table Widget?

The Table widget is a widget type available in Birdie Dashboards. Instead of visualizing data as a chart, it presents metric values in a structured grid where rows are defined by one breakdown dimension and columns by another. This makes it easy to scan and compare exact figures across two dimensions simultaneously, such as seeing how each feedback area performed week by week over the last month.

The Table widget is the right choice when precision matters more than visual pattern recognition. Where a chart communicates trends and relative differences at a glance, a table communicates exact values across a full matrix of categories and time periods.

#### How to extract the most value from the Table Widget?

Use the Table widget when you need to present granular data that viewers may want to read, reference, or export. It works best when you want to answer questions such as:

* How many feedback responses did each area receive in each of the last four weeks?
* How does feedback volume break down across all areas and time periods in a single view?
* Which specific combination of area and date had the highest or lowest count?

The **Transpose axis** option adds further flexibility by swapping rows and columns so that dates become rows and categories become columns, which can improve readability depending on how many items each dimension contains.

<img src="/files/jBWRFfrIpWAnOkJsndJu" alt="Table widget preview" width="563">

### Setting up a Table Widget

{% stepper %}
{% step %}

### Select the widget type

When adding a new widget to your dashboard, select **Table** from the widget type options at the top of the configuration panel.
{% endstep %}

{% step %}

### Add a title and subtitle

In the **Title** field, enter a clear name for your widget. You can also add an optional **Subtitle** to provide additional context for other users viewing the dashboard.
{% endstep %}

{% step %}

### Configure the data source

Navigate to the **Setup** tab. In the **Data** section, select the **Metric** you want to populate the table with. For example, choose **Overall** to display aggregate feedback counts across all sources.
{% endstep %}

{% step %}

### Configure the rows

The **Rows** section controls what appears in each row of the table.

* **Primary breakdown**: Select the dimension that will define each row. For example, selecting **Areas** will render one row per feedback area.
* **Selection**: Choose which specific items within the primary breakdown to include. By default, all available items are selected.
* **Limit to**: Toggle this on and set a number to cap how many rows are shown in the table. When disabled, all items in the selection are displayed.
  {% endstep %}

{% step %}

### Configure the columns

The **Columns** section controls what appears in each column of the table.

* **Secondary breakdown**: Select the dimension that will define each column. For example, selecting **Date** will render one column per time period, showing metric values for each row at each point in time.
* **Sort by**: Optionally, define how columns are ordered.

{% hint style="info" %}
When **Date** is selected as the secondary breakdown, the number of columns generated depends on the date range and time aggregation set in the **Filter** tab. A 30-day range with weekly aggregation will produce approximately four date columns.
{% endhint %}
{% endstep %}

{% step %}

### Configure display settings

Still in the **Setup** tab, the **Display settings** section contains one option:

* **Transpose axis**: Enable this to swap the rows and columns of the table. When active, the secondary breakdown dimension (such as Date) becomes the rows, and the primary breakdown dimension (such as Areas) becomes the columns. Use this when one dimension has significantly more items than the other, to produce a more readable layout.
  {% endstep %}

{% step %}

### Set filters

Navigate to the **Filter** tab to control the time range and granularity of the data shown.

* **Date range**: Select the period you want the table to cover. The default is **Last 30 days**.
* **Time aggregation**: Choose how date-based columns are grouped. The default is **Week**, which generates one column per week within the selected date range.
* **Advanced filters**: Use the **Add filter** option to refine the data further, for example by a specific tag, sentiment, or source. You can also enable **Ignore global filter** if you want this widget to display independently of any dashboard-level filters.
  {% endstep %}

{% step %}

### Save the widget

Once you are satisfied with the configuration, click **Save changes** to add the Table widget to your dashboard.

{% hint style="info" %}
Remember to save the Dashboard itself after setting up the widget, otherwise your changes will not be persisted.
{% endhint %}
{% endstep %}
{% endstepper %}


# Custom Table Widget

### What is the Custom Table Widget?

The Custom Table widget is a widget type available in Birdie Dashboards. It displays data in a structured grid where each column is configured individually, giving you full control over what information appears in the table and how it is labeled. Unlike the standard Table widget, where columns are generated automatically from a secondary breakdown dimension, the Custom Table lets you define each column from scratch by choosing its dimension, metric, and title independently.

This makes the Custom Table the most flexible data widget in Birdie, and the right choice when you need to combine different metrics or dimensions side by side in a single view.

#### How to extract the most value from the Custom Table Widget?

Use the Custom Table widget when the data you want to display cannot be expressed through a single metric and a single breakdown. It is most useful when you want to answer questions such as:

* How does the overall feedback count for each area compare to the number of complaints and the CSAT score, all in one table?
* Can I see NPS, ticket volume, and overall count side by side for every area I track?
* How do different metrics from different sources look together for a specific set of segments?

Because each column is configured separately, you can mix and match dimensions and metrics freely. Each column can pull from a different data source, use a different metric category, and carry a custom label to make the table immediately readable for any audience.

<img src="/files/58M5bt8E7UZVnWIhYBO0" alt="Custom Table widget preview" width="563">

### Setting up a Custom Table Widget

{% stepper %}
{% step %}

### Select the widget type

When adding a new widget to your dashboard, select **Custom table** from the widget type options at the top of the configuration panel.

Once selected, the preview area will display a prompt to add columns before any data can be shown.
{% endstep %}

{% step %}

### Add a title and subtitle

In the **Title** field, enter a clear name for your widget. You can also add an optional **Subtitle** to provide additional context for other users viewing the dashboard.
{% endstep %}

{% step %}

### Configure the rows

Navigate to the **Setup** tab. The **Rows** section controls what appears in each row of the table.

* **Primary breakdown**: Select the dimension that will define each row. For example, selecting **Areas** will render one row per feedback area.
* **Selection**: Choose which specific items within the primary breakdown to include. By default, all available items are selected.
* **Limit breakdown results to**: Toggle this on and set a number to cap how many rows are displayed. When disabled, all selected items are shown.
  {% endstep %}

{% step %}

### Add and configure columns

The **Columns** section is where the Custom Table differs from the standard Table widget. Rather than generating columns from a single secondary breakdown, you add each column individually and configure it separately.

Click **Add column** to add a new column to the table. Each column has three fields:

* **Title**: Enter a label for the column heading. This is the name that will appear at the top of the column in the rendered table.
* **Column**: Select the dimension this column will pull data from. Available options include Org, Area, Opportunity, Segment, Reasons, Criteria, Collection, Sentiment, Intention, Source, and Feedback details. Each option may have sub-options to further specify the data source.
* **Metric**: Select the metric to display in this column. Available options include Overall, Complaints, CSAT, NPS, Reviews, Social media posts, and Tickets. Each metric may have sub-options to specify the exact calculation.

Repeat this process to add as many columns as needed. You can reorder columns by dragging the handle on the left side of each column row.

{% hint style="info" %}
Giving each column a clear, concise title is especially important in the Custom Table, as column labels are the only way viewers can understand what metric and dimension each column represents.
{% endhint %}
{% endstep %}

{% step %}

### Configure sorting

The **Sorting** section controls how rows are ordered in the table.

* **Column**: Select which column the table should be sorted by.
* **Sort by**: Choose the sort direction. The default is **Ascending**.
  {% endstep %}

{% step %}

### Set filters

Navigate to the **Filter** tab to control the time range of the data shown.

* **Date range**: Select the period you want the table to cover. The default is **Last 30 days**.
* **Advanced filters**: Use the **Add filter** option to refine the data further, for example by a specific tag, sentiment, or source. You can also enable **Ignore global filter** if you want this widget to display independently of any dashboard-level filters.

<img src="/files/yPeaN3mKNFTpAyEoKDJf" alt="Filter tab showing date range and advanced filter settings" width="375">

{% hint style="info" %}
Unlike the standard Table widget, the Custom Table does not have a time aggregation setting, as columns are defined individually rather than generated from a date-based secondary breakdown.
{% endhint %}
{% endstep %}

{% step %}

### Save the widget

Once you are satisfied with the configuration, click **Save changes** to add the Custom Table widget to your dashboard.

{% hint style="info" %}
Remember to save the Dashboard itself after setting up the widget, otherwise your changes will not be persisted.
{% endhint %}
{% endstep %}
{% endstepper %}


# AI Prompt Widget

## What is the AI Prompt Widget?

The AI Prompt Widget is a special type of widget that uses artificial intelligence to analyze data and generate narrative insights within your Custom Dashboards. It transforms numerical information into clear, objective interpretations, making it easier to understand trends and patterns. With the AI Prompt Widget, you can ask specific questions about your data and receive intelligent answers based on the context you define.

## Features

* **Intelligent analysis:** The AI interprets the selected data and generates relevant insights based on the context applied.
* **Personalized responses:** Answers specific questions tailored to your filters and data scope.
* **Automatic updates:** The answer refreshes whenever filters or dashboard data change.
* **Context comparison:** Allows you to compare up to five different scenarios side by side.
* **Integration with other widgets:** Can reference other widgets in the same dashboard as context sources, combining quantitative visuals with narrative analysis.

## Context Types

When configuring the AI Prompt Widget, each context can be one of two types:

### Filter

Uses a time period and optional advanced filters to define the data scope for that context. You can configure:

* **Period** — defaults to Last 30 days, but can be changed.
* **Advanced filters** — refine the data by specific properties (e.g. where Search contains a value). Toggle **Ignore global filter** if this context should be independent from the dashboard-level filter.

### Widget

References another widget already present in the dashboard as the data source for that context. This is useful when you want the AI to interpret or comment on data that is already visualized elsewhere on the same dashboard.

{% hint style="info" %}
You can select widgets from any tab within the same dashboard. Widgets from other dashboards are not available as context sources.
{% endhint %}

## Comparison Functionality

The AI Prompt Widget supports up to five contexts (Context 1 through Context 5). This allows rich comparisons between periods, segments, or existing visualizations. For example:

* **Context 1 (Filter):** "Current period" — Last 3 months
* **Context 2 (Filter):** "Previous period" — Previous 3 months
* **Context 3 (Widget):** "Satisfaction trend chart" — references a line chart widget on the Overview tab

The AI will refer to each context by the name you give it and weave them together in its response.

## How to Use the AI Prompt Widget

{% stepper %}
{% step %}

#### Access your Custom Dashboard

Open an existing dashboard or create a new one in Birdie.
{% endstep %}

{% step %}

#### Add a new widget

Select the **Prompt** widget type from the widget picker.
{% endstep %}

{% step %}

#### Configure the prompt

Navigate to the **Setup** tab and write a clear, objective question that guides the AI in its analysis.
{% endstep %}

{% step %}

#### Add context

Navigate to the **Context** tab. You can configure up to five contexts.

For each context:

1. Enter a **Context name** — this is how the AI will refer to it in its response.
2. Select a **Context type**:
   * Choose **Filter** to define a time period and optional advanced filters.
   * Choose **Widget** to select an existing widget from the current dashboard (across any tab).

{% hint style="info" %}
When using the Widget context type, the dropdown lists all widgets available within the current dashboard, including those on other tabs. Widgets from other dashboards cannot be selected.
{% endhint %}
{% endstep %}

{% step %}

#### Save the widget

Click **Save changes**. The AI will generate its response immediately and update automatically whenever filters or referenced widget data change.
{% endstep %}
{% endstepper %}

## Example

**Scenario:** Understand what is driving dissatisfaction in credit card feedback, in the context of the overall satisfaction trend already visible on the dashboard.

**Contexts configured:**

* **Context 1 (Filter)** — "Last quarter": Period set to Last 3 months, filtered by Product: Credit Cards.
* **Context 2 (Widget)** — "Satisfaction trend": references the CSAT line chart widget on the Overview tab.

**Prompt:** "Based on the satisfaction trend in Context 2, what are the main problems reported in Context 1 and how do they relate to the drop in satisfaction?"

**Expected result:** A narrative analysis connecting the quantitative trend visible in the chart widget to the qualitative feedback themes, highlighting the most frequent problems and their impact on customer experience.

## Best Practices

* **Be specific in the prompt:** Direct, focused questions generate more actionable responses than broad ones.
* **Name contexts clearly:** The AI uses the context name to structure its response — "Last quarter" is clearer than "Context 1".
* **Combine Filter and Widget contexts:** Use Filter contexts for time-scoped data slices and Widget contexts to anchor the AI's analysis to what is already visible on the dashboard, creating a cohesive narrative.
* **Mind filter scope:** When using the Filter type, the AI only analyzes data within the filtered sample — avoid over-filtering to the point of losing meaningful signal.
* **Configure once, let it update:** Prompts are persistent and dynamic. Set them up once and only revisit when your analytical question changes.

## Common Questions

<details>

<summary>Does the AI Prompt Widget work with any type of filter?</summary>

Yes, when using the Filter context type, it analyzes data based on the filters you apply.

</details>

<details>

<summary>Can I reference a widget from another dashboard tab?</summary>

Yes, when using the Widget context type, the selector shows all widgets in the current dashboard, regardless of which tab they are on.

</details>

<details>

<summary>Can I reference a widget from a different dashboard?</summary>

No, only widgets within the same dashboard are available as context sources.

</details>

<details>

<summary>Can I have multiple AI Prompt Widgets in the same dashboard?</summary>

Yes, you can add as many as needed, each with its own prompt and context configuration.

</details>


# Waterfall Chart (Beta)

The Waterfall widget lets you visualize cumulative changes across categories, making it easy to understand how individual areas contribute to an overall metric over a given period.

## Overview

The Waterfall chart breaks down a total metric into its component parts, showing positive and negative contributions from each category on the horizontal axis. It is particularly useful for tracking performance across regions, teams, or segments — for example, how each area contributed to an overall satisfaction score over the last 30 days.

## Configuring the Waterfall Widget

You configure the Waterfall widget through a three-tab panel: **General**, **Setup**, and **Filter**. Each tab controls a distinct aspect of the widget's behavior and display.

{% stepper %}
{% step %}

#### Open the widget editor

From your dashboard, add a new widget or click the edit icon on an existing one. The **Edit widget** panel opens on the right side of the screen.
{% endstep %}

{% step %}

#### Select the Waterfall chart type

In the **General** tab, locate the chart type selector. Click **Waterfall** to apply this visualization to the widget.
{% endstep %}

{% step %}

#### Name the widget

Still in the **General** tab, enter a descriptive name in the **Title** field. Optionally, add a **Subtitle** to provide additional context — this appears as smaller text beneath the title on the dashboard.

{% hint style="info" %}
The subtitle is hidden by default on the dashboard view. Use it to explain the metric being tracked or the scope of the data, so other users understand the widget's purpose at a glance.
{% endhint %}
{% endstep %}

{% step %}

#### Configure the axes

Switch to the **Setup** tab to define what data the chart displays.

**Vertical axis**

Under **Vertical axis**, use the **Metric** dropdown to select the measure you want to visualize (for example, *Overall*). Optionally, enable **Set vertical axis range** and enter custom **From** and **to** values to fix the Y-axis scale.

**Horizontal axis**

Under **Horizontal axis**, configure the following fields:

| Field             | Description                                                                                                            |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Primary breakdown | The dimension used to segment the data on the X-axis (for example, *Areas*)                                            |
| Selection         | The specific values from the breakdown dimension to include. Click the dropdown to select or deselect individual items |
| Limit             | The maximum number of bars to display on the chart                                                                     |
| Start period      | The time range for the starting reference value (for example, *Last 30 days*)                                          |
| End period        | The time range for the ending reference value (for example, *Last 30 days*)                                            |

{% hint style="info" %}
The **Start period** and **End period** fields define the comparison window for calculating the waterfall values. When both are set to the same period, the chart shows contributions within that single range.
{% endhint %}
{% endstep %}

{% step %}

#### Adjust display settings

Still in the **Setup** tab, scroll to the **Display settings** section and toggle the options that apply:

| Setting                     | Description                                                                           |
| --------------------------- | ------------------------------------------------------------------------------------- |
| Invert colors               | Reverses the default color scheme for positive and negative bars                      |
| Always show values on chart | Displays numeric labels directly on each bar, regardless of bar size                  |
| Show Mix Effect             | Adds a bar representing the blended or combined effect across the breakdown dimension |
| {% endstep %}               |                                                                                       |

{% step %}

#### Apply filters

Switch to the **Filter** tab to control which data the widget includes.

* Use the **date range dropdown** at the top to set the default time period for the widget. The default is *Last 30 days*.
* Under **Advanced filters**, click **+ Add filter** to add one or more property-based conditions that refine the data set.
* Enable **Ignore global filter** if you want this widget to display data independently, regardless of any filters applied at the dashboard level.

{% hint style="warning" %}
Enabling **Ignore global filter** means this widget will not respond to date range or segment filters applied to the rest of the dashboard. Use this setting intentionally when you need a fixed reference point that should always remain constant.
{% endhint %}
{% endstep %}

{% step %}

#### Preview and save

Click **Update preview** to verify the chart renders correctly with your configuration. Once satisfied, click **Save changes** to publish the widget to the dashboard.
{% endstep %}
{% endstepper %}

## Field Reference

### General Tab

| Field      | Description                                                           |
| ---------- | --------------------------------------------------------------------- |
| Chart type | The visualization type. Select **Waterfall** to use this chart format |
| Title      | The widget's display name, shown prominently on the dashboard         |
| Subtitle   | Optional description text shown beneath the title                     |

### Setup Tab — Vertical Axis

| Field                   | Description                                            |
| ----------------------- | ------------------------------------------------------ |
| Metric                  | The measure to plot on the Y-axis                      |
| Set vertical axis range | Fixes the Y-axis to a custom minimum and maximum value |

### Setup Tab — Horizontal Axis

| Field             | Description                                           |
| ----------------- | ----------------------------------------------------- |
| Primary breakdown | The dimension used to split data into individual bars |
| Selection         | The subset of dimension values to display             |
| Limit             | Maximum number of bars shown                          |
| Start period      | Time window for the base value                        |
| End period        | Time window for the final value                       |

### Setup Tab — Display Settings

| Setting                     | Default | Description                             |
| --------------------------- | ------- | --------------------------------------- |
| Invert colors               | Off     | Swaps positive and negative bar colors  |
| Always show values on chart | On      | Displays data labels on every bar       |
| Show Mix Effect             | On      | Adds a combined-effect bar to the chart |

### Filter Tab

| Field                | Description                                                 |
| -------------------- | ----------------------------------------------------------- |
| Date range           | Default time period applied to the widget                   |
| Advanced filters     | Additional property filters to narrow the data              |
| Ignore global filter | Prevents dashboard-level filters from affecting this widget |

## Troubleshooting & FAQs

<details>

<summary>The preview is blank after configuring the axes. What should I check?</summary>

Verify that the **Selection** field under Horizontal axis has at least one value selected, and that the chosen **Start period** and **End period** contain data for the selected metric.

</details>

<details>

<summary>Why are some bars missing from the chart?</summary>

The **Limit** field caps the number of bars displayed. Increase this value in the Setup tab to show more breakdown categories.

</details>

<details>

<summary>The chart is showing unexpected values when the dashboard filter changes.</summary>

If the widget should remain unaffected by dashboard-level filtering, enable **Ignore global filter** in the Filter tab.

</details>

<details>

<summary>What does the Mix Effect bar represent?</summary>

The Mix Effect bar captures the portion of the total change that results from shifts in the composition of the breakdown dimension rather than performance changes within individual categories. Disable **Show Mix Effect** in Display settings if you do not need this breakdown.

</details>


# Product Overview

Birdie's Frontline Intelligence module transforms the traditional approach to quality management by shifting its focus from simple execution to strategic, scalable quality management. Our AI-enabled Customer Experience (CX) platform empowers Operations teams, drives measurable organizational impact, and cultivates a genuinely customer-centric culture.

## The Four-Step Quality Monitoring Framework

Frontline Intelligence is built on a comprehensive, four-step framework designed to elevate your quality monitoring process:

{% stepper %}
{% step %}

### Define

Establish objective, consistent criteria (rubrics) that align with key customer behaviors. Use examples of expected behavior and processes to train the AI for large-scale monitoring. Guidelines for manual review are also defined for criteria requiring human judgment.
{% endstep %}

{% step %}

### Understand

Connect quality performance directly to business outcomes. Monitor the impact of evaluated behaviors on metrics such as NPS, CSAT, and resolution rates. Supervisors gain access to consolidated overviews of team and individual agent performance, with filtering capabilities across critical dimensions (e.g., BPO, client tier, resolution, human vs. LLM).
{% endstep %}

{% step %}

### Prioritize

Leverage data to identify the highest-opportunity agents and behaviors. Focus efforts where the operational impact and urgency are greatest. Define and track strategic, individual, or group initiatives to ensure resources are targeted for maximum results.
{% endstep %}

{% step %}

### Develop

Close the performance loop with meaningful action. Implement coaching cycles and action plans based on monitoring data. AI insights enable supervisors to provide clear, actionable feedback, explaining issues and highlighting concrete steps for continuous agent improvement.
{% endstep %}
{% endstepper %}

## Explore the avaliable features

<table data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><h4><i class="fa-list-check">:list-check:</i></h4></td><td><strong>Criteria</strong></td><td>Define FI rules</td><td><a href="/pages/Umg5JxH3daWNSQnH8UhJ">/pages/Umg5JxH3daWNSQnH8UhJ</a></td></tr><tr><td><h4><i class="fa-phone-arrow-down-left">:phone-arrow-down-left:</i></h4></td><td><strong>Reason</strong></td><td>Contact reason</td><td><a href="/pages/5VHc1LdZYJpbK56C3jUY">/pages/5VHc1LdZYJpbK56C3jUY</a></td></tr><tr><td><h4><i class="fa-headset">:headset:</i></h4></td><td><strong>Agent</strong></td><td>Agent performance</td><td><a href="/pages/93pEJ5ryeMEWas8l07w8">/pages/93pEJ5ryeMEWas8l07w8</a></td></tr></tbody></table>


# Criteria

## Overview

Criteria are the FI rules Birdie uses to evaluate observable agent behavior in customer interactions.

They turn service quality into something consistent, measurable, and scalable.

A strong criterion describes one observable behavior that can be verified from the interaction itself.\ <br>

<figure><img src="/files/0FWLp8qp0ydBIH039cuu" alt="" width="563"><figcaption></figcaption></figure>

## Why criteria matter

Criteria help teams:

* evaluate quality with the same standard across agents
* identify specific service failures
* understand which behaviors affect quality scores most
* guide coaching, calibration, and process improvement

## How criteria work in FI

Criteria can be:

* **General** — applied across interactions
* **Specific** — linked to a specific [Reason](/frontline-intelligence/reasons)

Criteria can also be evaluated in two ways:

* **AI** — Birdie evaluates the criterion automatically from the transcript
* **Manual** — a person evaluates the criterion in [Manual Evaluation](/frontline-intelligence/manual-evaluation)

## How criteria affect scoring

* **Weight** contributes to the Quality Score at Workspace, Area, Reason, and Agent levels
* **Critical** criteria do not use weight
* Failing one **Critical** criterion fails the interaction for that Reason
* **Manual** criteria still contribute to reporting once the evaluation is submitted

## What makes a good criterion

Good criteria are:

* objective
* specific
* tied to observable agent behavior
* independent from customer opinion or assumptions

{% hint style="info" %}
Manage the full criteria catalog in [Taxonomy → Criteria](/admin-and-settings/taxonomy/criteria).
{% endhint %}

## Criteria in analysis

In analysis, criteria help you understand which behaviors pass, fail, or require manual review across teams, reasons, and agents.

The **Criteria** analysis page follows the same layout described in [Analysis Page Structure](/getting-started/platform-overview).

## Best practices

* Write one observable rule per criterion
* Use manual criteria when transcript-only evaluation is not reliable
* Review critical and weighted criteria carefully, because they affect scoring

## Related articles

* [Taxonomy → Criteria](/admin-and-settings/taxonomy/criteria)
* [Manual Evaluation](/frontline-intelligence/manual-evaluation)
* [Reasons](/frontline-intelligence/reasons)


# Manual Evaluation

### Overview

Manual Evaluation allows teams to perform **human-led quality assessments of customer interactions directly inside Birdie**, for criteria that are too complex, contextual, or process-specific to be reliably evaluated by AI.

The feature centralizes all manual evaluation workflows, ensuring **governance, traceability, and consistency** while integrating human judgment seamlessly with AI-driven metrics. All manual evaluations **start at the Area level**, providing a standardized and scalable entry point that represents the full operational scope.

Manual Evaluation helps Birdie remain the **single source of truth** for quality monitoring by unifying configuration, execution, revision, and analytics in one place.

***

### Key Concepts

Before using Manual Evaluation, it is helpful to understand how it is structured:

| Concept              | Description                                                                                                                        |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **Manual Criterion** | An evaluation rule flagged as "Manual" that requires human review instead of AI evaluation                                         |
| **Evaluation**       | A completed human assessment of a single interaction, answering all criteria linked to a Reason                                    |
| **Version**          | Each evaluation has versioned records — a **Review** (initial) and optionally a **Revision** (second pass)                         |
| **Revision**         | A second round of evaluation performed on the same interaction, allowing a different evaluator to validate the original assessment |
| **Quality Score**    | The percentage of criteria answered **Yes** in an evaluation, weighted by criterion importance                                     |

***

### How manual criteria are configured

Birdie only includes criteria in a manual evaluation form when they meet all of these conditions:

* The criterion is marked **Manual**
* The criterion is linked to a **Reason**
* That Reason is available in the selected **Area**

Manage this setup in [Taxonomy → Criteria](/admin-and-settings/taxonomy/criteria). For the FI model behind it, see [Criteria](/frontline-intelligence/criteria).

***

### How Feedback Is Selected

When starting a new manual evaluation, Birdie automatically selects an interaction for you. This is done through a **weighted random selection** algorithm:

1. Birdie counts how many interactions are available for each Reason, within a configurable lookback period
2. Reasons with more available interactions have a higher probability of being selected, ensuring representative distribution
3. Birdie then picks one interaction that has not yet been evaluated for the selected Reason
4. The interaction is **temporarily locked** to prevent two evaluators from assessing the same interaction simultaneously

This ensures evaluations are spread proportionally across all Reasons and that no interaction is double-evaluated.

***

### Performing a Manual Evaluation

#### Prerequisites

* Manual criteria must already be configured by an Admin for the Reasons in the Area
* You need at least **Viewer** permissions

#### Step-by-Step

{% stepper %}
{% step %}

#### Navigate to an Area

Go to the desired **Area** in Birdie and click **Start Manual Evaluation**.
{% endstep %}

{% step %}

#### Select Reasons

A dialog appears showing all Reasons that have manual criteria configured. Select one or more Reasons to include and confirm to start.

> Only Reasons with at least one manual criterion are shown.
> {% endstep %}

{% step %}

#### Review the Interaction

Birdie automatically opens an interaction for evaluation. The evaluation screen shows:

* **Interaction details** — the full conversation transcript and available context fields (e.g. agent name, company, ticket ID)
* **Criteria form** — each manual criterion linked to the selected Reason, displayed with its name and description
  {% endstep %}

{% step %}

#### Answer Each Criterion

For each criterion, select one of three answers:

| Answer          | Meaning                                              |
| --------------- | ---------------------------------------------------- |
| **Yes**         | The agent fulfilled the criterion                    |
| **No**          | The agent failed to fulfill the criterion            |
| **Not Applied** | The criterion was not applicable to this interaction |

You can optionally add:

* An **observation** per criterion (a free-text note explaining your answer)
* A **checklist** response (if the criterion has a manual checklist configured) — available only when the answer is **Yes**

> Selecting **No** or **Not Applied** automatically clears any observations or checklist items previously entered for that criterion.
> {% endstep %}

{% step %}

#### Submit the Evaluation

When all criteria are answered, click **Submit**. A confirmation dialog appears where you can add an **overall comment** before finalizing.

After submission, the evaluation is automatically linked to the Area, Reason, agent, and interaction, and becomes available in dashboards and reports.
{% endstep %}
{% endstepper %}

***

### Revising an Evaluation

A **Revision** allows a second evaluator (or the same evaluator) to perform a new pass on an already-submitted evaluation. This is useful for calibration, quality control, or supervisor review.

#### How to Create a Revision

1. Navigate to **Monitor Evaluations** within the Area
2. Find the evaluation you want to revise in the table
3. Click the **Edit** action
4. A new version of the evaluation opens with the original answers pre-filled
5. Adjust answers as needed and submit

#### Revision Rules

* Each evaluation supports **one revision only** — once a revision exists, the evaluation is locked from further edits
* The revision always records **which user** created it and when
* Both the original review and the revision are stored and visible in the evaluation history

***

### Monitoring Evaluations

Once evaluations are submitted, you can view, filter, and manage them from the **Manual Evaluation** page, accessible from left side menu

The Monitor page gives you a full picture of evaluation activity: summary analytics at the top, and a filterable table of every completed evaluation below. You can also create revisions or delete evaluations directly from the table.

For full details on everything the Monitor page offers, see Monitor Evaluations.

***

### Permissions

| Role                   | Capabilities                                            |
| ---------------------- | ------------------------------------------------------- |
| **Viewer**             | Perform new evaluations and create revisions            |
| **Supervisor**         | View evaluation results, analytics, and monitor page    |
| **Admin / Specialist** | Create and manage criteria, modify Reason configuration |

***

### Troubleshooting & FAQs

**Can I choose which interaction to evaluate?**

No. Birdie automatically selects interactions using a weighted random algorithm. This ensures fair distribution across Reasons and prevents duplicate evaluations.

**Can I choose a specific evaluation form?**

No. The form is dynamically generated based on the manual criteria associated with the selected Reason. This ensures governance and consistency across evaluators.

**Why was a different Reason selected than expected?**

Birdie applies weighted sampling to ensure evaluations are proportionally distributed across Reasons. Reasons with more available interactions are more likely to be selected.

**What happens if I leave an evaluation unfinished?**

The interaction remains locked temporarily to prevent another evaluator from picking it up. If you abandon the session, the lock is released and the interaction becomes available again.

**Can an evaluation be revised more than once?**

No. Each evaluation supports exactly one revision. Once a revision exists, the evaluation cannot be edited further.

**Do manual evaluations appear in the same dashboards as AI evaluations?**

Yes. Manual evaluation results are integrated directly into Birdie's analytics dashboards and can be filtered by evaluation source (Manual or AI).

**Who should configure manual criteria?**

Only authorized **Admins** can create or modify criteria and their configuration. All configuration changes apply only to future evaluations and do not affect historical data.

***

### See Also

* Monitor Evaluations
* Criteria
* Reasons


# Monitor Evaluations

## Monitor Evaluations

### Overview

The **Monitor Evaluations** page is the central hub for reviewing, filtering, and managing all manual evaluations completed within an Area. It combines summary analytics with a full evaluation table, giving supervisors and quality specialists a clear view of evaluation activity across the team.

You can access it directly from the Area by navigating to the Monitor Evaluations section.\ <br>

***

### Page Layout

The page is organized into two main areas:

* **Analytics** — three summary metrics displayed at the top, always reflecting the current filter selection\ <br>

  <figure><img src="/files/KdPOPugT5ZKqH05b4ShU" alt="" width="563"><figcaption></figcaption></figure>
* **Evaluations** — a filterable list of every completed evaluation in the Area, with actions to edit or delete each record<br>

  <figure><img src="/files/RBBmWyP2meSB1tD6Lac8" alt="" width="563"><figcaption></figcaption></figure>

***

### Filters

Use the filter bar above the table to narrow down which evaluations are shown. All filters apply to both the analytics cards and the table simultaneously. Filter state is preserved in the page URL, so you can share a filtered view with a colleague.

#### Reason

Filter by one or more **Reasons** linked to the Area. Selecting specific Reasons limits the view to evaluations performed under those Reasons only. When no Reasons are selected, evaluations across all Reasons in the Area are shown.

#### Evaluated By

Filter by one or more **evaluators** who performed the evaluations. The list shows all users in the organization, searchable by name or email address. When no evaluators are selected, evaluations from all users are shown.

#### Date Range

Filter evaluations by the date they were opened. Select a start date and an end date using the calendar picker. When no date range is set, all evaluations regardless of date are shown.

#### Clear Filters

Click **Clear Filters** to reset all active filters at once and return to the full unfiltered view.

***

### Analytics Cards

Three metrics are displayed at the top of the page and update automatically whenever you change a filter.

| Metric                    | Description                                                                                                                                            |
| ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Completed Evaluations** | Total number of evaluations that match the current filter selection. Also shows how many were completed today.                                         |
| **Avg Time**              | Average time taken to complete an evaluation, from when the interaction was opened to when it was submitted. Displayed in hours, minutes, and seconds. |
| **Quality Score**         | The percentage of criteria answered **Yes** across all evaluations in the current selection. Displayed as a whole number from 0 to 100.                |

***

### Evaluations Table

The table lists every completed evaluation matching the current filters. Each row represents one evaluation.

#### Columns

| Column                    | Content                                                                                                                    |
| ------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| **Completed Evaluations** | The ID of the interaction that was evaluated. Shows the ingested ID when available, or the internal feedback ID otherwise. |
| **Reason**                | The Reason the evaluation was performed under.                                                                             |
| **Last Agent ID**         | The ID of the last agent associated with the interaction at the time of evaluation. Shows a dash if no agent is linked.    |
| **Evaluated By**          | The name of the user who performed the evaluation. Displays **You** if the row belongs to the currently logged-in user.    |
| **Actions**               | Edit and Delete buttons (see below).                                                                                       |

#### Row Actions

**Edit** — opens the evaluation in review mode, where a new **Revision** can be created. Available to all users. If a revision already exists for the evaluation, the evaluation is locked and cannot be edited further.

**Delete** — permanently removes the evaluation after a confirmation dialog. Only available to users with the appropriate Area permissions. Deletion also removes all quality labels that were synced to the interaction when the evaluation was submitted.

***

### Deleting an Evaluation

When you click the **Delete** icon on a row, a confirmation dialog appears asking you to confirm the action. Once confirmed:

* The evaluation record is removed from the table
* All criterion labels that were applied to the interaction as a result of this evaluation are also removed
* The action cannot be undone

Deletion is only available to users who have the required permissions for the Area.

***

### Permissions

| Role                       | Capabilities                                                       |
| -------------------------- | ------------------------------------------------------------------ |
| **All users**              | View the Monitor Evaluations page, apply filters, browse the table |
| **Editor**                 | Edit an evaluation (create a Revision) — if no revision exists yet |
| **Area managers / Admins** | Delete evaluations                                                 |

***

### Troubleshooting & FAQs

**Why can't I edit an evaluation?**

If the Edit button opens the evaluation but the form is in read-only mode, it means a **Revision** already exists for that evaluation. Each evaluation supports exactly one revision, after which the record is locked.

**Why is the Delete button not visible on some rows?**

The Delete button is only shown to users with the appropriate Workspace permissions. If you don't see it, contact your Admin to review your access level.

**The table is not showing evaluations I know exist — why?**

Check your active filters. If a date range, Reason, or evaluator filter is set, evaluations outside those parameters are hidden. Click **Clear Filters** to reset to the full view.

**Do the analytics cards update when I change a filter?**

Yes. The **Completed Evaluations**, **Avg Time**, and **Quality Score** cards always reflect the current filter selection, so they update immediately whenever you change a filter.

***

### See Also

* Manual Evaluation
* Criteria
* Reasons


# Reasons

## Overview

Reasons are the FI categories that represent why a customer contacted your team.

They give quality analysis the operational context it needs. A billing conversation should not be evaluated like a cancellation request or a fraud report.

Reasons are part of FI. They are different from Opportunities, which focus on Customer Intelligence.\ <br>

<figure><img src="/files/jcoIDd6KGkmgLysakrmm" alt="" width="563"><figcaption></figcaption></figure>

## Why reasons matter

Reasons help teams:

* evaluate quality within the right service flow
* apply specific criteria only where they make sense
* compare performance across different types of contact
* identify operational problems in a precise way

## How reasons work in FI

A Reason usually sits inside an Area and defines a narrower service context.

Specific criteria are attached to Reasons, so Birdie can evaluate interactions with the correct rules.

This makes analysis more fair and more useful. It avoids applying the same FI expectation to conversations with different goals, procedures, or compliance requirements.

### Common Use Cases

* By service category. Examples:
  * Reason "Billing" (category = billing);
  * Reason "Technical Support" (category = technical);
  * Reason "Commercial" (category = sales).
* By service channel. Examples:
  * Reason "Online Chat" (channel = chat);
  * Reason "Telephone Service" (channel = phone).
* By product/service. Examples:
  * Reason "Credit Card" (product = card);
  * Reason "Checking Account" (product = account).

## Reasons in analysis

In analysis, Reasons help you understand quality performance for a specific contact motive.

Use them to answer questions like:

* Which service flows generate the lowest quality scores?
* Which criteria fail most often for a given contact type?
* Which Reasons need coaching, process review, or calibration?

The **Reason** analysis page follows the same layout described in [Analysis Page Structure](/getting-started/platform-overview).

## Best practices

* Define Reasons around real service flows
* Keep the scope clear and operational
* Link only the criteria that truly apply to that contact type

## Related articles

* [Areas of Interest](/core-concepts-and-entities/areas)
* [Criteria](/frontline-intelligence/criteria)
* [Manual Evaluation](/frontline-intelligence/manual-evaluation)


# Disputes

## Overview

Disputes give agents and supervisors a structured way to challenge AI-generated criteria classifications they believe are incorrect.

When Birdie's AI evaluates an interaction and flags a criterion as violated, the agent or their supervisor may disagree. Disputes capture that disagreement formally: a written justification is submitted for each contested criterion, a reviewer accepts or rejects each one, and the outcome corrects the quality record.

Beyond fixing individual classification errors, disputes are a **calibration signal**. A criterion that receives many disputes and has a high acceptance rate is likely producing inaccurate results — and its AI instructions should be reviewed and recalibrated.

***

## How it works

{% stepper %}
{% step %}

### An agent or supervisor identifies an incorrect classification

After reviewing an interaction where the AI flagged a criterion violation they disagree with, they open a dispute directly from the evaluation view.
{% endstep %}

{% step %}

### They write a justification for each contested criterion

The dispute screen lets them confirm which criteria to contest and write a clear explanation for each. All selected criteria must have a written justification before submitting.
{% endstep %}

{% step %}

### A reviewer accepts or rejects each criterion

An internal reviewer goes through the dispute queue, reads the interaction and justifications, and records a decision — accepted or rejected — for each criterion individually.
{% endstep %}

{% step %}

### Accepted disputes correct the quality record

When a criterion dispute is accepted, Birdie removes the AI's original classification from that interaction. The decision becomes part of the quality record and affects any score computed from that criterion.
{% endstep %}
{% endstepper %}

***

## Roles

| Role                            | Permission         | What they can do                                                                              |
| ------------------------------- | ------------------ | --------------------------------------------------------------------------------------------- |
| **Agent / Supervisor**          | `disputes:submit`  | Submit disputes for AI classifications they believe are incorrect                             |
| **Internal Reviewer / Manager** | `disputes:manager` | Review disputes; accept or reject each criterion; access the Disputes dashboard and analytics |

{% hint style="info" %}
Contact your Admin to confirm which role you have been assigned.
{% endhint %}

***

## Submitting a Dispute

Open a dispute from the interaction's evaluation view.

{% stepper %}
{% step %}

### Select the criteria to dispute

From the interaction's evaluation view, select one or more criteria whose AI findings you disagree with, then click **Dispute**.
{% endstep %}

{% step %}

### Review the interaction context

The dispute screen opens as a full-screen overlay. The **left column** displays the original interaction with two tabs:

* **CONVERSATION** — the full transcript with date headers and rating badge.
* **INFO** — interaction metadata: Ingested ID, Posted at, Language, Source, Author, Sentiment, Rating.

Use this context to confirm the criteria you want to contest.
{% endstep %}

{% step %}

### Confirm criteria and write justifications

The **right column** lists all pre-selected criteria as cards with checkboxes.

* Check or uncheck criteria as needed.
* For each checked criterion, a text area appears — write a clear justification explaining why you believe the AI finding is incorrect.
* All checked criteria must have a non-empty justification before you can submit.

The footer shows how many criteria are currently selected.
{% endstep %}

{% step %}

### Submit

Click **Submit dispute**. A confirmation message appears and you are returned to the previous page. The dispute is now in the queue with status **Pending**.
{% endstep %}
{% endstepper %}

{% hint style="info" %}
You can select multiple criteria from the same interaction in a single dispute submission.
{% endhint %}

***

## Reviewing Disputes

Internal reviewers access the dispute queue from the **Disputes** page.

{% stepper %}
{% step %}

### Open the review queue

Navigate to the **Disputes** page. The header shows a **"Review disputes (N)"** button indicating how many disputes are pending. Click it to open the review workflow.
{% endstep %}

{% step %}

### Select an area

In the first step of the review modal, choose the **operational area** you want to review from the searchable dropdown. Only areas with pending disputes are shown. Click **Review disputes** to proceed.
{% endstep %}

{% step %}

### Review each dispute

For each dispute in the queue:

* **Left column** — dispute details including the Dispute ID, submitter information, and two tabs:
  * **INFO** — quality score, interaction ID, team, evaluation time, and other metadata.
  * **CONVERSATION** — the original interaction transcript.
* **Right column** — the list of disputed criteria. For each criterion card you will see:
  * The criterion text and ID.
  * The submitter's justification.
  * **Accept** and **Reject** toggle buttons — select one for each criterion.
  * An optional **comment** field for reviewer notes.

The footer shows your progress (e.g., "2 out of 4 criteria reviewed"). The **Review next** button is disabled until all criteria in the current dispute have a decision.
{% endstep %}

{% step %}

### Finish the session

Once all disputes in the selected area have been reviewed, click **Finish session**. All decisions are saved and the disputes are marked as **Reviewed**.
{% endstep %}
{% endstepper %}

{% hint style="warning" %}
Accepting a criterion dispute removes the AI's original violation label from that interaction. This action directly affects quality scores and AI classification history.
{% endhint %}

***

## Editing a Reviewed Dispute

Reviewers can modify a previously reviewed dispute at any time.

1. Navigate to the **Disputes** page → **Dispute History** tab.
2. Find the dispute row and click the **⋯ (three-dot menu)** → **Edit**.
3. The review modal reopens with the existing decisions pre-filled.
4. Adjust any decisions or reviewer comments.
5. Click **Save changes**.

***

## Deleting a Dispute

1. Navigate to the **Disputes** page → **Dispute History** tab.
2. Click the **⋯ (three-dot menu)** on the dispute row → **Delete**.
3. Confirm the action in the dialog.

{% hint style="danger" %}
Deletion is permanent and cannot be undone.
{% endhint %}

***

## Disputes Dashboard

The **Disputes** page (`/disputes`) is the central hub for managing and analyzing contestations. It has two tabs: **Dispute History** and **Analytics**.

### Dispute History Tab

A searchable, filterable table of all disputes in your organization.

#### Filters

| Filter           | Description                                  |
| ---------------- | -------------------------------------------- |
| **Search**       | Filter by Dispute ID                         |
| **Date range**   | Filter by submission date                    |
| **Submitted by** | Filter by the user who submitted the dispute |
| **Reviewed by**  | Filter by the user who reviewed the dispute  |

#### Table Columns

| Column              | Description                                            |
| ------------------- | ------------------------------------------------------ |
| **Dispute ID**      | Unique code within your organization (e.g., `DSP-847`) |
| **Criteria**        | Number of criteria included in the dispute             |
| **Submission date** | Date the dispute was submitted                         |
| **Revision date**   | Date the dispute was last reviewed                     |
| **Submitted by**    | Name and email of the person who submitted it          |
| **Reviewed by**     | Name and email of the internal reviewer                |
| **Actions**         | Edit or Delete the dispute                             |

***

### Analytics Tab

Use this tab to identify patterns in disputes and evaluate the health of your AI calibration.

#### KPI Cards

| KPI                 | Description                                                                     |
| ------------------- | ------------------------------------------------------------------------------- |
| **Total disputes**  | Total disputes submitted in the selected period, with trend vs. previous period |
| **Dispute rate**    | Percentage of AI evaluations that were disputed                                 |
| **Acceptance rate** | Percentage of disputed criteria accepted by reviewers                           |

{% hint style="info" %}
**Dispute rate:** the denominator is the count of distinct interactions with at least one AI-generated criterion finding in the selected period — not total interactions or manual evaluations.

**Acceptance rate:** `accepted criteria ÷ (accepted + rejected criteria) × 100`. Pending (unreviewed) criteria are excluded.
{% endhint %}

#### Charts

* **Dispute rate by criteria** — horizontal bar chart showing dispute volume and rate per criterion. Sortable by name or count.
* **Accepted vs. Rejected** — grouped vertical bar chart comparing accepted and rejected decisions per criterion across the selected period.

#### All Disputed Criteria Table

| Column             | Description                                       |
| ------------------ | ------------------------------------------------- |
| **Criteria**       | Criterion name — click to open the details drawer |
| **Collection**     | The collection this criterion belongs to          |
| **Count**          | Total AI evaluations for this criterion           |
| **Disputes count** | Number of times this criterion has been disputed  |
| **Dispute rate**   | `Disputes count ÷ Count × 100`                    |
| **Accepted count** | Number of disputes accepted for this criterion    |
| **Accept rate**    | `Accepted count ÷ Disputes count × 100`           |

#### Criterion Details Drawer

Clicking a row in the analytics table opens a side drawer with five tabs:

| Tab                   | Content                                                                                      |
| --------------------- | -------------------------------------------------------------------------------------------- |
| **DISPUTE**           | Summary metrics for this criterion: dispute count, dispute rate, accepted count, accept rate |
| **OVERVIEW**          | Criterion name, description, related reason, collection, and weight — read-only              |
| **FILTERS**           | Criterion-level filter configuration                                                         |
| **ADVANCED SETTINGS** | Advanced criterion settings                                                                  |
| **AI INSTRUCTIONS**   | The AI-generated subject and refined description used for this criterion                     |

The drawer footer includes a **"Duplicate to recalibrate"** action, which creates a copy of the criterion for adjustment when dispute patterns suggest the AI instructions need refinement.

***

## Using Disputes as a Calibration Signal

Disputes are more than a correction mechanism — they are the clearest signal you have that a criterion's AI instructions may need to be updated.

**When to consider recalibration:**

* A criterion consistently receives a high number of disputes, **and**
* A large share of those disputes are accepted by reviewers.

This pattern indicates the AI is reliably producing outcomes that human reviewers consider wrong. The problem is usually in the criterion's instructions — the AI instructions may be too broad, too strict, or based on examples that no longer reflect the reality of your interactions.

**What to do:**

1. Open the Analytics tab and sort the disputes table by **Dispute count** or **Accept rate**.
2. Identify criteria with high dispute counts and high acceptance rates.
3. Click the criterion to open the details drawer and review the **AI INSTRUCTIONS** tab.
4. Use the **"Duplicate to recalibrate"** action to create a copy for adjustment without affecting live evaluations.
5. Update the criterion instructions and monitor the dispute rate after the new version activates.

***

## Business Rules

* A dispute must contain at least one criterion. Empty disputes cannot be submitted.
* Each disputed criterion requires a written justification. The submit button stays disabled until all selected criteria have a non-empty reason.
* A dispute has two possible statuses: **Pending** (awaiting review) or **Reviewed** (a decision has been recorded).
* Each criterion within a dispute is independently marked as **Accepted** or **Rejected** by the reviewer.
* When a criterion dispute is accepted, Birdie removes the AI's original classification label from that interaction.
* Disputes can be edited after review. Reviewers can reopen and change their decisions or comments at any time from the Dispute History tab.
* Disputes are scoped to your organization — each dispute receives a unique code (e.g., `DSP-001`) within your organization.

***

## Permissions

| Action                               | Required Permission |
| ------------------------------------ | ------------------- |
| Submit a dispute                     | `disputes:submit`   |
| View the Disputes page and analytics | `disputes:manager`  |
| Review, accept, or reject disputes   | `disputes:manager`  |
| Edit a reviewed dispute              | `disputes:manager`  |
| Delete a dispute                     | `disputes:manager`  |

***

## FAQs

**Why is the Submit button disabled?**

The Submit button stays disabled until every checked criterion has a written justification. Make sure all selected criteria have a non-empty reason filled in.

**Can I dispute more than one criterion in a single submission?**

Yes. You can select multiple criteria from the same interaction and submit them together as one dispute.

**What happens when a dispute is accepted?**

When a reviewer accepts a criterion dispute, Birdie removes the AI's original classification from that interaction. This directly corrects the quality record and affects any score computed from that criterion.

**Can a reviewer change their decision after submitting a review?**

Yes. Reviewers can edit any previously reviewed dispute from the **Dispute History** tab using the Edit action.

**Who can see the Disputes page?**

Only users with the `disputes:manager` permission can access the Disputes page and analytics. Users with `disputes:submit` can submit disputes from the interaction view but do not have access to the dashboard.

**Can I filter disputes by status?**

Yes. Use the filters in the Dispute History tab. The status (Pending vs. Reviewed) is visible in each row.

***

## Related Articles

* [Criteria](/frontline-intelligence/criteria)
* [Manual Evaluation](/frontline-intelligence/manual-evaluation)
* [Frontline Intelligence — Product Overview](/frontline-intelligence/product-overview)


# Agent

## Overview

The **Agent** page is the individual performance view in Frontline Intelligence.

It helps supervisors understand how one agent performs across the interactions included in the selected FI context.

Use it to connect quality scores, reasons, and criteria to real coaching decisions.

<figure><img src="/files/kTw2ifGQSvKnneQ2BlBw" alt=""><figcaption></figcaption></figure>

## Why the Agent page matters

The Agent page helps teams:

* evaluate quality at the person level
* spot strengths and recurring failure patterns
* identify which Reasons or Criteria need coaching
* track improvement over time

## How agent analysis works

Birdie aggregates the interactions that match the current filters and shows how one agent performs within that scope.

This makes it easier to separate isolated issues from recurring behavior.

Agent analysis is especially useful for:

* coaching and feedback cycles
* supervisor follow-up
* calibration discussions
* performance reviews based on evidence

## Agent, Reasons, and Criteria

The Agent page connects individual performance to the FI model behind it.

Use it to understand:

* which [Reasons](/frontline-intelligence/reasons) this agent handles most
* which [Criteria](/frontline-intelligence/criteria) pass or fail more often
* where the agent needs support, coaching, or recognition

## Agent in analysis

The **Agent** analysis page follows the same layout described in [Analysis Page Structure](/getting-started/platform-overview).

What changes is the level of analysis. Instead of looking at a full Area or one Reason, you focus on one agent inside the selected scope.

## Related articles

* [Agent Feedback](/frontline-intelligence/agent/agent-feedback)
* [Reasons](/frontline-intelligence/reasons)
* [Criteria](/frontline-intelligence/criteria)


# Agent Feedback

## Overview

The Agent Feedback page is the main place for supervisors and admins to create, track, and manage feedback for support agents.

Use it to evaluate agent quality against predefined criteria, attach tickets as evidence, generate feedback text with AI support, and follow results through the adherence metric in Analytics.<br>

<figure><img src="/files/wg4ZatPPcfScUr58khWV" alt=""><figcaption></figcaption></figure>

## Viewing & Searching

The main interface shows feedback records in a list.

Each record includes:

* Agent name or ID
* Evaluated criterion
* Feedback text snippet
* Attached evidence tickets
* Creation date

### Filtering Data

Use the dropdown menus at the top to refine your view:

* Agent: Filter by one or more agents.
* Criteria: Filter by criterion, such as `Inappropriate language`.
* Status: Filter by the current stage (Not Applied, In Progress, Closed, Canceled).
* Select date: Filter by a specific time range of applied feedback.

### Viewing Details

Click **read more** to expand the full feedback.

Use the more menu `⋮` to edit the record.

## Creating New Feedback

To initiate a new evaluation:

{% stepper %}
{% step %}

### Click **New feedback**

{% endstep %}

{% step %}

### Fill in the form

### Fields in the form

* **Agent**: who will receive the feedback.
* **Criteria**: which criterion the feedback is about.
* **Evidence tickets**: one or more tickets that support the evaluated behavior.
* **Feedback details**: write the feedback manually or generate it with AI.

#### AI-powered feedback generation

After selecting the criterion and attaching tickets, you can generate feedback text automatically.

The generated text can be edited before saving.

This helps create faster and more consistent feedback.
{% endstep %}

{% step %}

### Click **Create feedback**

This saves the new record.
{% endstep %}
{% endstepper %}

### Key Fields & Definitions

<figure><img src="/files/tIwXCVsBcgK2gmivUu3F" alt="" width="375"><figcaption></figcaption></figure>

* **Criterion**: the behavioral or technical category being evaluated.
* **Implementation Stage**: the manual progress tracker. Available values are `Not Applied`, `In Progress`, `Closed` or `Canceled` .
* **Applied Date**: the date shown at the bottom of the record when feedback enters the active implementation phase.
* **Evidence Tickets**: the tickets attached to support the evaluated behavior.

## Modifying Existing Data

### Managing Feedback Status

Feedback status must be updated manually.

* **Not Applied**: the initial state for new feedback. Update status to move it to **In Progress**.
* **In Progress**: the agent is working on the feedback. Update status to move it to **Closed**.
* **Closed**: the feedback cycle is complete.
* **Canceled**: while a record is **In Progress**, open the more menu `⋮` and click **Cancel feedback**.

### Editing Not Applied Feedback

1. Open the record more menu `⋮`.
2. Click **Edit**.
3. Update the record.

## Deleting Feedback

Only feedback in **Not Applied** status can be deleted.

If deletion is not appropriate, move the record to **Canceled** instead.

To delete a record:

1. Open the more menu `⋮`.
2. Click **Delete**.
3. Confirm the action.

## Analytics

The **Analytics** tab gives a consolidated view of feedback performance.

Use it to track feedback volume, usage patterns, and how long records stay open.

### Key Indicators

* **Feedback created**: total feedback created in the selected period, with percentage change.
* **Agents mentioned**: number of agents who received feedback.
* **Criteria mentioned**: number of distinct criteria used.
* **Avg time to close feedback**: average time, in days, to close a feedback record.

### Available Charts

* **Feedback status**: distribution by status, including percentages for `Not Applied`, `In Progress`, `Closed`, and `Canceled`.
* **Most frequent feedback criteria**: ranking of criteria with the highest feedback volume.
* **Feedback count by agent**: ranking of agents by feedback volume received, with sorting and filters.

### Adherence Tracking

The adherence metric shows whether agents are applying the guidance received through feedback.

Use it to measure the real impact of feedback on service quality.

## Troubleshooting & FAQs

#### How do I change the status of a record?

See [Managing Feedback Status](#managing-feedback-status).

#### Why can’t I delete a record?

Only records in **Not Applied** status can be deleted.

If needed, move the record to **Canceled** instead.

#### How do I generate feedback text with AI?

In the creation form, select the criterion and attach evidence tickets.

Then generate the feedback text and edit it before saving.

#### What are attached tickets used for?

Attached tickets provide objective evidence for the evaluated behavior.

They help ground the feedback in real interactions.


# Organization

## Overview

The Organization settings page provides a central location to configure and manage the foundational aspects of your platform account. This includes defining calculation logic for scores, setting financial parameters for savings metrics, and managing customer volume data. Please note that the Organization name, Organization ID, and Display language are system-defined and cannot be modified within this interface.

<figure><img src="/files/OR0OoPOAi45000kB5lZU" alt=""><figcaption></figcaption></figure>

## Impact score weights and calculation

This panel allows you to configure the weighting logic used to calculate the Impact Score across the platform. Users can assign specific weights to various data sources, including:

* Tickets
* Complaints
* NPS
* CSAT
* Reviews
* Social media posts

The platform calculates the final score based on the following formula:

$$
\text{Impact Score} = \frac{\text{Sum of Values}}{\text{Sum of Weights}}
$$

<figure><img src="/files/L84nWCzydShDk9ED4a3j" alt=""><figcaption></figcaption></figure>

## Potential saving metric premise

In this section, you define the financial parameters for support costs to calculate potential savings.

* Currency: Select the primary currency (e.g., BRL) for cost tracking.
* Unit Costs: Define the direct and indirect unit costs per ticket for both general Tickets and Complaints.

<figure><img src="/files/HsE2QUTs2UsXqENLVXv9" alt=""><figcaption></figcaption></figure>

## Contact rate metric premise

Filling out this section is a mandatory requirement to enable the Contact Rate metric throughout the platform.

* Manual Entry: Users must add a Date and the corresponding number of Active customers for that period.
* Data Filter: By default, this panel only displays data for the current year.
* Historical Data: To view or edit records from previous years, click the Show full history button.

<figure><img src="/files/t1PJLqyw09OriTMI725U" alt=""><figcaption></figcaption></figure>

## AI Features

This panel manages the configuration for automated intelligence tools. You can use the Summary output language dropdown menu to determine which language the AI uses when generating summaries.

<figure><img src="/files/vkgoLt6RnUDRu9loWVUZ" alt=""><figcaption></figcaption></figure>

## Troubleshooting & FAQs

* "Why can't I edit my Organization Name?"\
  Resolution: The Organization name, ID, and display language are locked for administrative purposes and cannot be changed here.
* "Why is my older customer data missing?"

  Resolution: The panel only shows the current year by default; you must click "Show full history" to see data from previous years.
* "Why is the contact rate metric not appearing?"\
  Resolution: Ensure you have manually added dates and active customer counts in the "Contact rate metric premise" panel, as this is required to enable the metric.


# Notifications

## Overview

Notifications help your team stay informed without checking Birdie constantly.

Use notifications to send the right updates to Slack or email channels, depending on the feature and channel you configure.

Birdie supports two main notification types:

* **Digests** for scheduled summaries
* **Alerts** for threshold-based updates

Before you create either one, set up a delivery destination in [Channels](/admin-and-settings/notifications/channels).

## Digests

Digests send recurring summaries of feedback activity to Slack.

Use them to share trends, reviews, or filtered feedback with a team on a fixed schedule. You choose the layout, filters, timing, and destination channels.

Digests work well for regular reporting and team check-ins.

See [Digests](/admin-and-settings/notifications/digests).

## Alerts

Alerts notify you when a metric goes above or below a value you define.

Use them to track important changes that need faster visibility, such as spikes, drops, or unusual movement in key metrics. You choose the metric, condition, timeframe, frequency, and delivery channel.

Alerts work well for active monitoring and quick response.

See [Alerts](/admin-and-settings/notifications/alerts).

## Choosing the right notification

* Use **Digests** for recurring summaries.
* Use **Alerts** for immediate signal on metric changes.
* Use **Channels** to control where notifications are delivered.


# Channels

## Overview

The Channels tab serves as the configuration hub for routing digests and alerts to the right team members. By connecting your communication tools, you ensure that critical updates from your data collections are delivered directly to where your team already works.<br>

<figure><img src="/files/wy4fDTzlVnKC1rddHJna" alt=""><figcaption></figcaption></figure>

It primarily supports Slack integration and Email as delivery methods. Once a channel is established, it becomes a selectable destination for Digests and Alerts.

## Creating New Data

\
Adding a new delivery destination requires a one-time setup, particularly for Slack which involves a third-party OAuth flow.

<figure><img src="/files/ngxjP7ivNfhDhWG2xaRW" alt=""><figcaption></figcaption></figure>

1. Click the + Add Slack channel button in the top right corner.
2. Authorize Slack: A new window will open directing you to Slack’s authorization page.
3. Select Workspace: Use the dropdown menu to select the specific Slack workspace you wish to connect.
4. Channel for Webhook: Search for and select the specific public or private channel where Birdie.ai should post messages.
5. Click Allow to finalize the permission grant.

## Removing Data

\
If a channel is no longer needed or was added in error:

<figure><img src="/files/Zpnn9E92QiZ9C8nhnvl9" alt=""><figcaption></figcaption></figure>

1. Locate the channel in the Slack channels list.
2. Click the Trash icon on the far right of the channel row.
3. Confirm the deletion to immediately stop all transmissions to that specific Slack endpoint.

{% hint style="danger" %}
Deleting a channel stops all linked notifications. Reassign active alerts to another destination to ensure continued delivery.
{% endhint %}

## Troubleshooting & FAQs

* "App is not approved by Slack" Warning: You may see a red warning during installation. This occurs because the Birdie.ai app is being installed directly via a developer link rather than the public Slack Marketplace. You may need a Slack Admin to approve the installation.
* Channel Not Appearing: Ensure the Birdie.ai app has been invited to the channel if it is a Private Slack channel.
* Permissions: If notifications stop sending, check the "Review app permissions" section in Slack to ensure the integration hasn't been revoked.


# Digests

Digest Notifications in Birdie allow you to stay on top of your customer feedback by sending aggregated reports directly to your Slack workspace. With custom filters, flexible layouts, and scheduling options, you can design digests tailored to your team’s needs.\ <br>

<figure><img src="/files/dBge5jFwINND0XccdCS6" alt=""><figcaption></figcaption></figure>

## What Are Digest Notifications?

Digest notifications provide a recurring summary of feedback data ingested into Birdie. Each digest supports custom filters, so you can create multiple digests with different scopes by combining sources, segments, or any other available filters in your Birdie account.

We currently support two digest layouts:

* Review Pulse\
  Designed specifically for App Review data, this layout is perfect for tracking new low-rating reviews from the Google Play Store and Apple App Store. These reviews are sent straight to your selected Slack channel, allowing your team to react quickly.
* Multi-Purpose Pulse\
  A flexible layout that can be used with any mix of sources and filters. This option is ideal if you want to track multiple types of feedback together.

Both layouts include:

* Support for custom filters
* Configurable schedules
* Ability to deliver to one or more Slack channels simultaneously

{% stepper %}
{% step %}

### Enable a Slack Channel

Before creating a digest, you must authorize Birdie to send messages to a Slack channel:

* Go to <https://app.birdie.ai/settings/notifications>.
* Open the Channels tab.
* Click + Add Slack channel.
* A Slack configuration page will open. Follow the instructions to add a public channel, private channel, or direct message (DM) as a destination.

At this stage, Birdie is authorized to publish messages to your selected channel, but no digest has been set up yet.
{% endstep %}

{% step %}

### Create a Digest

Once your Slack channel is connected, configure your digest:<br>

* Go to the Digest tab.
* Click + Add new Digest.
* Enter a name for your digest (to help with management).
* Choose your layout:
  * Review Pulse
  * Multi-Purpose Pulse
* Define your filters.
  * The more specific your filters, the more relevant your notifications will be.
  * You can create multiple digests for different use cases.
* Set the frequency and delivery time that best fits your team’s workflow.
* Select your delivery channels.
  * You can send the same digest to multiple Slack channels at once.
    {% endstep %}
    {% endstepper %}

<figure><img src="/files/0hD69cDOWVvnfh9fV63y" alt="" width="374"><figcaption></figcaption></figure>

That’s it!

Your digest is now live. Birdie will automatically send feedback digests to your selected Slack channels, helping your team stay aligned and proactive.

{% hint style="info" %}
Need more help? Reach out to our support team anytime.
{% endhint %}


# Alerts

## Overview

The Alerts feature allows you to monitor critical events by defining threshold conditions applied over specific metrics.

Located under Settings > Notifications > Alerts, this feature enables you to track when a metric goes above or below a chosen value.

Notifications are sent via dedicated channels like Email or Slack so you can respond immediately to data changes.\ <br>

<figure><img src="/files/NoSm9hhmhxSuv2qm43mt" alt=""><figcaption></figcaption></figure>

## Viewing & Searching

The Alerts list displays the Alert name, Last modified date, Last modified by, and the current Enabled? status.

You can find specific alerts quickly by using the "Search digest" bar at the top of the interface.

## Creating New Data

<figure><img src="/files/hjgxcHxri2ZseyWhnASX" alt="" width="387"><figcaption></figcaption></figure>

{% stepper %}
{% step %}

### Click the "+ Add new alert"

{% endstep %}

{% step %}

### Fill in the form

* **Name**, a text field for providing a custom label to identify the alert.
* **Enabled Toggle**, a switch used to activate or deactivate the alert without deleting it.
* **Metric Dropdown,** a menu to select the primary data metric to monitor (e.g., Overall: Count).
* **Operator Dropdown**, a selector to define the comparison logic (e.g., "above" or "below").
* **Threshold Input**, a numeric field to establish the value that triggers the alert.
* **Timeframe Dropdown**, a menu to set the duration of data to analyze (e.g., "last 30 days").
* **Filter**, a button to append additional conditional layers to the alert logic.
* **Notification Frequency**, a toggle button to select how often updates are sent (Hourly, Daily, Weekly, or Monthly).
* **Delivery Channel**, a dropdown to choose the platform for receiving the alert (e.g., Slack).

{% hint style="warning" %}
To use channels in your alerts, please complete the configuration first. Reference this article for more information.
{% endhint %}
{% endstep %}

{% step %}

### Save

Save the record to finish the configuration
{% endstep %}
{% endstepper %}

## Modifying Existing Data

{% stepper %}
{% step %}

### Click the "Edit" icon button

{% endstep %}

{% step %}

### Modify the form

* **Name**, a text field for providing a custom label to identify the alert.
* **Enabled Toggle**, a switch used to activate or deactivate the alert without deleting it.
* **Metric Dropdown,** a menu to select the primary data metric to monitor (e.g., Overall: Count).
* **Operator Dropdown**, a selector to define the comparison logic (e.g., "above" or "below").
* **Threshold Input**, a numeric field to establish the value that triggers the alert.
* **Timeframe Dropdown**, a menu to set the duration of data to analyze (e.g., "last 30 days").
* **Filter**, a button to append additional conditional layers to the alert logic.
* **Notification Frequency**, a toggle button to select how often updates are sent (Hourly, Daily, Weekly, or Monthly).
* **Delivery Channel**, a dropdown to choose the platform for receiving the alert (e.g., Slack).
  {% endstep %}

{% step %}

### Save

Save the record to confirm the changes
{% endstep %}
{% endstepper %}

## Removing Data

If an alert is no longer needed, it can be permanently removed by clicking the Delete icon (trash) in the Alerts list.<br>

<figure><img src="/files/kVta9EFTIt8Kb5cwHPNI" alt=""><figcaption></figcaption></figure>

## Advanced & Unique Features

### Preview Alert Format

While setting up your alert, use the "Preview alert format" section to switch between Email sample and Slack sample to see how the notification will look.<br>

<figure><img src="/files/Ju2rtHxGXUMbbNG9Bz8a" alt=""><figcaption></figcaption></figure>

### Alert History Monitoring

Use the History tool to track every time an alert was triggered; this is essential for identifying cases where an alert might have failed to be sent or received.<br>

<figure><img src="/files/JvdlI43L8Sq4OE2zXZSg" alt=""><figcaption></figcaption></figure>

## Troubleshooting & FAQs

* "I'm not receiving notifications"\
  Solution: If an expected alert did not arrive, check the History to see if the threshold was met and if the delivery to your chosen channel was successful.
* "Alert numbers seem incorrect"\
  Soluction: Verify your "Add filter" settings to ensure only the intended records are being counted toward the metric.


# Anomalies

## Setting Up Anomaly Detection

Automatically monitor your metrics and get notified when patterns deviate from normal behavior.

{% hint style="info" %}
Anomaly detection requires a minimum of 30 days of time series data. Once enabled, it will run across all areas and opportunities.
{% endhint %}

***

### Detection Types

Birdie offers two types of anomaly detection. Choose the one that fits the pattern you want to track.

{% columns %}
{% column %}
**Spike Detection**

Identifies unusual spikes in a metric compared to a baseline period. Best for catching sudden, sharp increases in volume or frequency.
{% endcolumn %}

{% column %}
**New Pattern Detection**

Identifies when a metric's trend direction changes, for example from upward to downward movement. Best for detecting sustained shifts in behavior over time.
{% endcolumn %}
{% endcolumns %}

### Creating an Anomaly Rule

{% stepper %}
{% step %}

### Open Settings

Go to Settings and select Anomalies from the left navigation under the Notifications section.
{% endstep %}

{% step %}

### Add a new anomaly

Click + Add new anomaly in the top right corner.
{% endstep %}

{% step %}

### Name the anomaly

Enter a name in the Anomaly name field. Choose a name that clearly identifies the metric and behavior being monitored.
{% endstep %}

{% step %}

### Enable anomaly detection

You can disable the anomaly detection if you want to just set it up. Later, after it's saved, you can enable it back on the Anomalies settings page.
{% endstep %}

{% step %}

### Select the detection type

Under Detection type, choose one of the options:

**Spike Detection** monitors for unusual spikes in a metric compared to a baseline period. Best for catching sudden increases in volume.

**New Pattern Detection** monitors for changes in trend direction. Best for identifying sustained shifts in behavior.

<figure><img src="/files/lwwDyMIAcixrPfvywnQw" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Choose the source to monitor

Under Source to monitor, select the source you want to track for anomalies. By default this is set to All.
{% endstep %}

{% step %}

### Set the sensitivity

Under Sensitivity, choose when the detection should trigger. The default value is Notable changes, which balances noise reduction with timely detection.
{% endstep %}

{% step %}

### Configure the delivery channel

Under Delivery Channel, select where you want to receive alerts. You can select one or more users or channels.
{% endstep %}

{% step %}

### Select the time zone

Under Time, confirm your preferred time zone for receiving alerts. **Alerts are sent at 8:00 AM in the selected time zone.** The default is GMT 3:00 Brasilia Time.
{% endstep %}

{% step %}

### Save the anomaly detection

Review your configuration and save the rule. Anomaly detection will begin running according to your settings.
{% endstep %}
{% endstepper %}

### Managing Anomaly Rules

Once created, anomaly rules appear in the Anomalies settings page.

**Find by name:** Use the search bar to locate a rule quickly.

**Filter by type:** Use the All types dropdown to filter by detection type.

{% hint style="warning" %}
If no anomaly rules appear, none have been configured yet. Click + Add new anomaly to create your first rule.
{% endhint %}


# Workspaces

Workspaces are dedicated environments within the Birdie platform designed to help you organize and filter data for specific teams, projects, or business units. They act as a customized lens through which you can interact with your organization's data, allowing for tailored settings and access controls.

## Overview

The Workspaces module is the central management hub where you can view, create, and configure your dedicated data environments. It provides a high-level view of all existing workspaces, their creators, and when they were last modified. By using workspaces, organizations can silo feedback data to ensure users are focusing only on the information relevant to their specific context.

<figure><img src="/files/bjf7NgReRf2hkqYxY2LV" alt=""><figcaption></figcaption></figure>

## Viewing & Searching

The main Workspaces page displays a comprehensive list of all environments you have access to. You can easily identify workspaces through the following data columns:

* Workspace name: The unique identifier for the environment.
* Created by: The user who originally set up the workspace.
* Created at / Last modified: Timestamps to track the age and activity of the environment.
* Collections: The number of shared data collections currently linked to that workspace.

You can browse the list to find specific environments or use the edit and delete icons on the right side of each row to manage them directly.

## Creating New Data

{% stepper %}
{% step %}

### Click the "+ New workspace" button

<figure><img src="/files/KC9m263cX0YVPYpFdQiu" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Configuration steps

To configure a new workspace, several steps are necessary

<figure><img src="/files/aFwgISGYzepVKAr3z6nZ" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Workspace settings

<figure><img src="/files/Hw4ZDBLBvtPq1nMMf9X6" alt=""><figcaption></figcaption></figure>

Define your **Workspace Name**, notice you can use the forward slash (/) to create a hierarchy for your workspaces. For example, if you name your workspaces "BR / Finance / First" and "BR / Finance / Second," the dropdown menu will automatically group them as follows:

<figure><img src="/files/UJf5nEdOZ1KhKKRj5QQo" alt=""><figcaption></figcaption></figure>

The **Module Settings** section allows you to tailor your workspace Areas by enabling Opportunity, Reason, or both. Selecting the Opportunity module activates Customer Intelligence capabilities, while choosing the Reason module equips the workspace with Frontline Intelligence features.

If you need to deviate from global defaults, simply use the **Customize toggle** on any panel to override [Organization-level settings](/admin-and-settings/organization) and apply unique configurations to your specific workspace.
{% endstep %}

{% step %}

### Define your data view

<figure><img src="/files/bxd7eyezzlEekOK9mg9Q" alt=""><figcaption></figcaption></figure>

Apply filters to narrow down the data (e.g., Sentiment = Positive).
{% endstep %}

{% step %}

### Select collections

<figure><img src="/files/DZbCzk2tHoERa2S9qkmS" alt=""><figcaption></figcaption></figure>

Choose which Area, Segment, or Criteria collections to include in this workspace. To assist with your selection, you can click on any collection card to expand it and view its underlying children; this granular view ensures you are choosing the most relevant collection for your workspace needs.

<figure><img src="/files/mMrdmTc68ec5KkAT6yiD" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Users and roles

<figure><img src="/files/yzGdH1Vv1ytUGKaOBWrP" alt=""><figcaption></figcaption></figure>

Invite team members and assign their permission levels.

1. Click the "+ Add people"
2. Search / select the people to add
3. Define their role
4. Click on "Add people"

<figure><img src="/files/yKSvOvAvYSJxKPqWVfQU" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Finish

Confirm your new workspace settings.
{% endstep %}
{% endstepper %}

## Modifying Existing Data

<figure><img src="/files/CQcwfyshzu4TJKd4JOSj" alt=""><figcaption></figcaption></figure>

To modify an existing workspace, click the Pencil Icon (Edit) next to the workspace name. This allows you to navigate through the configuration tabs and update settings:

* Update Settings: Change the workspace name or toggle "Customize" to overwrite organization-level defaults for AI features or metric calculations.
* Refine Data View: Adjust filters to expand or contract the data scope using "AND/OR" logic.
* Adjust Collections: Toggle checkboxes to add or remove Area, Segment, and Criteria collections.
* Manage Access: Use the "Users and roles" tab to add new people via the + Add people button or change the roles of existing members to Viewer, Editor, or Admin.

## Removing Data

<figure><img src="/files/RamcA9CyQLg6REdkfq7Y" alt=""><figcaption></figcaption></figure>

If a workspace is no longer needed, click the Trash Icon (Delete) in the workspace list.

* Shared Assets: Deleting a workspace will not delete its associated collections or segments. These assets are shared across the entire organization and remain available for use in other workspaces.
* User Access: To remove a single user's access without deleting the workspace, navigate to the "Users and roles" tab within the workspace editor and remove them from the list.

## Troubleshooting & FAQs

* "Why can't I see any data in my new workspace?"\
  Check your "Define your data view" settings. If your filters are too restrictive (e.g., Sentiment is "Only Positive" AND Source is "NPS", but no data matches both), the workspace will appear empty.
* What is the difference between an Editor and an Admin in a workspace?\
  Admins have full control over workspace settings and user management, while Editors can typically modify the data and collections but may have limited rights regarding adding/removing other users.
* Will my changes to a collection affect other workspaces?\
  Yes. Since collections are shared across the organization, any changes made to the "Original, shared version" will reflect everywhere that collection is used.


# Users

Manage users, roles, groups, and workspace permissions in Birdie.

## Overview

Use **Users** to control who can access Birdie and what they can do.

Access is built from two layers:

* **Roles** define which features and actions a user can use.
* **Workspace permissions** define which workspaces a user can access.

In Birdie, the resource you grant access to is a workspace.

A user’s effective access combines:

* their **Role**
* their **workspace permissions**
* any inherited access from [Groups](/admin-and-settings/users/groups)

### Roles vs. workspace permissions

| Concept                  | Controls                                         | Example                                                                |
| ------------------------ | ------------------------------------------------ | ---------------------------------------------------------------------- |
| **Role**                 | Features and actions                             | Creating dashboards, exporting data, managing taxonomy, inviting users |
| **Workspace permission** | Visibility and editing rights inside a workspace | Viewer, Editor, or Admin access to a workspace                         |
| **Group**                | Shared workspace permissions for multiple users  | Give an entire team access to the same workspaces                      |

### Viewing and searching users

Go to **Settings → Users** to view everyone in your organization.

The user list shows:

| Column     | Description                                                      |
| ---------- | ---------------------------------------------------------------- |
| **User**   | Name, email, and avatar                                          |
| **Access** | Whether access comes from groups or direct workspace assignments |
| **Group**  | Current group memberships                                        |

Use the search bar to filter the list by name or email.

Select a user to open their detail page. This page includes:

* **Workspace Permissions** for direct workspace access
* **Groups** for inherited access

## Roles

Roles control **what a user can do** across Birdie.

Birdie has three predefined roles:

#### Admin

Admins can do everything in Birdie.

This includes:

* managing workspaces
* managing users and permissions
* managing organization settings
* using all other product features

#### Editor

Editors can use most product features and edit taxonomy.

They cannot:

* manage workspaces
* manage user permissions
* manage organization settings

#### Viewer

Viewers have read-only access.

They can view data and existing content, but they cannot make editing or configuration changes.

### How roles work

* Every user has one role for each resource.
* Roles are currently predefined as **Admin**, **Editor**, and **Viewer**.
* Changing a role does **not** change workspace visibility.

### Role management best practices

* Start with least privilege.
* Give **Admin** only to users who need full administrative control.
* Use **Editor** for users who need to work in Birdie without managing settings or access.
* Use **Viewer** for read-only access.
* Review role assignments during onboarding and access reviews.
* Keep feature permissions and workspace permissions separate.

## Inviting a user

{% stepper %}
{% step %}

### Open Users

Go to **Settings → Users** and click **Invite user**.
{% endstep %}

{% step %}

### Enter identity and role

Enter the user’s email address and choose their role.
{% endstep %}

{% step %}

### Choose the access method

Choose one of these options:

* **Add to a Group** for inherited workspace permissions
* **Individual access** to assign workspaces manually
  {% endstep %}

{% step %}

### Send the invite

Review the setup and click **Send invite**.
{% endstep %}
{% endstepper %}

{% hint style="success" %}
Use groups whenever possible. They scale better and reduce manual permission drift.
{% endhint %}

## Admin onboarding flow

Use this flow when setting up access for a new admin or a new team.

{% stepper %}
{% step %}

### Choose the right role

Assign the right predefined role:

* **Viewer** for read-only access
* **Editor** for day-to-day work without admin controls
* **Admin** for full administrative access
  {% endstep %}

{% step %}

### Create groups by team or function

Set up groups for teams that should share the same workspace access.
{% endstep %}

{% step %}

### Configure workspace permissions

Grant each group or user the right workspace level:

* **Viewer**
* **Editor**
* **Admin**
  {% endstep %}

{% step %}

### Invite users

Invite users with the correct role, then assign them to the right group.
{% endstep %}

{% step %}

### Validate effective access

Confirm that each user can see the right workspaces and the right features.
{% endstep %}
{% endstepper %}

## Modifying a user

Open **Settings → Users** and select the user.

From the detail page, you can:

* change their role
* edit direct workspace permissions
* add or remove group memberships

Changes apply immediately.

## Removing a user

To remove a user:

1. Go to **Settings → Users**.
2. Open the **⋮** menu next to the user.
3. Click **Remove user**.
4. Confirm the action.

{% hint style="warning" %}
Removing a user revokes access immediately. Dashboards and other content they created remain in Birdie.
{% endhint %}

### Related page

* [Groups](/admin-and-settings/users/groups)


# Groups

Manage shared workspace access with manual and SSO-based group membership.

## Overview

A **Group** is a named collection of users that share the same workspace permissions.

Instead of assigning workspace access user by user, you define it once on the group. Every member inherits it automatically.

Groups are managed in **Settings → Groups**.

Read [Users](/admin-and-settings/users) first for the core concepts behind roles, workspace permissions, and permission resolution.

### What groups control

Groups control **workspace access** only.

They do **not** control roles.

This means two users in the same group can see the same workspaces but still have different feature access if their roles differ.

### When to use groups vs. individual access

| Scenario                                               | Recommendation                    |
| ------------------------------------------------------ | --------------------------------- |
| A team of 5+ users needs the same workspace access     | **Use a group**                   |
| One user needs one-off access to a specific workspace  | **Use individual access**         |
| New hires should be assigned automatically through SSO | **Use a group with SSO mappings** |
| A temporary contractor needs limited access            | **Use individual access**         |

## Viewing groups

The groups list gives a quick view of each group’s setup.

You can typically review:

* group name
* member count
* workspace count
* whether SSO mappings are enabled

Empty groups are allowed. This is useful when you want to prepare access before users are added.

## Creating a group

{% stepper %}
{% step %}

### Open Groups

Go to **Settings → Groups** and click **Create group**.
{% endstep %}

{% step %}

### Add basic details

Enter the group name and, if needed, a short description.
{% endstep %}

{% step %}

### Configure workspace access

Enable the workspaces this group should access, then set each permission level:

* **Viewer**
* **Editor**
* **Admin**
  {% endstep %}

{% step %}

### Finish setup

Create the group, then continue with member assignment or SSO mappings.
{% endstep %}
{% endstepper %}

## Adding members

After creating the group, add users to it so they inherit its workspace permissions.

You can also manage group membership from the user detail page in **Settings → Users**.

## SSO auto-assignment

Groups can assign users automatically based on Identity Provider attributes.

This is useful when access should follow department, region, business unit, or another IdP field.

### How SSO mappings work

1. Open the group.
2. Go to the **SSO Mappings** tab.
3. When a user logs in with SSO, Birdie evaluates the role sent.
4. Matching users are added to the group automatically.

### Important SSO mapping behavior

* Rules are evaluated on each login.
* All conditions must match.
* Matching is case-sensitive.
* Users added through SSO can still be removed manually if needed.

## How group permissions affect users

### Members inherit workspace access

Every user in the group receives the group’s workspace permissions automatically.

### Highest group permission wins

If a user belongs to multiple groups, the highest workspace permission wins for that workspace.

See [Users](/admin-and-settings/users) for the full permission resolution rules.

### Direct user permissions still override groups

If a user also has a direct workspace assignment, that direct assignment takes precedence over the group.

### Deleting a group removes inherited access

If you delete a group, users lose any access that came only from that group.

If they have no other access source, their visible workspace list may become empty.

## Troubleshooting

**SSO mapping is not assigning users automatically.**

Check that attribute names and values match your IdP exactly. Matching is case-sensitive. Users may need to log out and back in.

**A user is in two groups with different access levels.**

The highest group permission wins for that workspace.

**I deleted a group by mistake.**

Groups cannot be recovered. Recreate the group and reassign its workspace permissions.


# Taxonomy

## Overview

Taxonomy is one of the core foundations of Birdie.

It is how each client structures their own classification system inside the platform.

The **Taxonomy** section in Settings centralizes everything related to creating, organizing, and managing taxonomy records.

Use this section to:

* manage the full taxonomy catalog
* create new taxonomy items
* keep naming organized
* group records into collections

Birdie supports five taxonomy types:

* Areas
* Opportunities
* Segments
* Reasons
* Criteria

## How the Taxonomy Section Works

Each taxonomy type has its own subpage.

On each subpage, the main tab shows a list of taxonomy records.

Each row includes:

* **Taxonomy ID**, such as `[OP-164]`
* **Taxonomy name**, such as `Late fee charges due to payment errors in app`

Each page also includes a button to create a new item for that taxonomy type, such as **New opp** or the equivalent action.

## Collections Tab

Most taxonomy subpages also include a second tab for **Collections**.

This tab groups taxonomy items by their respective collection, such as Opportunity collections, Segment collections, or Criteria collections.

Use the Collections tab to:

* keep related taxonomy together
* mirror your team, product, or workflow structure
* reduce duplication
* make navigation easier

### Exception: Reasons

**Reasons** do not use collections.

Reasons are grouped inside **Areas**, because they belong to the FI hierarchy rather than an independent collection structure.

## Taxonomy Types

<table data-view="cards"><thead><tr><th>Type</th><th>Description</th><th data-card-target data-type="content-ref">Page</th></tr></thead><tbody><tr><td>Areas</td><td>Manage broad themes used to organize feedback.</td><td><a href="/pages/ixCBYIeVZhWEhX2544X8">/pages/ixCBYIeVZhWEhX2544X8</a></td></tr><tr><td>Opportunities</td><td>Manage specific issues and improvement opportunities.</td><td><a href="/pages/90ExVjWAMbaj4rli6hjr">/pages/90ExVjWAMbaj4rli6hjr</a></td></tr><tr><td>Segments</td><td>Manage audience and behavior-based groupings.</td><td><a href="/pages/a71rzcRLRRHKzZKv5KDb">/pages/a71rzcRLRRHKzZKv5KDb</a></td></tr><tr><td>Reasons</td><td>Manage contact motives and FI service categories.</td><td><a href="/pages/SyDOubzYWgBG0DZSLrg5">/pages/SyDOubzYWgBG0DZSLrg5</a></td></tr><tr><td>Criteria</td><td>Manage FI rules used to evaluate service quality.</td><td><a href="/pages/ZIFvGHYICnblww3lgEic">/pages/ZIFvGHYICnblww3lgEic</a></td></tr></tbody></table>

## Best Practices

* Define naming conventions before scaling the taxonomy.
* Reuse existing items when possible.
* Use collections to reflect how your business is organized.
* Review the catalog regularly to avoid duplicates and outdated entries.

## Related Articles

* [Areas](/core-concepts-and-entities/areas)
* [Opportunities (Opps)](/customer-intelligence/opportunities)
* [Segments](/core-concepts-and-entities/segments)
* [Reasons](/frontline-intelligence/reasons)
* [Criteria](/frontline-intelligence/criteria)


# Areas

## Overview

The **Areas** taxonomy page is where you manage all Area records in Birdie Settings.

Areas are one of the core taxonomy types in Birdie. They help you organize broad themes found in customer feedback.

This page centralizes the operational work of managing Areas as taxonomy items. Use it to review your catalog, create new Areas, and organize them into collections.

If you want the conceptual definition of an Area and how it behaves in analysis pages, see [Areas](/core-concepts-and-entities/areas).\ <br>

<figure><img src="/files/7w5fMnTZES3zVYclcOdj" alt="" width="563"><figcaption></figcaption></figure>

## Viewing & Searching

The main tab shows the full Area catalog as a list.

Each row includes:

* **Taxonomy ID**, such as `[AR-001]`
* **Area name**, such as `Billing experience`

Use this view to quickly scan your existing taxonomy and confirm naming patterns.

## Creating New Data

Click **New area** to create a new Area.

When creating a new Area:

1. Use a title that represents a theme.\ <br>

   <div data-full-width="true"><figure><img src="/files/nOCRBRPWQBGp7kHEp69y" alt="" width="375"><figcaption></figcaption></figure></div>
2. Define the data filter that represents this theme.\ <br>

   <figure><img src="/files/WrhFLSX7q6u2QrhXYVqr" alt="" width="375"><figcaption></figcaption></figure>
3. Save the record to add it to the catalog.

## Collections Tab

The second tab groups Areas by **Area collection**.\ <br>

<figure><img src="/files/Ohz0ZYI0vFAskB77sWdp" alt="" width="563"><figcaption></figcaption></figure>

This view helps you organize the taxonomy by product, journey, team, market, or another internal structure.

Use collections when you need to:

* keep related Areas together
* make navigation easier
* keep naming and ownership consistent

For broader collection concepts in Birdie, see [Collections](/core-concepts-and-entities/collections).

## Best Practices

* Use one Area per broad problem space.
* Keep names short and specific.
* Group Areas into collections that match how your teams work.
* Review duplicates before creating a new Area.

## Related Articles

* [Taxonomy](/admin-and-settings/taxonomy)
* [Areas](/core-concepts-and-entities/areas)
* [Collections](/core-concepts-and-entities/collections)


# Opportunities

## Overview

The **Opportunities** taxonomy page is where you manage all Opportunity records in Birdie Settings.

Opportunities are one of the core taxonomy types in Birdie. They represent specific insights, issues, or improvement possibilities identified from feedback.

This page centralizes the operational work of managing Opportunities as taxonomy items. Use it to review your catalog, create new Opportunities, and organize them into collections.

If you want the conceptual definition of an Opportunity and how it behaves in analysis pages, see [Opportunities (Opps)](/customer-intelligence/opportunities).\ <br>

<figure><img src="/files/OeeEzFRTffMzdsJDyTRS" alt="" width="563"><figcaption></figcaption></figure>

## Viewing & Searching

The main tab shows the full Opportunity catalog as a list.

Each row includes:

* **Taxonomy ID**, such as `[OP-164]`
* **Opportunity name**, such as `Late fee charges due to payment errors in app`

Use this view to review your Opportunity structure and avoid duplicate entries.

## Creating New Data

Click **New opp** to create a new Opportunity.

When creating a new Opportunity:

1. Define a clear title.<br>

   <figure><img src="/files/SHWMfY8gTEC4HaZPCsiz" alt="" width="375"><figcaption></figcaption></figure>
2. Apply filters if needed (optional step)
3. Select related areas<br>

   <figure><img src="/files/lJrUQHHGmNlK2F5Wsuo1" alt="" width="375"><figcaption></figcaption></figure>
4. Write a description that will guide calibration step.
5. Calibrate this Opportunity
6. Save the record to add it to the catalog.

Use names that describe the customer problem or business opportunity directly.

## Collections Tab

The second tab groups Opportunities by **Opportunity collection**.\ <br>

<figure><img src="/files/zsrMIvZ9rqdP1vUDTVom" alt="" width="563"><figcaption></figcaption></figure>

This view helps teams keep related Opportunities together and makes the taxonomy easier to navigate.

Use collections when you need to organize Opportunities by:

* product area
* journey stage
* team ownership
* strategic theme

For conceptual guidance, see [Understanding and Creating Opportunities in Birdie](/core-concepts-and-entities/understanding-and-creating-opportunities-in-birdie) and [Collections](/core-concepts-and-entities/collections).

## Best Practices

* Use one Opportunity per distinct issue.
* Avoid combining multiple problems in one name.
* Keep naming patterns consistent across teams.
* Group Opportunities into collections that reflect how work is prioritized.

## Related Articles

* [Taxonomy](/admin-and-settings/taxonomy)
* [Opportunities (Opps)](/customer-intelligence/opportunities)
* [Understanding and Creating Opportunities in Birdie](/core-concepts-and-entities/understanding-and-creating-opportunities-in-birdie)
* [Collections](/core-concepts-and-entities/collections)


# Segments

## Overview

The **Segments** taxonomy page is where you manage all Segment records in Birdie Settings.

Segments are one of the core taxonomy types in Birdie. They let you group feedback or customers by shared characteristics so teams can analyze data with more context.

This page centralizes the operational work of managing Segments as taxonomy items. Use it to review your catalog, create new Segments, and organize them into collections.

If you want the conceptual definition of Segments and how they are used in analysis, see [Segments](/core-concepts-and-entities/segments).\ <br>

<figure><img src="/files/963XR2YJaysbAWCy4xRZ" alt="" width="563"><figcaption></figcaption></figure>

## Viewing & Searching

The main tab shows the full Segment catalog as a list.

Each row includes:

* **Taxonomy ID**, such as `[SG-012]`
* **Segment name**, such as `Premium customers`

Use this view to review the segmentation structure already available in your workspace.

## Creating New Data

Click **New segment** to create a new Segment.

When creating a new Segment:

1. Give the Segment a clear and recognizable name.

<figure><img src="/files/HSeBSxlhpqHUgJHyouGo" alt="" width="375"><figcaption></figcaption></figure>

1. Define the filter that represents this segment.<br>

   <figure><img src="/files/83WyjvxJeYj2OgKvgqxZ" alt="" width="375"><figcaption></figcaption></figure>
2. Save it to add it to the catalog.

Use names that clearly describe the audience, behavior, or profile being grouped.

## Collections Tab

The second tab groups Segments by **Segment collection**.\ <br>

<figure><img src="/files/bDzuq0BOr3InqmgVOcgL" alt="" width="563"><figcaption></figcaption></figure>

This view is useful when you organize Segments by dimension, such as lifecycle, firmographics, usage, or plan type.

Use collections to:

* separate different segmentation dimensions
* keep analysis cleaner
* make comparisons easier inside the same group

For deeper guidance, see [Organizing Segments with Collections](/customer-intelligence/exploration-and-analysis/organizing-segments-with-collections).

## Best Practices

* Keep each Segment tied to one logic.
* Use consistent naming across collections.
* Avoid creating overlapping segments without a clear purpose.
* Group related Segments into the same collection.

## Related Articles

* [Taxonomy](/admin-and-settings/taxonomy)
* [Segments](/core-concepts-and-entities/segments)
* [Organizing Segments with Collections](/customer-intelligence/exploration-and-analysis/organizing-segments-with-collections)


# Reasons

## Overview

The **Reasons** taxonomy page is where you manage all Reason records in Birdie Settings.

Reasons are one of the core taxonomy types in Birdie. They represent the main contact motives or service categories used to structure quality analysis.

This page centralizes the operational work of managing Reasons as taxonomy items. Use it to review your catalog and create new Reasons.

Reasons are grouped inside **Areas**.

If you want the conceptual definition of a Reason and how it behaves in FI workflows, see [Reasons](/frontline-intelligence/reasons).<br>

<figure><img src="/files/5kUUKNv1RklrC8X6Fx1h" alt="" width="563"><figcaption></figcaption></figure>

## Viewing & Searching

The main tab shows the full Reason catalog as a list.

Each row includes:

* **Taxonomy ID**, such as `[RS-021]`
* **Reason name**, such as `Billing support`

Use this view to review the list of contact reasons already configured.

## Creating New Data

Click **New reason** to create a new Reason.

When creating a new Reason:

1. Define the contact motive or service flow.<br>

   <figure><img src="/files/9WVpxk5MTmiHPZLccgCs" alt="" width="375"><figcaption></figcaption></figure>
2. Define the data filter that represents it.<br>

   <figure><img src="/files/d1rS6kokxHhxDwnLnPeg" alt="" width="375"><figcaption></figcaption></figure>
3. Save it to add it to the catalog.

Use names that match how your operation classifies service demand.

## Organization Inside Areas

Reasons are grouped by **Area**, not by collection.\ <br>

<figure><img src="/files/lZJ0O82CdPLNbb0kNJPM" alt="" width="563"><figcaption></figcaption></figure>

This structure keeps each Reason tied to the correct operational context.

Use this structure when you need to:

* separate contact motives by Area
* keep the taxonomy aligned with FI workflows
* maintain a clear hierarchy between Areas and Reasons

## Best Practices

* Use one Reason per service motive.
* Avoid duplicate labels for the same flow.
* Keep naming aligned with internal operations.
* Keep each Reason under the correct Area.

## Related Articles

* [Taxonomy](/admin-and-settings/taxonomy)
* [Areas](/core-concepts-and-entities/areas)
* [Reasons](/frontline-intelligence/reasons)
* [Criteria](/frontline-intelligence/criteria)


# Criteria

## Overview

The **Criteria** taxonomy page is where you manage all Criterion records in Birdie Settings.

Criteria are one of the core taxonomy types in Birdie. They define the rules used to evaluate service quality in FI workflows.

This page centralizes the operational work of managing Criteria as taxonomy items. Use it to review your catalog, create new Criteria, edit existing ones, and organize them into collections.

If you want the FI model behind Criteria, see [Criteria](/frontline-intelligence/criteria) and [Manual Evaluation](/frontline-intelligence/manual-evaluation).\ <br>

<figure><img src="/files/QjhidnipgiwWzrXDdvF1" alt="" width="563"><figcaption></figcaption></figure>

## Viewing and filtering

The main tab shows the full criteria catalog as a list.

Each row can include:

* **Criterion**
* **Criterion level**
* **Weight**
* **Critical** status

Use the controls at the top of the page to narrow the list:

* **Search** — find criteria by name
* **Select area** — show criteria related to one Area
* **Level** — filter by **General** or **Specific**
* **Group by collection** — switch between collection grouping and reason grouping

Click any criterion to open its details.

## Creating New Data

Click **New criterion** to create a new Criterion.

When creating a new Criterion:

1. Define the rule being evaluated.
2. Give it a clear and objective name and description to calibrate.<br>

   <figure><img src="/files/AZpvlLnzYoMIS8t61kBK" alt="" width="375"><figcaption></figcaption></figure>
3. Calibrate the pending criterion.<br>

   <figure><img src="/files/giqdYyo29R4W8AZ8Wt6q" alt="" width="563"><figcaption></figcaption></figure>
4. Save it to add it to the catalog.

Use names that describe observable agent behavior.

## Modifying Existing Data

{% stepper %}
{% step %}

### Open the more menu

Click the **⋮** menu on the criterion you want to update.

<figure><img src="/files/sY8oZMgHv4mE3i7uFTnL" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Edit the criterion

Select **Edit**.

<figure><img src="/files/mpAfMbiaDujVCngphIJw" alt=""><figcaption></figcaption></figure>

Review these fields before saving:

* **Criteria name**
* **Critical?**
* **Manual?**
* **Collection**
* **Weight**
* **Reason**
* **Fields**
* **Description**
  {% endstep %}

{% step %}

### Save the changes

Save the criterion to apply the update.

{% hint style="warning" %}
Changing **Weight** or **Critical** affects the Quality Score everywhere this criterion is used.
{% endhint %}
{% endstep %}
{% endstepper %}

## Removing Data

{% stepper %}
{% step %}

### Open the more menu

Click the **⋮** menu on the criterion.

<figure><img src="/files/sY8oZMgHv4mE3i7uFTnL" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Select delete

Choose **Delete**.

<figure><img src="/files/ABAUEaOFET6Su2JxccvL" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Confirm removal

Confirm the action to delete the record.
{% endstep %}
{% endstepper %}

## Collections Tab

The second tab groups Criteria by **Criteria collection**.<br>

This view helps teams organize Criteria by theme, process, behavior, or quality framework.

Use collections when you need to:

* keep criteria grouped by topic
* simplify FI administration
* make workspace organization easier

### Managing collections

Use collections to group related criteria under the same operational theme.

#### Create a collection

1. Click **+ Add collection**
2. Enter the collection name
3. Confirm with the check icon

<figure><img src="/files/OJtgA5O49cI1xqVygGu8" alt=""><figcaption></figcaption></figure>

#### Rename a collection

1. Hover over the collection
2. Click the pencil icon
3. Save the new name

<figure><img src="/files/lZrQiImidBLnOEAMDgjf" alt=""><figcaption></figcaption></figure>

#### Delete a collection

1. Hover over the collection
2. Click the trash icon
3. Confirm the removal

<figure><img src="/files/lZrQiImidBLnOEAMDgjf" alt=""><figcaption></figcaption></figure>

## Manual criteria and scoring

* Mark **Manual?** when a criterion must be reviewed by a person
* Manual criteria appear in [Manual Evaluation](/frontline-intelligence/manual-evaluation) when they are linked to a Reason
* **Weight** contributes to the Quality Score at Workspace, Area, Reason, and Agent levels
* **Critical** criteria do not use weight and fail the interaction when not met

## Pending criteria

If you see the alert **You have Criteria that need your attention**, open the pending list to review or finish calibration before the criteria can be used normally.

## Best Practices

* Write Criteria as objective evaluation rules.
* Keep one rule per Criterion.
* Avoid ambiguous or subjective names.
* Group related Criteria into collections for easier maintenance.

## Related Articles

* [Taxonomy](/admin-and-settings/taxonomy)
* [Criteria](/frontline-intelligence/criteria)
* [Manual Evaluation](/frontline-intelligence/manual-evaluation)
* [Reasons](/frontline-intelligence/reasons)


# Initiatives

## Overview

The Initiatives settings page lets admins manage custom statuses and measurement timeframes. These settings standardize initiative tracking across your organization.

## Custom statuses

Use custom statuses to match your team's workflow. The statuses table shows the label, color, parent status, release trigger, and default tag. Use the default tag to set the starting status for new initiatives.

<figure><img src="/files/G5GrPjswLoNQcLFyhhKd" alt="Initiative statuses settings"><figcaption></figcaption></figure>

### Parent statuses

Every custom status maps to one parent status:

* **To Do** — work has not started.
* **Doing** — work is in progress.
* **Done** — work is complete.

Parent statuses add a clear high-level stage to each custom status. They also make progress easier to read across linked opportunities.

### Create or edit a status

1. Click **+ Create new** to add a status.
2. Open the row menu and click **Edit** to update one.
3. Enter the **Status Label**.
4. Choose a **Color**.
5. Select a **Parent Status**.
6. Optional: enable **Triggers Release Date** if the status marks completion.
7. Save your changes.

### Reorder or delete statuses

Use the six-dot handle to reorder statuses. This changes their order in initiative dropdowns.

Delete a status from the row menu. Birdie only allows deletion when no active initiative uses that status.

{% hint style="warning" %}
Some system statuses are required and cannot be deleted.
{% endhint %}

## Measurement timeframe

The measurement timeframe defines how Birdie compares initiative start and completion dates. This setting applies across the organization. Changing it updates calculations in reports and dashboards.\ <br>

<figure><img src="/files/ixhQGPgvIPdA4w7FvaVl" alt=""><figcaption></figcaption></figure>

## Troubleshooting & FAQs

* **Why can't I delete a status?**\
  The status is still assigned to an active initiative, or it is system-required.
* **Why did my metrics change?**\
  Updating the measurement timeframe recalculates initiative reporting across dashboards.


# Security

At Birdie, protecting customer data is a fundamental responsibility and a core part of how we build and operate our platform.

We take a security-first approach to product development and operations, ensuring that data privacy, compliance, and risk management are embedded into every layer of our technology and processes.


# Security & Data Protection Overview

Birdie is built with security, privacy, and compliance at its core. Our platform adheres to industry best practices to ensure that customer data is protected throughout its entire lifecycle — from ingestion to processing and storage.<br>

Key pillars of our security program include:

• Certifications & Compliance: SOC 2 Type II, GDPR, LGPD, USDP, and HIPAA-aligned controls

• Data Protection: Encryption in transit and at rest, strict access controls, and environment isolation

• Privacy by Design: Data minimization, anonymization, and purpose limitation built into the platform

• Operational Security: Continuous monitoring, vulnerability management, and incident response procedures

• Governance: Documented policies covering information security, access management, risk management, and vendor oversight

Detailed security documentation, policies, and compliance reports are available upon request.

After signing an NDA, authorized stakeholders can request access through our [Trust Center in Vanta.](https://trust.birdie.ai/)


# PII & PHI anonymization

## PII & PHI anonymization

When it comes to qualitative feedback ingestion, anonymizing PII and sensitive information is a key step to keep your data pipeline secure and privacy compliant.

Any personally identifiable information (PII) or sensitive information that could identify individuals is therefore removed and securely discarded.

This includes:

* Personal numbers or codes such as a United States Social Security Number, driver's license, or any document from other countries.
* A person's full name or first name.
* A person's phone number.
* A person's email address.
* A person's address, location, or city.
* Any credit card, bank account information, or passwords.

By design, the Birdie solution does not rely on PII or sensitive information to work, therefore, all native connectors in Birdie are created to import only anonymized structured columns. It means, instead of importing user names and emails from your support ticket platform, Birdie connectors will only import user\_ids to match the records.

More than structured columns, there may be PII or sensitive information within qualitative fields. In cases like that, there are two different directions to follow:

{% stepper %}
{% step %}

### PII & PHI anonymization handled by Birdie — PII & PHI never gets stored in Birdie's servers

![integration flow](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/vkAIl36-Yg.jpg)

* In this scenario, Birdie will handle PII anonymization within the initial step of data pipeline in GCP region: us-central-1.
* Our anonymization process employs a hybrid system combining rigid pattern detection with an AI-based entity recognition model. This means that we have two layers of pattern matching for specific IDs to successfully remove most PIIs.
* Any sensitive pattern such as: names, emails, addresses, card numbers, document ids will be \[REDACTED] to indicate the change in the original content.
* PII anonymization is activated for all clients, ensuring that all incoming open-text fields (ticket comments, survey responses, call transcripts) will get checked and processed before Birdie stores any raw data in our servers.
* This option can be used with any ingestion method (native connectors, S3 bucket, Birdie Rest API or CSV uploads). However, there is the need to send open PII to be anonymized.

{% hint style="info" %}
For the complete end-to-end flow applied to speech-to-text data (audio → transcription → anonymization → storage), the redaction techniques, and the evidence that the result meets the regulations like GDPR and LGPD, see [Data Anonymization Process — Speech-to-Text Pipeline](/admin-and-settings/security/data-anonymization-process-speech-to-text).
{% endhint %}

{% hint style="info" %}
Note: For clients in Brazil, in compliance with the Lei Geral de Proteção de Dados (LGPD), this ingestion step runs in GCP region: southamerica-east-1 prior to final persistence at the global index in GCP region: us-central-1, Iowa. For clients outside Brazil, the whole process will remain running at our main infrastructure in the United States, GCP region: us-central-1, Iowa.
{% endhint %}
{% endstep %}

{% step %}

### PII & PHI anonymization handled by Company — PII & PHI never reaches any of Birdie's services

![integration flow](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/t-maYWtGMu.jpg)

* In this scenario, your company handles PII anonymization within your local infrastructure, running PII redaction scripts to replace names, emails, addresses, document IDs and whatever is considered sensitive by regulations in your industry/business.
* To help running that task internally, we offer [Birdie AI Anonymizer](https://ask.birdie.ai/admin-and-settings/security/data-anonymizer-user-guide) project, available in the Google Cloud Marketplace
* Once anonymized, data integration can be done via S3 bucket (parquet file) or Birdie Rest API:
  * [Cloud Object Import](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/s3-azure-gcs)
  * [Birdie AI Anonymizer](https://ask.birdie.ai/admin-and-settings/security/data-anonymizer-user-guide)
  * [Ingestion API](/integrations-and-data-ingestion/ingestion-api)
* By using this approach, your company makes sure Birdie never receives any PII or sensitive information.
  {% endstep %}
  {% endstepper %}

<details>

<summary>Types of PII/PHI currently anonymized by Birdie (expand to view full list)</summary>

***Personal Identifiers***

* Names (including doctor names)
* NINs (National Identification Numbers)
* Driver's License Numbers
* Passport Numbers
* Patient Account Numbers
* Birth Dates
* Admission/Discharge Dates
* Vehicle Identifiers
* Device Serial Numbers
* URLs and IP Addresses
* Biometric Identifiers
* Voter Card IDs
* Taxpayer Identification Numbers (TINs)

***Contact Information***

* Phone Numbers (including fax)
* Email Addresses
* Physical Addresses
* ZIP Codes
* Certificate/License Numbers

***Financial Information***

* Credit Card Numbers
* Bank Account Numbers
* Insurance Policy Numbers
* Payment Details

***Healthcare Identifiers***

* Medical Record Numbers (MRN)
* Insurance IDs and Group Numbers
* Medicare/Medicaid Numbers
* DEA Numbers
* NPI (National Provider Identifier)
* Health Plan Beneficiary Numbers
* Device Identifiers and Serial Numbers
* Laboratory Numbers

***Clinical Information***

* Diagnosis Codes (ICD-10)
* Procedure Codes (CPT)
* Medication NDC Codes
* Test Results
* Treatment Dates
* Appointment Details

</details>


# Data Anonymization Process — Speech-to-Text Pipeline

This page describes the anonymization process applied by Birdie to the text produced from customer-service audio (speech-to-text) before it is stored or used for analysis. It is intended to evidence, for a Data Protection review, that the data Birdie retains and processes has had Personally Identifiable Information (PII) **irreversibly removed**, in line with major data-protection regulations (including the GDPR and Brazil's LGPD) and Birdie's SOC 2 Type II posture.

{% hint style="info" %}
**Scope note.** This page describes the anonymization step performed inside Birdie's processing pipeline. The redaction is applied to the transcribed text. Wherever the term "PII" is used, it refers to personal and sensitive data that may appear in the transcript of a customer conversation.
{% endhint %}

## 1. Data Processing Flow

The end-to-end flow has three sequential stages. Anonymization sits **between** transcription and any persistence or downstream use, so that no downstream system ever receives un-redacted transcribed text.

`Source audio → Transcription (speech-to-text) → Anonymization (PII redaction) → Storage / Downstream use`

| Stage                        | Input               | Output                                               |
| ---------------------------- | ------------------- | ---------------------------------------------------- |
| **1 — Transcription**        | Raw audio file      | Raw transcript (may contain PII)                     |
| **2 — Anonymization**        | Raw transcript      | Redacted transcript (PII replaced with `[REDACTED]`) |
| **3 — Storage / downstream** | Redacted transcript | Redacted transcript only                             |

* **Stage 1 — Transcription:** The audio is transcribed to text by Birdie's self-hosted speech-to-text engines. Output: raw transcript, which may contain PII.
* **Stage 2 — Anonymization:** The raw transcript is passed through the two-stage redaction pipeline described in [section 3](#3.-how-the-anonymization-works). Every detected PII span is replaced with the fixed token `[REDACTED]`. Output: redacted transcript.
* **Stage 3 — Storage / downstream:** Only the redacted transcript is persisted and used for downstream analysis. Output: redacted transcript.

{% hint style="info" %}
**Key property:** the anonymization step is a transformation of the text. The original (un-redacted) value of each PII span is **not stored, mapped, or otherwise preserved** anywhere in the pipeline.
{% endhint %}

{% hint style="info" %}
**Data residency.** Birdie's primary infrastructure runs in the United States (GCP region `us-central-1`, Iowa). For clients with regional data-residency requirements, transcription and anonymization can run in a local region before final persistence. The Brazil/LGPD routing is documented in [LGPD & Data Privacy (Brazil)](/admin-and-settings/security/lgpd-data-privacy).
{% endhint %}

## 2. Categories of PII Identified and Removed

Birdie identifies and removes the following categories of personal and sensitive information. Detection uses two complementary mechanisms: a context-aware language model and a set of deterministic pattern rules (see [section 3](#3.-how-the-anonymization-works)).

**Personal identifiers**

* People's full name or first name.
* Phone numbers.
* Email addresses.
* Physical addresses, locations, and cities.

**Government & identity documents**

* National identification numbers, tax IDs, driver's licenses, and passport numbers — for example a US Social Security Number, a Brazilian CPF, or a Mexican CURP. These are detected by the language model from context, regardless of country.

**Financial / sensitive data**

* Credit card numbers.
* Bank account information (bank, branch/agency, and account numbers).
* Passwords.
* Dates (e.g. dates that could relate to an individual).

{% hint style="info" %}
**Note on company names.** The name of the company being analyzed is explicitly **excluded** from redaction (it is not personal data), so the redacted transcript remains useful for analysis without exposing individuals.
{% endhint %}

## 3. How the Anonymization Works

Anonymization is implemented as a two-stage pipeline — the same hybrid system used across Birdie's ingestion, combining an AI-based entity recognition model with rigid pattern detection. The stages run sequentially (the output of the first stage is the input to the second, like a Unix pipe), so the two mechanisms reinforce each other. Each stage replaces any PII it detects with the fixed literal token `[REDACTED]`.

`raw transcript → Stage 1 (Semantic / LLM) → Stage 2 (Pattern / regex) → redacted transcript`

### Stage 1 — Semantic redaction (language model)

A language model reads the full transcript and rewrites it, replacing any personal or sensitive information with the token `[REDACTED]`. Because it operates on meaning and context (not just fixed patterns), it can catch PII that has no fixed format — for example a spoken-out name, an address, or a document number from a country without a specific rule.

The model is instructed to:

* Redact all categories listed in [section 2](#2.-categories-of-pii-identified-and-removed).
* Preserve the original language of the text (it must not translate).
* Preserve the surrounding (non-PII) text as faithfully as possible, so the transcript stays analyzable.

### Stage 2 — Pattern-based redaction (regular expressions)

A deterministic set of regular expressions runs over the (already LLM-redacted) text and replaces any remaining structured PII with `[REDACTED]`. This is a safety net for well-formatted values that must always be caught regardless of context. The patterns cover, among others:

| Type                 | Example                                      |
| -------------------- | -------------------------------------------- |
| Email                | `someone@example.com`                        |
| Phone                | `(11) 91234-5678`, `1234-5678`               |
| Credit card          | `1234 5678 9012 3456`, `1234-5678-9012-3456` |
| Dates                | `DD/MM/YYYY`, `DD-MM-YYYY`                   |
| Government / tax IDs | country-specific identifier formats          |

## 4. Why the Result Is Irreversible Anonymization

Modern data-protection regulations (including the GDPR and Brazil's LGPD) distinguish **anonymized data** — data that, by reasonable and available technical means, can no longer be associated with an individual — from **pseudonymized data**, where the link to the individual is merely replaced by a reversible reference and can be restored using additional information. Only anonymized data is treated as falling outside the scope of those regimes.

Birdie's process produces **anonymized** data, not pseudonymized data, for the following reasons:

1. **Destructive replacement, not tokenization.** Each PII span is overwritten with a single, non-unique, fixed label — `[REDACTED]`. The same label is used for every occurrence and every type of PII. It carries no information about the original value (no length, no format, no per-value identifier).
2. **No reversal mechanism exists.** The pipeline does not maintain any mapping table, token vault, key, dictionary, or reference linking a `[REDACTED]` token back to the original value. There is no decryption step and no "additional information" that could restore the original data — because no such information is produced or stored.
3. **One-way transformation.** Because the replacement is non-reversible and value-destroying, the same redacted output (`...my name is [REDACTED]...`) could have come from any number of original inputs. Recovering the original value is not possible by any technical means available to Birdie or a third party.
4. **Only redacted text is persisted downstream.** Storage and downstream analysis operate exclusively on the redacted transcript. The original PII values do not persist in the analytical data set.

***

**See also:**

* [LGPD & Data Privacy (Brazil)](/admin-and-settings/security/lgpd-data-privacy) — Art. 12 analysis, Brazilian identifiers (CPF/RG/CNH), and Brazil data residency.
* [PII & PHI anonymization](/admin-and-settings/security/pii-and-phi-anonymization) — the two anonymization paths (handled by Birdie vs. handled by your company) and the full list of PII/PHI types.
* [Data Anonymizer - User Guide](/admin-and-settings/security/data-anonymizer-user-guide) — run anonymization locally before data reaches Birdie.


# Data Anonymizer - User Guide

This guide provides comprehensive instructions on how to install, configure, and run the Interactive Birdie Internal Anonymizer script. This tool leverages Large Language Models (LLMs) to identify and mask sensitive information in your datasets.

***

### Download Birdie Internal Anonymizer script

<a href="https://drive.google.com/uc?export=download&#x26;id=1NZXdlIfEnqRWv_zSEec9u1M0hKVYLRQa" class="button primary">Download script</a>

***

### Prerequisites

Before you begin, ensure you have the following:

* Python installed (version 3.8 or higher recommended).
* API credentials for your chosen LLM provider (OpenAI, Anthropic, Google Gemini, or Azure).

***

### Installation and Setup

To ensure a clean environment and avoid dependency conflicts, follow these steps to set up the project.

#### 1. Project Initialization

Extract the project files to a directory of your choice on your local machine.

#### 2. Create a Virtual Environment (Recommended)

Open your terminal or command prompt and run the following:

Create the environment:

`python -m venv .venv`

Activate the environment:

* Windows: `.venv\Scripts\activate`
* Linux/MacOS: `source .venv/bin/activate`

#### 3. Install Dependencies

Install the required Python libraries using the provided requirements file:

`pip install -r requirements.txt`

#### 4. Configure API Keys

You must set your API key as an environment variable so the script can communicate with the LLM.

* OpenAI: `export OPENAI_API_KEY='your-key-here'`
* Anthropic: `export ANTHROPIC_API_KEY='your-key-here'`
* Google Gemini: `export GOOGLE_API_KEY='your-key-here'`

*(Note: On Windows, use `set` instead of `export`.)*

***

### Running the Anonymizer

The tool provides an interactive, step-by-step CLI (Command Line Interface) to guide you through the process.

#### Choosing the Right Script

Depending on your file format, run one of the two commands below:

* For JSON Files: `python run_anonymizer.py`

  *(Note: This converts JSON to CSV before processing)*
* For CSV Files: `python run_anonymizer_csv.py`

#### The 9-Step Interactive Process

Once the script is running, follow these prompts:

1. Input File Selection: Provide the path to your source file.
2. Column Analysis: The tool scans your data structure.
3. Column Selection: Choose specifically which columns contain PII (Personally Identifiable Information).
4. Output File Selection: Define where the cleaned file should be saved.
5. LLM Provider Selection: Choose from OpenAI, Azure, Anthropic, Google, or a Local LLM.
6. Model Selection: Enter the specific model name (e.g., `gpt-4o` or `claude-3-5-sonnet`).
7. Output Language: Select the language for the anonymized text (Default: English).
8. Processing Data: The tool sends data to the LLM for masking.
9. Sample Results: Review a preview of the anonymized data before finishing.

***

### Supported LLM Providers

| **Provider**  | **Default Model**            | **Best For**                         |
| ------------- | ---------------------------- | ------------------------------------ |
| OpenAI        | `gpt-4o-mini`                | General purpose & speed              |
| Anthropic     | `claude-3-5-sonnet-20241022` | High-accuracy reasoning              |
| Google Gemini | `gemini-1.5-pro`             | Large context windows                |
| Local LLM     | User Defined                 | Privacy-sensitive, offline workflows |

***

### Frequently Asked Questions

Can I use a local model for privacy?

Yes. If you select Local LLM (Option 5), you can connect to any OpenAI-compatible API (like Ollama or LocalAI) to keep data processing on your own infrastructure.

What happens to my JSON structure?

The tool currently flattens JSON data into a CSV format during the `run_anonymizer.py` workflow to ensure consistent processing across the LLM providers.


# SSO Integration and IP filter

Birdie provides SSO integration to streamline identity and access management while ensuring compliance with your organization’s security policies. When SSO is enabled, you can also implement IP filtering, restricting access to your Birdie account exclusively to connections originating from approved organizational networks.

This capability can be activated as an add-on in your subscription.

Supported Protocols and detail:

* [SAML](https://auth0.com/docs/authenticate/protocols/saml/saml-configuration)
* [OpenID](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers)
* [AD/LDAP](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/active-directory-ldap)
* [Google Workspace](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/google-apps)
* [Azure](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/azure-active-directory-native)
* [Ping Federate](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/ping-federate)
* [Okta](https://auth0.com/docs/authenticate/identity-providers/enterprise-identity-providers/okta)

## SSO Setup

Once added to your subscription, SSO setup requires a combination of items that depend on the protocol you choose. Overall they typically include:

{% stepper %}
{% step %}

### Confirm protocol

Client IT confirms which protocol will be used.
{% endstep %}

{% step %}

### Share requirements

Birdie team shares the specific requirements needed for the chosen protocol.
{% endstep %}

{% step %}

### Schedule working session

Client IT and Birdie team schedule a working session for setup and validation.
{% endstep %}
{% endstepper %}

![SSO requirements diagram](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/sortffh1tp.png)

***

### High level security flow

![High level security flow](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/IuUugLSg85.png)

### SSO authentication flow

![SSO authentication flow](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/33urlO-WUu.png)


# SSO Groups

SSO Groups allow you to manage user permissions in Birdie through your Identity Provider (IdP). Instead of manually assigning roles and workspace access to each user, you can map IdP groups to Birdie **Access Groups**, so that permissions are automatically applied every time a user logs in via SSO.

{% hint style="info" %}
SSO Groups is an exclusive mode. When group claims are present in the SSO payload, role and workspace claims cannot be combined with group claims in the same integration.
{% endhint %}

## How It Works

{% stepper %}
{% step %}

#### IdP sends group claims

When a user authenticates, your Identity Provider includes group membership in the SSO payload (e.g., `"groups": ["support", "engineering"]`).
{% endstep %}

{% step %}

#### Birdie matches groups to Access Groups

Birdie matches the group values against **aliases** configured on Access Groups in your organization. Matching is case-insensitive and ignores extra whitespace.
{% endstep %}

{% step %}

#### Permissions are applied

Each matched Access Group has pre-configured resources and roles. These are automatically assigned to the user. Previous SSO-assigned memberships no longer in the payload are removed.
{% endstep %}
{% endstepper %}

***

## Prerequisites

* **SSO is active** on your organization ([SSO Integration and IP filter](/admin-and-settings/security/sso-integration-and-ip-filter)).
* Your **Identity Provider** is configured to send group claims in the SSO payload.
* You have **Admin** access in Birdie to manage Access Groups.

***

## Configuration Guide

### Step 1: Configure your Identity Provider

In your IdP (Okta, Azure AD, Google Workspace, etc.), configure a **groups** claim in the SSO assertion or token containing the list of group names the user belongs to.

Birdie looks for the claim in the `group` or `groups` attribute keys by default.

{% hint style="info" %}
If your IdP uses a different attribute name, contact the Birdie team to configure a custom attribute key for your organization.
{% endhint %}

**Example SSO payload:**

```json
{
  "email": "john@company.com",
  "groups": ["support", "engineering"]
}
```

### Step 2: Create Access Groups in Birdie

Navigate to **Settings > Access Groups** and create groups that map to your IdP groups.

{% stepper %}
{% step %}
**Create a new Access Group**

Click **"+ New group"** and provide a **name** and optional **description**.

The group name is automatically registered as an alias — if it matches the value sent by your IdP, no additional configuration is needed.
{% endstep %}

{% step %}
**Configure aliases (if needed)**

If the group name in your IdP differs from the Access Group name in Birdie, add **aliases** so Birdie can match them.

For example, if your IdP sends `"eng-team"` but your Access Group is named `"Engineering"`, add `"eng-team"` as an alias. You can add multiple aliases per group.

{% hint style="warning" %}
Alias matching is normalized (lowercased, trimmed). Ensure the alias matches the string your IdP sends.
{% endhint %}
{% endstep %}

{% step %}
**Assign resources and roles**

For each Access Group, configure the **resources** and **role** that members should receive:

* **Organization** — grants an organization-level role (e.g., Viewer, Analyst, Admin).
* **Workspace** — grants access to a specific workspace with a given role.

A single Access Group can contain multiple resource assignments.
{% endstep %}
{% endstepper %}

### Step 3: Validate the integration

1. Have a test user log in via SSO.
2. Verify the user is assigned to the correct Access Groups.
3. Confirm workspace access and roles match the expected configuration.

{% hint style="success" %}
Permissions are synchronized on every login. Changes to Access Group resources or IdP group memberships take effect on the next SSO login.
{% endhint %}

***

## Important Behaviors

* **Exclusive mode** — SSO Groups cannot be used alongside role or workspace claims. If both are present, the login will be rejected.
* **Automatic sync** — Users are added to matched groups and removed from SSO-assigned groups no longer in the payload. Manually assigned memberships are not affected.
* **Multiple groups** — A user can belong to multiple groups. Permissions from all matched groups are combined.
* **Empty payload** — If the groups claim is present but empty, all SSO-assigned group memberships are removed.

***

## Example

| IdP Group     | Access Group | Aliases              | Resources                                            |
| ------------- | ------------ | -------------------- | ---------------------------------------------------- |
| `support`     | Support      | `support`            | Workspace "Customer Service" (Analyst)               |
| `engineering` | Engineering  | `engineering`, `eng` | Organization (Viewer), Workspace "Product" (Analyst) |
| `leadership`  | Leadership   | `leadership`, `exec` | Organization (Admin)                                 |

A user with IdP groups `["support", "engineering"]` would receive:

* Workspace **Customer Service** as **Analyst**
* Organization-level **Viewer** role
* Workspace **Product** as **Analyst**

***

## FAQ

<details>

<summary>Can I use SSO Groups and role/workspace claims together?</summary>

No. SSO Groups is an exclusive mode. Choose one approach per SSO integration.

</details>

<details>

<summary>What happens if an IdP group does not match any Access Group?</summary>

Unmatched values are silently ignored. Only groups with a matching alias in Birdie are applied.

</details>

<details>

<summary>Can I assign a user to an Access Group both manually and via SSO?</summary>

Yes. Manual assignments are independent from SSO. SSO login only syncs SSO-sourced memberships.

</details>

<details>

<summary>How do I change the SSO attribute key for groups?</summary>

Contact the Birdie team to configure a custom attribute key for your organization.

</details>


# Birdie’s GenAI security

## GenAI Models Used

Birdie employs a combination of Generative AI models to ensure optimal performance and security in its solution. The currently integrated models include:

* **OpenAI GPT** (via API)
* **Anthropic Claude** (via API)
* **Google Gemini** (via API)
* **Meta LLaMA** (self-hosted)
* **Whisper** (self-hosted)

## Proprietary Models and Foundation Models

In addition to public models, Birdie also develops and uses proprietary models based on **SLMs (Self-Hosted Language Models)**, such as:

* **DeBERTa** ([documentation](https://huggingface.co/docs/transformers/en/model_doc/deberta-v2))
* **RoBERTa** ([documentation](https://huggingface.co/docs/transformers/en/model_doc/roberta))

These models are utilized for specific natural language processing tasks and to enhance the Birdie solution.

## GenAI Integration in the Solution

Generative AI technology is integrated into Birdie in various ways, including:

* **Data processing via data pipelines**
* **Integration with RAG (Retrieval-Augmented Generation) in the application interface**

## GenAI Use Cases in Birdie

Birdie’s Generative AI is mainly used for:

* **Data enrichment:** Automatic classification and extraction of relevant information.
* **In-app assistant (RAG):** Generating contextualized responses based on proprietary data.

## Data Usage Policy and Model Training

Birdie ensures that data used in tests (Proof of Concept - PoC) will not be used for refining or training AI models. The training process follows best practices, including:

* Base model training only occurs with a trigger and human supervision.
* Use of **synthetic data** for training.
* Implementation of **cross-validation techniques** (10-fold cross-validation, train-validation-test).
* **Continuous LLM adaptation via RAG**, allowing customization based on client feedback without affecting the global model.
* Models are **evaluated** using client data, but neither Birdie nor third-party providers train on client data.

## Security Measures and Guardrails

To ensure the safe use of Generative AI, Birdie implements several **guardrails** in its solution, including:

### Prevention of Prompt Injection Attacks

* Using prompt engineering techniques to mitigate **Prompt Injection**.
* Implementing data cleaning and filtering to reduce **Indirect Prompt Injection**.

### Access Control and Privacy

* **Limited data access by design:** The LLM has no autonomy to apply arbitrary filters to data.
* **Sensitive data removal during ingestion:** The LLM **does not have access** to confidential customer information.

### Hallucination Reduction

* Guiding responses based on real data to **minimize hallucinations** and ensure accurate information.

## Conclusion

Birdie adopts a robust set of measures to ensure that Generative AI is used securely, effectively, and in alignment with industry best practices. For more information on our security and privacy policies, please contact our support team.


# IT Guide: Whitelisting Birdie Domains and URLs

To ensure the Birdie platform and its communication tools function correctly within your corporate network, please provide the following details to your IT or Network Security department.

#### 1. Email Deliverability (Critical)

Birdie uses SendGrid to send transactional emails (e.g., Magic Links, password resets, and notifications). To prevent these from being quarantined, please whitelist our dedicated sending IP.

* Dedicated IP: `159.183.194.121`
* Region: US
* Recommended Action: Add this IP to your "Allow List" in your Email Security Gateway (SEG) and ensure emails from `@birdie.ai` are not subject to rate limiting or aggressive spam filtering.

***

#### 2. Primary Application & API Domains

These domains are essential for the core functionality of the Birdie Hub.

| **Service**       | **URL**                                         |
| ----------------- | ----------------------------------------------- |
| Main Application  | `https://app.birdie.ai/`                        |
| Core API Services | `https://app-v1.api.search.services.birdie.ai/` |
| Authentication    | `https://birdie-v1-prod.us.auth0.com/`          |

***

#### 3. Static Assets & External Resources

Birdie loads essential UI elements (fonts, icons, and libraries) from these trusted CDNs. If these are blocked, the app may appear "broken" or fail to load.

* Fonts: `https://fonts.googleapis.com` and `https://fonts.gstatic.com`
* Media/Images: `https://res.cloudinary.com`
* Code Libraries: `https://cdn.jsdelivr.net`
* CSV Exports: `https://storage.googleapis.com/birdie-feedback-exporter-production/`
  * Exported CSV links expire after 7 days

***

#### 4. Monitoring & Analytics (Support Tools)

We use these tools to troubleshoot user issues and monitor platform performance.

* Error Tracking: `https://*.sentry.io`
* Product Insights: `https://*.posthog.com`, `https://us-assets.i.posthog.com`, and `https://ph.birdie.ai`
* Tag Management: `https://www.googletagmanager.com` and `https://tagmanager.google.com`

***

#### 5. Support & Security Centers

* Help Center: `https://ask.birdie.ai`
* Trust Center: `https://trust.birdie.ai`

***

#### 6. Data Integration IPs - Infrastructure filter

* US Infra
  * 34.69.35.144
  * 34.70.64.29
  * 34.132.200.227
  * 34.136.243.54
  * 34.173.188.206
  * 34.173.255.152
  * 35.254.102.62
  * 35.255.147.136
  * 136.65.162.196
  * 136.119.138.10
  * 146.148.52.127
  * 173.255.112.126
* BR Infra
  * 34.151.242.162
  * 34.95.177.240

***

#### Summary for Network Administrators

* Protocol: HTTPS / TLS 1.2+
* Port: 443
* Wildcard Recommendation: If possible, whitelist `*.birdie.ai` to future-proof your configuration.

> Troubleshooting Tip: If users can reach the website but cannot log in, please verify that the Auth0 and Birdie API URLs (listed in Section 2) are not being intercepted by a SSL/TLS inspection proxy.


# FAQs - Architecture & Tech

## Solution Architecture FAQs

<details>

<summary>What is the technical architecture of the solution?</summary>

Birdie's platform is structured in layers, each performing distinct roles. The ingestion layer collects, receives, and validates customer data. The enrichment layer applies various models to identify patterns and extract insights. Finally, raw and enriched data are consolidated in the application layer, which the client exclusively interacts with. Public data traffic uses HTTPS, while internal communication between services occurs over a private network. Birdie’s infrastructure is hosted on Google Cloud Platform (GCP) - region: us-central-1 Iowa.

For companies in Brazil, due to LGPD, **Ingestion and anonymization steps run in Google Cloud Platform (GCP) - region: southamerica-east-1** prior to final persistence at the global index in GCP region: us-central-1 Iowa.

</details>

<details>

<summary>What is the recommended hosting option for the AI solution?</summary>

Birdie provides fully managed SaaS hosting, meaning clients access the Birdie application directly. We do not offer AI models as a service like OpenAI or similar companies.

</details>

<details>

<summary>What support does Birdie provide for the AI solution?</summary>

Birdie offers SLAs to ensure platform availability and conducts training sessions to help clients maximize the solution’s potential. Note that Birdie’s solution operates independently of client business processes, so temporary service interruptions do not result in financial losses for the client.

</details>

<details>

<summary>Is there a development roadmap for the AI solution?</summary>

Yes, Birdie’s system is continuously evolving, with clients directly influencing the roadmap. Currently, the focus is on refining the solution for Fintechs and related sectors, ensuring clients benefit from these developments.

</details>

<details>

<summary>How scalable is Birdie’s AI architecture?</summary>

Birdie currently processes an average of 50 million feedbacks per month, with the capacity to handle hundreds of millions under load testing. Scalability is ensured by a combination of large language models (LLMs) and specific smaller models (SLMs) trained in-house for optimal processing power and cost efficiency.

</details>

<details>

<summary>What are the integration requirements with existing client systems?</summary>

Birdie requires well-defined data sources for integration. We provide connectors to data lakes, APIs, and even web crawlers for data ingestion. Data enrichment results can be returned to the client's data lake if needed.

</details>

<details>

<summary>How does Birdie manage infrastructure—cloud or on-premises?</summary>

Birdie operates on GCP with virtual separation of instances and offers physical separation at an additional cost, based on feedback volume. We use anonymized data, relying on IDs for analysis without handling PII.

* Birdie currently operates with three databases: vector, text, and analytical.
* The Birdie solution does not rely on the ingestion of PII (Personally Identifiable Information). We use anonymized records, cross-referencing only IDs to perform the necessary associations for segmented analyses without utilizing any sensitive data or risking client identification.
* Data ingestion must remain PII-free, even in cloud deployments, which significantly mitigates any potential leaks.
* Nonetheless, we implement security practices aligned with the best industry standards, as if we were handling data with PII.
* An on-premises solution is possible but highly costly due to the complexity of the Birdie platform.
* The recommendation is to consider this on-premises alternative only in a later implementation phase, particularly if ingesting sensitive data becomes necessary.

</details>

<details>

<summary>What integrations and data sources are available?</summary>

Birdie supports [numerous integrations and crawlers](https://birdie.ai/integrations/) for feedback ingestion. For additional integrations outside the contracted scope, setup fees apply.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/itikXeG09r.png)

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/o9s_uVnE6X.png)

</details>

***

## Security

<details>

<summary>What authentication and access control measures are implemented? Is SSO available?</summary>

Authentication is via email/password or OAuth, with SSO available upon request. Each client manages user permissions within their organization. SSO incurs additional costs and must be negotiated with our commercial team.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/OAX5F4NBJx.png)

</details>

<details>

<summary>Does Birdie comply with data protection regulations like LGPD?</summary>

Yes, Birdie is SOC 2 Type 2 certified and adheres to local data regulations, including LGPD.

</details>

<details>

<summary>Does Birdie follow compliance standards?</summary>

Yes, Birdie implements security measures comparable to handling sensitive data, verified through SOC 2 Type 2 audits.

</details>

<details>

<summary>Will the solution require internal data sharing?</summary>

No sensitive data is required. Birdie uses anonymized user feedback and identifiers provided by the client to perform data segmentation.

</details>

<details>

<summary>How is user management and permission control handled?</summary>

Birdie provides two user roles:

* All Access (Admin): Full permissions, including inviting users and managing profiles.
* View Only: Limited to viewing data, searching, filtering, exporting feedback, and using the Birdie Assistant.

</details>

<details>

<summary>How does Birdie secure authentication for data access?</summary>

All web and API traffic is encrypted using HTTPS/TLS 1.2. API data ingestion is secured through API keys. We also support secure platform connectors and utilize IAM roles in GCP/AWS for secure data integration.

</details>

<details>

<summary>How is the solution monitored for performance and security?</summary>

Birdie uses Google Cloud Logging for real-time alerts, a public status page, and audit logs. Security monitoring is enhanced with Vanta to track vulnerabilities and ensure timely patching. Multiple backup layers provide resilience and disaster recovery.

</details>

***

## AI & NLP Models

<details>

<summary>What AI models are used in the solution?</summary>

Birdie employs a combination of LLMs and SLMs. Recent base models include:

* Closed LLMs: GPT (OpenAI), Gemini (Google), Claude (Anthropic)
* Open LLMs: Llama (Meta)
* SLMs: DeBERTa, RoBERTa

</details>

<details>

<summary>What is the data protection policy for external LLMs?</summary>

External LLMs comply with strict data protection agreements ensuring no customer data is used for model training. Providers include OpenAI, Google, and Anthropic, each with clear data governance policies.

</details>

<details>

<summary>What AI techniques are applied?</summary>

Birdie leverages Machine Learning (ML), Text Mining (TM), and Natural Language Processing (NLP). Techniques include traditional algorithms like Random Forests and fine-tuning neural networks using ensemble methods and Retrieval-Augmented Generation (RAG) workflows.

</details>

<details>

<summary>Does Birdie train models using client data?</summary>

No. Models are evaluated using client data, but neither Birdie nor third-party providers train on client data.

</details>

***

## Benchmark & Model Quality

Birdie evaluates AI performance using metrics such as:

* Coverage of Opportunities: 89%
* Precision of Analysis: 94%

***

## Security Measures in Birdie’s GenAI Solution

<details>

<summary>GenAI Models Used</summary>

Birdie employs a combination of Generative AI models to ensure optimal performance and security in its solution. The currently integrated models include:

* OpenAI GPT (via API)
* Whisper (self-hosted)
* Google Gemini (via API)
* Meta LLaMA (self-hosted)

</details>

<details>

<summary>Proprietary Models and Foundation Models</summary>

In addition to public models, Birdie also develops and uses proprietary models based on SLMs (Self-Hosted Language Models), such as:

* DeBERTa ([documentation](https://huggingface.co/docs/transformers/en/model_doc/deberta-v2))
* RoBERTa ([documentation](https://huggingface.co/docs/transformers/en/model_doc/roberta))

These models are utilized for specific natural language processing tasks and to enhance the Birdie solution.

</details>

<details>

<summary>GenAI Integration in the Solution</summary>

Generative AI technology is integrated into Birdie in various ways, including:

* Data processing via data pipelines
* Integration with RAG (Retrieval-Augmented Generation) in the application interface

</details>

<details>

<summary>GenAI Use Cases in Birdie</summary>

Birdie’s Generative AI is mainly used for:

* Data enrichment: Automatic classification and extraction of relevant information.
* In-app assistant (RAG): Generating contextualized responses based on proprietary data.

</details>

<details>

<summary>Data Usage Policy and Model Training</summary>

Birdie ensures that data used in tests (Proof of Concept - PoC) will not be used for refining or training AI models. The training process follows best practices, including:

* Base model training only occurs with a trigger and human supervision.
* Use of synthetic data for training.
* Implementation of cross-validation techniques (10-fold cross-validation, train-validation-test).
* Continuous LLM adaptation via RAG, allowing customization based on client feedback without affecting the global model.

</details>

<details>

<summary>Security Measures and Guardrails</summary>

To ensure the safe use of Generative AI, Birdie implements several guardrails in its solution, including:

* Prevention of Prompt Injection Attacks: using prompt engineering techniques to mitigate prompt injection and data cleaning/filtering to reduce indirect prompt injection.
* Access Control and Privacy: limited data access by design; the LLM has no autonomy to apply arbitrary filters to data; sensitive data removal during ingestion so the LLM does not have access to confidential customer information.
* Hallucination Reduction: guiding responses based on real data to minimize hallucinations and ensure accurate information.

</details>

***

## Conclusion

Birdie adopts a robust set of measures to ensure that Generative AI is used securely, effectively, and in alignment with industry best practices. For more information on our security and privacy policies, please contact our support team.


# LGPD & Data Privacy (Brazil)

This page documents the Brazil-specific aspects of how Birdie anonymizes and protects personal data under the *Lei Geral de Proteção de Dados* (LGPD). It complements the region-neutral [Data Anonymization Process — Speech-to-Text Pipeline](/admin-and-settings/security/data-anonymization-process-speech-to-text), which describes the end-to-end flow, the categories of PII removed, and the redaction techniques used.

## Anonymization under LGPD Art. 12

LGPD Art. 12 places **anonymized data** outside the scope of the law: data that, by reasonable and available technical means, can no longer be associated with an individual. The LGPD distinguishes this from **pseudonymized data**, where the link to the individual is merely replaced by a reversible reference that can be restored using additional information — which is **not** sufficient to take data out of scope.

Birdie's redaction produces anonymized data, not pseudonymized data. The full technical argument — destructive replacement with a single fixed `[REDACTED]` label, no mapping table/token vault/key, a one-way transformation, and persistence of only the redacted text — is set out in [Why the Result Is Irreversible Anonymization](https://ask.birdie.ai/admin-and-settings/security/pages/KVG8N1hWhb96LALkNqcZ#4.-why-the-result-is-irreversible-anonymization).

Applied to Art. 12: because no "additional information" capable of reversing the redaction is ever produced or stored, the redacted transcript cannot be re-associated with an individual by reasonable technical means. It therefore meets the LGPD's irreversibility criterion for anonymized data.

## Brazilian identifiers redacted

In addition to the general PII categories (names, phone numbers, email addresses, physical addresses, credit cards, bank accounts, passwords, dates), Birdie applies dedicated pattern rules for Brazilian identifiers:

| Identifier | Example                                        |
| ---------- | ---------------------------------------------- |
| CPF        | `123.456.789-00`, `12345678900`                |
| RG         | `12.345.678-9`                                 |
| CNH        | 11-digit license numbers                       |
| Bank data  | `Banco 001`, `Agência 1234`, `Conta 1234567-8` |

These patterns run as the deterministic safety net (Stage 2) described in the [anonymization pipeline](https://ask.birdie.ai/admin-and-settings/security/pages/KVG8N1hWhb96LALkNqcZ#3.-how-the-anonymization-works), after the semantic (language-model) redaction stage.

## Data residency for Brazil

{% hint style="info" %}
For clients in Brazil, in compliance with the LGPD, transcription and anonymization run in GCP region `southamerica-east-1` prior to final persistence at the global index in GCP region `us-central-1`, Iowa.
{% endhint %}

***

**See also:**

* [Data Anonymization Process — Speech-to-Text Pipeline](/admin-and-settings/security/data-anonymization-process-speech-to-text) — full flow, PII categories, and redaction techniques.
* [PII & PHI anonymization](/admin-and-settings/security/pii-and-phi-anonymization) — the two anonymization paths and the full list of PII/PHI types.
* [UK, GDPR & Data Privacy FAQ](/admin-and-settings/security/uk-gdpr-and-data-privacy-faq) — international data-transfer and privacy questions.

#### Additional sources

* [Privacy Policy](https://birdie.ai/privacy-policy)
* [Data Processing Agreement](https://birdie.ai/data-processing-agreement)
* [Security Policy](https://birdie.ai/security-policy)
* [Trust Center](https://trust.birdie.ai/)


# UK, GDPR & Data Privacy FAQ

#### How is my data used? Do you train AI models with it?

No. We maintain a strict separation between customer data and our model development. Our AI is trained exclusively on public datasets and synthetic data. Your inputs, feedback, and transcriptions are used solely for your specific analysis and platform features.

{% hint style="info" %}
Note: We may use data samples solely to evaluate models and ensure quality and fit, but only with prior client approval.
{% endhint %}

#### Can we keep our data within our own region or network?

While our primary cloud storage is located in the US, we support On-Premise or Localized Anonymization to help you comply with data residency requirements. You can run the Birdie anonymizer within your local infrastructure (EU or UK). This ensures that PII is scrubbed before it ever leaves your controlled environment for the US-based analytical platform.

#### What is the data retention policy?

We retain customer data only for the period necessary to fulfill the services outlined in your contract and to comply with legal obligations. Upon termination of our agreement, all customer data is securely deleted or anonymized within a defined period, in line with your instructions and our internal data deletion protocol.

#### How do you handle data breaches?

In the unlikely event of a security incident affecting personal data, Birdie AI will take immediate steps to contain the incident and assess the risk. We are committed to notifying the relevant supervisory authority and affected customers without undue delay (within 72 hours), when the breach is likely to result in a risk to your rights and freedoms.

#### Who oversees security compliance?

Our security posture is validated by a SOC 2 Type II attestation and managed by our Data Protection Officer (DPO), Rafael Libardi, and Security team. You can contact the team at <security@birdie.ai>.

***

### International Data Transfers (EU & UK)

Birdie AI ensures lawful data transfers from Europe to the US through the Data Privacy Framework (DPF) program, enforced by the US Federal Trade Commission (FTC).

#### EU-U.S. Data Privacy Framework: Active

* Status: Birdie AI is certified to transfer HR and Non-HR data from the EU to the US without needing Standard Contractual Clauses (SCCs).
* Certification Date: 11/20/2025

#### UK Extension to the DPF: Active

* Status: Birdie AI is certified to transfer data from the UK under the UK Extension.
* Certification Date: 11/20/2025

<br>

You can verify our active status for both frameworks by searching for "Birdie AI" on the [Data Privacy Framework List](https://www.dataprivacyframework.gov/list).

***

### UK Section

#### How does Birdie AI handle my data under the UK GDPR?

Birdie AI is an active participant in the UK Extension to the EU-U.S. Data Privacy Framework. This means we are legally recognized as providing a level of data protection essentially equivalent to that of the United Kingdom.

Since 2023, the UK has recognized the EU-U.S. Data Privacy Framework (DPF) as a valid transfer mechanism when the UK Extension is applied. Birdie AI maintains an active certification under this extension. This acts as an "Adequacy Decision" for the organization, permitting the transfer of personal data from the UK to US-based cloud infrastructure without the friction of individualized Standard Contractual Clauses (SCCs).

Adequacy via UK Extension: Since 11/20/2025, Birdie AI has maintained an active certification under the UK Extension to the EU-U.S. Data Privacy Framework. This allows for the seamless transfer of personal data from the UK to the US without requiring additional Standard Contractual Clauses (SCCs) in many instances, as the UK government recognizes this framework as providing "essentially equivalent" protection.

#### Who is the independent recourse mechanism for UK residents?

If a privacy complaint is not resolved by us within 45 days, UK residents have access to free, independent dispute resolution:\ <br>

* For HR Data: The UK Information Commissioner’s Office (ICO).
* For Non-HR Data: JAMS (International Arbitration and Mediation Provider).

***

#### Additional Sources

* [Privacy Policy](https://birdie.ai/privacy-policy)
* [Data Processing Agreement](https://birdie.ai/data-processing-agreement)
* [Security Policy](https://birdie.ai/security-policy)
* [Trust Center](https://trust.birdie.ai/)

\ <br>


# Export / Import CSV

{% tabs %}
{% tab title="Export" %}
Birdie provides four interrelated CSV files when exporting user feedback data. This document explains their structure, relationships, and common usage rules.

### feedbacks.csv — Main Feedback Export

This file contains raw records of all feedback captured in your Birdie account, based on the filters applied at export time.

Each row represents a unique piece of feedback. Feedback may or may not be mapped to any area or opportunity. Unmapped feedback is common and can include irrelevant or neutral comments.

Key fields:

* Ingested\_ID
* Posted\_at
* Text
* Source
* Rating
* Account\_id
* Language
* ... (extra fields)

### areas.csv — Feedback to Area Relationships

This file lists feedbacks that have been associated with one or more Areas configured in your Birdie account.

A single feedback can be linked to multiple areas. Feedback not associated with any area will not appear in this file.

Key fields:

* Feedback Ingested ID
* Area\_ID
* Area\_Name
* (Also may contain Feedback ID, Area ID, Area Name as additional fields)

### opportunities.csv — Relationship Between Feedbacks, Areas, and Opportunities

This file lists cases where feedback has been mapped to both an Interest Area and a Business Opportunity.

Feedbacks with positive sentiment or without friction typically do not generate opportunities, so they may appear in areas.csv but not in opportunities.csv.

Key fields:

* Feedback Ingested ID
* opportunity\_id
* opportunity\_name
* (Also may contain Feedback ID, Area ID, Area Name, Signal Type)

### area\_opportunities.csv — Linking Areas and Opportunities

This file defines the many-to-many relationship between Areas and Opportunities. Previously this relationship was included in opportunities.csv; it has been moved into its own file for clarity and flexibility.

Each row represents a unique pairing between an area and an opportunity.

Key fields:

* area\_id
* opportunity\_id

## Linking and Rules

* All files use the field ingested\_id (in feedbacks.csv) and area\_id / opportunity\_id as linking keys between tables.
* You can join them using the following logic:

Examples:

* Feedback → Areas\
  feedbacks.ingested\_id = areas.ingested\_id\
  Find all areas mentioned in feedback.
* Feedback → Opportunities\
  feedbacks.ingested\_id → areas.ingested\_id → area\_opportunities.area\_id → opportunities.opportunity\_id\
  Trace which feedback generated specific opportunities.
* Area ↔ Opportunity\
  area\_opportunities.area\_id = areas.area\_id and area\_opportunities.opportunity\_id = opportunities.opportunity\_id\
  Link opportunities to their respective areas.

## Typical Data Presence Rules

* A feedback may appear only in feedbacks.csv if it hasn’t been mapped to any area or opportunity.
* A feedback may appear in areas.csv but not in area\_opportunities.csv if no opportunity was identified in that area.
* A feedback appears in all four files if it is linked to both an area and an opportunity.

## Additional Fields

The following additional fields are present in the CSVs but are typically used for internal or metadata purposes:

feedbacks.csv

* ID, Batch ID, Ingested At, Updated At
* Messages First Posted At, Messages Last Posted At, Total Messages
* Accounts, Custom Fields, Channel, Kind Name
* Source Alias, Status, Priority, Subject, Category, URL

areas.csv

* Feedback ID, Area ID, Area Name

opportunities.csv

* Feedback ID, Area ID, Area Name
* Opportunity ID, Opportunity Name
* Signal Type

## Diagram — Birdie CSV Data Export Structure

Below is a conceptual diagram that illustrates the relationship between the CSVs:

```
+--------------------+
|    feedbacks.csv   |
|--------------------|
| ingested_id (PK)   |
| posted_at          |
| text               |
| source             |
| rating             |
| account_id         |
| language           |
| ... (extra fields) |
+--------------------+
         |
         | 1
         |────────┐
         |       |
  0..*   |       |   0..*
+--------------------+     +-----------------------------+
|      areas.csv     |     |   area_opportunities.csv    |
|--------------------|     |-----------------------------|
| ingested_id (FK)   |     | area_id (FK)                |
| area_id (PK)       |     | opportunity_id (FK)         |
| area_name          |     +-----------------------------+
+--------------------+               |
                                     | 0..*
                                     |
                                     | 1
                          +---------------------------+
                          |     opportunities.csv     |
                          |---------------------------|
                          | opportunity_id (PK)       |
                          | opportunity_name          |
                          | signal_type               |
                          | ... (extra fields)        |
                          +---------------------------+
```

{% endtab %}

{% tab title="Import" %}
Opening the exported CSV from Birdie in Excel can become a hassle. In order to properly import all the csv rows into a new Excel File, follow these steps:

{% stepper %}
{% step %}

### In a new Excel file, open the Data panel

Click the Data tab in the toolbar.
{% endstep %}

{% step %}

### Choose Get Data

Click the Get Data option.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/COEdWVnwj1.png)
{% endstep %}

{% step %}

### In the Import wizard, choose Text/CSV

Select the Text/CSV option in the import wizard.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/7jba3DrKdE.png)
{% endstep %}

{% step %}

### Browse and select your CSV file

Locate and select the CSV file you exported from Birdie.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/m2p8gWejWZ.png)
{% endstep %}

{% step %}

### Select the delimiter

If Excel doesn't detect it automatically, select Comma as the delimiter.
{% endstep %}

{% step %}

### Load the data

Click Load to import the CSV into Excel.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/9PsA9rYBlt.png)
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}


# Birdie MCP Server

Birdie's MCP (Model Context Protocol) server connects AI assistants to your Customer Intelligence analytics platform. It lets LLMs query customer feedback, explore trends, and generate Customer Intelligence reports using natural language.

It works with any MCP-compatible client — Claude, ChatGPT, Gemini, Cursor, and more.

## How It Works

The MCP server exposes a set of tools that AI assistants can call to interact with your organization's feedback data. When you connect an MCP client to Birdie, the assistant can:

* Identify your organization and personalize responses
* Explore your taxonomy — areas, opportunities, segments, collections, and feedback sources
* Query feedback with filters, grouping, and metrics
* Read individual feedback items in detail

You sign in with your Birdie account. Each request is scoped to your organization — the assistant only sees your data.

## How to setup

### Prerequisites

* An MCP-compatible client (Claude, Cursor, Claude Code, Claude Desktop, etc.)
* A Birdie account

### Client specific setup

* [Claude Desktop](/integrations-and-data-ingestion/birdie-mcp-server/mcp-guide-claude-desktop)
* [Claude.ai (web)](#claude.ai-web)
* [Claude Code (CLI)](#claude-code-cli)
* [Cursor](#cursor)
* [Other MCP clients](#other-mcp-clients)
* [Through Gateways and Proxies](#mcp-gateways-and-proxies)

## Day-to-Day Usage

### Getting Started

Start by asking the assistant to learn about your organization:

> *"What's our organization context and what data sources do we have?"*

This triggers a couple of tools (`get_context` and `get_taxonomy`) that give the assistant the full picture before it runs any queries.

### Example Queries

* *"What are the top 5 complaints this month?"*
* *"Show me NPS trends over the last 6 months"*
* *"Find negative feedback about onboarding from enterprise customers"*
* *"Compare satisfaction scores across our data sources"*
* *"How many feedbacks did we receive this quarter, grouped by segment?"*
* *"What's the CSAT score for our support tickets last month?"*
* *"Show me the impact score breakdown by area"*

## Technical Details

### Available Tools

| Tool                  | Description                                                                                                                          |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `get_context`         | Get your organization's name and description. The assistant calls this first to personalize its responses.                           |
| `get_taxonomy`        | Discover your areas, opportunities, segments, collections, and feedback sources. Returns entity names and IDs needed for filtering.  |
| `get_schema`          | Get available fields, metrics, and filter syntax. Returns exact field paths and valid values for querying.                           |
| `query_feedback`      | Query feedback with filters, grouping, and metrics. Supports sentiment breakdowns, time-based analysis, text search, and pagination. |
| `get_feedback_detail` | Get full details for a specific feedback item — text, sentiment, labels, accounts, custom fields, and metadata.                      |

Some organizations have additional tools enabled depending on their plan and configuration. These may not appear for every account:

| Tool                     | Description                                                                                   |
| ------------------------ | --------------------------------------------------------------------------------------------- |
| `get_workspaces`         | List the workspaces available to you. Returned only when workspaces are enabled for your org. |
| `get_workspace_settings` | Get a workspace's behavior preferences, language, enabled modules, and blocklist.             |

#### Typical Workflow

1. `get_context` — learn who the organization is
2. `get_taxonomy` — understand the data landscape (what areas, segments, sources exist)
3. `get_schema` — discover available metrics, fields, and valid filter values
4. `query_feedback` — run queries with filters and grouping
5. `get_feedback_detail` — dive into individual feedback items

### Setup

#### Claude Desktop

* Follow [these instructions](/integrations-and-data-ingestion/birdie-mcp-server/mcp-guide-claude-desktop).

#### Claude.ai (web)

1. Go to [claude.ai](https://claude.ai) and open **Settings > Connectors**
2. Click **Add Connector** and enter the MCP server URL:

```
https://app-api.birdie.ai/mcp
```

3. You'll be redirected to the Birdie login page — sign in with your Birdie account
4. Once authenticated, the Birdie tools will appear in your chat

That's it. Claude handles the OAuth flow automatically.

#### Claude Code (CLI)

```bash
claude mcp add birdie -- npx -y mcp-remote https://app-api.birdie.ai/mcp
```

On first use, a browser window will open for you to log in with your Birdie account.

{% hint style="info" %}
Requires Node.js installed (for `npx`). The `mcp-remote` package is downloaded automatically on first run.
{% endhint %}

#### Cursor

Add this to your Cursor MCP settings (`.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "birdie": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://app-api.birdie.ai/mcp"
      ]
    }
  }
}
```

On first use, a browser window will open for you to log in.

#### Other MCP Clients

Any MCP client that supports OAuth 2.1 can connect using the server URL:

```
https://app-api.birdie.ai/mcp
```

The server exposes standard OAuth discovery at `/.well-known/oauth-authorization-server`.

#### MCP Gateways & Proxies

If you connect through an MCP gateway or proxy (e.g. *Runlayer*), configure it as follows:

* **Registration:** choose **Dynamic Client Registration** (DCR). Birdie publishes a `registration_endpoint`, so the client registers itself automatically — you do **not** enter a Client ID or Client Secret by hand. If your proxy is set to "Pre-registered Client" and asks for those values, switch it to Dynamic Client Registration.
* **Client Secret:** leave it **blank**. Birdie MCP is a **public OAuth client** (`token_endpoint_auth_methods_supported: ["none"]`) and uses PKCE — there is no client secret.
* **Scopes:** request `openid profile email offline_access`.
* **Callback URL:** the gateway's hosted callback URL must be approved on Birdie's side before login will work (see the hint below).

{% hint style="warning" %}
Birdie only accepts OAuth callbacks from approved hosts. A hosted gateway's redirect/callback URL must be added to Birdie's allowlist first — otherwise the authorization request is rejected before the login screen appears. Send your gateway's callback URL to your Birdie contact to have its host approved.
{% endhint %}

### Authentication

Birdie MCP uses **OAuth 2.1 with PKCE** — you sign in with your regular Birdie account.

* When you connect, you'll be redirected to the Birdie login page
* After signing in, the MCP client receives an access token automatically
* Your organization is resolved from your account, so you only see your own data
* If you log out of Birdie, the MCP connection will disconnect and you'll need to re-authenticate
* Sessions may expire periodically — your client will prompt you to re-authenticate when needed

Birdie MCP is a **public OAuth client** and supports **Dynamic Client Registration** (RFC 7591), so MCP clients register themselves automatically — there is no client secret to configure. The scopes used are `openid profile email offline_access`.

#### Tips

* The assistant will call `get_schema` to understand available fields before querying — this is normal
* For complex questions, the assistant may make multiple tool calls (schema → query → detail)
* All queries are scoped to your organization automatically
* Use `get_taxonomy` to discover available IDs for area, opportunity, segment, and collection filters
* For large datasets, the assistant can paginate through results automatically
* Text search (`text` filter) works across all feedback content

### Known Limitations

* **Workspace filtering** — unless workspaces are enabled for your organization, the assistant sees all data in the organization regardless of workspace configuration.
* **Session expiry** — sessions may expire periodically depending on token lifetime. Your client will prompt you to re-authenticate when needed.

### Troubleshooting

#### Tools disappear or "Authentication required" appears mid-conversation

Your session may have expired. Disconnect and reconnect the Birdie connector in your client settings, then sign in again.

#### A gateway/proxy asks for a Client ID and Client Secret

Birdie MCP uses **Dynamic Client Registration** and is a **public OAuth client**, so there is no client secret to provide. If your proxy (e.g. Runlayer) prompts for these values, its **Registration** is set to "Pre-registered Client" — switch it to **Dynamic Client Registration** and leave **Client Secret** blank. The client will register itself and obtain a Client ID automatically.

#### "Callback URL mismatch" or "redirect\_uri not allowed" error

This happens when the OAuth redirect URL isn't on Birdie's allowlist of approved callback hosts.

* **Claude (claude.ai)**: Should work out of the box. If not, contact your Birdie admin.
* **CLI tools (Claude Code, Cursor)**: These use `mcp-remote` which picks a random local port for the callback. Your Birdie admin may need to whitelist additional callback URLs.
* **Gateways/proxies (e.g. Runlayer)**: The gateway's hosted callback URL must be added to Birdie's allowlist. Send the exact callback/redirect URL (or paste the URL shown in the error) to your Birdie contact to have its host approved.

#### Login succeeds but the connection fails with a `401`

The access token is most likely missing the `email` scope. Make sure your client or gateway requests `openid profile email offline_access` — Birdie resolves your account from the email claim, and without it the session can't be authorized.

#### Connection drops or intermittent disconnects

* Make sure you only have one MCP client connected to Birdie at a time (e.g., don't have both Claude Desktop and Claude web connecting simultaneously)
* SSE connections may time out on long idle periods — the client should reconnect automatically


# Claude Desktop Setup

Connecting Birdie to Claude Desktop lets you pull your feedback data, run analyses, and explore your customers’ feedback directly inside any Claude chat. The setup takes about a minute. Here's how to do it.

{% hint style="warning" %}
Claude Desktop evolves very rapidly, and the screenshots below may be outdated by the time you read this guide. They are, however, representative of the steps needed to connect it to the Birdie MCP Server
{% endhint %}

> *Before you start*
>
> Make sure your Claude admin has already added Birdie's custom MCP connection to your workspace. If they haven't, share [this article](/integrations-and-data-ingestion/birdie-mcp-server#technical-details) with them.

## Step 1: Log into your Birdie account

Head to <https://app.birdie.ai> and sign in. You must have an active Birdie session during the authorization step.

<div align="center"><img src="/files/ixFTNV47qQZ8aoJywkpT" alt="Logging into Birdie..."></div>

## Step 2: Open Customize in Claude

In Claude, click on Customize.

<div align="center"><img src="/files/0seCOzr6DAX0rRQKng81" alt="Customizing Claude Desktop connectors..."></div>

## Step 3: Go to Connectors and find Birdie

Inside Customize, click on Connectors and look for Birdie in the “Not connected” list. Don't see Birdie in the list? That usually means the custom MCP connection hasn't been added to your workspace yet. Ask your Claude admin to set it up using [this article](/integrations-and-data-ingestion/birdie-mcp-server#technical-details).

<div align="center"><img src="/files/Apq9FBbdqzyXrogh3rhR" alt="Connecting to Birdie..."></div>

## Step 4: Click Connect and approve access

Click Connect next to Birdie. An authorization page will open in your browser asking you to approve the connection.

<div align="center"><img src="/files/vzBP0hXqvQe2KCu5RSUH" alt="Approving Birdie access..."></div>

## Step 5: You're connected

Once you approve, Birdie's MCP connector is added to your list. From now on, just mention Birdie in any Claude chat to start pulling data straight from your accounts.

<div align="center"><img src="/files/laE9nx3ewUPCVDWQr3e3" alt="Connected..."></div>

*That's it. You're ready to start asking Claude questions about your customers’ feedback, NPS, CSAT, and more.*


# Birdie’s Integration Paths

## Understanding Birdie’s Integration Paths

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/GKTGY0GT24.png)

Birdie offers several ingestion methods, each designed for different levels of data control, compliance, and flexibility. Selecting the right option depends on your organization’s data maturity, security policies, and technical capabilities.

<table><thead><tr><th>Integration Method</th><th>Best For</th><th>Typical Use Case</th><th>Effort (Client)</th><th width="137">Effort (Birdie)</th><th>Flexibility</th></tr></thead><tbody><tr><td>Native Connectors</td><td>Standard API-based platforms</td><td>Feedback systems like Zendesk, Intercom, Salesforce, Qualtrics</td><td>Low</td><td>Medium</td><td>Low</td></tr><tr><td>Data Lake / File-based Ingestion</td><td>Centralized enterprise data management</td><td>Data joins, anonymization, compliance requirements</td><td>High</td><td>Medium</td><td>High</td></tr><tr><td>REST Ingestion API</td><td>Developer-led organizations</td><td>Software-driven ingestion pipelines</td><td>Medium–High</td><td>Medium</td><td>Very High</td></tr><tr><td>Custom Solutions (Professional Services)</td><td>Unique or multi-source architectures</td><td>Orchestration across multiple systems, unsupported APIs</td><td>Variable</td><td>High</td><td>Maximum</td></tr></tbody></table>

## When to Choose Each Option

### Native Connectors

Choose this when:

* Your data resides in well-known, API-accessible SaaS platforms (e.g., Salesforce, Zendesk, Intercom).
* You want the fastest and simplest path to integration.
* Your security team is comfortable with granting API credentials.
* You only need feedback data ingestion, without external data joins or transformations.

Avoid this when:

* You need to join or normalize values from multiple platforms.
* Your organization enforces strong data residency or anonymization rules.
* You require ingestion of versioned or historical customer data.

Example Scenario:\
A CX team wants to ingest recent survey results from Qualtrics directly into Birdie for sentiment analysis — minimal transformation needed, so a Native Connector is ideal.

### Data Lake / File-based Ingestion

Choose this when:

* You already centralize your data in systems like BigQuery, Snowflake, or you can easily export data int S3/GCS/Azure.
* You need to join multiple data sources before ingestion (e.g., linking feedback to profiles or support tickets).
* You must comply with strict PII masking, anonymization, or governance policies.
* You require full control over data preparation, schemas, and validation.

Avoid this when:

* You lack internal data engineering capabilities or infrastructure to manage pipelines.
* Your team cannot maintain recurring data exports.

Example Scenario:\
An enterprise client merges feedback data from Salesforce and Zendesk into Snowflake, where all PII is hashed. Birdie ingests the final harmonized dataset from Snowflake.

### REST Ingestion API

Choose this when:

* Your engineering team prefers to build and maintain direct API integrations.
* You need event-driven ingestion or fine-grained control over data payloads.
* You want to automate custom validations or enrichments before sending data to Birdie.
* You need a fully automated, developer-managed ingestion flow.

Avoid this when:

* You have limited development resources or short project timelines.
* Your data exists mostly in third-party SaaS tools already covered by Birdie’s connectors.

Example Scenario:\
A software team builds a middleware that listens to internal CRM events and pushes structured JSON payloads to Birdie’s REST API, enabling near real-time ingestion.

### Custom Solutions (Professional Services)

Choose this when:

* Your ingestion needs don’t fit within any of the standard connector or ingestion models.
* You need multi-source orchestration (e.g., combining Zendesk + Salesforce + internal CSV).
* You require custom data joins, enrichments, or transformations not supported natively.
* The integration involves unsupported authentication or connection methods (e.g., VPN, Kafka, SOAP APIs).

Examples of Custom Needs:

* Combining Genesys and Zendesk tickets using ticket\_id joins.
* Joining Salesforce Account data with Intercom conversations by account\_id.
* Parsing proprietary file formats or connecting through internal VPNs.

## How to Identify When a Custom Solution Is Needed

You can identify custom requirements early by looking for non-standard ingestion behaviors such as:

| Indicator                                               | Meaning                                        | Recommendation                             |
| ------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------ |
| Multiple source systems must be merged before ingestion | Requires custom orchestration logic            | Engage Professional Services               |
| Data must be enriched or joined using custom fields     | Field-level mapping exceeds connector defaults | Consider custom transformations            |
| Internal policies prohibit direct API integrations      | Security or compliance constraints             | Use Data Lake ingestion or custom pipeline |
| Proprietary or uncommon data source                     | Unsupported platform or authentication type    | Custom connector or file automation        |

## How to Size and Scope a Custom Solution

Properly sizing your ingestion project helps estimate delivery time, effort, and cost accurately. Birdie uses three size tiers (S, M, L) across all services. Below are guidelines to help you classify your custom requirement.<br>

Small (S)

* Scope: Single data source or one new connector.
* Complexity: Minimal transformation (renaming, basic filtering).
* Effort: 20–40 hours.
* Example: Ingesting a new CSV export into Birdie with standardized columns.

Medium (M)

* Scope: Two connected data sources or moderate transformation.
* Complexity: Requires joins or conditional field normalization.
* Effort: 40–80 hours.
* Example: Matching Zendesk and Salesforce data using shared account\_id.

Large (L)

* Scope: Three or more source platforms or complex transformation logic.
* Complexity: Involves multiple authentication layers or advanced orchestration (Kafka, VPN, custom endpoints).
* Effort: 80+ hours.
* Example: Integrating data from Genesys, Zendesk, and internal databases through custom scripts and mappings.

## Collaboration and Project Workflow

When engaging with Birdie’s Professional Services for ingestion projects, the collaboration process typically follows these stages:<br>

1. Discovery & Scoping
   * Define data sources, field mappings, and compliance constraints.
   * Identify ingestion method(s) and potential custom requirements.
2. Effort Estimation & Proposal
   * Birdie’s team estimates the complexity (S/M/L).
   * A detailed proposal and pricing estimate are shared.
3. Implementation & Validation
   * Connector or custom flow is built, configured, and validated with sample data.
   * Adjustments are made for transformation rules and data normalization.
4. Go-Live & Support
   * First ingestion run monitored jointly.
   * Birdie provides handover documentation and operational guidelines.

## Decision Flow Summary

A visual decision flow can be included in your presentation deck or appended as a diagram:

Start → Identify Source Platform

* Is it a commercial platform with an open API?\
  → Native Connector
* Do you need to join or anonymize data?\
  → Data Lake / File-based
* Do you prefer developer control with API access?\
  → REST Ingestion API
* None of the above or multi-source orchestration required?\
  → Custom Professional Service


# Data Schema Definitions for Birdie Ingestion

To ensure seamless data ingestion and high-quality insights, all data imported into Birdie—regardless of the source—must adhere to our standardized data schemas.

Whether you are connecting via Cloud Storage (AWS S3, Azure Blob Storage, or Google Cloud Storage) or Cloud Data Warehouses (BigQuery, Snowflake, or Databricks), your source data must be structured to match these definitions. While Birdie offers robust ingestion capabilities, this process typically requires your data or engineering team to transform and map your internal records to these schemas to ensure compatibility.

These schemas act as a blueprint, telling Birdie exactly how to interpret each record—whether it is a single customer review, a complex support thread, or a detailed user profile.

***

## 1. Requirements

* Data Preparation: Your data team must ensure that source tables or files match the field names and types outlined in the tables below.
* Storage/Database Access: Proper credentials (IAM roles, Service Accounts, or API keys) with read-access to the specific datasets.
* File & Table Formats: Support for Parquet, CSV, or direct database table syncing.
* Timestamp Precision: All date fields must follow the RFC 3339 format (e.g., `2023-10-25T14:30:00Z`) for accurate chronological analysis.

***

## 2. Understanding Record Types

Birdie categorizes data into three primary record types ("Kinds"). Choosing the correct Kind during setup is crucial, as it determines how Birdie processes, analyzes, and presents your data.

**Feedback:** Represents a single-point interaction — one person, one moment, one piece of input. A Feedback record typically contains a text comment, a numerical rating, and metadata. This Kind has two sub-types: `Review`, for general product or service reviews, and `NPS/CSAT`, optimized for structured survey responses where the rating is the primary signal and the text comment may be absent.

> Examples: App Store reviews, Google Play reviews, NPS surveys, CSAT responses, star ratings.

**Conversation:** Represents a multi-turn interaction. This Kind of record is denormalized — it groups multiple messages or events under a single `conversation_id`, capturing the full lifecycle of an exchange. A Conversation has four sub-types: `Support Ticket`, for customer service threads; `Complaint`, for grievance tracking and resolution workflows; `Social Media Post`, for public threads from platforms like Facebook, X, or Reddit; and `Issue`, for bug reports and development tasks from tools like Jira or GitHub.

> Examples: Support tickets with several agent replies, complaint negotiations, social media threads, Jira issues.

**Account:** Defines the "Who" behind the data. Account records contain customer profiles, behavioral attributes, or subscription data used for advanced segmentation and cross-referencing. Every Feedback and every Conversation record must be associated with exactly one Account, establishing the link between what was said and who said it.

<figure><img src="/files/sVNFvS5EvGT9eEAiwltm" alt="Diagram showing the hierarchy of record types: Account connects to Feedback and Conversation, which branch into their respective sub-types."><figcaption><p>Record Types Hierarchy</p></figcaption></figure>

***

## 3. Data Schemas

#### Feedbacks // Review

Used for public or private reviews of products or services. Each row represents a single review entry.

<table data-header-hidden><thead><tr><th width="122.046875"></th><th width="96.56640625"></th><th width="102.47265625"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Column Name</strong></td><td><strong>Type</strong></td><td><strong>Required</strong></td><td><strong>Description</strong></td><td><strong>Example</strong></td><td><strong>Impact</strong></td></tr><tr><td><code>feedback_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for each review.</td><td>"rev-2024-abc123"</td><td>❌ Ingestion fails. Duplicates overwrite silently.</td></tr><tr><td><code>text</code></td><td>STRING</td><td>No</td><td>The actual text or comment posted by the user. May be null for rating-only feedbacks (e.g., star ratings without comments).</td><td>"Great app, deposits are instant!"</td><td>⚠️ No Signals, Sentiment, Intentions, Keyword Search, Skye, or Opportunities. Only <code>rating</code> feeds Dashboard metrics.</td></tr><tr><td><code>posted_at</code></td><td>STRING</td><td>Yes</td><td>When the feedback was posted (RFC 3339 timestamp format).</td><td>"2024-06-15T14:30:00Z"</td><td>❌ Ingestion fails. Drives all time-series charts, date filters, and Initiative impact tracking.</td></tr><tr><td><code>rating</code></td><td>FLOAT</td><td>Yes</td><td>A numerical rating or score associated with the feedback.</td><td>4</td><td>❌ Ingestion fails. Drives Review AVG Rating and Satisfied/Unsatisfied counts in Dashboards.</td></tr><tr><td><code>author_id</code></td><td>STRING</td><td>No</td><td>The author's email address, used as a unique identifier for cross-referencing across record types.</td><td>"author@example.com"</td><td>⚠️ No per-author cross-reference with other record types.</td></tr><tr><td><code>account_id</code></td><td>STRING</td><td>No</td><td>Unique identifier for the account the record belongs to.</td><td>"acct-abc123"</td><td>⚠️ No cross-source analysis. Account-level Segments and Opportunity Prevalence Rate exclude this record.</td></tr><tr><td><code>language</code></td><td>STRING</td><td>No</td><td>Language of the record expressed as a BCP 47 code.</td><td>"pt-BR"</td><td>⚠️ Defaults to auto-detection. Sentiment, Intentions, and Signal accuracy degrade. Use BCP 47 codes only.</td></tr><tr><td><code>title</code></td><td>STRING</td><td>No</td><td>The title of the feedback as provided by the author.</td><td>"Best banking app!"</td><td>⚠️ No headline in Exploration UI. Not processed by NLP — no impact on Sentiment/Signals.</td></tr><tr><td><code>category</code></td><td>STRING</td><td>No</td><td>The specific category the review belongs to.</td><td>"Finance"</td><td>⚠️ Category-based filtering unavailable in Areas, Segments, Reasons, and Dashboards.</td></tr><tr><td><code>owner</code></td><td>STRING</td><td>No</td><td>Indicates the entity owner, e.g., "Owner" or "Competitor".</td><td>"Nubank"</td><td>⚠️ Cannot filter by product/brand or compare Owner vs. Competitor in Exploration and Dashboards.</td></tr><tr><td><code>source</code></td><td>STRING</td><td>No</td><td>A user-customizable label used for grouping feedbacks (e.g., "G2", "App Store").</td><td>"App Store BR"</td><td>⚠️ Defaults to <code>"api"</code>. Source filter, header metrics, and Dashboard/Area/Segment breakdowns by source lose meaning.</td></tr></tbody></table>

#### Feedbacks // NPS and CSAT

Optimized for survey responses focusing on sentiment metrics. Unlike reviews, the text comment is often optional in these surveys.

<table data-header-hidden><thead><tr><th></th><th width="98.7578125"></th><th width="102.359375"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Column Name</strong></td><td><strong>Type</strong></td><td><strong>Required</strong></td><td><strong>Description</strong></td><td><strong>Example</strong></td><td><strong>Impact</strong></td></tr><tr><td><code>feedback_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for each survey answer.</td><td>"nps-2024-q1-001"</td><td>❌ Ingestion fails. Duplicates overwrite silently.</td></tr><tr><td><code>posted_at</code></td><td>STRING</td><td>Yes</td><td>When the feedback was posted (RFC 3339 timestamp format).</td><td>"2024-03-10T09:00:00Z"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>rating</code></td><td>FLOAT</td><td>Yes</td><td>The numerical score (e.g., NPS 0-10 or CSAT 1-5).</td><td><code>9</code> (NPS) / <code>4</code> (CSAT)</td><td>❌ Ingestion fails. Drives NPS Score, CSAT Score, Promoter/Detractor counts, and all survey Dashboard metrics. ⚠️ Wrong scale (e.g., NPS as 1–5): accepted, but all NPS metrics become meaningless.</td></tr><tr><td><code>text</code></td><td>STRING</td><td>No</td><td>Qualitative comment or open-ended text posted by the user.</td><td>"I always recommend this service!"</td><td>⚠️ Score metrics work, but no Signals, Sentiment, Intentions, Keyword Search, Skye, or Opportunities — you lose the "why" behind the score.</td></tr><tr><td><code>author_id</code></td><td>STRING</td><td>No</td><td>The author's email address, used as a unique identifier for linking the response to a specific respondent.</td><td>"respondent@example.com"</td><td>⚠️ Cannot link response to a specific respondent.</td></tr><tr><td><code>account_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for the account the record belongs to.</td><td>"acc-xyz"</td><td>⚠️ No cross-source analysis (e.g., "tickets from NPS detractors"). Account-level Segments exclude this record.</td></tr><tr><td><code>language</code></td><td>STRING</td><td>No</td><td>Language of the record expressed as a BCP 47 code.</td><td>"pt-BR"</td><td>⚠️ Defaults to auto-detection. Sentiment and Signal accuracy degrade.</td></tr><tr><td><code>title</code></td><td>STRING</td><td>No</td><td>The name or title of the survey.</td><td>"[NPS 2024-Q1] Recommendation Survey"</td><td>⚠️ Cannot filter by survey wave in Exploration or Dashboards.</td></tr><tr><td><code>source</code></td><td>STRING</td><td>No</td><td>A user-customizable label for grouping feedbacks.</td><td>"NPS Q1 2024"</td><td>⚠️ Defaults to <code>"api"</code>. Source filter and Dashboard breakdowns by source lose meaning.</td></tr></tbody></table>

#### Conversations // Support tickets

This schema is designed to capture the full lifecycle of a support interaction. Because support tickets usually consist of multiple replies, Birdie uses a "long format" where each row represents a single message, but all messages in the same thread share a common `conversation_id`.

<table data-header-hidden><thead><tr><th></th><th width="100.8046875"></th><th width="96.74609375"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Column Name</strong></td><td><strong>Type</strong></td><td><strong>Required</strong></td><td><strong>Description</strong></td><td><strong>Example</strong></td><td><strong>Impact</strong></td></tr><tr><td><code>conversation_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for the entire conversation thread.</td><td>"ticket-2024-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>message_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for each specific message (must be unique at the account level).</td><td>"msg-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>text</code></td><td>STRING</td><td>Yes</td><td>The actual content/text of the message.</td><td>"Hi, I can't log in since yesterday."</td><td>⚠️ No Signals, Sentiment, Intentions, Keyword Search, Skye, Opportunities, or FI Criteria evaluation. HTML in text degrades NLP — strip before sending.</td></tr><tr><td><code>posted_at</code></td><td>STRING</td><td>Yes</td><td>When the message was posted (RFC 3339 timestamp).</td><td>"2024-01-15T10:05:00Z"</td><td>❌ Ingestion fails. Drives Conversation Features (Response Times, Duration), message ordering, and time-series charts. Identical timestamps = broken ordering.</td></tr><tr><td><code>author_id</code></td><td>STRING</td><td>Yes</td><td>The author's email address. Must be an email to ensure proper agent recognition, FI evaluation, and cross-referencing within Birdie.</td><td>"agent@company.com"</td><td>⚠️ FI Agent page empty — no per-agent Quality Score, Manual Evaluation, or Agent Feedback. Agent Handoffs unavailable.</td></tr><tr><td><code>account_id</code></td><td>STRING</td><td>Yes</td><td>Identifier for the account the message belongs to.</td><td>"acc-xyz"</td><td>⚠️ No cross-source analysis. Account-level Segments exclude this conversation.</td></tr><tr><td><code>language</code></td><td>STRING</td><td>No</td><td>Language of the message as a BCP 47 code.</td><td>"pt-BR"</td><td>⚠️ Defaults to auto-detection. Sentiment, Signal, and FI Criteria accuracy degrade.</td></tr><tr><td><code>subject</code></td><td>STRING</td><td>No</td><td>The subject line of the support ticket.</td><td>"Can't reset my password"</td><td>⚠️ No conversation title in Exploration. Not processed by NLP.</td></tr><tr><td><code>status</code></td><td>STRING</td><td>No</td><td>Current status of the ticket (e.g., "open", "pending", "closed").</td><td>"solved"</td><td>⚠️ No status filter/breakdown in Dashboards, Areas, Segments, or Reasons.</td></tr><tr><td><code>priority</code></td><td>STRING</td><td>No</td><td>Priority assigned to the ticket (e.g., "urgent", "low").</td><td>"high"</td><td>⚠️ No priority filter/breakdown in Dashboards, Areas, Segments, or Reasons.</td></tr><tr><td><code>channel</code></td><td>STRING</td><td>No</td><td>Source channel of the ticket (e.g., "web", "email", "chat").</td><td>"email"</td><td>⚠️ No channel filter/breakdown in Dashboards, Areas, Segments, or Reasons.</td></tr><tr><td><code>tags</code></td><td>REPEATED STRING</td><td>No</td><td>An array/list of tags applied to the ticket.</td><td>["billing", "urgent"]</td><td>⚠️ No tag-based filtering in Areas, Segments, or Reasons.</td></tr><tr><td><code>author_type</code></td><td>STRING</td><td>Yes</td><td>The role of the author, specifically one of {"Bot", "Agent", "User"}.</td><td>"Agent"</td><td>⚠️ <strong>Highest-impact optional field.</strong> All Conversation Features (50+ fields) = zero. FI Criteria produce false positives. FI Agent page broken. Values: <code>Customer</code>/<code>User</code>, <code>Agent</code>/<code>Internal Person</code>, <code>Bot</code>.</td></tr><tr><td><code>survey_title</code></td><td>STRING</td><td>No</td><td>Title of the survey presented upon ticket closure.</td><td>"Post-call CSAT"</td><td>⚠️ Survey name not displayed. No feature impact.</td></tr><tr><td><code>survey_type</code></td><td>STRING</td><td>Yes</td><td>Type of the closing survey, specifically one of {"csat", "nps"}.</td><td>"csat"</td><td>⚠️ TCSAT/TNPS Dashboard metrics cannot be calculated. Upload on one message per conversation only.</td></tr><tr><td><code>rating</code></td><td>FLOAT</td><td>Yes</td><td>The numerical rating provided by the client for the support experience.</td><td>8</td><td>⚠️ TCSAT/TNPS Dashboard metrics cannot be calculated. Upload on one message per conversation only.</td></tr><tr><td><code>solved</code></td><td>STRING</td><td>Yes</td><td>Flag indicating if the ticket was resolved, specifically one of {"true", "false"}.</td><td>"true"</td><td>⚠️ No resolution filter/breakdown in Dashboards. No native Resolution Rate metric — filter dimension only.</td></tr><tr><td><code>source</code></td><td>STRING</td><td>Yes</td><td>A user-customizable label for grouping (e.g., "Zendesk", "Intercom").</td><td>"Zendesk"</td><td>⚠️ Defaults to <code>"api"</code>. Source filter, header metrics, and all breakdowns by source lose meaning.</td></tr><tr><td><code>agent_team</code></td><td>STRING</td><td>Yes</td><td>The name of the support agent's team.</td><td>"Billing Team"</td><td>⚠️ No team-level filtering in FI or Dashboards.</td></tr><tr><td><code>agent_company</code></td><td>STRING</td><td>Yes</td><td>The name of the support agent's company.</td><td>"Atento BPO"</td><td>⚠️ No BPO vendor comparison in FI or Dashboards.</td></tr><tr><td><code>agent_supervisor_id</code></td><td>STRING</td><td>Yes</td><td>The email address of the support agent's supervisor, used for supervisor-level rollups and FI reporting.</td><td>"supervisor@company.com"</td><td>⚠️ Supervisor-level rollups unavailable in FI and Dashboards.</td></tr><tr><td><code>agent_experience</code></td><td>STRING</td><td>Yes</td><td>The maturity or experience level of the agent (Enum).</td><td>"senior"</td><td>⚠️ No seniority vs. quality correlation in FI or Dashboards.</td></tr></tbody></table>

Pro-Tip for Data Teams: > \* To ensure data consistency, upload only one row per conversation containing the survey fields (`survey_type`, `rating`, etc.). This should ideally be the final message of the ticket.

* For all other messages in the same thread, ensure the ticket-level fields (like `subject`, `status`, and `priority`) remain consistent across rows.

#### Conversations // Complaints

The Complaints schema is specialized for tracking and analyzing customer grievances. Similar to support tickets, it supports multiple interactions grouped by a single conversation ID to capture the negotiation or resolution process.

<table data-header-hidden><thead><tr><th></th><th width="99.421875"></th><th width="102.18359375"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Column Name</strong></td><td><strong>Type</strong></td><td><strong>Required</strong></td><td><strong>Description</strong></td><td><strong>Example</strong></td><td>Impact</td></tr><tr><td><code>conversation_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for the specific complaint thread.</td><td>"complaint-2024-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>message_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for each message (must be unique at the account level).</td><td>"cmsg-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>text</code></td><td>STRING</td><td>Yes</td><td>The actual content/text of the complaint message.</td><td>"My order hasn't arrived and it's been 15 days already."</td><td>⚠️ No Signals, Sentiment, Intentions, Keyword Search, Skye, or Opportunities.</td></tr><tr><td><code>posted_at</code></td><td>STRING</td><td>Yes</td><td>When the message was posted (RFC 3339 timestamp).</td><td>"2024-02-10T08:00:00Z"</td><td>❌ Ingestion fails. Drives Conversation Features and time-series charts.</td></tr><tr><td><code>author_id</code></td><td>STRING</td><td>No</td><td>The author's email address, used as a unique identifier for the complainant.</td><td>"customer@example.com"</td><td>⚠️ Cannot identify complainant. No cross-reference.</td></tr><tr><td><code>account_id</code></td><td>STRING</td><td>Yes</td><td>Identifier for the account the message belongs to.</td><td>"acct-456"</td><td>⚠️ No cross-source analysis. Account-level Segments exclude this complaint.</td></tr><tr><td><code>language</code></td><td>STRING</td><td>No</td><td>Language of the message expressed as a BCP 47 code.</td><td>"pt-BR"</td><td>⚠️ Defaults to auto-detection. Sentiment and Signal accuracy degrade.</td></tr><tr><td><code>category</code></td><td>STRING</td><td>No</td><td>A classification for segmenting complaints (e.g., "Support", "Shipping", "Billing").</td><td>"Delivery"</td><td>⚠️ No category filter in Areas, Segments, Reasons, or Dashboards. NLP topics still work from <code>text</code>.</td></tr><tr><td><code>status</code></td><td>STRING</td><td>No</td><td>Current state of negotiations (e.g., pending, initiated, ongoing, or solved).</td><td>"resolved"</td><td>⚠️ No resolution status filter/breakdown in Dashboards, Areas, or Segments.</td></tr><tr><td><code>url</code></td><td>STRING</td><td>No</td><td>Direct link to the complaint if it originates from a public source.</td><td>"https://reclameaqui.com.br/complaint/12345"</td><td>⚠️ No click-through to source. No analysis impact.</td></tr><tr><td><code>rating</code></td><td>FLOAT</td><td>Yes</td><td>The score the client gave specifically to the complaint negotiation experience.</td><td>3.0</td><td>⚠️ Complaint satisfaction score unavailable in Dashboards.</td></tr><tr><td><code>author_type</code></td><td>STRING</td><td>Yes</td><td>The role of the author, specifically one of {"Internal Person", "User", "Bot"}.</td><td>"User"</td><td>⚠️ All Conversation Features (50+ fields) empty. Cannot separate customer vs. company messages. FI broken.</td></tr><tr><td><code>source</code></td><td>STRING</td><td>Yes</td><td>A user-customizable label for grouping (e.g., "Public Forum", "Direct Email").</td><td>"Reclame Aqui"</td><td>⚠️ Defaults to <code>"api"</code>. Source filter and all breakdowns by source lose meaning.</td></tr></tbody></table>

#### Conversation // Social Media Post

Used for threads and interactions from social platforms like Facebook, X (Twitter), or Reddit.

<table data-header-hidden><thead><tr><th></th><th width="101.34375"></th><th width="97.94140625"></th><th width="128.42578125"></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Column Name</strong></td><td><strong>Type</strong></td><td><strong>Required</strong></td><td><strong>Description</strong></td><td><strong>Example</strong></td><td><strong>Impact</strong></td></tr><tr><td><code>conversation_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for the post or thread.</td><td>"reddit-post-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>message_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for the specific post or comment.</td><td>"rmsg-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>text</code></td><td>STRING</td><td>Yes</td><td>Content of the message.</td><td>"The new update broke the search feature."</td><td>⚠️ No Signals, Sentiment, Intentions, Keyword Search, Skye, Opportunities, or Social Media Unsatisfied Count.</td></tr><tr><td><code>posted_at</code></td><td>STRING</td><td>Yes</td><td>When the message was posted (RFC 3339 timestamp).</td><td>"2024-04-01T12:00:00Z"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>author_id</code></td><td>STRING</td><td>No</td><td>The author's email address, used as a unique identifier for cross-referencing.</td><td>"user@example.com"</td><td>⚠️ Cannot identify author. No cross-reference.</td></tr><tr><td><code>account_id</code></td><td>STRING</td><td>No</td><td>Identifier for the account the message belongs to.</td><td>"acct-social-001"</td><td>⚠️ No cross-source analysis. Account-level Segments exclude this post.</td></tr><tr><td><code>language</code></td><td>STRING</td><td>No</td><td>Language of the message as a BCP 47 code.</td><td>"en"</td><td>⚠️ Defaults to auto-detection. Sentiment and Signal accuracy degrade.</td></tr><tr><td><code>title</code></td><td>STRING</td><td>No</td><td>Title of the original social media post.</td><td>"Search broken after update"</td><td>⚠️ No headline in Exploration. Not processed by NLP.</td></tr><tr><td><code>owner</code></td><td>STRING</td><td>No</td><td>Indicates the entity owner: Owner or Competitor.</td><td>"Owner"</td><td>⚠️ Cannot distinguish owned vs. competitor mentions in Exploration or Dashboards.</td></tr><tr><td><code>category</code></td><td>STRING</td><td>No</td><td>Segment or sub-grouping (e.g., a specific Subreddit name).</td><td>"r/BirdieApp"</td><td>⚠️ No sub-group filter in Areas, Segments, Reasons, or Dashboards.</td></tr><tr><td><code>url</code></td><td>STRING</td><td>No</td><td>URL of the social post.</td><td>"https://reddit.com/r/BirdieApp/post/001"</td><td>⚠️ No click-through to source. No analysis impact.</td></tr><tr><td><code>channel</code></td><td>STRING</td><td>No</td><td>The source platform (e.g., "facebook", "reddit").</td><td>"reddit""</td><td>⚠️ No platform filter/breakdown in Dashboards, Areas, Segments, or Reasons.</td></tr><tr><td><code>tags</code></td><td>REPEATED STRING</td><td>No</td><td>Array of tags applied to the post.</td><td>["bug", "feature-request"]</td><td>⚠️ No tag-based filtering in Areas, Segments, or Reasons.</td></tr><tr><td><code>author_type</code></td><td>STRING</td><td>No</td><td>The role of the author, specifically one of {"Internal Person", "User", "Bot"}.</td><td>"User"</td><td>⚠️ All Conversation Features (50+ fields) empty. Cannot distinguish brand vs. user posts</td></tr><tr><td><code>upvotes</code></td><td>INTEGER</td><td>No</td><td>The number of likes or upvotes the message has received.</td><td>22</td><td>⚠️ Engagement metrics unavailable. Cannot prioritize by popularity.</td></tr><tr><td><code>source</code></td><td>STRING</td><td>Yes</td><td>A user-customizable label for grouping.</td><td>"Reddit"</td><td>⚠️ Defaults to <code>"api"</code>. Source filter and all breakdowns by source lose meaning.</td></tr></tbody></table>

#### Conversation // Issue

Used for tracking bug reports, development tasks, or tickets from platforms like Jira or GitHub.

<table data-header-hidden><thead><tr><th></th><th width="101.4140625"></th><th width="103.4296875"></th><th></th><th></th><th></th></tr></thead><tbody><tr><td><strong>Column Name</strong></td><td><strong>Type</strong></td><td><strong>Required</strong></td><td><strong>Description</strong></td><td><strong>Example</strong></td><td><strong>Issue</strong></td></tr><tr><td><code>conversation_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for the issue thread.</td><td>"issue-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>message_id</code></td><td>STRING</td><td>Yes</td><td>Unique identifier for each individual update or comment.</td><td>"imsg-001"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>text</code></td><td>STRING</td><td>Yes</td><td>The content of the issue description or comment.</td><td>"Login button unresponsive on mobile Safari."</td><td>⚠️ No Signals, Sentiment, Intentions, Keyword Search, Skye, or Opportunities.</td></tr><tr><td><code>posted_at</code></td><td>STRING</td><td>Yes</td><td>When the record was created/posted (RFC 3339 timestamp).</td><td>"2024-03-15T09:00:00Z"</td><td>❌ Ingestion fails.</td></tr><tr><td><code>author_id</code></td><td>STRING</td><td>No</td><td>The author's email address, used as a unique identifier for cross-referencing.</td><td>"developer@company.com"</td><td>⚠️ Cannot identify reporter. No cross-reference.</td></tr><tr><td><code>account_id</code></td><td>STRING</td><td>No</td><td>Identifier for the account associated with the issue.</td><td>"acct-789"</td><td>⚠️ No cross-source analysis. Account-level Segments exclude this issue.</td></tr><tr><td><code>language</code></td><td>STRING</td><td>No</td><td>Language of the message as a BCP 47 code.</td><td>"en"</td><td>⚠️ Defaults to auto-detection. Sentiment and Signal accuracy degrade.</td></tr><tr><td><code>project_id</code></td><td>STRING</td><td>No</td><td>Unique identifier for the project or repository.</td><td>"birdie/platform"</td><td>⚠️ Cannot segment by project in Areas, Segments, or Dashboards.</td></tr><tr><td><code>project_name</code></td><td>STRING</td><td>No</td><td>Human-readable name of the project.</td><td>"Platform"</td><td>⚠️ Shows raw ID only in Exploration — not user-friendly.</td></tr><tr><td><code>title</code></td><td>STRING</td><td>No</td><td>The title or headline of the issue.</td><td>"Login button unresponsive on mobile"</td><td>⚠️ No headline in Exploration. Not processed by NLP.</td></tr><tr><td><code>status</code></td><td>STRING</td><td>No</td><td>Current status (e.g., "To Do", "In Progress", "Done").</td><td>"in_progress"</td><td>⚠️ No status filter/breakdown in Dashboards, Areas, or Segments.</td></tr><tr><td><code>source</code></td><td>STRING</td><td>Yes</td><td>A user-customizable label for grouping.</td><td>"GitHub"</td><td>⚠️ Defaults to <code>"api"</code>. Source filter and all breakdowns by source lose meaning.</td></tr></tbody></table>

#### Accounts

The foundation for customer profile data and behavior-based segmentation.

| **Column Name** | **Type** | **Required** | **Description**                                                 | **Example**            | **Impact**                                                                                                                                                                 |
| --------------- | -------- | ------------ | --------------------------------------------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `account_id`    | STRING   | Yes          | Unique identifier for the account.                              | "acct-gurgel-001"      | ❌ Ingestion fails. If value doesn't match `account_id` in Feedback/Messages: cross-source analysis, Account-level Segments, and Opportunity Prevalence Rate silently fail. |
| `update_id`     | STRING   | Yes          | Unique timestamp used to split chat posts.(RFC 3339 timestamp). | "2024-02-10T08:00:00Z" | ❌ This prevents ingestion in the case of very large files.                                                                                                                 |

***

## 4. Custom Fields

Birdie allows for unlimited and flexible custom fields. If your source data contains information not covered by the standard schemas above (e.g., "Plan Type," "User Region," or "Churn Risk"), you can ingest them by providing the following mapping:

* Source/Destination Mapping: Link your source column to a Birdie field.
* Data Type: Set as `String`, `Bool`, `Number`, `Date`, `Datetime`, `Enum`, or `Unique`.
* Friendly Label: The name displayed to your team in the Birdie UI.
* List Support: A toggle to indicate if the field should accept a single value or a list of values.

## 5. Feature Enablement

This table maps Birdie platform capabilities to the minimum ingested fields required to enable them. Use it to prioritize which fields your data team should focus on based on the features your organization needs.

| **Capability**                                | **Minimum Required Fields**                                                                      | **Schema**               | **What It Enables**                                                                                             |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------- |
| NPS Score calculation                         | `kind=nps` + `rating` (0–10 scale)                                                               | Feedback                 | NPS Score, Promoter/Passive/Detractor counts, NPS Potential Improvement in Dashboards.                          |
| CSAT Score calculation                        | `kind=csat` + `rating` (1–5 scale)                                                               | Feedback                 | CSAT Score (% with 4–5), CSAT AVG Rating, Satisfied/Unsatisfied counts in Dashboards.                           |
| Review metrics                                | `kind=review` + `rating` + `owner`                                                               | Feedback                 | Review AVG Rating, Satisfied/Unsatisfied counts, Owner vs. Competitor filtering.                                |
| Ticket satisfaction (TCSAT/TNPS)              | `survey_type` (`csat` or `nps`) + `rating` on one message per conversation                       | Conv. Message            | TCSAT Score, TNPS Score in Dashboards.                                                                          |
| NLP analysis (Signals, Sentiment, Intentions) | `text` + `language`                                                                              | Feedback / Conv. Message | Sentiment Score, Intention classification, Signal filtering, Keyword Search, Skye AI analysis.                  |
| Opportunity discovery                         | `text` + `posted_at`                                                                             | Feedback / Conv. Message | AI-powered Opportunity identification via Skye and Areas. Trend analysis over time.                             |
| Conversation Features (50+ metrics)           | `posted_at` + `author_type` on every message                                                     | Conv. Message            | First Response Time, Avg Response Time, Conversation Duration, Turn Count, Agent Message Count, Agent Handoffs. |
| FI Criteria evaluation                        | `text` + `author_type` + `author_id`                                                             | Conv. Message            | AI and manual evaluation of agent behavior. Per-agent Quality Score.                                            |
| FI team/vendor analysis                       | `agent_team`, `agent_company`, `agent_supervisor_id`, `agent_experience`                         | Conv. Message            | Team-level FI, BPO vendor comparison, supervisor rollups, seniority correlation.                                |
| Cross-source analysis                         | `account_id` consistent across all record types                                                  | All                      | Correlate NPS detractors with their support tickets, complaints, reviews, etc.                                  |
| Account-level Segments                        | Account record + `account_id` linked in Feedback/Messages                                        | Account                  | Segmentation by industry, plan, lifecycle stage, company size, revenue.                                         |
| Areas and Segments                            | At least one filterable field (`source`, `channel`, `category`, `tags`, `status`, custom fields) | All                      | Topic-based and metadata-based grouping for analysis.                                                           |
| Initiative impact tracking                    | `posted_at` on underlying records + Opportunity defined                                          | Feedback / Conv. Message | Before/after release date comparison on Opportunity timeline charts.                                            |
| Custom field filtering                        | `additional_fields.*` mapped via Ingester config                                                 | All                      | Custom filters in Exploration, Dashboard breakdowns, Segment/Area/Reason conditions.                            |

## 6. Common Data Issues

Before uploading data to Birdie, review this checklist to avoid the most frequent integration problems.

| **Issue**                                                                                                                | **Symptom in Birdie**                                                                                                                                | **How to Fix**                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `rating`, `survey_type`, and `solved` are present on every message instead of only the last message of the conversation. | Duplicate survey data inflates TCSAT/TNPS metrics — scores appear artificially higher or lower.                                                      | Populate `survey_type`, `rating`, and `solved` on **only one message per conversation** (ideally the last). Leave these fields empty on all other messages.                      |
| `posted_at` is not in RFC 3339 / ISO 8601 format (e.g., `15/06/2024`, `2024-06-15`, `1718451000`).                       | ❌ Ingestion fails (400 error). Record is rejected.                                                                                                   | Always use full ISO 8601 with timezone: `2024-06-15T14:30:00Z`. Convert Brazilian `DD/MM/YYYY` and Unix timestamps before sending.                                               |
| Multiple messages in a single row instead of one message per row.                                                        | Birdie cannot parse individual messages. Conversation structure is lost — no turn-taking, no Conversation Features, no per-message Sentiment.        | Split into one row per message. Each row must have a unique `message_id` and share the same `conversation_id`.                                                                   |
| `author_type` uses values outside the accepted set (e.g., `"System"`, `"Supervisor"`, `"Manager"`).                      | ❌ `"System"` is rejected by validation. Other unrecognized values are also rejected.                                                                 | Use only: `Customer` (or `User`), `Agent` (or `Internal Person`), `Bot`. These are case-insensitive. For automated/system messages, use `Bot` or filter them out before sending. |
| `posted_at` is identical for all messages in a conversation.                                                             | Message ordering is wrong. Conversation summary is incoherent. Conversation Features (Response Times, Duration) = 0.                                 | Use the actual timestamp from the source system for each message. Ensure chronological ordering.                                                                                 |
| `text` field contains raw HTML tags (e.g., `<p>Hello</p><br/>`).                                                         | NLP processes HTML as text — Sentiment, Signal, and topic extraction accuracy degrade.                                                               | Strip all HTML tags before sending. Send plain text only.                                                                                                                        |
| Text encoding is `latin-1` or `Windows-1252` instead of UTF-8.                                                           | Characters appear broken (`nÃ£o` instead of `não`). NLP analysis produces garbage results.                                                           | Convert all files to UTF-8 before uploading. Common with Brazilian data exports.                                                                                                 |
| `account_id` values are inconsistent across record types (e.g., `"123"` in NPS but `"acct-123"` in tickets).             | Cross-source analysis silently fails. Records exist as isolated silos — cannot correlate NPS detractors with their tickets.                          | Use the exact same `account_id` string across all Feedback, Conversation Message, and Account records.                                                                           |
| IDs are sequential integers reused across systems (e.g., Zendesk ticket `1` and Intercom ticket `1`).                    | Records overwrite each other (PUT semantics). Data loss.                                                                                             | Prefix IDs with the source system name: `"zendesk-1"`, `"intercom-1"`.                                                                                                           |
| Boolean fields use `"Sim"/"Não"`, `"Yes"/"No"`, or `"1"/"0"` instead of `true`/`false`.                                  | Custom fields may be rejected or mistyped. `solved` field won't be recognized.                                                                       | Convert to `true` / `false` before sending.                                                                                                                                      |
| `rating` uses wrong scale (e.g., NPS sent as 1–5 instead of 0–10, or CSAT as 0–100).                                     | Record is accepted, but NPS Promoter/Detractor classification is wrong. All NPS/CSAT Dashboard metrics become meaningless. Code only logs a warning. | Confirm the expected scale: NPS = 0–10, CSAT = 1–5. Document the scale used in your source system.                                                                               |
| Conversation uploaded without any messages (or messages uploaded without a parent conversation).                         | Conversation is invisible in Birdie. Messages are orphaned. Neither appears in Exploration.                                                          | Always upload both Conversation and Message records together. Validate completeness before sending.                                                                              |
| `language` field uses full words (`"portuguese"`, `"english"`) instead of BCP 47 codes.                                  | BCP 47 parsing fails. Falls back to auto-detection — NLP may use the wrong language model.                                                           | Use BCP 47 codes: `pt-BR`, `en`, `es`, `fr`, etc.                                                                                                                                |
| `additional_fields` contain nested objects (e.g., `{"address": {"city": "SP"}}`).                                        | ❌ Record is rejected. Only flat key-value pairs are accepted.                                                                                        | Flatten nested structures: `{"address_city": "SP"}`.                                                                                                                             |
| `author_type` is missing on all messages.                                                                                | All Conversation Features (50+ fields) = zero. FI Criteria produce false positives. FI Agent page is empty.                                          | Set `author_type` on every message. This is the single most impactful optional field.                                                                                            |


# Data Schema Definitions for Birdie Export

## Data Export Schema Definitions

All data exported from Birdie—whether through manual CSV downloads or automated Data Forwarding—follows a standardized set of schemas. These definitions describe every file included in the export, its columns, data types, and expected values.

Use this page as a reference when loading Birdie exports into your data warehouse, building dashboards, or integrating insights into downstream systems.

***

### 1. Overview

Every Birdie export produces up to **eleven files**, organized into two groups based on their export behavior and loading strategy:

**Full Export Files** (Truncate & Load)

| File                        | Description                                                  |
| --------------------------- | ------------------------------------------------------------ |
| `collections.csv`           | The complete list of Collections and their related entities. |
| `workspace_collections.csv` | The list of Workspaces and the Collections they reference.   |

**Incremental Export Files** (Delete & Insert by key)

| File                     | Delete Key                     | Description                                                                                     |
| ------------------------ | ------------------------------ | ----------------------------------------------------------------------------------------------- |
| `feedbacks.csv`          | `ID`                           | The core feedback records (reviews, surveys, conversations).                                    |
| `opportunities.csv`      | `Feedback ID`                  | Opportunities (Opps) detected within each feedback.                                             |
| `sentences.csv`          | `Feedback ID`                  | Individual sentences extracted from feedback text, with NLP annotations.                        |
| `messages.csv`           | `Feedback ID`                  | Individual messages within conversation-type feedbacks.                                         |
| `areas.csv`              | `Feedback ID`                  | Areas associated with each feedback.                                                            |
| `area_opportunities.csv` | `opportunity_id` AND `area_id` | The many-to-many mapping between Areas and Opportunities referenced by exported feedbacks.      |
| `criteria.csv`           | `Feedback ID`                  | Criteria labels associated with each feedback. Only present when there are matching labels.     |
| `reasons.csv`            | `Feedback ID`                  | Reason labels associated with each feedback. Only present when there are matching labels.       |
| `segmentations.csv`      | `Feedback ID`                  | Segmentation labels associated with each feedback. Only present when there are matching labels. |

> **Note:** For incremental files, Birdie re-exports all child entities (opportunities, sentences, messages, areas, criteria, reasons, segmentations) whenever their parent feedback is updated. Always delete by the `Feedback ID` key before inserting to avoid duplicates. `area_opportunities.csv` is a junction table without a `Feedback ID` — delete by matching both `opportunity_id` and `area_id` from the new file.

***

### 2. Data Schemas

#### feedbacks.csv

The primary entity in Birdie's data model. Each row represents a single feedback record — a review, survey response, support ticket, complaint, or social media post. This file contains metadata, timestamps, ratings, and custom fields for every feedback processed by Birdie.

| Column Name              | Type        | Description                                                                                                                                           |
| ------------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| ID                       | STRING      | Unique Birdie-generated identifier for the feedback (SHA-256 hash).                                                                                   |
| Ingested ID              | STRING      | The original identifier from the source system, preserved as ingested.                                                                                |
| Source                   | STRING      | The integration or connector that produced the record (e.g., `s3`, `api`).                                                                            |
| Source Alias             | STRING      | A user-customizable label for grouping feedbacks by origin (e.g., `nps`, `support_ticket`).                                                           |
| Kind Name                | STRING      | The record type classification (e.g., `nps`, `csat`, `support_ticket`, `review`, `complaint`, `social_media`).                                        |
| Language                 | STRING      | Language of the feedback text expressed as a BCP 47 code (e.g., `pt-BR`, `en`).                                                                       |
| Text                     | STRING      | The primary text content of the feedback. For conversation-type records, this is typically the opening message or a consolidated view.                |
| Posted At                | STRING      | When the feedback was originally posted or submitted (RFC 3339 timestamp, e.g., `2025-05-04T00:24:27Z`).                                              |
| Batch ID                 | STRING      | Identifier for the ingestion batch that brought this record into Birdie.                                                                              |
| Ingested At              | STRING      | When the record was first ingested into Birdie (RFC 3339 timestamp).                                                                                  |
| Updated At               | STRING      | When the record was last updated within Birdie (RFC 3339 timestamp).                                                                                  |
| Accounts                 | JSON ARRAY  | A JSON array of account identifiers associated with this feedback (e.g., `["acc_hash_1", "acc_hash_2"]`).                                             |
| Total Messages           | INTEGER     | For conversation-type feedbacks, the total number of messages in the thread. Empty for non-conversation records.                                      |
| Messages First Posted At | STRING      | Timestamp of the first message in the conversation thread (RFC 3339). Empty for non-conversation records.                                             |
| Messages Last Posted At  | STRING      | Timestamp of the last message in the conversation thread (RFC 3339). Empty for non-conversation records.                                              |
| Messages Users           | STRING      | Identifier or count of distinct users who participated in the conversation thread.                                                                    |
| Custom Fields            | JSON OBJECT | A JSON object containing all custom fields configured for this record. Each key maps to an object with `description`, `type`, and `value` properties. |
| Category                 | STRING      | A classification label for segmenting feedbacks (e.g., product area, complaint type).                                                                 |
| Status                   | STRING      | Current status of the feedback (e.g., `open`, `pending`, `closed`, `solved`). Primarily used for conversation-type records.                           |
| URL                      | STRING      | Direct link to the original feedback source, if available.                                                                                            |
| Rating                   | FLOAT       | A numerical score associated with the feedback (e.g., NPS 0–10, CSAT 1–5, or a review score).                                                         |
| Author ID                | STRING      | Unique identifier for the author of the feedback.                                                                                                     |
| Author Name              | STRING      | Display name of the feedback author, if available.                                                                                                    |
| Title                    | STRING      | The title or subject line of the feedback, as provided by the author or source system.                                                                |
| Owner                    | STRING      | Indicates the entity owner for competitive analysis (e.g., `Owner` or `Competitor`).                                                                  |
| Subject                  | STRING      | The subject line of the support ticket or conversation, if applicable.                                                                                |
| Priority                 | STRING      | Priority level assigned to the feedback (e.g., `urgent`, `high`, `medium`, `low`). Primarily used for support tickets.                                |
| Channel                  | STRING      | Source channel of the feedback (e.g., `web`, `email`, `chat`, `phone`).                                                                               |

***

#### messages.csv

Contains the individual messages within conversation-type feedbacks (support tickets, complaints, social media threads). Each row represents a single message, linked to its parent feedback via `Feedback ID`.

| Column Name         | Type        | Description                                                                                                              |
| ------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------ |
| Feedback ID         | STRING      | The parent feedback identifier. References `ID` in `feedbacks.csv`.                                                      |
| ID                  | STRING      | Unique Birdie-generated identifier for this specific message.                                                            |
| Ingested ID         | STRING      | The original message identifier from the source system.                                                                  |
| Source              | STRING      | The integration or connector that produced the record.                                                                   |
| Source Alias        | STRING      | A user-customizable label for grouping by origin.                                                                        |
| Kind Name           | STRING      | The record type classification (e.g., `support_ticket`).                                                                 |
| Language            | STRING      | Language of the message text as a BCP 47 code.                                                                           |
| Text                | STRING      | The actual content of the message.                                                                                       |
| Posted At           | STRING      | When the message was posted (RFC 3339 timestamp).                                                                        |
| Batch ID            | STRING      | Identifier for the ingestion batch.                                                                                      |
| Author ID           | STRING      | Unique identifier for the author of the message.                                                                         |
| Author Name         | STRING      | Display name of the message author, if available.                                                                        |
| Author Type         | STRING      | The role of the author within the conversation: `customer`, `agent`, or `bot`.                                           |
| Agent Supervisor ID | STRING      | Identifier for the support agent's supervisor. Populated only when `Author Type` is `agent`.                             |
| Agent Company       | STRING      | The company the support agent belongs to. Populated only when `Author Type` is `agent`.                                  |
| Agent Team          | STRING      | The team the support agent belongs to. Populated only when `Author Type` is `agent`.                                     |
| Agent Experience    | STRING      | The experience or seniority level of the agent (e.g., `junior`, `senior`). Populated only when `Author Type` is `agent`. |
| Custom Fields       | JSON OBJECT | A JSON object containing message-level custom fields, following the same structure as in `feedbacks.csv`.                |
| Ingested At         | STRING      | When the message was first ingested into Birdie (RFC 3339 timestamp).                                                    |
| Created At          | STRING      | When the message record was created in Birdie's internal store (RFC 3339 timestamp).                                     |
| Updated At          | STRING      | When the message record was last updated within Birdie (RFC 3339 timestamp).                                             |

***

#### sentences.csv

Contains the sentence-level NLP analysis produced by Birdie's processing pipeline. Each feedback text is broken into individual sentences, and each sentence is annotated with signal detection, sentiment, specificity, intentions, and product/service aspect tagging.

| Column Name         | Type       | Description                                                                                                                                     |
| ------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| Feedback ID         | STRING     | The parent feedback identifier. References `ID` in `feedbacks.csv`.                                                                             |
| ID                  | STRING     | Unique identifier for the sentence, formatted as `{Feedback ID}#{sequence_number}` (e.g., `abc123#0`, `abc123#1`).                              |
| Language            | STRING     | Detected language of the sentence as a BCP 47 code.                                                                                             |
| Sentence            | STRING     | The extracted sentence text.                                                                                                                    |
| Signal              | BOOLEAN    | Whether the sentence contains a meaningful signal (`true` or `false`). Non-signal sentences (e.g., greetings, pleasantries) are marked `false`. |
| Sentiment Value     | STRING     | The sentiment classification of the sentence. Possible values: `POSITIVE`, `NEGATIVE`, `MIXED`, `NEUTRAL`.                                      |
| Sentiment Intensity | STRING     | The strength of the detected sentiment. Possible values: `LOW`, `MEDIUM`, `HIGH`.                                                               |
| Specificity         | STRING     | How specific or actionable the sentence content is. Possible values: `LOW`, `MEDIUM`, `HIGH`.                                                   |
| Intentions          | JSON ARRAY | A JSON array of detected user intentions (e.g., `["REQUEST"]`, `["PROBLEM"]`, `["PRAISE"]`).                                                    |
| Aspects Product     | JSON ARRAY | A JSON array of product-related aspects or features mentioned in the sentence (e.g., `["máquina"]`, `["app"]`).                                 |
| Aspects Service     | JSON ARRAY | A JSON array of service-related aspects mentioned in the sentence (e.g., `["atendimento"]`, `["suporte"]`).                                     |

***

#### opportunities.csv

Maps feedbacks to Opportunities (Opps) — the insight clusters identified by Birdie's analysis. Each row represents a single feedback-to-opportunity association. One feedback may appear in multiple opportunities, and one opportunity groups many feedbacks.

| Column Name          | Type   | Description                                                                                               |
| -------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| Opportunity ID       | STRING | Unique identifier for the Opportunity (UUID).                                                             |
| Opportunity Name     | STRING | Human-readable name or description of the Opportunity.                                                    |
| Feedback ID          | STRING | The feedback identifier associated with this Opportunity. References `ID` in `feedbacks.csv`.             |
| Feedback Ingested ID | STRING | The original ingested identifier of the associated feedback. References `Ingested ID` in `feedbacks.csv`. |

***

#### areas.csv

Maps feedbacks to Areas — Birdie's thematic classification buckets. Each row represents a single feedback-to-area association. One feedback may belong to multiple areas.

| Column Name          | Type   | Description                                                                                               |
| -------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| Area ID              | STRING | Unique identifier for the Area (UUID).                                                                    |
| Area Name            | STRING | Human-readable name of the Area (e.g., `Crédito \| Limite Extra`).                                        |
| Feedback ID          | STRING | The feedback identifier associated with this Area. References `ID` in `feedbacks.csv`.                    |
| Feedback Ingested ID | STRING | The original ingested identifier of the associated feedback. References `Ingested ID` in `feedbacks.csv`. |

***

#### collections.csv

Contains the definitions of Collections and their related entities. Collections are user-curated groupings used to organize Areas or other Birdie entities for monitoring and reporting.

| Column Name      | Type   | Description                                                                              |
| ---------------- | ------ | ---------------------------------------------------------------------------------------- |
| collection\_id   | STRING | Unique identifier for the Collection (UUID).                                             |
| collection\_name | STRING | Human-readable name of the Collection (e.g., `Squads \| Beatriz & João`).                |
| collection\_type | STRING | The type of entity this collection groups. Possible values: `area_interest`.             |
| related\_id      | STRING | The identifier of the related entity (e.g., an Area ID) that belongs to this Collection. |

***

#### area\_opportunities.csv

A junction table that maps the many-to-many relationship between Areas and Opportunities. Use this file to understand which Opportunities belong to which Areas referenced by feedbacks in the export window.

| Column Name     | Type   | Description                                                                            |
| --------------- | ------ | -------------------------------------------------------------------------------------- |
| opportunity\_id | STRING | The Opportunity identifier (UUID). References `Opportunity ID` in `opportunities.csv`. |
| area\_id        | STRING | The Area identifier (UUID). References `Area ID` in `areas.csv`.                       |

***

#### criteria.csv

Maps feedbacks to Criteria labels. Each row represents a single feedback-to-criteria association. The file is only produced when the export window contains feedbacks with matching criteria labels.

| Column Name   | Type   | Description                                                                                               |
| ------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| Criteria ID   | STRING | Unique identifier for the Criteria label (UUID).                                                          |
| Criteria Name | STRING | Human-readable name of the Criteria label.                                                                |
| Feedback ID   | STRING | The feedback identifier associated with this Criteria. References `ID` in `feedbacks.csv`.                |
| Ingested ID   | STRING | The original ingested identifier of the associated feedback. References `Ingested ID` in `feedbacks.csv`. |

***

#### reasons.csv

Maps feedbacks to Reason labels. Each row represents a single feedback-to-reason association. The file is only produced when the export window contains feedbacks with matching reason labels.

| Column Name | Type   | Description                                                                                               |
| ----------- | ------ | --------------------------------------------------------------------------------------------------------- |
| Reason ID   | STRING | Unique identifier for the Reason label (UUID).                                                            |
| Reason Name | STRING | Human-readable name of the Reason label.                                                                  |
| Feedback ID | STRING | The feedback identifier associated with this Reason. References `ID` in `feedbacks.csv`.                  |
| Ingested ID | STRING | The original ingested identifier of the associated feedback. References `Ingested ID` in `feedbacks.csv`. |

***

#### workspace\_collections.csv

Maps Workspaces to the Collections they reference, including the filter definition of the workspace. One workspace may reference multiple collections.

| Column Name       | Type        | Description                                                                                             |
| ----------------- | ----------- | ------------------------------------------------------------------------------------------------------- |
| workspace\_id     | STRING      | Unique identifier for the Workspace (UUID).                                                             |
| workspace\_name   | STRING      | Human-readable name of the Workspace.                                                                   |
| workspace\_filter | JSON OBJECT | A JSON object describing the workspace filter (e.g., custom field constraints, collection scope).       |
| collection\_id    | STRING      | The Collection identifier referenced by the workspace. References `collection_id` in `collections.csv`. |

***

#### segmentations.csv

Maps feedbacks to Segmentation labels. Each row represents a single feedback-to-segmentation association. The file is only produced when the export window contains feedbacks with matching segmentation labels.

| Column Name       | Type   | Description                                                                                               |
| ----------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| Segmentation ID   | STRING | Unique identifier for the Segmentation label (UUID).                                                      |
| Segmentation Name | STRING | Human-readable name of the Segmentation label.                                                            |
| Feedback ID       | STRING | The feedback identifier associated with this Segmentation. References `ID` in `feedbacks.csv`.            |
| Ingested ID       | STRING | The original ingested identifier of the associated feedback. References `Ingested ID` in `feedbacks.csv`. |

***

### 3. Data Types Reference

| Type               | Format              | Example                                   |
| ------------------ | ------------------- | ----------------------------------------- |
| STRING             | UTF-8 text          | `abc123`, `support_ticket`                |
| INTEGER            | Whole number        | `12`, `0`                                 |
| FLOAT              | Decimal number      | `5.0`, `8.5`                              |
| BOOLEAN            | Lowercase string    | `true`, `false`                           |
| JSON ARRAY         | JSON-encoded array  | `["value1", "value2"]`                    |
| JSON OBJECT        | JSON-encoded object | `{"key": {"type": "enum", "value": "X"}}` |
| Timestamp (STRING) | RFC 3339            | `2025-05-04T00:24:27Z`                    |

***

### 4. Entity Relationships

```
feedbacks.csv (ID)
 ├── messages.csv (Feedback ID → feedbacks.ID)
 ├── sentences.csv (Feedback ID → feedbacks.ID)
 ├── opportunities.csv (Feedback ID → feedbacks.ID)
 ├── areas.csv (Feedback ID → feedbacks.ID)
 ├── criteria.csv (Feedback ID → feedbacks.ID)
 ├── reasons.csv (Feedback ID → feedbacks.ID)
 └── segmentations.csv (Feedback ID → feedbacks.ID)

areas.csv (Area ID)
 └── area_opportunities.csv (area_id → areas.Area ID)

opportunities.csv (Opportunity ID)
 └── area_opportunities.csv (opportunity_id → opportunities.Opportunity ID)

collections.csv (collection_id)
 ├── related_id → areas.Area ID (when collection_type = area_interest)
 └── workspace_collections.csv (collection_id → collections.collection_id)
```


# Ingestion API

The ingestion API can be used to upload data to Birdie directly. Clients upload data by making an HTTP PUT for each record they want to upload.

The request must include a Birdie API key in an HTTP header in the form:

Authorization: ApiKey {api-key}

To generate an API key, you can reach out to the Birdie team and we will provide you one.

Response status codes

* 201 Created on success
* 400 Bad Request if the request body is invalid (response body will be a JSON object with an error message)
* 401 Unauthorized if the API key is missing or invalid
* 503 Service Unavailable if too many requests are being made in a short amount of time

{% hint style="danger" %}
We suggest making up to 100 requests per second (6000 per minute) to the Birdie API to avoid 5XX errors.
{% endhint %}

## JSON formats

Most ingestion endpoints accept JSON payloads.

Audio ingestion is the exception and uses `multipart/form-data` because it contains both structured metadata and binary recording content.

Schema definitions for JSON payloads are available at: <https://api.birdie.ai/ingestion/schemas>

### Types of uploads

#### Conversations and Messages

A conversation is an identifier of a discussion between one or more users (e.g., a support ticket or a GitHub issue).

A message is part of a conversation; a conversation is composed of messages.

Conversations and messages must be uploaded together (we suggest uploading the conversation first, then its messages). Conversations don't appear inside Birdie if they don't have an associated conversation message and vice-versa. Birdie calculates a summary for each conversation based on its messages, which is shown in the feed and can be expanded to see individual messages.

#### Feedbacks

A single feedback record posted by a user (e.g., NPS response or app review). Feedbacks are displayed alongside conversation summaries in the feed.

#### Audios

An Audio represents a recording file and the metadata required to process it.

Both components must be submitted together in the same request.

#### Audience: Accounts and Users (optional)

Accounts and users are optional records to further segment feedbacks and conversations. Use account-id and author-id fields inside the kind fields of feedbacks or conversation messages. After uploading feedbacks/conversations, you can upload accounts and users.

#### Kinds

For conversations, messages, and feedbacks, the schema includes a kind field to distinguish different kinds (e.g., support\_ticket, review). Kinds add fields specific to the origin of the data.

Kinds are used to add more fields that are more specific to the origin of the data.

For example, for conversations and messages, the Zendesk Tickets example falls under the support\_ticket kind. The app store user review example falls under the review kind.

We have multiple kinds, which can be listed here: <https://api.birdie.ai/ingestion/schemas>

You will need to analyze your source of data and see which record type (so Conversation vs Feedbacks) and which Kind best fits your data.

The value of the kind field within a feedback, conversation or conversation message is always an object with two fields:

* name: specifies the kind
* fields: contains data specific to this kind.

The valid kinds and their schemas are documented at the URL given above.

#### Other common concepts

* Path parameters in endpoints are identifiers for records. They should be strings (alpha-numerical suggested) and must be unique for records that co-exist in your Birdie account.
* Common fields across record types:
  * additional\_fields: lets clients upload any fields that don't fit the pre-defined schema (can be mapped to custom fields in Birdie — contact Birdie team for setup).
  * batch\_id: optional field to group uploaded records into a batch. Guidelines:
    1. Upload all records with the same batch\_id within 24 hours.
    2. Avoid using a different batch\_id for each record (this would create too many batches).

### Size limitations

The payload / row for any type of event (e.g an entire conversation upload with all its messages, an entire feedback, or an entire account upload) will be serialized into a JSON object by Birdie, which has a size limit of 10MB.

{% hint style="danger" %}
**IMPORTANT**: Payloads larger than 10MB will error out and not be ingested.
{% endhint %}

## Endpoints

There are five endpoints to upload different types of data.

### Conversations endpoint

```http
PUT /ingestion/conversations/{conversation-id}
```

Use to create or update a conversation. Updates overwrite the entire record (no partial updates).

The messages belonging to the conversation are uploaded separately.

#### Example 1 - Conversation of kind support\_ticket

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/conversations/123 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "kind": {
      "name": "support_ticket",
      "fields": {
        "subject": "Account reset",
        "status": "open",
        "priority": "normal",
        "channel": "email"
      }
    },
    "additional_fields": {
      "ticket_opened_at": "2024-01-01T00:00:00Z"
    }
  }'
```

{% endcode %}

#### Example 2 - Conversation of kind issue

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/conversations/issue-1 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "kind": {
      "name": "issue",
      "fields": {
        "project_id": "birdie/repository",
        "project_name": "repository",
        "status": "open",
        "title": "Doesnt work after update 1.01"
      }
    },
    "additional_fields": {
      "issue_opened_at": "2024-01-01T00:00:00Z",
      "repository_tags": ["repo"]
    }
  }'
```

{% endcode %}

### Messages endpoint

```http
PUT /ingestion/conversations/{conversation-id}/messages/{message-id}
```

Use to create or update a message that belongs to a conversation. Updates overwrite the entire record (no partial updates).

The conversation ID must match a conversation uploaded separately. Order of uploads (conversation vs messages) is not important.

#### Example 1 - Message of kind support\_ticket

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/conversations/123/messages/456 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "kind": {
      "name": "support_ticket",
      "fields": {
        "author_id": "author-1",
        "author_name": "John Doe",
        "author_type": "Agent"
      }
    },
    "text":"Hello, My name is John! Im here to assist you today.",
    "language":"en",
    "posted_at":"2024-01-01T00:00:00Z",
    "additional_fields": {
      "high_priority": true
    }
  }'
```

{% endcode %}

#### Example 2 - First message of kind issue by User

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/conversations/issue-1/messages/issue-msg-1 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "kind": {
      "name": "issue",
      "fields": {
        "author_id": "engineer123",
        "author_name": "John"
      }
    },
    "text":"Since the last update, I cant get the service to work!",
    "language":"en",
    "posted_at":"2024-01-01T10:00:00Z",
    "additional_fields": {
      "thumbs_up": 5,
      "thumbs_down": 3
    }
  }'
```

{% endcode %}

#### Example 3 - Second message of kind issue by another user

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/conversations/issue-1/messages/issue-msg-2 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "kind": {
      "name": "issue",
      "fields": {
        "author_id": "contributor456",
        "author_name": "Josh"
      }
    },
    "text":"Try rolling back to the last version, that worked for me",
    "language":"en",
    "posted_at":"2024-01-01T10:15:00Z",
    "additional_fields": {
      "thumbs_down": 10
    }
  }'
```

{% endcode %}

### Feedbacks endpoint

```http
PUT /ingestion/feedbacks/{feedback-id}
```

Use to create or update feedbacks that don't belong to a conversation. Updates overwrite the entire record (no partial updates).

#### Example 1 - Feedback of kind review

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/feedbacks/abcd-123 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "posted_at": "2024-01-01T00:00:00Z",
    "text": "Excellent app",
    "language": "en",
    "kind": {
      "name": "review",
      "fields": {
        "owner": "Owner",
        "rating": 5.0
      }
    },
    "additional_fields": {
      "author": "John Doe",
      "device": "Android"
    }
  }'
```

{% endcode %}

#### Example 2 - Feedback of kind nps

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/feedbacks/xyzw-451 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "posted_at": "2024-01-01T00:00:00Z",
    "text": "Im always recommending this service to my friends!",
    "language":"en",
    "kind": {
      "name": "nps",
      "fields": {
        "author_id": "john123",
        "author_name": "John Doe",
        "account_id": "companyABC",
        "title": "[NPS 2024] How Likely are you to recommend Birdie?",
        "rating": 10
      }
    },
    "additional_fields": {
      "classification": "promoter"
    }
  }'
```

{% endcode %}

### Audios endpoint

```http
PUT /ingestion/audios/{recording-id}
```

This endpoint is used to upload (create or update) an Audio.

The request must use `multipart/form-data` and contain:

* A `metadata` part containing a JSON payload.
* A `file` part containing the audio recording.
  * Supported recording formats depend on the transcription pipeline. In general, any common audio-only format is expected to work, including:
    * WAV
    * MP3
  * If you intend to use a different format, please reach out to the Birdie team so compatibility can be validated during implementation.
  * The API is intended for recordings up to approximately 100 MB.

The multipart request establishes the correlation between the recording and its metadata, and the `recording-id` uniquely identifies the Audio.

No additional upload, synchronization or correlation step is required from clients.

If the same `recording-id` is submitted again, the existing record will be updated following the same semantics used by the other ingestion endpoints.

Example request:

{% code title="curl" %}

```bash
    curl https://api.birdie.ai/ingestion/audios/call-123 \
    -H 'Authorization: ApiKey {api-key}' \
    -X PUT \
    -F 'metadata={
            "recorded_at":"2024-01-01T10:00:00Z",
            "kind": {
                "name": "support_ticket",
                "fields": {
                    "subject": "Billing dispute",
                    "status": "solved",
                    "priority": "normal"
                }
            },
            "account_id": "account-111",
            "agent": {
                "id": "agent-123",
                "supervisor_id": "sup-456",
                "company": "acme",
                "team": "customer-support",
                "experience": "1-3 years"
            },
            "additional_fields":{
                "queue":"billing"
            }
        };type=application/json' \
    -F 'file=@call.wav'
```

{% endcode %}

#### Response

A successful request returns:

{% code title="http" %}

```http
201 Created
```

{% endcode %}

This response indicates that the Audio Record was accepted for processing.

It does not indicate that transcription has completed.

#### Validation Errors

The request will be rejected with:

{% code title="http" %}

```http
400 Bad Request
```

{% endcode %}

if:

* The `metadata` part is missing.
* The `recording` part is missing.
* The metadata payload is an invalid JSON.
* Required metadata fields are missing.

### Accounts endpoint

```
PUT /ingestion/audience/accounts/{account-id}
```

Use to create or update an account. Updates overwrite the entire record (no partial updates).

#### Example - Match uploaded NPS Feedback

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/audience/accounts/companyABC \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "name": "Doe Inc.",
    "website": "https://example.com",
    "additional_fields": {
      "key_account": true
    }
  }'
```

{% endcode %}

### Users endpoint

```
PUT /ingestion/audience/users/{user-id}
```

Use to create or update a user. Updates overwrite the entire record (no partial updates).

#### Example - Match uploaded NPS Feedback

{% code title="curl" %}

```bash
curl https://api.birdie.ai/ingestion/audience/users/john123 \
  -H 'Authorization: ApiKey {api-key}' \
  -H 'content-type: application/json' \
  -X PUT -d '{
    "name": "John Doe",
    "email": "john.doe@example.com",
    "additional_fields": {
      "key_user": true
    }
  }'
```

{% endcode %}

Results If you successfully managed to execute the previous requests, you should see the following results in your Birdie Feed.


# Securely sharing credentials for Data Integration

Connecting your external data sources to Birdie.ai is the first step toward unlocking deep, AI-driven insights. We understand that sharing credentials involves a high level of trust, which is why we’ve built a secure, encrypted process to ensure your data remains protected.

Follow this guide to safely set up your integrations.

***

#### How to Add Your Credentials

To initiate a new data connection, ensure you are logged into your Birdie account and follow these steps:

{% stepper %}
{% step %}

### Navigate to Organization Settings

* Go to the [Organization Settings](https://app.birdie.ai/settings/organization), or use the sidebar to navigate to **your profile icon > Settings**.

<figure><img src="/files/w8UjINp2WPOil7P13sMm" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Access the Integrations Tab

* From the side navigation menu, select **Data Management > Integrations**, or you can also go directly to the page using [this link](https://app.birdie.ai/settings/integrations).

<figure><img src="/files/vnI0V6DY7IdwdOokqPX0" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Initiate a New Connection

* Click the "**Create new connection**" button.
  {% endstep %}

{% step %}

### Select the Connector

* Choose the specific platform you wish to integrate (e.g., Zendesk, Qualtrics, Bigquery).

<figure><img src="/files/3WchfeQ8H0KxhxJ8nujb" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Enter Credential Details

Input the required API keys, tokens, or login details.

{% hint style="info" %}
Paste the credentials, JSON or any additional info in the textbox below (ex.: table names, etc).

Keep in mind, in this step, you're not creating a connection, just sharing credentials security. Birdie Ingestion team will setup connection with provided credentials.
{% endhint %}

<figure><img src="/files/PjtfxpWDn0eEqevA4Kwl" alt=""><figcaption></figcaption></figure>
{% endstep %}
{% endstepper %}

{% hint style="info" %}
For platform-specific instructions on where to find these keys, please refer to our dedicated [How to integrate with](/integrations-and-data-ingestion/how-to-integrate-with) articles within the **Help Center**.
{% endhint %}

***

#### Data Retention and Deletion

We believe you should have full control over your credentials. Because these keys are the "bridge" that allows Birdie to securely fetch data from sources like BigQuery, we must maintain them to ensure your insights remain up to date.

#### How long are credentials stored?

Your keys are stored only for as long as they are active and necessary for your data operations. We will permanently delete this information in the following scenarios:

* Contract Termination: Upon the end of your service agreement with Birdie, all stored credentials and connection data are purged from our systems.
* Formal Request: We will remove credentials upon receiving a Data Subject Access Request (DSAR) or a formal written removal request from your organization’s administrator.

#### Managing Your Connection

Since these credentials are required for Birdie to communicate with your data warehouse (e.g., BigQuery), they must remain stored as long as you wish to continue importing data.

{% hint style="warning" %}
Important: You have the right to revoke or block these credentials within your own provider’s console (like Google Cloud Platform) at any time. However, please be aware that revoking access will immediately stop Birdie from being able to import or refresh your data.
{% endhint %}

***

#### Our Security Commitment

We prioritize the confidentiality and integrity of your administrative data. Here is how we handle your sensitive information:

* Isolated & Encrypted Storage: All credentials (API keys, tokens, and secrets) are stored in a private, dedicated database hosted within Birdie’s secure cloud environment. Data is encrypted at rest.
* Perimeter Protection: We enforce rigorous access controls on our infrastructure. This database is not exposed to the public internet; it is isolated within a private network and can only be accessed via our internal VPN by authorized system processes.
* Restricted Access: Access is strictly limited to automated connection setups and background synchronization. Internal Birdie users and developers do not have direct access to view or retrieve your raw credential information.
* Encryption in Transit: All data moving between your source platforms and Birdie.ai is protected by TLS 1.2+ protocols, ensuring your information remains secure as it travels across the web.

***

#### ⚠️ Important Security Disclaimers

While Birdie.ai maintains rigorous security standards, we recommend the following best practices:

* Principle of Least Privilege: When generating API keys or service accounts for Birdie, whenever possible, provide only the read-only permissions necessary for the integration to function.
* Avoid Public Channels: Never share your API keys or credentials via email, Slack, or support chat. Always use the secure input fields within the Birdie dashboard.
* Credential Rotation: We recommend rotating your API keys periodically as part of your organization's standard security hygiene.


# How to integrate with...

### Overview

This section explains how to connect Birdie to external tools and data sources so Birdie can ingest and enrich customer feedback, conversations, and account data.

Each integration guide follows a similar structure:

* **Overview** – what the integration does and which data it handles.
* **Requirements** – what you need in the third‑party tool and in Birdie.
* **Setup in the third‑party tool** – step‑by‑step configuration in the external platform.
* **Connect to Birdie** – what credentials or identifiers Birdie needs.
* **Data in scope** – what is imported (and, when relevant, exported) and how it behaves over time.

Use the links below to open a specific integration guide.

### Available integrations

* [Amplitude (Cohort Sync)](/integrations-and-data-ingestion/how-to-integrate-with/amplitude-cohort-sync)
* [AskNicely](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/asknicely)
* [BigQuery](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/bigquery)
* [Blip](/integrations-and-data-ingestion/how-to-integrate-with/blip)
* [BuzzMonitor](/integrations-and-data-ingestion/how-to-integrate-with/buzzmonitor)
* [Canny](/integrations-and-data-ingestion/how-to-integrate-with/canny)
* [Databricks](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/databricks)
* [Delighted](/integrations-and-data-ingestion/how-to-integrate-with/delighted)
* [Discord channels](/integrations-and-data-ingestion/how-to-integrate-with/discord-channels)
* [Genesys](/integrations-and-data-ingestion/how-to-integrate-with/genesys)
* [Gong](/integrations-and-data-ingestion/how-to-integrate-with/gong)
* [Intercom](/integrations-and-data-ingestion/how-to-integrate-with/intercom)
* [Konfidency](/integrations-and-data-ingestion/how-to-integrate-with/konfidency)
* [Kustomer](/integrations-and-data-ingestion/how-to-integrate-with/kustomer)
* [Mixpanel (Cohort Sync)](/integrations-and-data-ingestion/how-to-integrate-with/mixpanel-cohort-sync)
* [Octadesk](/integrations-and-data-ingestion/how-to-integrate-with/octadesk)
* [Qualtrics](/integrations-and-data-ingestion/how-to-integrate-with/qualtrics)
* [QuestionPro](/integrations-and-data-ingestion/how-to-integrate-with/questionpro)
* [S3 / Azure / GCS](/integrations-and-data-ingestion/how-to-integrate-with/s3-azure-gcs)
* [Salesforce](/integrations-and-data-ingestion/how-to-integrate-with/salesforce)
* [sFTP](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/sftp)
* [Slack](/integrations-and-data-ingestion/how-to-integrate-with/slack)
* [Snowflake](/integrations-and-data-ingestion/how-to-integrate-with/snowflake)
* [SoluCX](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/solucx)
* [Sprinklr](/integrations-and-data-ingestion/how-to-integrate-with/sprinklr)
* [Stilingue](/integrations-and-data-ingestion/how-to-integrate-with/stilingue)
* [Survicate](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/survicate)
* [Track.co](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/track)
* [Trustpilot](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/trustpilot)
* [Typeform](/integrations-and-data-ingestion/how-to-integrate-with/typeform)
* [Wootric](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/wootric)
* [Zendesk](/integrations-and-data-ingestion/how-to-integrate-with/wootric)
* [Zoho Desk](/integrations-and-data-ingestion/how-to-integrate-with/zoho-desk)


# Amplitude (Cohort Sync)

### Overview

The Amplitude integration for Birdie is a push connector that processes webhook requests from an Amplitude Cohorts integration. It works by receiving incremental cohort sync updates from Amplitude. Birdie stores and consolidates this information into a single record, allowing you to use your cohorts as filters within Birdie.

### Requirements

* A paid Amplitude plan
* At least one cohort configured in your Amplitude account (you can configure multiple cohorts, and Birdie will consolidate them at the user level)
* An active Birdie account and your Organization ID (<https://app.birdie.ai/settings/organization>)
* A Birdie Token to configure the integration (contact us and we will provide one)
* A field that can be matched to your feedbacks within Birdie. It's important for your cohort exports to contain at least one field (account\_id) that also exists within the Birdie feedbacks so we can match them.

### Setup in Amplitude with Destination Webhook

#### Open Amplitude Home

1. On the Amplitude Home, go to the Products tab and select **Sync Cohort**
2. In the Products tab, select Syncs and then click **Create Sync**

#### Create New Sync

1. Select the cohort you want to sync and click Next
2. On the next page, in the **Sync this cohort to...** section, click **Add or Manage Destinations**
3. Click **Add Destination** and select **Webhook - Cohorts**

#### Configure Webhook Destination

In the configuration page, fill in the following fields:

* **Display Name:** The name displayed in your destinations list
* **Webhook URL:** <https://api.birdie.ai/ingestion/amplitude/cohorts>
* **Headers:** Add the following authentication header:
  * **Authorization:** Basic "Token" (Provided by us)
* **Number of users per batch:** The default is 10,000 users, but this can be adjusted. Amplitude recommends batches of up to 10,000 users per cohort sync.
* **Payload:** Define the payload to send in the webhook request. We recommend using the default Amplitude payload, which follows the Amplitude cohort format. If you need to use a custom payload, contact our team so we can adjust the integration.

When finished, click Save.

### Connect to Birdie

After configuring the Custom Webhook Integration, Amplitude will automatically send cohort updates to the Birdie ingestion endpoint using the Organization ID and API Key provided by Birdie. No additional action is required after the initial setup.

### Data in scope

This connector receives incremental cohort updates from Amplitude for the cohorts you configure to sync. The data is stored in Birdie and can be used as filters alongside your other datasets.


# AskNicely

### Overview

This integration imports AskNicely survey responses into Birdie so they can be analyzed alongside other feedback sources. The connector currently supports **NPS** and **CSAT** responses and maps them into Birdie Feedback.

### Requirements

To connect AskNicely to Birdie, you need:

* **AskNicely base URL**: the URL you use to access AskNicely in your browser (must include `https://`).
* **AskNicely API key**: AskNicely authenticates API requests via a per-user API key.

{% hint style="info" %}
We recommend creating a dedicated AskNicely user for Birdie and use that user’s API key.
{% endhint %}

### Setup in AskNicely

{% stepper %}
{% step %}

#### Find your AskNicely base URL

1. Log in to AskNicely.
2. Copy the full URL from your browser address bar.
3. Use that as the **base URL** in Birdie (including `https://`).
   {% endstep %}

{% step %}

#### Generate an API key

AskNicely API requests are authenticated using the `X-apikey` header.

1. Log in to **AskNicely**.
2. Go to **Settings**.
3. Open **Users**.
4. Select the user that will be used for the Birdie integration (or create a dedicated user).
5. Copy the API key for that user.

Once you have access to your API key, share it with us following our guide: [Securely Sharing Credentials for Data Integration](/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration).
{% endstep %}
{% endstepper %}

### Connect to Birdie

Provide the following to Birdie (share credentials via a secure, one-time channel):

* `domain`: AskNicely base URL (must include scheme, e.g. `https://…`)
* `api_key`: AskNicely API key

### Import Process and Update Frequency

Birdie imports the most recently updated survey responses from AskNicely and then retrieves their metadata. This process runs on a regular schedule, ensuring that the latest interactions and content are consistently reflected in the application.

### Data in scope

#### Custom fields

The integration will retrieve additional fields from the AskNicely API, these fields can be mapped directly into Birdie, preserving your unique data structure.

Once imported, AskNicely fields appear as Birdie custom fields, maintaining consistency across all platforms and enabling enhanced segmentation, filtering, and custom workflows in Birdie.

### References

* [AskNicely API Documentation](https://demo.asknice.ly/help/apidocs/)


# BigQuery

### Overview

Birdie can ingest structured datasets directly from [BigQuery](https://cloud.google.com/bigquery/docs/introduction) using read-only SQL queries. Most customers run Birdie ingestion daily, using a partition column (DATE / TIMESTAMP / DATETIME) to import only new rows and avoid full table scans.

#### Create the Service Account used by Birdie

Birdie connects to BigQuery using a [Google Cloud Service Account](https://docs.cloud.google.com/iam/docs/service-account-overview). This service account is a technical identity used only for read-only access to your data.\
Steps in Google Cloud Console:

1. [Open Google Cloud Console](https://console.cloud.google.com/)
2. Go to IAM & Admin - [Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts)
3. Click “Create service account”
4. Service account name (suggested): birdie
5. Description (optional)
6. Click “Create and continue” (roles will be added in the next section)
7. Finish creating the service account

Note: After creation, wait up to 1 minute before using the service account. IAM propagation can be slightly delayed.

***

#### Grant Read-Only BigQuery Permissions

**Permission to run query jobs (Project level)**\
Role: BigQuery Job User (roles/bigquery.jobUser)

This permission allows Birdie to execute SQL queries. It does NOT grant data access by itself.

How to grant:

* IAM & Admin - IAM
* Select your Project
* Add the service account
* Assign role: [BigQuery Job User](https://docs.cloud.google.com/bigquery/docs/access-control#bigquery.jobUser)

***

**Permission to read data (Dataset level – recommended)**\
Role: BigQuery Data Viewer (roles/bigquery.dataViewer)

This permission allows Birdie to read tables or views.

How to grant:

* Go to BigQuery
* Select the Dataset that Birdie should ingest
* Click “Share dataset”
* Add the service account
* Assign role: [BigQuery Data Viewer](https://cloud.google.com/bigquery/docs/access-control#bigquery.dataViewer)

Note: Grant Data Viewer at the dataset (or table) level instead of the entire project.

***

#### Incremental Partition Column

Birdie uses an incremental partition column to determine which rows to ingest on each run. Choosing the right column is critical for complete data ingestion.

#### Requirements

The partition column **must reflect when a row was added or last modified in the table**, not when the original event occurred. For example:

* `loaded_at` or `updated_at` (ETL/pipeline timestamp) - **recommended**
* `inserted_at` (row creation timestamp) - acceptable if the table is append-only

#### Why `posted_at` is not sufficient

Using a business event timestamp like `posted_at` can cause **data gaps**:

1. **Historical updates missed**: If a past row is updated (e.g., a ticket status changes), its `posted_at` remains in the past and Birdie will not re-ingest it.
2. **Pipeline timing gaps**: If your ETL runs at specific times (e.g., every 6 hours), rows loaded between Birdie's query window and the ETL run may not appear until the next cycle. An `updated_at` or `loaded_at` column tied to the ETL timestamp ensures these rows are captured.

#### Recommendation

Add a `loaded_at` or `updated_at` column to your table that is set to `CURRENT_TIMESTAMP()` whenever a row is inserted or modified. Use this column as the partition column when configuring the Birdie integration.

If your table is append-only and never updated, `posted_at` is acceptable as the partition column.

***

#### Prepare Your BigQuery Table

Birdie works best when the source table is [partitioned](https://docs.cloud.google.com/bigquery/docs/creating-partitioned-tables) by a column used for incremental ingestion (for example: posted\_at).

Supported partition column types:

* DATE
* TIMESTAMP
* DATETIME

Steps in BigQuery Console:

1. Open [BigQuery](https://console.cloud.google.com/bigquery)
2. Select your Dataset
3. Click “Create table”
4. Source: Empty table
5. Define the schema:
   1. Make sure the schema includes your partition column as DATE, TIMESTAMP, or DATETIME.
6. Partition and cluster settings:
   1. Partition by field
   2. Select the partition column
   3. Recommended: enable “Require partition filter". This reduces cost and prevents accidental full table scans.
7. Create the table

***

#### Create a Service Account Key (JSON)

Birdie authenticates using a JSON [service account key](https://cloud.google.com/iam/docs/keys-create-delete).\
Steps:

1. Go to IAM & Admin - [Service Accounts](https://console.cloud.google.com/iam-admin/serviceaccounts)
2. Click the service account (birdie)
3. Open the “Keys” tab
4. Click “Add key” - “Create new key”
5. Select JSON
6. Click “Create”\
   The JSON file will be downloaded automatically.

Important:

* This JSON file is what Birdie uses to authenticate

***

Validate Access

You can validate access using Cloud Shell or your local machine.

* Activate the service account using the JSON key

```
gcloud auth activate-service-account --key-file /path/to/birdie.json
```

* Run a simple query

```
bq query --use_legacy_sql=false "SELECT 1 AS ok"
```

* Validate reading your table using a partition filter

```
bq query --use_legacy_sql=false
```

```
"SELECT * FROM <PROJECT_ID>.<DATASET>.<TABLE>
WHERE <PARTITION_COLUMN> >= DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY) LIMIT 10"
```

If this works, Birdie can query your data successfully.

***

#### Share Connection Details with Birdie

To configure the integration, securely provide Birdie with:

```
{
  "connection_details": {
    "project_id": "your-project-id-123",
    "service_account_key": {
      "type": "service_account",
      "project_id": "your-project-id-123",
      "private_key_id": "...",
      "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
      "client_email": "birdie-integration@project.iam.gserviceaccount.com",
      "client_id": "...",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://oauth2.googleapis.com/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "..."
    }
  },
  "data_source": {
    "dataset": "marketing_data",
    "table": "customer_feedback_v1",
    "partition_column": "created_at",
    "partition_type": "TIMESTAMP"
  },
  "metadata": {
    "data_kind": "Support Ticket, NPS, Account"
  }
}
```

| Section             | Field                 | Required | Description                                                                                                       |
| ------------------- | --------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
| connection\_details | project\_id           | No       | GCP project ID. Defaults to the project the service account belongs to.                                           |
| connection\_details | service\_account\_key | Yes      | The full JSON service account key downloaded in the previous step.                                                |
| data\_source        | dataset               | Yes      | The BigQuery dataset name (without the project ID), e.g. `gold_layer`.                                            |
| data\_source        | table                 | Yes      | The table or view to query, e.g. `customer_feedback_v1`.                                                          |
| data\_source        | partition\_column     | No       | The date/datetime column used for incremental ingestion. Defaults to `posted_at`.                                 |
| data\_source        | partition\_type       | No       | Type of the partition column: `DATE`, `TIMESTAMP`, or `DATETIME`.                                                 |
| metadata            | data\_kind            | Yes      | The type(s) of data in the table, e.g. `Support Ticket`, `NPS`, `CSAT`, `Review`, `Social Media Post`, `Account`. |

[Share it securely](/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration) with the Birdie team

***

Data Types Supported

Birdie can ingest [structured datasets](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with/s3-azure-gcs#data-in-scope) exposed as BigQuery tables or views, including:

* Conversations and messages (Support Tickets, Issues, Social Media Posts)
* Feedback datasets (review, nps, csat)
* Operational or reference tables (accounts, users, metadata)

Expose one table or view per dataset type.

***

### References

* [BigQuery Introduction](https://cloud.google.com/bigquery/docs/introduction)
* [Creating Partitioned Tables](https://cloud.google.com/bigquery/docs/creating-partitioned-tables)
* [BigQuery IAM Roles](https://cloud.google.com/bigquery/docs/access-control#bigquery)
* [Service Account Keys](https://cloud.google.com/iam/docs/keys-create-delete)
* [Securely Sharing Credentials](https://ask.birdie.ai/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration)


# Blip

### Overview

Birdie's Blip integration enables users to import chat history from your Blip account. Below are the key steps to set up the integration so Birdie can pull data from your environment.

### Requirements

{% hint style="info" %}
Requirements

Our integration uses the Blip REST API to pull in chat threads from your chat bot.

To get started, you'll need a Blip Environment with a chat bot configured.
{% endhint %}

### Setup in Blip

{% stepper %}
{% step %}

### Access — select the Bot

Head over to your Blip console and find the Bot you want to connect.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/7gq6cb28Ge.png)

You'll be redirected to the Bot management page.
{% endstep %}

{% step %}

### Open configurations

Click the Gear icon on the upper right corner to open the configurations.

On the configurations page, open the connection information on the left hand side.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/84OwmwPQlL.png)
{% endstep %}

{% step %}

### Copy the HTTP endpoint for commands

In the connection information, scroll down to the HTTP endpoint section.

Please copy the URL for commands so you can send it to the Birdie team.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/-48ytcnLlR.png)
{% endstep %}

{% step %}

### Create an API Key

On the left hand side click on the Access Keys section.

Click the button to create a new key and fill in the name for it (e.g., "Birdie integration").

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/Bv4zEhakmB.png)

Once created, a page with the secret values for the key will be displayed. Copy the Key for use with HTTP and send it to the Birdie team.

![](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/xiDPM5kO0_.png)
{% endstep %}
{% endstepper %}

### Connect to Birdie

After you've followed the steps above, send the Birdie team the following information:

* HTTP URL for sending commands
* API Key for use with HTTP

### Data in scope

Once configured, Birdie imports chat threads and messages exposed by the Blip REST API for the bot you connected. This allows you to analyze conversations from that bot inside Birdie alongside your other feedback sources.


# BuzzMonitor

### Overview

Birdie's BuzzMonitor integration enables users to import social interactions (posts, comments and DMs) straight from the BuzzMonitor API. Below are the key steps to setting up the integration so Birdie can pull data from your environment.

### Requirements

* **BuzzMonitor User**: The user e-mail address tied with the BuzzMonitor platform. (called `bm_user`)
* **BuzzMonitor Access Token**: A random and unique key generated by BuzzMonitor that authenticates and allows communication between the platform and external systems.
* **Filter Payload (JSON)**: The platform sources are included in the payload as `report_sources` and are used to filter specific platforms and pages, defining which platform(s) the connector will request data from and which page(s) the data is linked to.

{% hint style="warning" %}
For Birdie to be able to access the **BuzzMonitor API**, you'll need to contact the BuzzMonitor team and request that developer mode be activated on your account.
{% endhint %}

To retrieve your access token and collection filters, follow the instructions below.

### Setup in BuzzMonitor

{% stepper %}
{% step %}

#### Access the Developer Page

* Go to the [settings page](https://app.buzzmonitor.com.br/user/settings):

<figure><img src="/files/rO8d81GHBkzzjBLWcUf7" alt=""><figcaption></figcaption></figure>

* Check if you can find the **Developer tab**:

<figure><img src="/files/yRfPyLP5Kmynnp5s5a24" alt="" width="60%"><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Generate an Access Token

* Validate if the **Developer Mode** is enabled for your account before generating a new access token.
* Copy your existing token or generate a new one.

<figure><img src="/files/dgQ4g019H27UmNOCvGki" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Select the Collection

* Now you'll need to select your desired collection.

<figure><img src="/files/TBYJaPmOtkh5uHFcVLhF" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

#### Export Collection Filters

* The filter payload will contain all required fields that Birdie will use to configure the integration.

<figure><img src="/files/4yGEmxyaKDVeTh1bn5BO" alt=""><figcaption></figcaption></figure>

* The payload is in JSON format and should look something like this:

{% code title="buzzmonitor\_payload.json" %}

```json
{
  "authentication_params": {
    "bm_user": "...",
    "api_key": "..."
  },
  "general_params": {
    "timezone": "-3.0",
    "until": "20250821595959",
    "since": "20250821000000",
    "services": [
      "facebook",
      "instagram"
    ]
  },
  "report_sources": {
    "facebook_pages_wall": [
      {
        "name": "...",
        "user": "...",
        "other_pages": false,
        "page_id": "...",
        "source": "..."
      }
    ],
    "instagram": [
      {
        "name": "...",
        "user": "...",
        "bm_user": "..."
      }
    ]
  }
}
```

{% endcode %}

{% hint style="warning" %}
The payload may contain more information; this example contains the minimum required fields to work with the BuzzMonitor API.
{% endhint %}
{% endstep %}

{% step %}

#### Share the Access Token and Payload securely

Save both access token and filter payload securely, this will be used to authenticate API and filter requests.

Share them with the Birdie team [using a secure way](/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration)
{% endstep %}
{% endstepper %}

### Connect to Birdie

Through this integration, you can import social media (posts and comments) and conversations (direct messages/inbox).

For each interaction, we extract the main fields for that interaction, such as Channel, Status, Priority, Tags, Author Name, Text, etc.

### Data in scope

#### Sources

The connector currently supports:

* `facebook_private_messages` (DMs)
* `facebook_page_wall` (Posts and Comments)
* `instagram` (DMs, posts and comments)
* `linkedin_updates` (Posts, comments and mentions)

#### Source fields

Each source requires different fields. The only common field is `name`, which is required for all types of source.

* facebook (page\_wall and private\_messages)
  * `name`
  * `user`
  * `page_id`
  * `other_pages`
* instagram
  * `name`
  * `user`
  * `bm_user`
* linkedin
  * `name`

#### Interaction types

The BuzzMonitor platform supports these interaction types:

* Public interactions:
  * `post`
  * `comment`
  * `comment_reply`
  * `reply`
  * `mention`
  * `comment_from_mention`
  * `reels`
  * `ad` (Promoted posts)
  * `carousel_album` (Instagram carousel)
* Private interactions (DMs):
  * `direct_message`
  * `message`

#### Custom fields

The integration will retrieve additional fields from the BuzzMonitor API, these fields can be mapped directly into Birdie, preserving your unique data structure.

Once imported, BuzzMonitor fields appear as Birdie custom fields, maintaining consistency across all platforms and enabling enhanced segmentation, filtering, and custom workflows in Birdie.


# Canny

### Overview

This integration imports customer feedback from your Canny workspace into Birdie, allowing you to analyze feature requests, bug reports, and customer suggestions alongside other feedback sources.

The connector imports Canny posts together with their associated metadata, including boards, categories, tags, comments, status, and vote information, providing additional context for your customer feedback.

### Requirements

* A Canny workspace.
* A Canny API Key.

To retrieve your API Key, follow the instructions below.

### Setup in Canny

{% stepper %}
{% step %}

### Access Account Settings

Log in to your Canny workspace and click your profile picture in the bottom-left corner.
{% endstep %}

{% step %}

### Open API Settings

Navigate to **Settings** and then **API**.
{% endstep %}

{% step %}

### Obtain API Key

Copy your API Key.

Once you have access to your API key, share it with us following our guide: [Securely Sharing Credentials for Data Integration](/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration).
{% endstep %}
{% endstepper %}

### Connect to Birdie

After securely sharing your Canny API Key, the Birdie team will configure the connector and confirm once the integration is active.

### Data in scope

#### Import Process and Update Frequency

Birdie periodically imports newly created and updated posts from your Canny workspace, along with their associated metadata. This ensures that the latest customer feedback is consistently available for analysis in Birdie.

#### Custom fields

In addition to the standard feedback schema, Birdie imports Canny metadata as custom fields whenever applicable.

Depending on your workspace configuration, Birdie can import metadata associated with:

* Posts
* Boards
* Categories
* Tags
* Votes
* Users
* Companies (when available)

These metadata fields are imported as Birdie custom fields whenever applicable, enabling advanced filtering, segmentation, and analysis across your customer feedback.

### References

* [Canny API Documentation](https://developers.canny.io/api-reference#intro)
* [About Canny API](https://help.canny.io/en/articles/4195400-the-canny-api)


# Databricks

### Overview

Birdie connects to your Databricks workspace and runs SQL queries through a [SQL Warehouse](https://docs.databricks.com/en/compute/sql-warehouse/index.html) — the serverless compute layer that runs queries without requiring a dedicated cluster.

Birdie can import data from Databricks into Birdie for analytics, enrichment and reporting purposes, including:

* Customers and accounts
* Operational and reference tables
* Feedback-related datasets exposed by the client

Because each Databricks deployment is unique, Birdie's team will work with your administrators to finalize details. This article explains how your Databricks admin can configure access and provide the credentials needed to enable the integration.

Two authentication methods are supported:

* **OAuth (Service Principal)** — recommended for production
* **Personal Access Token (PAT)** — simpler alternative

***

### Schema requirements

All Birdie database connectors (Snowflake, Databricks, BigQuery, etc.) require one table or view per feedback type, following the Birdie schema definition.

Examples of feedback types:

* nps
* csat
* review
* social\_media\_post
* support\_ticket

Each feedback type must exist as a table or a view.

Birdie provides the detailed schema reference separately (same model as the [S3 schema documentation](https://ask.birdie.ai/integrations-and-data-ingestion/how-to-integrate-with.../s3-azure-gcs)).

***

#### Incremental Partition Column

Birdie uses a partition column to determine which rows to ingest on each run. Typical queries look like:

```sql
SELECT *
FROM <catalog>.<schema>.<table>
WHERE <partition_column> BETWEEN :start AND :end;
```

#### Requirements

The partition column **must reflect when a row was added or last modified in the table**, not when the original event occurred. For example:

* `loaded_at` or `updated_at` (ETL/pipeline timestamp) — **recommended**
* `inserted_at` (row creation timestamp) — acceptable if the table is append-only

#### Why `posted_at` is not sufficient

Using a business event timestamp like `posted_at` can cause **data gaps**:

1. **Historical updates missed**: If a past row is updated (e.g., a ticket status changes), its `posted_at` remains in the past and Birdie will not re-ingest it.
2. **Pipeline timing gaps**: If your ETL runs at specific times (e.g., every 6 hours), rows loaded between Birdie's query window and the ETL run may not appear until the next cycle. An `updated_at` or `loaded_at` column tied to the ETL timestamp ensures these rows are captured.

#### Recommendation

Add a `loaded_at` or `updated_at` column to your table that is set to `current_timestamp()` whenever a row is inserted or modified. Use this column as the `partition_column` when configuring the Birdie integration.

If your table is append-only and never updated, `posted_at` is acceptable as the partition column.

***

### OAuth (Service Principal) Method

#### Overview

Authenticates through Databricks' [OAuth M2M (machine-to-machine)](https://docs.databricks.com/en/dev-tools/auth/oauth-m2m.html) flow using client credentials. Recommended for production and automated environments.

#### Requirements

Before starting:

* Your workspace has Unity Catalog enabled (recommended) or Hive Metastore
* You have workspace admin access
* A SQL Warehouse is available

#### Setup in Databricks

{% stepper %}
{% step %}

#### Create a Service Principal

1. Go to **Settings > Identity and access > Service principals**
2. Add a service principal named `birdie`
3. Enable **Workspace Access** and **Databricks SQL Access**
   {% endstep %}

{% step %}

#### Generate OAuth Credentials

1. Generate a client secret for the service principal
2. Save the **Client ID** and **Client Secret**
   {% endstep %}

{% step %}

#### Grant SQL Warehouse Access

Grant **CAN USE** on the SQL Warehouse to `birdie`
{% endstep %}

{% step %}

#### Grant Read-Only Table Permissions

Follow the principle of least privilege: grant access only to the specific catalogs, schemas and tables required by Birdie.

For Unity Catalog:

```sql
GRANT USAGE ON CATALOG <catalog> TO `birdie`;
GRANT USAGE ON SCHEMA <catalog>.<schema> TO `birdie`;
GRANT SELECT ON TABLE <catalog>.<schema>.<table> TO `birdie`;
```

For Hive Metastore (legacy):

```sql
GRANT SELECT ON TABLE <schema>.<table> TO `birdie`;
```

{% endstep %}
{% endstepper %}

***

### Personal Access Token (PAT) Method

#### Overview

A simpler alternative when OAuth is not configured. Uses a long-lived token tied to a user account. Token lifecycle and rotation are the responsibility of the user who created it.

#### Setup in Databricks

{% stepper %}
{% step %}

#### Create or Use an Existing User

The user needs **Workspace Access** and **Databricks SQL Access**
{% endstep %}

{% step %}

#### Generate a PAT

1. Go to **User Settings > Developer > Access Tokens**
2. Generate a new token
3. Save the token (shown only once)
   {% endstep %}

{% step %}

#### Grant Permissions

Apply the same SQL GRANT statements as the OAuth method above (see Step 4 under OAuth).
{% endstep %}
{% endstepper %}

***

### Share Connection Details with Birdie

To configure the integration, securely provide Birdie with the following information.

**For OAuth (Service Principal):**

```json
{
  "connection_details": {
    "host": "https://dbc-xxxx.cloud.databricks.com",
    "warehouse_id": "a1b2c3d4e5f6g7h8",
    "auth": {
      "method": "oauth",
      "client_id": "your-service-principal-client-id",
      "client_secret": "your-service-principal-client-secret"
    }
  },
  "data_source": {
    "catalog": "main",
    "schema": "default",
    "table": "birdie_export_table",
    "partition_column": "loaded_at"
  },
  "metadata": {
    "data_kind": "Support Ticket, NPS, Account"
  }
}
```

**For PAT:**

```json
{
  "connection_details": {
    "host": "https://dbc-xxxx.cloud.databricks.com",
    "warehouse_id": "a1b2c3d4e5f6g7h8",
    "auth": {
      "method": "pat",
      "personal_access_token": "your-personal-access-token"
    }
  },
  "data_source": {
    "catalog": "main",
    "schema": "default",
    "table": "birdie_export_table",
    "partition_column": "loaded_at"
  },
  "metadata": {
    "data_kind": "Support Ticket, NPS, Account"
  }
}
```

<table><thead><tr><th width="215">Section</th><th>Field</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td>connection_details</td><td>host</td><td>Yes</td><td>Workspace URL, e.g. <code>https://dbc-xxxx.cloud.databricks.com</code></td></tr><tr><td>connection_details</td><td>warehouse_id</td><td>Yes</td><td>Databricks SQL Warehouse ID.</td></tr><tr><td>connection_details.auth</td><td>method</td><td>Yes</td><td>Authentication mode: <code>oauth</code> (default) or <code>pat</code>.</td></tr><tr><td>connection_details.auth</td><td>client_id</td><td>OAuth</td><td>Service principal client ID.</td></tr><tr><td>connection_details.auth</td><td>client_secret</td><td>OAuth</td><td>Service principal client secret.</td></tr><tr><td>connection_details.auth</td><td>personal_access_token</td><td>PAT</td><td>Personal access token.</td></tr><tr><td>data_source</td><td>catalog</td><td>Yes</td><td>Unity Catalog name (optional for Hive Metastore).</td></tr><tr><td>data_source</td><td>schema</td><td>Yes</td><td>Schema or database name.</td></tr><tr><td>data_source</td><td>table</td><td>Yes</td><td>Table or view name.</td></tr><tr><td>data_source</td><td>partition_column</td><td>Yes</td><td>Column for incremental ingestion. Defaults to <code>created_at</code></td></tr><tr><td>metadata</td><td>data_kind</td><td>Yes</td><td>The type(s) of data in the table, e.g. <code>Support Ticket</code>, <code>NPS</code>, <code>CSAT</code>, <code>Review</code>, <code>Account</code>.</td></tr></tbody></table>

[Share credentials securely](https://ask.birdie.ai/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration) with the Birdie team. Never send credentials via email or unencrypted channels.

***

### Validating the integration

{% stepper %}
{% step %}

#### Generate an OAuth token (OAuth example)

```bash
curl --request POST "https://<workspace-host>/oidc/v1/token" \
  --header "Content-Type: application/x-www-form-urlencoded" \
  --data "grant_type=client_credentials" \
  --data "client_id=<client_id>" \
  --data "client_secret=<client_secret>" \
  --data "scope=all-apis"
```

You should receive an `access_token`.
{% endstep %}

{% step %}

#### Validate Databricks REST API access

```bash
curl -H "Authorization: Bearer <access_token>" \
  "https://<workspace-host>/api/2.0/workspace/get-status?path=/"
```

Expected response:

```json
{"object_type":"DIRECTORY","path":"/"}
```

{% endstep %}

{% step %}

#### Validate SQL execution

```bash
curl --request POST \
  "https://<workspace-host>/api/2.0/sql/statements" \
  --header "Authorization: Bearer <access_token>" \
  --header "Content-Type: application/json" \
  --data '{
    "statement": "SELECT 1",
    "warehouse_id": "<warehouse_id>"
  }'
```

If this returns `1`, Birdie can successfully execute SQL queries.Validating the integration
{% endstep %}
{% endstepper %}

***

### References

* [Databricks REST & SQL API](https://docs.databricks.com/api/index.html)
* [Authentication](https://docs.databricks.com/en/dev-tools/auth/index.html)
* [Unity Catalog Privileges](https://docs.databricks.com/en/data-governance/unity-catalog/privileges/index.html)
* [Service Principals](https://docs.databricks.com/en/admin/users-groups/service-principals.html)
* [Personal Access Tokens](https://docs.databricks.com/en/dev-tools/auth/pat.html)
* [Securely Sharing Credentials](https://ask.birdie.ai/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration)


# Delighted

### Overview

Birdie allows you to automatically ingest responses from your Delighted surveys into your workspace, enabling deeper analysis and insight generation through our Customer Intelligence platform. This integration captures not only survey answers but also associated metadata like respondent, company, and channel information.

With this integration, you’ll be able to:

* Import NPS/CSAT survey responses from Delighted
* Capture associated metadata (e.g., user info, company, timestamps, tags)
* Automatically sync data into Birdie for analysis

Below is a step-by-step guide to help you set up your Delighted → Birdie integration using the Delighted REST API.

### Requirements

Birdie's integration with Delighted requires the API token for your project. Delighted works as a platform where you can create multiple projects. Each project corresponds to a survey, and Birdie needs the API token associated with the specific project you want to integrate.

To retrieve the API Key, follow the instructions below:

{% stepper %}
{% step %}

### Select Project

* Log in to your Delighted account and select the correct project (top-left corner).

<figure><img src="/files/4r4DRFgHMQYktJQdnXdD" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Access API Documentation

* Go to Help > API Docs to find your private key (top-right corner).

<figure><img src="/files/0hNRndbMWlP5RUgWkv6D" alt=""><figcaption></figcaption></figure>
{% endstep %}

{% step %}

### Get Your API Key

* In the authentication section, you will find your API key.

<figure><img src="/files/UaPt4iVzH0zgzRoS5CH1" alt=""><figcaption></figcaption></figure>

* Once you have access to your API key, share it with us following our guide: [Securely Sharing Credentials for Data Integration](/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration).

{% hint style="warning" %}
Your API key is sensitive. Never share it publicly. It will be used via HTTP Basic Authentication as the username, leaving the password field blank.
{% endhint %}
{% endstep %}
{% endstepper %}

### Connect to Birdie

After completing the setup above and sharing your Delighted API key securely, the Birdie team will configure the connector and confirm when the integration is active.

#### Rate Limiting Considerations

In rare cases, Delighted may temporarily limit API requests (for example, if too many requests are made in a short time).

If this happens, some requests may fail briefly and access usually returns to normal shortly.

You don’t need to take action unless the rate limit persists.

#### Import Process and Update Frequency

Birdie imports the most recently updated survey responses from Delighted and then retrieves their metadata. This process runs on a regular schedule, ensuring that the latest interactions and content are consistently reflected in the application.

#### Custom Fields

If your Delighted setup includes custom fields for survey responses, these fields can be mapped directly into Birdie, preserving your unique data structure. For survey responses, the data follows this [response pattern](https://app.delighted.com/docs/api/listing-survey-responses)

Once imported, Delighted custom fields appear as Birdie custom fields, maintaining consistency across both platforms. Mapped to Birdie’s data structure, these fields enhance data organization and filtering, supporting extended segmentation within Birdie’s interface. This allows for customized workflows and data displays based on the unique attributes of each survey response.

If you need further help, contact your Birdie representative or Delighted admin for project-specific assistance.

### References

* Delighted API Documentation\
  <https://app.delighted.com/docs/api>


# Discord channels

### Overview

With the Birdie bot for Discord, Birdie can import messages from any channel in a Discord server you authorize.

Ideally, each conversation should be organized into a thread so Birdie can preserve the conversation context when importing messages. However, Birdie can also import individual messages posted directly in a channel as feedback.

### Requirements

Birdie's integration with Discord requires:

* A user with a Discord admin role
* Authorization to add the Birdie bot
* Server ID (Guild ID)
* Channel IDs for setup

### Supported Channels

Birdie currently supports the following channel types:

* Text Channels
* Forum Channels

### Setup in Discord

Below is a step-by-step guide to help you set up your Discord → Birdie integration.

{% stepper %}
{% step %}

### Access the Birdie bot page

Open the Birdie bot authorization link while logged in as a Discord administrator and click "Continue to Discord":

<https://discord.com/oauth2/authorize?client\\_id=1301530719788601447\\&permissions=66560\\&integration\\_type=0\\&scope=bot>

<img src="/files/rnBz2AMtkRezyagzPe1v" alt="" width="600">
{% endstep %}

{% step %}

### Select your Discord server

Choose the Discord server you want to enable the bot in.

<img src="/files/21gNd3KwSTwln6u9kMHD" alt="" width="560">
{% endstep %}

{% step %}

### Grant permissions to the bot

Enable "View Channels" and "Read Message History" permissions, then click "Authorize"

<img src="/files/EMrYdQPTYy4kHXn4q8H2" alt="" width="560">
{% endstep %}

{% step %}

### Enable Developer Mode

To retrieve server/channel IDs, you need to enable "Developer Mode" in User Settings (bottom-left corner) > Advanced

<img src="/files/ic3a4KmOpVbDZ38uJFr1" alt="" width="280">

<img src="/files/dCAwonUd9LW6RFWjdgB3" alt="" width="320">

<img src="/files/TU5RVo8tHzhJA0i5RZhP" alt="" width="600">
{% endstep %}

{% step %}

### Share Server/Channel IDs

To obtain the Server ID, click on the server name and click "Copy Server ID"

<img src="/files/j11douKPVn6ufFHStH6l" alt="" width="320">

Then, for each channel you want to monitor, right-click on it and select "Copy Channel ID".

<img src="/files/RYuPo0THZAwCrtHJI69D" alt="" width="320">

{% hint style="info" %}
Birdie can also import data from Forum Channels, each thread is treated as a separate conversation. (To retrieve a forum channel ID, follow the same steps used to retrieve a text channel ID)
{% endhint %}

Once you have the server ID and all the channel IDs, share them with us following our guide: [Securely Sharing Credentials for Data Integration](https://ask.birdie.ai/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration).
{% endstep %}
{% endstepper %}

### Data in scope

After the integration is configured, Birdie imports messages from the Discord channels you authorize (including threaded conversations and individual messages) so they can be analyzed alongside your other feedback sources.

### Privacy

The bot only requests the permissions necessary to retrieve conversations from your server. These include:

* View Server Channels
* Read Message History


# Forethought

### Overview

This integration imports Conversations data from your Forethought account into Birdie, allowing you to analyze support and messaging interactions alongside other feedback sources.

### Requirements

To set up this integration, you’ll need:

* A Forethought account with permission to access the Analytics API
* An API key generated for the API

To obtain your API Key is necessary to contact Forethought Support.

### Connect to Birdie

Once you have access to your API key, share it with us following our guide: [Securely Sharing Credentials for Data Integration](https://ask.birdie.ai/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration).

After you’ve generated and securely shared your Forethought credentials, the Birdie team will configure the connector and confirm once the integration is active.

### Custom fields

If your Forethought conversations include metadata, these values can be mapped directly into Birdie, preserving your unique data structure. Forethought metadata supports a variety of data types and allows you to store additional information within conversations beyond the standard fields.

Once imported, Forethought conversation metadata appears as Birdie custom fields, maintaining consistency across platforms and enabling enhanced segmentation, filtering, and custom workflows in Birdie.

### Import Process and Update Frequency

Birdie imports the most recently updated conversation records from Forethought and then retrieves their associated metadata. This process runs on a regular schedule, ensuring that the latest interactions and content are consistently reflected in the application.


# Genesys

### Overview

The Genesys connector allows Birdie to import conversations directly from your Genesys transcripts.

### Requirements

Our integration leverages the speech-to-text analytics feature from Genesys to retrieve call transcripts. Before proceeding, ensure that you have the necessary access to this feature on your Genesys Cloud account.

{% hint style="info" %}
Genesys adheres to the OAuth 2 standard for secure authentication, and our solution uses client\_credentials as grant type.

This grant type is designed for non-user applications, such as the Genesys connector. Additionally, this grant type enhances security by restricting access to user-specific APIs (for example, GET /v2/users/me).

The only necessary credentials that you need to provide to Birdie's team are:

* Client ID
* Client Secret
  {% endhint %}

Details on how to obtain these credentials are provided in the next section.

### Setup in Genesys

To enable the Genesys connector, you need to create an OAuth authentication client with sufficient permissions to access Genesys transcripts.

Follow the Genesys [tutorial](https://help.mypurecloud.com/articles/create-an-oauth-client/) and make sure the following steps are correctly configured:

{% stepper %}
{% step %}

### Select grant type

* Choose the Client Credentials grant type.
  {% endstep %}

{% step %}

### Assign client roles / scopes

Assign the appropriate client roles related to call transcripts.

* Required Permissions:
  * analytics:conversationDetail:view
  * analytics:agentConversationDetail:view
  * speechAndTextAnalytics:data:view
  * recording:recording:view
  * recording:recordingSegment:view
* Required Scopes:
  * analytics
  * conversations
  * speech-and-text-analytics
  * recordings
  * analytics:readonl
  * conversations:readonly
  * speech-and-text-analytics:readonly
  * recordings:readonly
    {% endstep %}
    {% endstepper %}

### Connect to Birdie

After creating the client, make sure to store the provided Client ID and Client Secret securely.

Share the following securely with the Birdie team so they can finalize the connector configuration:

* Client ID
* Client Secret

### Data in scope

Once configured, the Genesys connector imports call and conversation transcripts from Genesys speech-to-text analytics into Birdie, along with the associated metadata that is exposed through the configured permissions and scopes.


# Gong

### Overview

You can connect your Gong account with Birdie to automatically ingest conversation transcripts and make your calls and meetings searchable within your Birdie workspace.

This integration uses Gong’s API credentials to securely sync data.

### Requirements

To set up this integration, you’ll need:

* A Gong account
* Administrator access in Gong to generate API credentials

### Setup in Gong

{% stepper %}
{% step %}

### Generate API credentials (admin)

* Log in to your Gong account as an administrator.
* Go to Admin Center → Settings → Ecosystem → API.
* Click Get API Key.
  {% endstep %}

{% step %}

### Record the credentials

You’ll receive an Access Key and an Access Key Secret.

* Username = Access Key
* Password = Access Key Secret
  {% endstep %}

{% step %}

### Share and maintain

* Save these credentials and [securely share](https://onetimesecret.com/en/) them with the Birdie team — you’ll need them in the next step.
* Gong will notify you before your key expires so you can renew it in time.
  {% endstep %}
  {% endstepper %}

{% hint style="info" %}
Only Gong administrators can generate API credentials. Any Gong plan supports API access.
{% endhint %}

### Connect to Birdie

After you’ve generated and securely shared your Gong API credentials, the Birdie team will configure the connector and confirm once the integration is active.

### Data in scope

After the integration is enabled, Birdie imports Gong conversation transcripts (calls and meetings) so they can be searched, filtered, and analyzed alongside your other feedback sources.


# HubSpot

### Overview

Birdie's HubSpot connector imports your HubSpot data into Birdie so you can analyze it alongside your other feedback sources. It supports two kinds of data:

* **Support tickets** — imported as conversations, with the ticket's emails and notes as the messages.
* **Feedback submissions** (survey responses such as NPS, CSAT, and CES) — imported as individual feedback.

Once a day, Birdie fetches the records that were modified in HubSpot since the previous run.

### Requirements

To authenticate, Birdie uses a HubSpot **Private App access token**. You create a private app in your HubSpot account and grant it read scopes for the data you want to import:

* **Tickets:** `tickets` (read), `sales-email-read`, and `crm.objects.notes.read`
* **Feedback / survey submissions:** `crm.objects.feedback_submission.read`

Grant only the scopes for the data types you intend to import.

### Setup in HubSpot

{% stepper %}
{% step %}

### Open Private Apps

In your HubSpot account, open **Settings** (gear icon, top right) → **Integrations** → **Private Apps**.
{% endstep %}

{% step %}

### Create a private app

Click **Create a private app**, then give it a name (e.g. "Birdie integration") and a description.
{% endstep %}

{% step %}

### Configure scopes

Open the **Scopes** tab and enable the read scopes for the data you'll import (see **Requirements** above).
{% endstep %}

{% step %}

### Create the app and copy the token

Click **Create app**. HubSpot displays the **access token only once** — copy it and store it securely.
{% endstep %}
{% endstepper %}

### Share Connection Details with Birdie

Securely provide Birdie with the following:

```json
{
  "connection_details": {
    "entity": "tickets",
    "auth": {
      "method": "private_app",
      "access_token": "your-hubspot-private-app-token"
    }
  }
}
```

| Section                   | Field          | Required | Description                                                                     |
| ------------------------- | -------------- | -------- | ------------------------------------------------------------------------------- |
| `connection_details`      | `entity`       | Yes      | The data type to import: `tickets` or `surveys`. Use one connection per entity. |
| `connection_details.auth` | `method`       | Yes      | Authentication method, currently only `private_app`.                            |
| `connection_details.auth` | `access_token` | Yes      | The private app access token (shown only once when the app is created).         |

To import **both** tickets and feedback submissions, set up **two connections** — one per `entity`.

[Share credentials securely](https://ask.birdie.ai/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration) with the Birdie team. Never send credentials via email or unencrypted channels.

### Data in scope

#### Tickets (imported as conversations)

Each HubSpot ticket is imported as a conversation. The ticket's associated **emails** and **notes** are imported as the conversation's messages, and the direction of each email (incoming vs. outgoing) is preserved. Requires the `tickets`, `sales-email-read`, and `crm.objects.notes.read` scopes.

#### Feedback submissions (imported as feedback)

HubSpot **feedback submissions** (survey responses such as NPS, CSAT, and CES) are imported as individual feedback records. Requires the `crm.objects.feedback_submission.read` scope.

#### Import frequency

Birdie imports once a day, fetching only the records whose **Last Modified** date changed since the previous run — so updates are captured without re-importing everything.

#### Custom fields

Birdie can import your HubSpot **custom properties** on tickets and feedback submissions. To bring a custom property into Birdie, configure a matching custom field in the Birdie App **before** the connection is set up: the field's matching column name must equal the HubSpot property name (you can give the field any label you like inside Birdie).

### References

* HubSpot Private Apps: <https://developers.hubspot.com/docs/api/private-apps>


# Intercom

### Overview

This integration imports Conversations data from your Intercom account into Birdie so that you can analyze support and messaging interactions alongside other feedback sources.

In order to authorize the Birdie integration to collect data from your Intercom account, you must provide a valid Access Token.

### Requirements

To set up this integration, you’ll need:

* An Intercom account with permissions to create or manage an Integration App
* An Access Token generated for that Integration App

### Setup in Intercom

To create an Access Token, follow these steps:

{% stepper %}
{% step %}

### Access Account Settings

Open your Intercom account and go to your Account Settings page.
{% endstep %}

{% step %}

### Open Developer Hub

From the Apps and Integration menu, access the Developer Hub page.
{% endstep %}

{% step %}

### Create or select an Integration App

Select an existing Integration App or create a new one.

Recommended: create a dedicated app for the Birdie integration.
{% endstep %}

{% step %}

### Configure Authentication

Open your Integration App and click on the Authentication menu.

![Integration App Authentication screenshot](https://tawk.link/685001d2e1d1cb19110409b6/kb/attachments/6L8rJfguyf.png)
{% endstep %}

{% step %}

### Share the Access Token securely

Share the generated Access Token securely with Birdie (for example, using One Time Secret):

<https://onetimesecret.com/en/>
{% endstep %}
{% endstepper %}

### Connect to Birdie

After you’ve generated and securely shared your Intercom Access Token, the Birdie team will configure the connector and confirm once the integration is active.

### Data in scope

#### Conversation endpoint

Birdie uses Intercom’s Conversations API to retrieve conversations:

```
https://developers.intercom.com/intercom-api-reference/reference/listconversations
```


# Konfidency

### Overview

This integration imports Reviews from your Konfidency account into Birdie. Below are key details about what we need to set up the integration and how reviews and data are imported.

### Requirements

For Birdie to authenticate with the Konfidency API and import data, you'll need to retrieve your customer key and client credentials that will be used to perform the authentication and authorization. Provide the Birdie team with the following:

* Customer Key: Client identification key/name
* Client ID: Unique identifier for your application used during authentication.
* Client Secret: Confidential key used to authenticate your application.

### Setup in the third‑party tool

{% stepper %}
{% step %}

#### Accessing your Konfidency account

* Log in to your Konfidency account and go to Settings.
* Click API.

![](/files/gzih69QzdxL0Rq49788n)
{% endstep %}

{% step %}

#### Save the credentials

* All the required information needed to integrate with the API will be available on the screen.

![](/files/ZvzRfQOEC7M9Hb22ssrm)
{% endstep %}
{% endstepper %}

### Connect to Birdie

Once you have your API credentials, [share them securely](https://ask.birdie.ai/integrations-and-data-ingestion/securely-sharing-credentials-for-data-integration) with the Birdie team:

* Customer Key
* Client ID
* Client Secret

The Birdie team will configure the connector and confirm once the integration is active.

### Data in scope

Once configured, the Konfidency integration imports reviews and their additional attributes, so they can be analyzed alongside your other feedback sources in Birdie.

{% hint style="info" %}
By default, the integration fetches all product groups and their associated reviews.
{% endhint %}

#### Custom fields

The integration will retrieve additional fields from the Konfidency API, these fields can be mapped directly into Birdie, preserving your unique data structure.

Once imported, Konfidency fields appear as Birdie custom fields, maintaining consistency across all platforms and enabling enhanced segmentation, filtering, and custom workflows in Birdie.

### References

* [Get API access keys](https://help.konfidency.cx/pt-br/article/obter-chaves-de-acesso-para-a-api-1cbny1h/)
* [API Documentation](https://docs.konfidency.com.br/docs/intro)




---

[Next Page](/llms-full.txt/1)

