Deployment for Salesforce Classic, Lightning

🚀 Deploy GermainUX for Salesforce Classic and Lightning

GermainUX can monitor Salesforce from the user interface through the underlying Salesforce services and integrations.

A complete deployment can provide:

Feature

Real User Monitoring

Session Replay

User feedback

Adoption and workflow analysis

Salesforce and integration monitoring

Visualforce and JavaScript diagnostics

Synthetic monitoring

Alerts, insights, and automated actions

The components you deploy depend on the required coverage.

✅ Select the Required Deployment

Requirement

GermainUX component

Where it runs

Monitor the complete Salesforce Classic or Lightning user experience

RUM Extension

Each user’s browser

Replay Salesforce user sessions

RUM Extension

Each user’s browser

Collect user feedback

RUM Extension and feedback configuration

Browser and GermainUX

Analyze adoption and business workflows

RUM Extension and GermainUX workflow configuration

Browser and GermainUX

Monitor Salesforce APIs, integrations, events, and server-side activity

GermainUX Engine with Salesforce OAuth

GermainUX Engine

Collect deeper JavaScript and browser diagnostics

JS Profiler Extension

Selected users’ browsers

Run synthetic Salesforce scenarios continuously

RPA Bot Recorder and GermainUX Engine

Recorder browser and synthetic-execution environment

Trigger alerts, reports, tickets, scripts, or corrective actions

GermainUX Automation

GermainUX platform

For complete Salesforce monitoring, deploy both:

  1. The RUM Extension for user-experience monitoring and Session Replay.

  2. The GermainUX Engine integration for Salesforce and integration-level monitoring.

warning Why Salesforce User Monitoring Requires a Browser Extension

Salesforce does not allow custom Aura or Lightning Web Component code to access the root context of the entire Salesforce page. Salesforce security boundaries intentionally isolate component code from other components and the page containing them.

A custom Salesforce component can help configure GermainUX, but it cannot independently provide complete monitoring of the entire Salesforce interface.

The GermainUX RUM Extension runs in the browser context required to monitor Salesforce Classic or Lightning across the full page. This enables capabilities such as:

Capability

Complete user-interaction monitoring

Session Replay

Page and component performance

Navigation and workflow analysis

User-facing error detection

JavaScript and browser errors

Network activity

UX friction and lost-productivity analysis

Without the extension, monitoring is limited to the Salesforce components or services that can be accessed through the available Salesforce APIs and custom-component security boundaries.

⚙️ Deployment Overview

A typical deployment follows this sequence:

Step

Action

1

Confirm Salesforce, browser, and network prerequisites.

2

Deploy the RUM Extension.

3

Configure the extension automatically or manually.

4

Add the required Salesforce CSP Trusted Sites.

5

Validate Real User Monitoring and Session Replay.

6

Enable feedback and business-process monitoring as required.

7

Configure the Salesforce OAuth Connected App.

8

Run the Salesforce wizard in GermainUX.

9

Optionally deploy the JS Profiler and synthetic monitoring.

10

Validate data, privacy controls, dashboards, and alerts.

👀 Real User Monitoring and Session Replay

📋 Requirements

Before deploying Salesforce Real User Monitoring, confirm the following:

Requirement

Details

Salesforce edition and interface

Salesforce Classic or Lightning can be monitored. Lightning Experience must be enabled when using the Lightning-component configuration method.

Salesforce domain

Configure and use your organization’s Salesforce domain.

Salesforce permissions

Administrators performing the automatic configuration need permission to use the Developer Console and edit Lightning applications or pages.

CSP Trusted Sites

Administrators must be able to manage Salesforce CSP Trusted Sites.

Supported browsers

Use a supported, current version of Google Chrome, Microsoft Edge, or Mozilla Firefox.

Browser configuration

JavaScript and cookies must be enabled.

Private browsing

Incognito and other private-browsing modes are not supported.

Network access

Browsers must be able to send outbound HTTPS traffic to the GermainUX environment.

Enterprise extension policy

If extensions are centrally controlled, the GermainUX extension must be approved and deployed through the organization’s browser-management policy.

Security and privacy

Configure masking, anonymization, and exclusions before production rollout.

🔌 Deploy the RUM Extension

There are two deployment models.

🏢 Organization-Wide Deployment

Use enterprise browser-management policies, such as Windows Group Policy, to deploy the extension to all applicable Salesforce users.

This approach is recommended for managed production environments because it provides:

Benefit

Consistent installation

Centralized upgrades

Reduced user involvement

Controlled extension permissions

Reliable monitoring coverage

See Deploy the GermainUX RUM Extension for All Users.

🙋 Individual Deployment

Install the extension manually for selected users when:

When to use

Running a proof of concept

Testing a new configuration

Troubleshooting a specific user issue

Monitoring a small user group

See Deploy the GermainUX RUM Extension for an Individual User.

A video overview is also available.

🔧 Configure the RUM Extension

After installation, configure the extension using one of these methods:

Method

Best suited for

Automatic configuration through a Salesforce Lightning component

Centrally configuring the extension and reducing end-user involvement

Manual configuration in the extension

Proofs of concept, selected users, and cases where users may enable or disable monitoring

Salesforce CSP Trusted Sites must also be configured for either approach.

✨ Option 1: Automatic Lightning Component Configuration

The Lightning component detects whether the GermainUX RUM Extension is installed and sends the required GermainUX URL, Salesforce website, application name, and profile name to it.

🔧 Create the Lightning Component

  1. Log in to Salesforce as an authorized administrator.

  2. Open Setup.

  3. Open the Developer Console.

  4. Select File → New → Lightning Component.

  5. Name the component:

GermainUXComponent
  1. Add the following markup:

HTML
<aura:component
    implements="flexipage:availableForAllPageTypes"
    access="global">

    <aura:handler
        name="init"
        value="{!this}"
        action="{!c.doInit}" />

    <aura:attribute
        name="currentUser"
        type="User"
        default="{'sObjecttype': 'User'}" />

    <p class="slds-hide">
        <span id="germain-ux-profile-email">
            {!v.currentUser.Email}
        </span>

        <span id="germain-ux-profile-id">
            {!v.currentUser.Id}
        </span>
    </p>

    <p aura:id="container" class="slds-hide">
        <lightning:card
            title="Germain UX"
            iconName="custom:custom11">

            <div
                class="slds-grid slds-grid_vertical slds-align_absolute-center"
                aura:id="install">

                <div class="slds-button slds-button_brand">
                    <p class="slds-p-around_small slds-text-heading_medium">
                        <lightning:formattedUrl
                            aura:id="extensionUrl"
                            value=""
                            label="Install GermainUX"
                            target="_blank" />
                    </p>
                </div>

                <div>
                    <lightning:formattedUrl
                        value="https://docs.germainux.com/main/salesforce-monitoring-deployment"
                        label="Documentation"
                        target="_blank" />
                </div>
            </div>
        </lightning:card>
    </p>
</aura:component>

The hidden profile elements expose the current Salesforce user ID and email to the GermainUX configuration in a controlled format.

Review your organization’s privacy requirements before collecting or transmitting user identifiers.

📁 Create the Component Controller

  1. In the Developer Console, select CONTROLLER, or press Ctrl+Shift+2.

  2. Create GermainUXComponentController.

  3. Add:

JavaScript
({
    doInit: function (component, event, helper) {
        component.set(
            "v.currentUser",
            $A.get("$SObjectType.CurrentUser")
        );

        var container = component.find("container");
        var extensionUrl = component.find("extensionUrl");
        var browserType = helper.getBrowserType();

        if (
            browserType === "CHROME" ||
            browserType === "EDGE" ||
            browserType === "FIREFOX"
        ) {
            var timeout = setTimeout(function () {
                window.postMessage(
                    { type: "germainapm.notInstalled" },
                    "*"
                );

                $A.util.removeClass(container, "slds-hide");

                extensionUrl.set(
                    "v.value",
                    browserType === "FIREFOX"
                        ? helper.EXT_IDS.FIREFOX
                        : helper.EXT_IDS.CHROME
                );
            }, 2000);

            window.addEventListener(
                "message",
                function (event) {
                    if (!event || !event.data) {
                        return;
                    }

                    var message = event.data;

                    if (message.type === "germainapm.pong") {
                        clearTimeout(timeout);

                        window.postMessage(
                            {
                                type: "germainapm.install",
                                url: helper.GERMAIN_UX_URL,
                                website: {
                                    url: window.location.origin,
                                    appName: helper.APP_NAME,
                                    profileName: helper.PROFILE_NAME,
                                    disableRemove: true
                                }
                            },
                            "*"
                        );
                    } else if (
                        message.type === "germainapm.extinstalled"
                    ) {
                        window.postMessage(
                            {
                                type: "germainapm.install",
                                url: helper.GERMAIN_UX_URL,
                                website: {
                                    url: window.location.origin,
                                    appName: helper.APP_NAME,
                                    profileName: helper.PROFILE_NAME,
                                    disableRemove: true
                                }
                            },
                            "*"
                        );

                        $A.util.addClass(container, "slds-hide");
                    }
                },
                true
            );

            window.postMessage(
                { type: "germainapm.ping" },
                "*"
            );
        }
    }
});

📚 Create the Component Helper

  1. Select HELPER, or press Ctrl+Shift+3.

  2. Create GermainUXComponentHelper.

  3. Add:

JavaScript
({
    GERMAIN_UX_URL: "YOUR_GERMAIN_UX_HOST",
    APP_NAME: "Salesforce",
    PROFILE_NAME: "Salesforce",

    EXT_IDS: {
        CHROME:
            "https://chrome.google.com/webstore/detail/user-monitoring-for-webap/fkcljfeejffnjajnpjflfammljcmdfnh",
        FIREFOX:
            "https://addons.mozilla.org/en-US/firefox/addon/user-monitoring-for-webapp/"
    },

    getBrowserType: function () {
        var browser = JSON.parse(
            JSON.stringify($A.get("$Browser"))
        );

        if (browser.isWEBKIT) {
            return "CHROME";
        }

        if (browser.isFIREFOX) {
            return "FIREFOX";
        }

        var userAgent =
            window.navigator.userAgent.toLowerCase();

        if (
            userAgent.indexOf("edg") > -1 &&
            userAgent.indexOf("edge") === -1
        ) {
            return "EDGE";
        }

        return null;
    }
});

Replace:

YOUR_GERMAIN_UX_HOST

with the base URL of your GermainUX environment, for example:

https://germainux.example.com

Set APP_NAME and PROFILE_NAME to values matching the application and monitoring profile configured in GermainUX.

🗂️ Create the Lightning Application

  1. Select File → New → Lightning Application.

  2. Name it:

GermainUXApplication
  1. Add:

HTML
<aura:application
    access="global"
    extends="ltng:outApp">

    <aura:dependency
        resource="YOUR_SALESFORCE_NAMESPACE:GermainUXComponent" />
</aura:application>

Replace:

YOUR_SALESFORCE_NAMESPACE

with your Salesforce namespace.

If your organization does not use a namespace, confirm the appropriate component resource syntax with your Salesforce administrator.

📌 Add the Component to Salesforce

The Salesforce Utility Bar is the preferred location because it can make the component available consistently across the application.

You can also add it to a Lightning page for initial testing:

  1. Open the Salesforce Home page or another applicable Lightning page.

  2. Select Setup → Edit Page.

  3. Locate GermainUXComponent under Custom Components.

  4. Add it to the page.

  5. Save the page.

  6. Activate it for the intended applications and user profiles.

  7. Clear the browser cache if necessary.

  8. Reload Salesforce.

If the extension is not installed, the component displays its installation link. If it is installed, the component sends the monitoring configuration to the extension and remains hidden.

🤝 Option 2: Manual Extension Configuration

Use manual configuration when selected users should control whether Salesforce monitoring is active.

  1. Open the GermainUX RUM Extension from the browser toolbar.

  2. Enter the base URL of your GermainUX environment.

  3. Select Add New Website.

  4. Configure:

Field

Value

Website URL

Base URL of the Salesforce organization, beginning with https://

Application Name

Application name configured in GermainUX, such as Salesforce

Profile Name

Corresponding UX monitoring profile, such as Salesforce

Germain UX RUM Extension Settings
  1. Save the configuration.

  2. Reload Salesforce.

  3. Confirm that monitoring is enabled in the extension.

🔒 Configure Salesforce CSP Trusted Sites

Configure CSP Trusted Sites whether the extension is configured automatically or manually.

In Salesforce:

  1. Open Setup.

  2. Search for CSP Trusted Sites.

  3. Add the required origins.

  4. Set each entry to Active.

  5. Select the appropriate Salesforce context.

  6. Enable only the CSP directives required by the integration.

CSP Settings in Salesforce

The current deployment requires the following origins:

Trusted-site name

URL

GermainUX

GermainUX root origin, such as https://abc.cloud.germainux.com

SalesforceDomain

Salesforce organization origin, such as https://company.my.salesforce.com

SalesforceLightningDomain

Lightning origin, such as https://company.lightning.force.com

SalesforceContentDomain

Content domain used by the organization

The original configuration selects All contexts and CSP directives. For production, your Salesforce security team should apply the least-privilege set supported by the GermainUX deployment and validate the resulting monitoring coverage.

Do not add URL paths, wildcards, or unrelated domains unless specifically required.

🔎 Validate Real User Monitoring

After deployment:

  1. Open Salesforce in a supported non-private browser window.

  2. Confirm that the RUM Extension is installed and enabled.

  3. Confirm that the Salesforce website appears in the extension configuration.

  4. Perform several Salesforce actions:

  • Navigate to another page.

  • Open a record.

  • Click a button.

  • Run a search.

  • Complete a monitored workflow step.

  1. In GermainUX, verify that:

  • A user session appears.

  • User clicks and navigation are captured.

  • Page and interaction durations are available.

  • The correct application and profile are assigned.

  • Session Replay opens and contains the expected activity.

  • Sensitive values are masked or excluded as designed.

If no data appears, check:

Checked item

Browser extension policies

CSP Trusted Sites

Network access to GermainUX

Application and profile names

Salesforce origin matching

Browser console and extension errors

Private-browsing status

💬 Enable User Feedback

GermainUX can allow Salesforce users to provide feedback directly from the application.

The feedback can be correlated with:

Correlated item

The affected user session

Session Replay

User interactions

Errors

Performance

Workflow context

Technical telemetry

This helps teams understand the reported problem without requiring the user to reproduce or explain every action.

See Configure User Feedback for Salesforce.

🏭 Configure Salesforce Business-Process Monitoring

GermainUX can monitor Salesforce workflows in real time and identify:

Issue

Slow workflow steps

Process overruns

Abandonment and drop-offs

Repeated actions

Ineffective navigation

Unexpected paths

Lost productivity

Differences between user groups, teams, profiles, or application versions

For example, GermainUX can identify users who require eight minutes to create a case when the expected completion time is two minutes, then reveal which steps cause the delay.

See Configure Business Process and Workflow Monitoring.

Germain Software can also assist with configuring critical Salesforce workflows.

🔗 Salesforce Application and Integration Monitoring

User-experience monitoring captures what happens in the browser. The GermainUX Engine integration adds visibility into Salesforce services and connected systems.

This can include:

Area

Salesforce APIs

Apex activity

SOQL queries

Server-side errors

Workflow and trigger delays

Integration availability and performance

Related external services

🔩 Prerequisite

A GermainUX Engine must be deployed and configured.

See GermainUX Engine.

🔑 Create a Salesforce Connected App

  1. Log in to Salesforce as an authorized administrator.

  2. Open Setup.

  3. Navigate to Apps → App Manager.

  4. Select New Connected App.

  5. Configure:

Setting

Value

Connected App Name

germainUXOAuth

Contact Email

Appropriate administrator or integration-owner email

Enable OAuth Settings

Enabled

Callback URL

https://YOUR_GERMAIN_UX_HOST/germainapm/callback

OAuth scopes

Scopes required by the GermainUX monitoring configuration

Require Secret for Web Server Flow

Disabled if required by this GermainUX authentication flow

Require Secret for Refresh Token Flow

Disabled if required by this GermainUX authentication flow

image-20210215-135509.png


The legacy configuration specifies Full Access (full) as the OAuth scope. Because this grants extensive access, use the minimum supported scopes whenever possible and obtain approval from the Salesforce security owner before granting Full Access.

Replace:

YOUR_GERMAIN_UX_HOST

with the externally reachable GermainUX hostname.

  1. Save the Connected App.

  2. Allow time for Salesforce to activate it.

👤 Authorize the Integration User

Confirm that the dedicated integration user can access the Connected App:

  1. Navigate to Apps → Connected Apps → Manage Connected Apps.

  2. Open germainUXOAuth.

  3. Review Permitted Users.

  4. Assign the appropriate profile or permission set.

  5. Review IP Relaxation.

  6. Confirm that login, session, and refresh-token policies match organizational requirements.

Use a dedicated least-privilege integration account where possible. Do not use a personal administrator account for long-running monitoring.

▶️ Run the Salesforce Wizard in GermainUX

  1. Open GermainUX Workspace.

  2. Open the left navigation menu.

  3. Select Wizards.

    image-20260827-165443.png
  4. Select Salesforce Application.

  5. Select the GermainUX Engine on which monitoring will run.

  6. Enter the requested Salesforce and OAuth configuration.

  7. Select Finish to deploy the monitoring configuration.

    Salesforce Application Monitoring wizard
  8. Complete the Salesforce authorization flow.

  9. Validate that Salesforce data appears in GermainUX.

🐛 Deploy Deeper JavaScript Diagnostics

The standard RUM Extension captures Salesforce user experience and Session Replay.

Deploy the GermainUX JS Profiler when deeper browser diagnostics are required for selected users, such as:

Use case

JavaScript execution problems

Browser freezes

Client-side errors

Slow functions

Salesforce page or component behavior

Browser objects associated with a failure

Evidence similar to browser developer tools without asking the affected user to reproduce the problem manually

The JS Profiler can also help correlate browser-side behavior with Salesforce Apex and other transaction activity available to GermainUX.

See Deploy the GermainUX JS Profiler.

🤖 Deploy Synthetic Salesforce Monitoring

The GermainUX RPA Bot Recorder records a Salesforce workflow as a Selenium-based synthetic scenario.

Use synthetic monitoring to:

Purpose

Test Salesforce continuously

Detect problems before real users report them

Validate login and critical workflows

Monitor from multiple locations

Compare availability and performance over time

Confirm that a production fix remains effective

After recording the scenario, GermainUX can centrally:

Management action

Schedule it at the required frequency

Deploy it across multiple locations or URLs

Monitor execution

Restart it

Upgrade it remotely

Alert when availability or performance degrades

See Deploy the GermainUX RPA Bot Recorder.

🔔 Configure Alerts and Automation

Collected Salesforce telemetry can trigger:

Action

SLA alerts

AI-generated analysis

Email or scheduled reports

Tickets

Webhooks and outbound HTTP actions

Diagnostic scripts

Authorized local programs

Synthetic validations

Other corrective or investigative workflows

See Automation.

✅ Production Validation Checklist

Before completing the deployment, verify:

Checklist item

The extension is centrally deployed to the intended users.

Salesforce origins are configured correctly.

CSP Trusted Sites contain only approved origins and directives.

Browsers can reach the GermainUX environment over HTTPS.

User sessions and interactions appear in GermainUX.

Session Replay accurately reconstructs Salesforce activity.

Sensitive values are masked, anonymized, or excluded.

The Salesforce Connected App uses approved OAuth scopes.

A dedicated integration user is configured.

Server-side and integration telemetry appears.

Alerts and dashboards use the expected application and profile.

Synthetic scenarios run successfully, if configured.

Monitoring has been validated with the Salesforce security and privacy teams.

ℹ️ Get More Information

GermainUX can help determine which monitoring, analytics and automation capabilities are appropriate for your Salesforce CRM environment.

Contact GermainUX Support.


Feature Availability: 2023.1 or later