# Analytics

If you want to track or report on Birdie usage inside Salesforce, the **Birdie Links** object (API name `Birdie_Recording__c`) gives you a record for every Birdie screen-recording link or recording-request link used in a Case.

Whenever a Birdie link appears in:

* a Case Feed post
* a Case Comment (public or private)
* an EmailMessage
* a Case field (e.g., Description)
* a form submission synced into Salesforce

…Birdie automatically creates a **Birdie Link** record to capture that usage.

This gives admins and managers a simple, reliable way to build metrics, dashboards, and adoption reports.

***

### Object Summary

| Property        | Value                                         |
| --------------- | --------------------------------------------- |
| **Label**       | Birdie Link                                   |
| **API Name**    | `Birdie_Recording__c`                         |
| **Purpose**     | Track each Birdie URL usage inside Salesforce |
| **Created By**  | Birdie managed package                        |
| **UI Location** | **Birdie Links** tab (added by the package)   |

***

### What URLs Are Detected?

Birdie automatically detects:

#### **Outgoing Birdie recordings (agent → customer)**

```
https://share.birdie.so/o/<id>
```

#### **Incoming Birdie recordings (customer → agent)**

```
https://share.birdie.so/i/<id>
```

#### **Birdie recording request links**

```
https://<your-birdie-subdomain>.birdie.so/rec/<id>
```

Direction is computed automatically from these patterns.

***

### Key Fields

<table><thead><tr><th width="162.18975830078125">Label</th><th width="158.0845947265625">API Name</th><th width="156.021728515625">Type</th><th>Description</th></tr></thead><tbody><tr><td><strong>Link URL</strong></td><td><code>LinkUrl__c</code></td><td>Text</td><td>The actual Birdie link detected <em>(replaces the deprecated RecordingUrl__c field).</em></td></tr><tr><td><strong>Direction</strong></td><td><code>Way__c</code></td><td>Text</td><td>One of: <code>incoming</code>, <code>outgoing</code>, <code>request</code>, based on URL pattern.</td></tr><tr><td><strong>Source</strong></td><td><code>Source__c</code></td><td>Text</td><td>Where the link was found (<code>FeedItem</code>, <code>EmailMessage</code>, <code>CaseField</code>, <code>CaseCommentPublic</code>, <code>CaseCommentPrivate</code>).</td></tr><tr><td><strong>Case</strong></td><td><code>Case__c</code></td><td>Lookup(Case)</td><td>Case associated with the usage (when applicable).</td></tr><tr><td><strong>Last Used At</strong></td><td><code>LastUsedAt__c</code></td><td>Date/Time</td><td>Timestamp of the detection.</td></tr></tbody></table>

***

### How Birdie Creates These Records

Birdie includes four managed triggers:

| Trigger                  | Detects Links In           | When It Fires                 |
| ------------------------ | -------------------------- | ----------------------------- |
| **FeedItem Trigger**     | Case feed posts            | After insert                  |
| **EmailMessage Trigger** | Emails on a Case           | After insert                  |
| **CaseComment Trigger**  | Public or private comments | After insert                  |
| **Case Trigger**         | Any text field on Case     | After insert and after update |

#### What happens when a link is detected?

1. Salesforce extracts all Birdie URLs from the text.
2. For **each link**, it creates a **new Birdie Link record**.
3. It assigns the correct **Direction** and **Source**.
4. It links the record to the Case (when appropriate).
5. It stores the detection time.

Everything is 100% automated.\
Admins do not need Flows, Processes, or custom triggers.

***

### Notes for Salesforce Developers

#### API Names

| Label       | API Name              |
| ----------- | --------------------- |
| Birdie Link | `Birdie_Recording__c` |
| Direction   | `Way__c`              |
| Link URL    | `LinkUrl__c`          |
| Source      | `Source__c`           |
| Case        | `Case__c`             |

{% hint style="warning" %}
**Note on API names:**\
This document shows field API names *without* the managed package namespace for readability (for example `LinkUrl__c`).\
In Apex, SOQL, and formulas, these are prefixed with the Birdie namespace `sfbirdiecx__`, e.g. `sfbirdiecx__LinkUrl__c` on `sfbirdiecx__Birdie_Recording__c`.
{% endhint %}

#### Note about Direction and Source values

{% columns %}
{% column %}
`Way_cc` (Direction) is always one of:

* `incoming`
* `outgoing`
* `request`
  {% endcolumn %}

{% column %}
`Source__c` (Source) is always one of:

* `FeedItem`
* `EmailMessage`
* `CaseCommentPublic`
* `CaseCommentPrivate`
* `CaseField`
  {% endcolumn %}
  {% endcolumns %}

#### Example SOQL

```sql
SELECT LinkUrl__c, Direction__c, Source__c, Case__c, CreatedDate
FROM Birdie_Recording__c
WHERE Case__c = :caseId
ORDER BY CreatedDate DESC
```

***

### Automatic Feed Item Creation (Optional)

In some Salesforce orgs, creating a **Birdie Link** record may automatically generate a new **Case Feed item** in the Case's activity feed. This behavior depends entirely on your org’s **Feed Tracking settings** and is not controlled by Birdie.

If you prefer **not** to show these automatic feed entries:

1. Go to **Setup → Feed Tracking**
2. Select **Case**
3. Scroll to **“Select Fields to Track”**
4. Uncheck **“All Related Objects”**
5. Click **Save**

After disabling this option, Birdie Link creation will no longer produce new Case feed posts.

<details>

<summary>Reporting Examples</summary>

### How Salesforce Admins Can Use Birdie Links

#### Measure Recording Traffic

Build reports such as:

* Number of incoming vs outgoing recordings
* Number of recording requests sent
* Link usage volume by week or month

#### Evaluate Agent Behavior

Report on:

* Which support agents send the most recordings
* Which agents receive the most recordings
* Team-wide Birdie adoption

#### Understand Customer Activity

See which customers:

* Send the most Birdie recordings
* Require more async assistance
* Engage often with recording workflows

#### Case-by-Case Insights

For any Case:

* How many Birdie URLs were exchanged?
* Who initiated recordings (agent or customer)?
* Did the customer respond using a Birdie link?

***

### Recommended Report Types

#### **1. “Cases with Birdie Links”** (Custom Report Type)

**Primary Object:** Case\
**Related Object:** Birdie Links

Use this for:

* Birdie activity per Case
* Agent performance
* Team dashboards

***

#### **2. “All Birdie Links”** (Custom Report Type)

**Primary Object:** Birdie Links

Use this to build:

* Birdie usage dashboards
* Direction funnels (incoming vs outgoing vs request)
* Source-channel analytics (email vs feed vs comments vs fields)

***

### Example Dashboard Widgets

Here are great starting points:

{% hint style="info" %}

#### Birdie Usage Over Time

Count of Birdie Links per week/month.
{% endhint %}

{% hint style="info" %}

#### Incoming vs Outgoing vs Request

Pie chart grouped by **Direction**.
{% endhint %}

{% hint style="info" %}

#### Sources of Birdie Links

Bar chart grouped by **Source**\
(`EmailMessage`, `FeedItem`, `CaseCommentPublic`, `CaseCommentPrivate`, `CaseField`)
{% endhint %}

{% hint style="info" %}

#### Agent Leaderboard

Group by: Case Owner → Count of Birdie Link
{% endhint %}

{% hint style="info" %}

#### Birdie Activity by Case

List view showing:

* Case Number
* Number of Birdie Links
* % incoming vs outgoing
* Last recorded usage
  {% endhint %}

</details>

***

#### What if the `Birdie_Recording__c` object is not created?&#x20;

Birdie automatically creates `Birdie_Recording__c` records using Salesforce Triggers at Case creation time. However, depending how you setup your Case creation, if the Birdie Link is not visible to the trigger, the link may not be detected and as a result, the `Birdie_Recording__c` record is not created.

In these cases, you can create the record manually at the time of recording — for example, when submitting a Case through a Digital Experience Flow.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.birdie.so/birdie-docs/helpdesk/salesforce-service-cloud/analytics.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
