HTTPS, Mixed Content and Browser Trust for Ecommerce: A Decision Guide

HTTPS problems on ecommerce sites are not all the same. Separate certificate failures, HTTP pages and mixed content, fix anything that can break login or checkout first, then verify the secure customer journey without assuming an automatic SEO uplift.

Written by Founder of ScanMySEO
Published Updated Reading time11 min read

Start here: identify the HTTPS failure you actually have

On an ecommerce site, “HTTPS problem” can describe several different failures. A page might still be served over http://; its HTTPS connection might be broken because of a certificate or TLS problem; or the page itself might be HTTPS while requesting an insecure dependency. Those cases behave differently in browsers, so they should not be prioritised as one generic warning.

What you seeWhat it usually meansWhy it matters on an ecommerce siteFirst action
The page URL starts with http://The top-level page is not using HTTPS.Information sent between the browser and that page is not protected by HTTPS. Login, account and checkout journeys should not depend on an insecure page.Serve the page over HTTPS, then redirect the HTTP version to the preferred HTTPS URL.
The browser shows a certificate or “connection is not private” errorHTTPS was requested, but the browser cannot establish a trusted connection.Customers may be stopped before the page loads at all.Fix the certificate, hostname, chain or TLS configuration before working on lower-priority mixed-content warnings.
The page is HTTPS, but DevTools reports mixed contentThe secure page is requesting one or more resources over HTTP.Some resources can be upgraded by the browser; others can be blocked, which may remove scripts, styles, fonts, frames or API calls from the page.Find the exact insecure request and replace, remove or securely host it.

If your main problem is that whole pages are still accessible over HTTP, start with ScanMySEO’s guide to URLs not using HTTPS. This article focuses on the harder decision: what to do once a store is supposed to be HTTPS but browsers still report insecure or mixed behaviour.

What HTTPS and mixed content do — and do not — mean

HTTPS protects the connection between a browser and a website from passive eavesdropping and modification in transit. A valid HTTPS connection does not prove that a merchant is legitimate, that a product is trustworthy, or that the site is free from every security problem. Chrome’s own guidance makes that distinction: its security indicator describes the privacy of the connection, and users are still advised to confirm that they are on the site they intended to visit. See Chrome’s explanation of connection security.

Mixed content is narrower. It occurs when an HTTPS page requests a resource over an insecure protocol such as HTTP. Current browser behaviour is important here because not every insecure request produces the same result. The MDN mixed-content guidance separates requests into content browsers can automatically upgrade and content they should block.

  • Often auto-upgraded: a basic image loaded through an <img src>, plus some audio and video requests. The browser rewrites the request to HTTPS. If the secure version does not exist, the resource can fail.
  • Blockable: scripts, stylesheet links, iframes, fetch() and XMLHttpRequest calls, web fonts, objects, beacons, and responsive images referenced through srcset or <picture>.
  • Mixed downloads: a download started from a secure page but fetched insecurely can also be blocked or warned about by browsers.

This distinction changes ecommerce prioritisation. An HTTP product image is still a defect and should be fixed, but a blocked payment iframe, fraud-prevention script, login request or cart API call can be much more disruptive. Do not rank mixed-content work by Largest Contentful Paint (LCP) impact alone: security and transaction functionality come first.

Diagnostic workflow: find the insecure request, not just the symptom

Test more than the homepage. Ecommerce problems often appear only on templates or flows that load extra integrations. A useful sample includes the homepage, category page, product page, search results, basket, account/login, checkout, payment step, order confirmation and any customer download area.

  1. Confirm the top-level URL. Load both the HTTPS and HTTP forms of a representative URL. The HTTPS version should load without a certificate interstitial, and the HTTP version should redirect to the intended HTTPS destination rather than to another HTTP hop.
  2. Use the browser’s security tooling. Chrome DevTools can show whether the main origin is secure, identify certificate problems and list non-secure origins. Its Privacy and security panel is more useful than judging the page from the address-bar icon alone.
  3. Inspect the actual network requests. Reload the page with DevTools open. In Chrome’s Network panel, filters such as scheme:http and mixed-content:all can isolate insecure requests. The Network panel reference documents these filters.
  4. Check the Console and Issues panel. Browsers can report whether a request was upgraded or blocked. Record the resource URL, the page where it occurs and whether the failure changes page behaviour.
  5. Trace the source of the URL. Search the rendered DOM, templates, CSS, CMS fields, product descriptions, tag-manager containers and JavaScript configuration for the insecure URL. “View source” alone can miss URLs injected after page load.
  6. Check third-party ownership. Determine whether the resource belongs to your store, CDN, ecommerce platform, payment provider, review widget, analytics vendor, affiliate tool or another service. The owner determines the safe fix.
  7. Crawl beyond the sample. Once you know the pattern, scan the wider site for HTTP page URLs and insecure resource references. Manual browser testing is excellent for behaviour; a crawl is better for finding repeated or template-level problems at scale.

Keep a small issue ledger while you investigate: affected template, insecure resource, browser outcome, business function, owner and chosen fix. This prevents a long list of warnings from becoming a flat backlog with no sense of consequence.

Ecommerce priority matrix: what to fix first

PriorityExampleWhy it comes firstTypical owner
1 — Restore a valid secure connectionExpired or invalid certificate on the store, login or checkout hostThe browser may prevent the page from loading normally.Hosting, CDN, infrastructure or platform team
2 — Restore blocked transaction functionalityHTTP payment iframe, cart API request, login script, stylesheet or fraud-prevention dependencyThe customer journey can break even though the page URL itself is HTTPS.Developer, ecommerce platform or integration owner
3 — Remove HTTP/HTTPS URL inconsistenciesHTTP product/category URLs, redirect chains through HTTP, HTTP canonicals or sitemap URLsUsers and crawlers should be sent consistently to the preferred secure URL.Developer, SEO or platform team
4 — Clean up auto-upgraded or lower-impact resourcesLegacy image or media URLs that the browser currently upgradesThe browser may mask the defect today; the source should still be corrected so the page does not depend on automatic repair.CMS, content or development team
5 — Harden after the migration is stableHSTS rollout or a temporary CSP migration guardrailHardening is valuable, but it should not hide unresolved HTTPS coverage or break subdomains that are not ready.Infrastructure/security team

Remediation: choose the right fix for each failure

1. Fix certificate and TLS failures before mixed-content cleanup

If the browser cannot establish a trusted HTTPS connection, correct that first. Common causes include an expired certificate, a certificate that does not cover the hostname, an incomplete chain, or a misconfigured CDN/origin. Re-test every hostname used by the customer journey, not only the apex domain.

2. Redirect HTTP pages to their HTTPS equivalents

After the HTTPS version is known to work, redirect HTTP requests to the corresponding HTTPS URL. Keep destination URLs consistent in internal links, canonicals and XML sitemaps. Google says it generally prefers HTTPS over HTTP when choosing canonicals, but also lists invalid certificates and certain insecure dependencies as reasons an HTTPS URL may not be preferred. See Google’s canonicalisation guidance.

A migration is not finished because the homepage redirects. Test deep product URLs, filtered/category routes, account pages and legacy links. Avoid redirecting many old URLs to one generic page when a direct HTTPS equivalent exists.

3. Replace insecure dependencies at the source

For a hard-coded resource, the preferred repair is usually to change the stored or generated URL so it requests the correct HTTPS endpoint directly.

<!-- Before: insecure dependency -->
<script src="http://cdn.example.com/store.js"></script>

<!-- After: only if that host genuinely supports HTTPS -->
<script src="https://cdn.example.com/store.js"></script>

Do not blindly search-and-replace http:// with https:// across a production database. First verify that the destination supports HTTPS and serves the expected resource. If a third party has no secure endpoint, remove the dependency, move it to a secure host you control where licensing and update responsibilities allow, or replace the provider.

4. Treat responsive images and runtime requests as real mixed-content risks

A plain <img src="http://..."> may be auto-upgraded by current browsers, which can make a page look “fine” during a quick visual check. Do not assume the same behaviour for every image path. Responsive images using srcset or <picture>, web fonts, scripts, stylesheets, iframes and runtime API requests can be blocked instead. Check the network log rather than relying on what remains visible on screen.

5. Use upgrade-insecure-requests as a migration aid, not the final repair

For a large legacy site with many insecure references, the Content Security Policy directive upgrade-insecure-requests can instruct the browser to rewrite insecure requests to HTTPS. MDN describes it as a tool for sites with many legacy insecure URLs. It does not create an HTTPS version of a resource that does not exist, and it does not replace fixing stored URLs or top-level HTTP navigation. See the MDN directive reference.

Do not add the older block-all-mixed-content directive as a new fix; MDN marks it deprecated/obsolete because modern mixed-content handling has moved on.

6. Add HSTS only after HTTPS coverage is proven

HTTP Strict Transport Security (HSTS) tells browsers to use HTTPS for future requests to the host. It is a hardening step, not a substitute for correcting mixed content. Roll it out deliberately: options such as includeSubDomains and preload can affect every covered subdomain and can break services that are not HTTPS-ready. If you are reviewing broader transport and browser-security headers, the ScanMySEO guide to missing security headers is the more appropriate next step.

SEO implications: keep the claim precise

HTTPS and mixed content matter for site security, user experience and technical consistency, but they should not be turned into unsupported ranking promises. Google’s current minimum technical requirements for Search eligibility focus on Googlebot access, a successful HTTP response and indexable content; mixed content is not described as a standalone reason a page cannot be indexed. Google nevertheless recommends HTTPS for user and site security, and its canonicalisation systems generally prefer HTTPS versions when signals are otherwise suitable.

The practical SEO risk is often indirect. If a blocked script or API call prevents important content or navigation from appearing, that functional failure may affect what users and crawlers can access. If HTTP and HTTPS versions compete with inconsistent canonicals, redirects or sitemaps, you create avoidable canonicalisation noise. Fix those concrete problems; do not promise that removing a mixed-content warning will produce a ranking increase.

Verification loop: prove the store still works

A successful fix is not “the warning disappeared on one product page.” Verify both transport security and the ecommerce journey.

  1. Retest HTTP entry points. Confirm that representative HTTP URLs redirect to the intended HTTPS destinations without looping or falling back through HTTP.
  2. Retest the certificate state. Use the browser security panel on the main store and any separate account, checkout or payment hostnames you control.
  3. Reload with DevTools open. Confirm that the Security, Network, Console and Issues views no longer show unexpected insecure requests for the tested flow.
  4. Exercise real customer actions. Test product variants, image galleries, add-to-basket, basket updates, login, account recovery, checkout, payment widgets, order confirmation and customer downloads. A security change that breaks a critical integration is not complete.
  5. Crawl again. Re-run the site-wide check to catch template instances you did not manually visit.
  6. Check search-facing URL signals. Verify that internal links, canonical tags and sitemaps use the preferred HTTPS URLs. For important pages, use Search Console URL Inspection and review the HTTPS reporting referenced in Google’s page-experience guidance.
  7. Watch post-release errors. Review front-end errors, failed requests, payment/integration logs and analytics instrumentation after deployment. Replacing an old script URL can fix mixed content while exposing a separate integration or tracking problem.

Do not use an LCP change as proof that mixed content has been fixed. Performance metrics and transport-security findings answer different questions. If an insecure hero image also affected loading performance, measure that separately after the security defect is resolved.

Prevent mixed content from coming back

  • Normalise content creation. Configure the CMS and ecommerce platform to generate HTTPS asset and internal URLs rather than relying on editors to type schemes correctly.
  • Audit third-party tags before launch. Marketing, reviews, chat, payment, personalisation and affiliate tools can inject requests that are not visible in a template review.
  • Include checkout in release testing. Security checks that cover only public content pages miss the flows where ecommerce-specific dependencies appear.
  • Monitor certificate renewal. Automated renewal reduces risk, but you still need alerting for failed renewals, DNS changes, hostname additions and CDN/origin mismatches.
  • Re-crawl after migrations or platform changes. Domain moves, CDN changes, theme rebuilds, imports and third-party replacements are common points where old HTTP references reappear.
  • Keep hardening separate from cleanup. HSTS and CSP can strengthen an already-correct deployment; they should not be used to conceal unknown insecure dependencies.

A practical stopping rule

You are done when the store’s intended pages load over valid HTTPS, HTTP variants consistently reach the preferred HTTPS URLs, customer-critical dependencies are requested securely, DevTools shows no unexplained mixed-content failures in the tested journeys, and a wider crawl no longer finds the same insecure pattern at scale. That is a stronger completion test than “the padlock looks normal” or “the homepage passes.”

Hansel McKoy

Hansel McKoy is the founder of ScanMySEO and a technical SEO specialist with more than 10 years of experience across agency, in-house, public-sector, and founder-led roles.

Founder of ScanMySEO


Get More Out of ScanMySEO