Summary of work done

Inspected the working bottom RingCentral utility panel and compared it to the custom Matter page RingCentral tab.

Live org readbacks confirmed Litify_Complete_Custom uses utility bar Litify_Complete_UtilityBar. The live utility bar contains a RingCentral utility item with componentName = opencti:softPhone, height = 480, width = 340, eager = true, icon call, and identifier opencti_softPhone.

Live Call Center records confirmed a separate RingCentral Call Center exists with ID 04vUV0000003WL7YAM. Its adapter URL is https://samaguiarinjurylawyers2--rcsfl.vf.force.com/apex/OpenCTIIndex, and its custom settings include softphone sizing and Salesforce compatibility mode. Forty-three active users are assigned to this RingCentral Call Center.

Installed package readback confirmed rc_sf_package namespace rcsfl, version 6.43.2, is installed. Tooling readbacks also showed rcsfl Lightning bundles and Apex classes, which matches the RingCentral Salesforce package environment.

The custom Matter tab is different. Collapsible_Matter_Page embeds litifyRingCentralPanelV2 in the RingCentral tab. Its local JavaScript sets RINGCENTRAL_URL to https://apps.ringcentral.com/integration/ringcentral-embeddable/latest/app.html?prefix=sail-litify-ringcentral-20260519&enableSMSTemplate=1&enableSmsSettingEvent=1 and communicates with that iframe via postMessage. It is not using opencti:softPhone, the rcsfl Visualforce adapter, or the Salesforce Call Center record directly.

Practical conclusion

The bottom panel works because it is the official Salesforce Open CTI softphone surface attached to the RingCentral Call Center and package. The custom iframe tab works as a separate RingCentral Embeddable app surface. That explains why the bottom panel can work for staff while the custom tab asks for its own browser OAuth and shows FOR DEMO PURPOSES ONLY when no approved custom Embeddable app client ID is present.

This is not a reason to abandon the iframe build. It means the clean path is to preserve the nice Litify Matter tab as the context and history layer, while either finishing the dedicated RingCentral Embeddable app identity or wiring the custom tab's call and SMS buttons to open or delegate to the already-supported Open CTI utility panel where possible.

What has shipped and what has not

Shipped: no production changes in this inspection turn. Live org and local repo state were read only.

Confirmed current state: bottom panel is Open CTI via RingCentral Call Center and rcsfl; custom tab is standalone RingCentral Embeddable iframe; 43 active users are assigned to the RingCentral Call Center; litifyRingCentralPanelV2 is present on the Matter page RingCentral tab.

Not yet shipped: no code changes to bridge the custom tab to the utility panel; no new RingCentral developer app or approved client ID; no end-to-end staff QA for dialer, SMS, summaries, message posting, or notifications.

Suggested next steps

A good next pass would be a small reversible implementation that keeps the Matter tab and improves reliability: add an Open CTI fallback action in litifyRingCentralPanelV2 so Call and SMS can open the Salesforce utility RingCentral panel when the iframe is not signed in or remains in demo mode. In parallel, keep the dedicated Embeddable app identity as the cleaner long-term fix if RingCentral developer access cooperates.

Before claiming full team readiness, QA should cover at least one non-admin staff user, one Matter with a clean client phone number, outbound call initiation, SMS compose, message history refresh, RingSense summary visibility, saved communication note, and Salesforce notification behavior for inbound texts.

Reason for ending session

Inspection request completed. No destructive or production-changing action was taken. Further work is implementation and QA, not more environment discovery.

Handoff information for a new agent

Start in /Users/samaguiar/Documents/Projects/Repos/sail-litify/Litify_AI_Integration_Project/salesforce-metadata. Use LITIFY_ORG for live validation. Relevant files: force-app/main/default/flexipages/Litify_Complete_UtilityBar.flexipage-meta.xml, force-app/main/default/flexipages/Collapsible_Matter_Page.flexipage-meta.xml, and force-app/main/default/lwc/litifyRingCentralPanelV2/litifyRingCentralPanelV2.js. Do not reuse the old label value 40vRKrMiQIsaowVS0lBnSK; prior inspection showed it is not the right app for this iframe. Preserve unrelated dirty working tree changes.