Skip to main content
Skip table of contents

Magento Monitoring

Features for Magento

Germain is capable of monitoring the uptime, performance, and user experience of Magento applications. It provides you with the necessary tools to track and analyze various aspects of your Magento storefront, allowing you to optimize its performance and enhance the user experience.

With Germain, you can customize the monitoring parameters and configurations based on your specific requirements. This flexibility ensures that the monitoring solution aligns with your unique needs and enables you to focus on the metrics and insights that matter most to your business.

Some of the features that Germain offers for Magento include:

Real User Session Recording and Replay

Record and replay user sessions on your Magento application, providing valuable insights into user behavior, navigation patterns, and any potential issues they may encounter. More details on User Session Monitoring and Replay

Workflow Monitoring

Track and analyze the performance and efficiency of your business processes within the Magento platform. This monitoring helps you gain insights into the flow of activities, identify bottlenecks, and optimize your workflows for better productivity and customer satisfaction. More details on Business Process / Workflow Mining

Monitor Order Processing

Track the order processing workflow in your Magento store. You can monitor each step of the order fulfillment process, from order placement to payment processing, inventory management, and shipment tracking. This allows you to identify any delays or issues that may occur and take appropriate actions.

Analyze Customer Journey

Monitor and analyze the customer journey within your Magento store. You can track the steps customers take, such as product browsing, adding items to the cart, checkout process, and post-purchase activities. This helps you understand customer behavior, identify conversion rate optimization opportunities, and enhance the overall user experience. More details on Customer Journey

Monitor Inventory Management

Monitor inventory management workflows in Magento. You can track stock levels, receive alerts for low inventory, monitor product restocking processes, and ensure smooth inventory operations to avoid stockouts or overstock situations.

Track Marketing Campaigns

Monitor the performance of marketing campaigns within your Magento store. You can track the effectiveness of promotional activities, monitor the impact on website traffic, conversion rates, and revenue generated. This helps you measure the success of your marketing efforts and make data-driven decisions to optimize campaign performance. More details on Marketing KPIs, Pivots & Measures

Application Uptime and Performance Monitoring

Monitor the availability and performance of your Magento storefront, ensuring that it is running smoothly and meeting your desired performance standards.

Real-time Slowness and Error Analysis

Monitor and analyze of slowness and errors within your Magento application. It helps you identify performance bottlenecks and errors, allowing you to address them promptly and ensure a seamless user experience.

Integration-to-Magento Monitoring

Monitor the integrations between your Magento application and other systems or third-party services. This ensures that all integrations are functioning correctly and provides visibility into any issues that may arise.

For more detailed information on the monitoring capabilities and customization options available for Magento applications in Germain, please reach out to the Germain support team. We will provide you with further guidance and assistance in tailoring the monitoring solution to your specific requirements.

How-to Video

Magento Monitoring Deployment Steps

Configuration

  1. Go to Germain Workspace > Left Menu > Wizard > Magento

    Magento Wizard - Germain UX

  2. Set Application Name and URL

    Magento Parameters - Germain UX

Tag Magento Errors that affect Users

Configure Germain to identify Magento Errors that affect Users, in real-time and at scale.

Example of Magento Error that affect Users:

Magento Error detected by Germain UX

Magento User Session recorded and replayed by - Germain UX

Germain Workspace > Left Menu > Analytics > UX Monitoring Profiles

Magento UX profile - Germain UX

Sample Code:

CODE
var settings = germainApm.getDefaultSettings(loaderArgs, agentConfig);
settings.plugins.feedback.enabled = false;
//settings.constants.logLevel = 'TRACE';
settings.constants.logLevelToEmitAsFacts = 'WARN';
settings.application.metadataProviders['user.name'] = function (window) {
    return new germainApm.native.Promise(function (resolve) {
        germainApm.utils.waitForElements(window, '.user-info .d-flex', function (elements) {
            var el = elements[0];
            if (el && el.innerText) {
                resolve(el.innerText.replace(/\s\s+/g, ' '));
            }
            else {
                resolve(undefined);
            }
        }, undefined, 10, 1000);
    });
};
settings.plugins.pageLoad.factProcessor = function (userClick, events) {
    for (var i = 0; i < events.length; i++) {
        if (events[i].event.type === 'document ready') {
            var page = events[i].page;
            if (page && page.title)
                userClick.name = 'Navigation ' + page.title;
        }
    }
};
settings.plugins.network.eventProcessor = function (event) {
    var response = event.response;
    try {
        if (event.status === 0 || event.status >= 400) {
            if (event.url && event.url.pathname) {
                var pathname_1 = event.url.pathname;
                if (pathname_1 && pathname_1 !== '/v1/events' && pathname_1 !== '/server/cometd') {
                    if (pathname_1.match('/genesys/2/chat/GWE.*/refresh')) {
                        event.businessObject = 'Chat Refresh Error';
                    }
                    else if (~pathname_1.indexOf('/api/contract/getProductOffer')) {
                        event.businessObject = 'Product Offer Error';
                    }
                    else if (pathname_1.match('/api/contract/subscriptions/.*/verify-otp') ||
                        ~pathname_1.indexOf('/api/contract/findSubscriptionInfobySubscriptionNumber') ||
                        ~pathname_1.indexOf('/api/contract/findSubscriptionsInfo') ||
                        ~pathname_1.indexOf('/api/logistical/generate_bon_transport_byClaimNumber/SV') ||
                        ~pathname_1.indexOf('/api/logistical/generate_bon_transport/CRDN/FIND') ||
                        ~pathname_1.indexOf('/api/logistical/generate_bon_transport/TS/FIND') ||
                        ~pathname_1.indexOf('/api/contact/createContact') ||
                        ~pathname_1.indexOf('/api/claims/getclaimbyNumber')) {
                        event.businessObject = 'Error';
                        if (response) {
                            try {
                                var object = JSON.parse(response);
                                if (object) {
                                    if (object.type)
                                        event.businessObject = object.type;
                                    if (object.message)
                                        event.businessObject = event.businessObject + ":" + object.message;
                                    if (event.businessObject)
                                        event.businessObject = event.businessObject.substring(0, 50).trim();
                                }
                            }
                            catch (e) { }
                        }
                    }
                }
            }
        }
    }
    catch (e) { }
};
settings.plugins.pageLoad.factProcessor = function (userClick, events) {
    for (var i = 0; i < events.length; i++) {
        var event_1 = events[i].event;
        if (event_1.type === 'request') {
            if (event_1.success !== undefined)
                userClick.success = event_1.success;
        }
    }
};
settings.plugins.click.factProcessor = function (fact, event, fireEvent, settings) {
    try {
        var target = event.target;
        if (target instanceof HTMLElement) {
            if (fact.displayedName === 'Résilier mon assurance' || fact.displayedName === 'Déclarer un sinistre' || fact.displayedName === 'Suivre mes sinistres') {
                var container_1 = target.closest('.contract-info-row');
                if (container_1) {
                    var adhesionContainer = container_1.querySelector('p.text-gray');
                    if (adhesionContainer) {
                        var content = adhesionContainer.innerText;
                        if (content && ~content.indexOf("Numéro d'adhésion")) {
                            // set n. adhesion
                            fact.businessObject = content.replace("Numéro d'adhésion :", '').trim();
                        }
                    }
                }
            }
            // extract username 
            var container = document.querySelector('.user-info .d-flex');
            if (container) {
                var content = container.innerText;
                if (content) {
                    content = content.replace(/\s\s+/g, ' ');
                    germainApm.rootWindow && germainApm.rootWindow.submitData({ time: Date.now(), type: 'assign metadata', fieldPath: 'user.name', value: content });
                }
            }
        }
    }
    catch (e) { }
};
germainApm.eventGenerators.customAlert = {
    emits: ['DOM popup opening', 'DOM popup closed'],
    installer: function () { return function () { }; },
};
germainApm.eventGenerators.customLogout = {
    emits: ['session end'],
    installer: function () { return function () { }; },
};
germainApm.start(settings);

The above script will allow you to identify all User Errors at scale, so you know which errors impacts the most your user community.

Magento Errors analyzed by Germain UX

Deployment

Follow steps from the Magento wizard summary.

Magento Wizard - Germain UX

You can always come back to these deployments steps:

  1. Go to Germain Workspace > Left Menu > Analytics > UX Monitoring Profiles

  2. Select UX Monitoring Profile recently created

  3. Click Installation in the Configuration Editor

Magento UX Profile - Germain UX

Feature Availability: 2022.3 or later

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.