Error Monitoring for Shopify (Configure)

⚙️ Configure Error Monitoring for Shopify

Configure GermainUX to detect, classify, prioritize, and analyze Shopify errors according to their effect on customers, conversion, revenue, and critical business processes.

The objective is not to treat every technical event as equally important. GermainUX helps teams focus on failures that affect real customers while separating expected validation and low-impact technical noise.

Germain UX - User Replay-error.png


📋 Prerequisites

Before configuring error monitoring:

Requirement

Deploy GermainUX monitoring for Shopify

Confirm data ingestion

Privacy & consent

Business journeys

Access

Stakeholders

🏷️ Error classifications

Use the following classifications consistently across Shopify KPIs, dashboards, alerts, and reports.

Classification

Definition

Example

User-facing application error

The software is not operating correctly, and the failure is visible to the customer

Add-to-cart fails and displays an error

Silent application error

The software fails, but the failure is not visible to the customer

An inventory request fails silently and leaves stale availability data

User validation

Expected feedback prevents an invalid customer action

A required address field is missing

Technical event

A technical condition occurred but has not been confirmed as a software failure

A handled JavaScript warning with no customer impact

Business failure

The software may operate technically, but the expected business outcome is not achieved

Checkout completes without the required order integration

Payment decline

A payment is rejected without evidence that the checkout software malfunctioned

The issuing bank declines the transaction

Custom

<your custom classification>

<your custom classification>

Do not group user validation with application errors. Validation indicates that the application is operating as designed; an application error indicates that the software is not operating correctly.

🔍 Error sources

GermainUX can detect Shopify errors from browser, network, application, and integration telemetry.

💻 Browser and JavaScript errors

Monitor:

Item

JavaScript exceptions

Unhandled promise rejections

Resource-loading failures

Browser freezes

Failed event handlers

Theme and application errors

Third-party script failures

Custom application error events

☁️ Network errors

Monitor:

Item

Failed HTTP and fetch requests

Timeouts

Connection failures

Incorrect HTTP status codes

GraphQL errors

Responses that report a failure despite returning HTTP 200

Shopify API failures

Third-party service failures

👥 Customer-visible errors

Monitor error messages associated with:

Feature

Feature

Product search

Product availability

Product variants

Add-to-cart

Cart updates

Discount codes

Authentication

Customer accounts

Shipping

Checkout

Payment

Order submission

Returns and support


🖥️ Backend and integration errors

When the GermainUX Engine is configured, monitor:

Integration

Shopify API errors

Webhook failures

Product or inventory synchronization

Order-processing integrations

Payment and tax services

CRM and ERP integrations

Fulfillment and warehouse systems

Scheduled jobs

Rate limits and authentication failures

🚀 Enable error monitoring

Go to:

Germain Workspace > Analytics > UX Monitoring Profiles

Select the profile used by the Shopify store.

Depending on the GermainUX version and enabled components, review:

Setting

JavaScript error monitoring

Unhandled promise rejection monitoring

HTTP and fetch monitoring

Request and response processing

Browser console monitoring

Popup and visible-message monitoring

Resource error monitoring

Session Replay

Network request-body capture

Error categorization

Application-specific rules

Enable only the collection required for the analysis. Avoid capturing full request or response bodies unless necessary and approved.

📁 Detect functional errors in successful HTTP responses

Some Shopify themes and third-party services return HTTP 200 even when the response represents a functional failure. In these cases, configure a response processor to identify the failure based on the response content.

The following example detects common “page not found” responses:

JavaScript
settings.plugins.network.requestAndResponseBodyProcessor = function (fact) {
    if (
        fact.myClassName !== "OutboundDocumentRequest" ||
        !fact.responseBody
    ) {
        return;
    }

    const responseText = fact.responseBody.toLowerCase();

    const pageNotFound =
        responseText.includes("404 not found") ||
        responseText.includes("page not found") ||
        responseText.includes(
            "page you were looking for does not exist"
        );

    if (pageNotFound) {
        fact.success = false;
        fact.http = fact.http || {};
        fact.http.status = "404";
        fact.http.message = "404 - Page Not Found";

        germainApm.api.createEvent("Shopify Page Not Found", {
            success: false,
            errorClassification: "user-facing-application-error",
            http: fact.http
        });
    }
};

Because Shopify themes can customize the missing-page content, update the matching expressions for each store and language.

warning Important limitations

Response-body inspection can expose sensitive information or increase browser processing. Before enabling it:

Limitations and precautions:

  • Limit processing to the required endpoints.

  • Avoid storing the full response body.

  • Exclude checkout and payment responses unless explicitly approved.

  • Remove personal, order, authentication, and payment information.

  • Test the processor against legitimate responses to prevent false positives.

  • Confirm that the monitored response type is text before searching it.

🔧 Capture custom Shopify errors

When a store-specific failure cannot be detected automatically, create a custom event from the theme or application code.

Example:

germainApm.api.createEvent("Shopify Add to Cart Failed", {
    success: false,
    errorClassification: "user-facing-application-error",
    operation: "AddToCart",
    productId: productId,
    variantId: variantId,
    message: sanitizedErrorMessage
});

Do not include customer email addresses, names, authentication values, payment data, or other sensitive values in custom error attributes.

Use stable event names such as:

Event name

Shopify Add to Cart Failed

Shopify Cart Update Failed

Shopify Discount Application Failed

Shopify Checkout Failed

Shopify Search Failed

Shopify Order Submission Failed

Shopify Integration Failed

🔎 Configure error categorization

Categorization groups repeated occurrences of the same underlying error so teams can analyze problems instead of individual noisy events.

Go to:

Germain Workspace > Analytics > Categorization

Create categorization rules using stable attributes such as:

Attribute

Error name

Normalized message

Stack signature

Page or logical route

Request endpoint

HTTP status

Shopify operation

Third-party service

Business-process step

Theme or application version

Remove variable values that create unnecessary categories, including:

Variable

Product identifiers

Cart identifiers

Checkout tokens

Order identifiers

Customer identifiers

Timestamps

Random values

Request correlation IDs

For example, these messages should normally belong to one category:

Product 12345 could not be added to cart
Product 78492 could not be added to cart

Normalized category:

Product {productId} could not be added to cart

💡 Identify new and changing errors

Use categorization and baseline comparison to identify:

Type

New error categories

Errors introduced after a theme or application release

Sudden increases

Errors affecting additional customers

Errors spreading to new browsers or devices

Previously resolved errors that have returned

Errors associated with conversion loss

A technically new message is not necessarily a new root cause. Normalize variable content before using “new error” alerts.

⚖️ Configure business-impact analysis

Prioritize errors using their effect on customer and business outcomes.

Measure:

Measure


Number of occurrences


Unique affected customers


Affected sessions


Conversion rate


Abandoned carts


Failed checkouts


Lost or at-risk revenue


Affected products


Affected bus


Affected products


Affected business-process steps


Duration of impact


First and most recent occurrence


Store, market, browser, device, and release


An error occurring thousands of times in an unused background operation may be less important than an error affecting a small number of high-value checkout sessions.

Priority

Suggested criteria

Critical

Prevents checkout or purchase for many customers, affects significant revenue, or creates a security or data-integrity risk

High

Breaks a major journey such as search, product selection, cart, login, or checkout

Medium

Degrades the experience but permits completion through an alternative path

Low

Limited impact, isolated occurrence, or non-customer-facing technical noise

Adjust these criteria to the store’s transaction volume, revenue, and service-level objectives.

📈 Configure an error dashboard

Create or update a dashboard portlet with the following settings.

📊 KPIs

Use one or more relevant KPIs, such as:

KPI

Notes

Browser Event


JavaScript Error


Unhandled Promise Rejection


Outbound HTTP Request


Resource Error


Application Error


Shopify custom error KPIs


📏 Measures

Recommended measures include:

Measure

Count

Unique Users

Sessions

Error Rate

Failed Transactions

Conversion Rate

Abandonment Rate

Revenue Impact

Average Duration

95th-percentile Duration

🔀 Pivots

Recommended pivots include:

Pivot

Error Category

Name

Normalized Message

Page

Request Endpoint

Business-Process Step

Product

Collection

Browser

Device

Country

Store

Environment

Release

🔎 Filters

Use filters such as:

Filter

Error classification

Success equals false

Application

Store

Environment

Date and time

Business-process step

New error

User-facing

Silent

User validation

Older configurations may store application errors under legacy fields such as User Error or userError. Retain those fields only for compatibility with historical data. For new configurations, use explicit classifications that distinguish visible application failures, silent failures, and user validation.

🔎 Analyze an error

For each important error, investigate:

  1. How many customers and sessions were affected?

  2. Is the failure visible to the customer?

  3. Which page, product, or checkout step is affected?

  4. Does the error prevent conversion?

  5. What happened immediately before the error?

  6. Which browser request failed?

  7. Is the issue limited to a browser, device, country, or release?

  8. Did the same customer retry or find another path?

  9. Is the problem new, recurring, or increasing?

  10. What technical evidence identifies the likely cause?

Use Session Replay to reconstruct the customer’s actions around the error. Correlate replay with clicks, pages, Shopify events, network requests, console activity, and business-process steps.

Session Replay is an event-based reconstruction, not a video recording.

⛔ Include and exclude errors

Use rules and filters to control which error categories appear in operational dashboards and alerts.

Exclude an error only when:

Condition

It is expected behavior.

It has no meaningful technical or business impact.

It is generated by a known browser extension or bot.

It is duplicate telemetry.

It contains unusable third-party noise.

Another KPI already represents it more accurately.

Do not delete or permanently ignore an error merely because it occurs frequently. First verify its impact on customers and conversion.

Where possible, retain excluded events in a lower-priority analytical view so they remain available if their behavior changes.

image-20240227-165033.png
Include or Exclude errors on a Dashboard - Germain UX

🔔 Configure alerts

Go to the GermainUX alert configuration and create notifications for actionable conditions.

Recommended alerts include:

Alert

New critical error category

Checkout error-rate increase

Add-to-cart failure increase

Search failure increase

Application error affecting multiple customers

Error correlated with conversion degradation

Third-party service failure

Shopify API or webhook failure

Previously resolved error recurrence

Avoid sending one alert for every error occurrence. Use aggregation, categorization, deduplication, cooldown periods, and business-impact thresholds.

📄 Suggested alert content

An error alert should include:

Content

Error category and classification

First and most recent occurrence

Number of occurrences

Unique affected customers

Affected store and environment

Page or business-process step

Conversion or revenue impact

Related release

Link to analysis

Link to affected sessions or Session Replay

🗂️ Configure reports

Schedule reports for trends that do not require immediate notification.

Recommended report sections include:

Section

New errors

Most frequent errors

Errors affecting the most customers

Errors with the greatest conversion impact

Checkout failures

Errors by release

Resolved and recurring errors

User validation trends

Silent application errors

Third-party service failures

Keep user validation in a separate section from software failures.

✅ Validate the configuration

Test the configuration safely using a non-production store or Shopify test mode when possible.

Verify:

Check

JavaScript errors are captured.

Unhandled promise rejections are captured.

Failed HTTP requests are captured.

Functional failures returned with HTTP 200 are detected correctly.

Visible application errors use the correct classification.

Silent failures remain distinct.

Expected validation is not counted as an application error.

Sensitive values are masked or excluded.

Categories normalize dynamic values.

New errors can be identified.

Dashboards show affected customers and sessions.

Session Replay opens at the relevant point.

Alerts are deduplicated and routed correctly.

Test errors do not contaminate production reporting.

🧰 Troubleshooting

🔇 Too many insignificant errors

Suggested actions:

  • Add categorization and normalization.

  • Exclude known browser-extension noise.

  • Filter bot and crawler traffic.

  • Separate technical events from confirmed application errors.

  • Apply minimum occurrence or affected-user thresholds.

  • Alert only on new, increasing, or business-impacting categories.

🔁 One error creates many categories

Normalize dynamic product, cart, checkout, order, timestamp, and correlation values before categorization.

🎞️ Errors appear without Session Replay

Confirm that:

  • Session Replay is enabled.

  • The session was selected by the replay sampling rules.

  • Consent permitted replay.

  • The page is within capture scope.

  • The error and replay use the same application and session identifiers.

❓ A visible error is not detected

Determine whether the error is:

  • Rendered as DOM text

  • Displayed in a popup

  • Returned in a network response

  • Logged only to the console

  • Produced inside a cross-origin iframe

  • Generated by a third-party checkout

Configure the appropriate capture method. GermainUX running in a parent page cannot directly inspect protected content inside a cross-origin iframe.

🔧 A request returns HTTP 200 but failed functionally

Add a narrowly scoped response processor or create a custom event from the application code. Do not mark all HTTP 200 responses as successful without considering the application result.

ℹ️ Get More Information

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

Contact GermainUX Support.

Component: Engine, RUM JS

Feature Availability: 2022.1 or later