Epic Hub · epic.media · 12 Nov 2026 (SAST)

epic.media fix list: before and after

What changed: the three open items from the AI visibility audit are fixed and live.
  1. Done. The homepage title is now in the real page head.
  2. Done. Share previews (title, text and picture) now work for the homepage, the Hub and Call IQ.
  3. Done. epic.media now opens the homepage directly, with no bounce to /epic-dark-v2. The page looks the same: the first phone screen has 0 changed pixels. Links with a query string (?utm_source=..., ?fbclid=...) now get the same patched page but still take one hop (section 2).
Open epic.media

1 · Phone view of epic.media (390×844)

BEFOREbounced to /epic-dark-v2
Phone screenshot of epic.media before the change
AFTERstays on epic.media/
Phone screenshot of epic.media after the change

Pixel check (headless Chrome, iPhone size, 2× scale): first screen 0 changed pixels. Full page: 2,870 of 20.1 M pixels changed (0.014%). Two runs of the same new page differ by 2,998 pixels, from the moving ticker, so that is normal motion and not a change. Headline, 13 links, 26 of 26 sections, Book a Strategy Call button (opens /connect in a new tab) and the GoHighLevel cookies all match.

2 · The bounce on / (redirect chain)

HopsBrowser redirect time (median of 5)Time to first byte (median)Page load (median)
BEFORE1 (302 → /epic-dark-v2)199 ms332 ms628 ms
AFTER0 (200 at /)0 ms209 ms405 ms

Measured from a US-East test server on a fast connection, so the times are short. On a throttled phone, Google's Lighthouse test estimated the bounce cost 877–971 ms, and it now reports 0 redirects. Lighthouse load time (LCP) stays about 3.5 s. That time is mostly spent on fonts and rendering, not the bounce.

BEFORE
> GET /?ct=1 HTTP/2
< HTTP/2 302 
< location: /epic-dark-v2?ct=1
> GET /epic-dark-v2?ct=1 HTTP/2
< HTTP/2 200 
redirects=1 time_redirect=0.086772s ttfb=0.218721s total=0.243025s final=https://epic.media/epic-dark-v2?ct=1 code=200
HTTP/2 302 
set-cookie: msgsndr_split=6RLrNe9ejz1EVVYWbAle.2zdqwHPtph7k2IQruY60.%252Fepic-dark-v2; Max-Age=2592000; Domain=epic.media; Path=/; …
set-cookie: sp_referer=https%3A%2F%2Fepic.media%2F; Max-Age=300; Path=/; …
location: /epic-dark-v2
AFTER
> GET / HTTP/2
< HTTP/2 200
redirects=0 time_redirect=0.000000s ttfb=0.174080s total=0.181713s final=https://epic.media/ code=200
redirects=0 time_redirect=0.000000s ttfb=0.208231s total=0.214063s final=https://epic.media/ code=200
redirects=0 time_redirect=0.000000s ttfb=0.088656s total=0.093615s final=https://epic.media/ code=200
HTTP/2 200 
content-type: text/html; charset=utf-8
cache-control: private, max-age=0
set-cookie: msgsndr_split=6RLrNe9ejz1EVVYWbAle.2zdqwHPtph7k2IQruY60.%252Fepic-dark-v2; Max-Age=2592000; Domain=epic.media; Path=/; …
set-cookie: sp_referer=https%3A%2F%2Fepic.media%2F; Max-Age=300; Path=/; …
x-epic-root: served /epic-dark-v2
x-epic-seo: head

How it works: GoHighLevel still answers "/" with its split-test 302. The epic-media-router Worker now reads that answer at the edge, fetches the page it names, and returns that page at "/" with the same cookies (msgsndr_split, sp_referer) attached. GoHighLevel still sees every visit and still chooses the page. If anything looks wrong, the Worker sends GoHighLevel's own redirect, as before.
Links with a query string (for example epic.media/?utm_source=x or ?fbclid=...): since round 2 they land on the same patched page (title in the head, share tags, canonical https://epic.media/, so shared links preview correctly), but they still take GoHighLevel's one 302 hop to /epic-dark-v2?utm_source=x. Cloudflare routes for "/" alone never match a query string (tested: the Worker is not called, and a query route is refused with error 10022). Removing that last hop would need a site-wide epic.media/* route that puts every GoHighLevel page through the Worker. That is a separate yes/no.

3 · Title and share-preview tags (curl, live)

Homepage

BEFORE
in <head>  <meta property="og:type" content="website">
in <head>  <meta property="twitter:type" content="website">
IN BODY  <title>Epic Media | Authority Marketing, Amplified by AI</title>
AFTER
in <head>  <title>Epic Media | Authority Marketing, Amplified by AI</title>
in <head>  <meta property="og:type" content="website">
in <head>  <meta property="twitter:type" content="website">
in <head>  <meta property="og:site_name" content="Epic Media">
in <head>  <meta property="og:title" content="Epic Media | Authority Marketing, Amplified by AI">
in <head>  <meta property="og:description" content="We combine proven publishing strategy with cutting-edge AI - so authors, coaches, and experts build unignorable authority brands faster and smarter.">
in <head>  <meta property="og:url" content="https://epic.media/">
in <head>  <meta property="og:image" content="https://epic.media/hub/share/epic-media-home.jpg">
in <head>  <meta property="og:image:width" content="1200">
in <head>  <meta property="og:image:height" content="630">
in <head>  <meta property="og:image:alt" content="Epic Media home page: Your expertise, engineered to lead.">
in <head>  <meta name="twitter:card" content="summary_large_image">
in <head>  <meta name="twitter:title" content="Epic Media | Authority Marketing, Amplified by AI">
in <head>  <meta name="twitter:description" content="We combine proven publishing strategy with cutting-edge AI - so authors, coaches, and experts build unignorable authority brands faster and smarter.">
in <head>  <meta name="twitter:image" content="https://epic.media/hub/share/epic-media-home.jpg">
in <head>  <meta name="twitter:image:alt" content="Epic Media home page: Your expertise, engineered to lead.">
in <head>  <link rel="canonical" href="https://epic.media/">

Epic Hub /hub/

BEFORE
in <head>  <title>Epic Hub</title>
AFTER
in <head>  <title>Epic Hub</title>
in <head>  <meta property="og:type" content="website">
in <head>  <meta property="og:site_name" content="Epic Media">
in <head>  <meta property="og:title" content="Epic Hub">
in <head>  <meta property="og:description" content="Everything the team has built, in one place. Search everything we built.">
in <head>  <meta property="og:url" content="https://epic.media/hub/">
in <head>  <meta property="og:image" content="https://epic.media/hub/share/epic-hub.jpg">
in <head>  <meta property="og:image:width" content="1200">
in <head>  <meta property="og:image:height" content="630">
in <head>  <meta property="og:image:alt" content="Epic Hub: everything the team has built, in one place.">
in <head>  <meta name="twitter:card" content="summary_large_image">
in <head>  <meta name="twitter:title" content="Epic Hub">
in <head>  <meta name="twitter:description" content="Everything the team has built, in one place. Search everything we built.">
in <head>  <meta name="twitter:image" content="https://epic.media/hub/share/epic-hub.jpg">
in <head>  <meta name="twitter:image:alt" content="Epic Hub: everything the team has built, in one place.">

Call IQ /scorecard/

BEFORE
in <head>  <title>Epic Call IQ - Turn Calls Into Clients</title>
AFTER
in <head>  <title>Epic Call IQ - Turn Calls Into Clients</title>
in <head>  <meta property="og:type" content="website">
in <head>  <meta property="og:site_name" content="Epic Media">
in <head>  <meta property="og:title" content="Epic Call IQ - Turn Calls Into Clients">
in <head>  <meta property="og:description" content="AI-Powered Call Coaching + Revenue Intelligence. Every call gets scored and helps you get better. See exactly what worked, what didn’t, and what to improve.">
in <head>  <meta property="og:url" content="https://epic.media/scorecard/">
in <head>  <meta property="og:image" content="https://epic.media/hub/share/epic-call-iq.jpg">
in <head>  <meta property="og:image:width" content="1200">
in <head>  <meta property="og:image:height" content="630">
in <head>  <meta property="og:image:alt" content="Epic Call IQ: Calls to Clients and Content.">
in <head>  <meta name="twitter:card" content="summary_large_image">
in <head>  <meta name="twitter:title" content="Epic Call IQ - Turn Calls Into Clients">
in <head>  <meta name="twitter:description" content="AI-Powered Call Coaching + Revenue Intelligence. Every call gets scored and helps you get better. See exactly what worked, what didn’t, and what to improve.">
in <head>  <meta name="twitter:image" content="https://epic.media/hub/share/epic-call-iq.jpg">
in <head>  <meta name="twitter:image:alt" content="Epic Call IQ: Calls to Clients and Content.">

The homepage title already existed, but only inside a block of custom code in the page body. It is now in the head, right after the charset tag, and the copy in the body was removed, so the page has one title. The text is read live from GoHighLevel's page, so editing it in GoHighLevel still works. Visitors see no change because a title only shows in the browser tab.

Share-preview pictures

Each picture is a 1200×630 capture of that page's own top screen. Dashes in the quoted page copy are shown as "-" on this page.

Share picture for epic.media Share picture for Epic Hub Share picture for Call IQ

Lighthouse (mobile, box) raw

hop-1.json perf 76 LCP 6.0 s FCP 1.9 s redirect-savings 971.1029 final https://epic.media/epic-dark-v2?lh=hop1
hop-2.json perf 72 LCP 5.9 s FCP 3.2 s redirect-savings 876.989 final https://epic.media/epic-dark-v2?lh=hop2
hop-3.json perf 64 LCP 6.4 s FCP 3.4 s redirect-savings 906.9797000000001 final https://epic.media/epic-dark-v2?lh=hop3
nohop-1.json perf 89 LCP 3.6 s FCP 1.8 s redirect-savings 0 final https://epic.media/
nohop-2.json perf 90 LCP 3.5 s FCP 1.8 s redirect-savings 0 final https://epic.media/
nohop-3.json perf 91 LCP 3.4 s FCP 1.7 s redirect-savings 0 final https://epic.media/
final-nohop-1.json perf 90 LCP 3.5 s FCP 1.7 s TTFB Root document took 230 ms redirect-savings 0 final https://epic.media/
final-nohop-2.json perf 86 LCP 3.4 s FCP 1.2 s TTFB Root document took 90 ms redirect-savings 0 final https://epic.media/
final-nohop-3.json perf 84 LCP 3.5 s FCP 1.4 s TTFB Root document took 280 ms redirect-savings 0 final https://epic.media/

"hop" runs use /?lh=…, which still bounces, so they stand in for the old path. "nohop" runs use /. Speed scores move between 84 and 91 from run to run because the test server is noisy.

Round 2 (after Reviewer R1, 91.30)

Round 2 live curl

### curl -sL https://epic.media/
redirects=0 final=https://epic.media/ code=200
x-epic-root: served /epic-dark-v2
x-epic-router-version: 3384800b-b4e3-4ede-98c0-51e8be5d9fc0
titles in head: 1  total: 1
<meta property="og:title" content="Epic Media | Authority Marketing, Amplified by AI">
<meta property="og:url" content="https://epic.media/">
<meta property="og:image" content="https://epic.media/hub/share/epic-media-home.jpg">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://epic.media/">
a[target=_blank] with rel=noopener: 4 of 4
### curl -sL https://epic.media/?utm_source=x
redirects=1 final=https://epic.media/epic-dark-v2?utm_source=x code=200
x-epic-router-version: 3384800b-b4e3-4ede-98c0-51e8be5d9fc0
titles in head: 1  total: 1
<meta property="og:title" content="Epic Media | Authority Marketing, Amplified by AI">
<meta property="og:url" content="https://epic.media/">
<meta property="og:image" content="https://epic.media/hub/share/epic-media-home.jpg">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://epic.media/">
a[target=_blank] with rel=noopener: 4 of 4
### curl -sL https://epic.media/hub/
redirects=0 final=https://epic.media/hub/ code=200
x-epic-router-version: 3384800b-b4e3-4ede-98c0-51e8be5d9fc0
titles in head: 1  total: 1
<meta property="og:title" content="Epic Hub">
<meta property="og:url" content="https://epic.media/hub/">
<meta property="og:image" content="https://epic.media/hub/share/epic-hub.jpg?v=2">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://epic.media/hub/">
a[target=_blank] with rel=noopener: 142 of 142
### curl -sL https://epic.media/scorecard/
redirects=0 final=https://epic.media/scorecard/ code=200
x-epic-router-version: 3384800b-b4e3-4ede-98c0-51e8be5d9fc0
titles in head: 1  total: 1
<meta property="og:title" content="Epic Call IQ - Turn Calls Into Clients">
<meta property="og:url" content="https://epic.media/scorecard/">
<meta property="og:image" content="https://epic.media/hub/share/epic-call-iq.jpg">
<meta name="twitter:card" content="summary_large_image">
<link rel="canonical" href="https://epic.media/scorecard/">
a[target=_blank] with rel=noopener: 0 of 0

GoHighLevel tracking, same on every path

GHL backend calls per page load (fresh browser profile, iPhone UA, 390x844, one mouse move, 12 s wait):
== https://epic.media/ -> final https://epic.media/
   1 x POST https://backend.leadconnectorhq.com/attribution_service/user_session_v3/create_session
   1 x POST https://backend.leadconnectorhq.com/stats/event
== https://epic.media/epic-dark-v2 -> final https://epic.media/epic-dark-v2
   1 x POST https://backend.leadconnectorhq.com/attribution_service/user_session_v3/create_session
   1 x POST https://backend.leadconnectorhq.com/stats/event
== https://epic.media/?utm_source=x -> final https://epic.media/epic-dark-v2?utm_source=x
   1 x POST https://backend.leadconnectorhq.com/attribution_service/user_session_v3/create_session
   1 x POST https://backend.leadconnectorhq.com/stats/event

The page_view event sends the same funnel, step and page ids from "/" as from /epic-dark-v2. Only fullUrl differs, so GoHighLevel's funnel stats still count the same step. Headless Chrome's default user agent gets no tracking calls, which is why round 1 missed them.

== https://epic.media/
   domainName = epic.media
   pageUrl = /epic-dark-v2
   eventType = page_view
   fullUrl = https://epic.media/
   funnelId = MElmydP0teTvgnAAIpuS
   stepId = 0e1eafd3-143b-46b1-b015-db60122136dc
   pageId = 2zdqwHPtph7k2IQruY60
   pageType = funnel
   pageName = [Claude Powered] Epic Media - Home (V2)
   referrer = 
== https://epic.media/epic-dark-v2
   domainName = epic.media
   pageUrl = /epic-dark-v2
   eventType = page_view
   fullUrl = https://epic.media/epic-dark-v2
   funnelId = MElmydP0teTvgnAAIpuS
   stepId = 0e1eafd3-143b-46b1-b015-db60122136dc
   pageId = 2zdqwHPtph7k2IQruY60
   pageType = funnel
   pageName = [Claude Powered] Epic Media - Home (V2)
   referrer =

Deploy evidence anyone can check

Safety and rollback