🚀 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:
-
The RUM Extension for user-experience monitoring and Session Replay.
-
The GermainUX Engine integration for Salesforce and integration-level monitoring.
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
-
Log in to Salesforce as an authorized administrator.
-
Open Setup.
-
Open the Developer Console.
-
Select File → New → Lightning Component.
-
Name the component:
GermainUXComponent
-
Add the following markup:
<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
-
In the Developer Console, select CONTROLLER, or press
Ctrl+Shift+2. -
Create
GermainUXComponentController. -
Add:
({
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
-
Select HELPER, or press
Ctrl+Shift+3. -
Create
GermainUXComponentHelper. -
Add:
({
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
-
Select File → New → Lightning Application.
-
Name it:
GermainUXApplication
-
Add:
<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:
-
Open the Salesforce Home page or another applicable Lightning page.
-
Select Setup → Edit Page.
-
Locate
GermainUXComponentunder Custom Components. -
Add it to the page.
-
Save the page.
-
Activate it for the intended applications and user profiles.
-
Clear the browser cache if necessary.
-
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.
-
Open the GermainUX RUM Extension from the browser toolbar.
-
Enter the base URL of your GermainUX environment.
-
Select Add New Website.
-
Configure:
|
Field |
Value |
|---|---|
|
Website URL |
Base URL of the Salesforce organization, beginning with |
|
Application Name |
Application name configured in GermainUX, such as |
|
Profile Name |
Corresponding UX monitoring profile, such as |
-
Save the configuration.
-
Reload Salesforce.
-
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:
-
Open Setup.
-
Search for CSP Trusted Sites.
-
Add the required origins.
-
Set each entry to Active.
-
Select the appropriate Salesforce context.
-
Enable only the CSP directives required by the integration.
The current deployment requires the following origins:
|
Trusted-site name |
URL |
|---|---|
|
|
GermainUX root origin, such as |
|
|
Salesforce organization origin, such as |
|
|
Lightning origin, such as |
|
|
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:
-
Open Salesforce in a supported non-private browser window.
-
Confirm that the RUM Extension is installed and enabled.
-
Confirm that the Salesforce website appears in the extension configuration.
-
Perform several Salesforce actions:
-
Navigate to another page.
-
Open a record.
-
Click a button.
-
Run a search.
-
Complete a monitored workflow step.
-
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
-
Log in to Salesforce as an authorized administrator.
-
Open Setup.
-
Navigate to Apps → App Manager.
-
Select New Connected App.
-
Configure:
|
Setting |
Value |
|---|---|
|
Connected App Name |
|
|
Contact Email |
Appropriate administrator or integration-owner email |
|
Enable OAuth Settings |
Enabled |
|
Callback URL |
|
|
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 |
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.
-
Save the Connected App.
-
Allow time for Salesforce to activate it.
👤 Authorize the Integration User
Confirm that the dedicated integration user can access the Connected App:
-
Navigate to Apps → Connected Apps → Manage Connected Apps.
-
Open
germainUXOAuth. -
Review Permitted Users.
-
Assign the appropriate profile or permission set.
-
Review IP Relaxation.
-
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
-
Open GermainUX Workspace.
-
Open the left navigation menu.
-
Select Wizards.
-
Select Salesforce Application.
-
Select the GermainUX Engine on which monitoring will run.
-
Enter the requested Salesforce and OAuth configuration.
-
Select Finish to deploy the monitoring configuration.
-
Complete the Salesforce authorization flow.
-
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.
Component: Engine, JS Profiler, Mobile App, RPA Bot Recorder, RUM Ext
Feature Availability: 2023.1 or later