--- title: "How to report on a 3-way call that wasn't completed" slug: "how-to-report-on-a-3-way-call-that-wasn-t-completed" updated: 2026-07-01T15:46:23Z published: 2026-07-01T15:46:23Z canonical: "docs.natterbox.com/how-to-report-on-a-3-way-call-that-wasn-t-completed" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.natterbox.com/llms.txt > Use this file to discover all available pages before exploring further. # How to report on a 3-way call that wasn't completed When an agent initiates an attended transfer or conference call but the transfer doesn't complete (the three parties are merged but the agent never drops off), the third Call Reporting record that normally represents the completed transfer is never created. This guide walks you through building a Salesforce Flow to identify these incomplete 3-party calls using a custom checkbox field. ## How it works In a standard attended transfer, the Natterbox platform creates three Call Reporting records. When the 3-way call is **not completed** (all three parties are merged but the transfer is never finalised), only two records exist: | Record | Direction | Description | UUID relationship | | --- | --- | --- | --- | | Record 1 | Inbound | The original call (e.g. Alice → Bob) | To UUID = Bob's channel | | Record 2 | Outbound | The consult leg (e.g. Bob → Clive) | From UUID = Bob's channel (matches Record 1 To UUID) | The key identifier for this scenario is that **all four Conversation Count and Instance fields equal 1** on both records: | Field Label | Field Name | Value on Record 1 (Inbound) | Value on Record 2 (Outbound) | | --- | --- | --- | --- | | From Conversation Count | nbavs__From_Instance_Count__c | 1 | 1 | | From Conversation Instance | nbavs__From_Conversation_Instance__c | 1 | 1 | | To Conversation Count | nbavs__To_Instance_Count__c | 1 | 1 | | To Conversation Instance | nbavs__To_Conversation_Instance__c | 1 | 1 | When a transfer **does** complete normally, these counts increase beyond 1 because additional conversation legs are recorded. The combination of matched UUID records with all counts remaining at 1 is what differentiates an incomplete 3-party call from a completed transfer. ## Prerequisites - Salesforce System Administrator permissions (to create fields and Flows) - Access to the Call Reporting object (**nbavs__Call_Reporting__c**) - Familiarity with Salesforce Flow Builder ## Create the custom field 1. Navigate to **Salesforce Setup** > **Object Manager** > search for **Call Reporting**. 2. Click **Fields & Relationships** > **New**. 3. Select **Checkbox** as the data type > **Next**. 4. Enter the following details: - **Field Label**: Three-Party Call - **Field Name**: Three_Party_Call (auto-populated) - **Default Value**: Unchecked - **Description**: When checked, indicates that a 3-party call or attended transfer was attempted but the transfer was not completed. 5. Click **Next**. 6. Set field-level security as required > **Next**. 7. Add to page layouts > **Save**. ## Build the Flow This Record-Triggered Flow fires when an inbound Call Reporting record is created. It uses a Scheduled Path to wait 1 hour before running the logic, ensuring all related records have been created by the Natterbox platform before checking. ### Create the Flow and configure the trigger 1. Navigate to **Setup** > **Flows** > **New Flow**. 2. Select **Record-Triggered Flow** > **Create**. 3. Configure the trigger: - **Object**: Call Reporting (nbavs__Call_Reporting__c) - **Trigger the Flow When**: A record is created - **Entry Conditions** (All conditions are met): - `nbavs__Call_Direction__c` Equals `Inbound` - `nbavs__From_Instance_Count__c` Equals `1` - `nbavs__From_Conversation_Instance__c` Equals `1` - `nbavs__To_Instance_Count__c` Equals `1` - `nbavs__To_Conversation_Instance__c` Equals `1` - **Optimise the Flow For**: Actions and Related Records **Why these entry conditions?** - **Call Direction = Inbound** — we only look at the original inbound leg. - **All four count/instance fields = 1** — this is the signature of an incomplete 3-party call. If the transfer had completed, these values would be greater than 1. ### Add a Scheduled Path 1. Click the **+** icon on the Start element to add a Scheduled Path. 2. Configure: - **Path Label**: Check After 1 Hour - **Time Source**: Call Reporting: Created Date - **Offset Number**: 1 - **Offset Options**: Hours After This delay ensures the outbound consult record (Record 2) has been created before the Flow checks for it. ### Get Records: find the matching outbound consult On the Scheduled Path, add a **Get Records** element: 1. **Label**: Get Matching Outbound Record 2. **Object**: Call Reporting (nbavs__Call_Reporting__c) 3. **Filter Conditions** (All conditions are met): - `nbavs__From_UUID__c` Equals `{!$Record.nbavs__To_UUID__c}` - `nbavs__Call_Direction__c` Equals `Outbound` - `nbavs__From_Instance_Count__c` Equals `1` - `nbavs__From_Conversation_Instance__c` Equals `1` - `nbavs__To_Instance_Count__c` Equals `1` - `nbavs__To_Conversation_Instance__c` Equals `1` 4. **Sort Order**: Created Date, Descending 5. **How Many Records to Store**: Only the first record This looks for an outbound record where: - The **From UUID** matches the inbound record's **To UUID** — confirming the same agent initiated the consult. - All four count/instance fields = 1 — confirming the transfer was not completed on the outbound side either. ### Decision: was an outbound consult found? 1. Add a **Decision** element after the Get Records. 2. **Label**: Outbound Consult Found? 3. **Outcome 1 — Yes**: - Condition: `{!Get_Matching_Outbound_Record}` Is Null equals `{!$GlobalConstant.False}` 4. **Default Outcome**: No Match (end the Flow — this was a standard inbound call, not a 3-party attempt) ### Update Records: tick the 3-Party Call checkbox On the "Yes" path, add an **Update Records** element: 1. **Label**: Mark as Incomplete 3-Party Call 2. **How to Find Records to Update**: Use the Call Reporting record that triggered the flow 3. **Set Field Values**: - **Field**: Three_Party_Call - **Value**: `{!$GlobalConstant.True}` ### Save and activate 1. Click **Save**. 2. Enter a Flow Label, e.g. `Identify Incomplete 3-Party Calls`. 3. Click **Activate**. ## Flow logic summary | Step | Element | Purpose | | --- | --- | --- | | 1 | Trigger | Fires on inbound CRO records where all count/instance fields = 1 | | 2 | Scheduled Path | Waits 1 hour to ensure the outbound consult record has been created | | 3 | Get Records | Finds the outbound consult by matching inbound To UUID = outbound From UUID, with all counts = 1 | | 4 | Decision | Confirms a matching outbound consult leg exists | | 5 | Update Record | Sets 3-Party Call checkbox = TRUE | ## Field reference | Field label | API name | What it tells you | | --- | --- | --- | | From Conversation Count | nbavs__From_Instance_Count__c | Total number of conversations the From party had on this call | | From Conversation Instance | nbavs__From_Conversation_Instance__c | Which conversation number this record represents for the From party | | To Conversation Count | nbavs__To_Instance_Count__c | Total number of conversations the To party had on this call | | To Conversation Instance | nbavs__To_Conversation_Instance__c | Which conversation number this record represents for the To party | | From UUID | nbavs__From_UUID__c | Unique identifier for the From party's channel | | To UUID | nbavs__To_UUID__c | Unique identifier for the To party's channel | ## Building a report Once the Flow is active and has populated the **Three-Party Call** field, you can build a report to surface these records. 1. Navigate to **Reports** from the App Launcher. 2. Click **New Report** > select report type **Call Reporting**. 3. Add the following filters: - **Three-Party Call** equals `True` - **Call Reporting: Created Date** = your desired time frame (e.g. THIS WEEK, THIS MONTH) 4. Group rows by **To Natterbox User** (to see which agents had incomplete 3-party calls). 5. Add the following fields: - **From Number** — the caller's number - **To Natterbox User** — the agent who attempted the transfer - **Conversation Start Time** - **To UUID** — use this to cross-reference the outbound consult leg ## Troubleshooting | Issue | Cause | Solution | | --- | --- | --- | | Checkbox not ticking on any records | Flow not activated, or no records meeting entry criteria | Check the Flow is active. Verify you have inbound records where all four count/instance fields = 1 and a matching outbound record exists. | | Checkbox ticking on normal calls (false positives) | A standard inbound call happens to have a matching outbound with the same To UUID → From UUID link | Review the matched records. Consider adding additional filter criteria such as a time window (e.g. outbound Created Date within 5 minutes of inbound Created Date). | | Checkbox not ticking on known incomplete Three-Party Call | The outbound consult record may not yet exist when the Flow runs | Increase the Scheduled Path delay (e.g. 2 hours). Alternatively, check the UUID values on both records to confirm they match. | ## Related articles - [Transfers](/docs/understanding-call-reporting-records-of-transferred-calls) - [How to report on failed transfers](/docs/how-to-report-on-failed-transfers) - [Call Reporting Object](/docs/call-reporting-object) - [Reports with the Call Reporting Object](/docs/reports-with-the-call-reporting-object)