1<!DOCTYPE html><html lang="en" class="scroll-smooth"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="generator" content="Astro v7.2.0"><title>Contact Connor Walberg | Web Design + SEO for Photographers</title><link rel="canonical" href="https://connorwalberg.com/contact/"><!-- Structured data -->
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","@id":"https://connorwalberg.com/#organization","name":"Connor Walberg SEO","url":"https://connorwalberg.com","logo":{"@type":"ImageObject","url":"https://cdn.sanity.io/images/0qig9ixl/production/bd4716c946d3b063a75faa113b9933ee2f88c8ee-1224x1224.png?w=256&h=256"},"founder":{"@id":"https://connorwalberg.com/#person"},"sameAs":["https://www.youtube.com/channel/UCaxiWCl_YQbYRDmBfZUkB5A","https://www.facebook.com/groups/photographerseo"]}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Person","@id":"https://connorwalberg.com/#person","name":"Connor Walberg","url":"https://connorwalberg.com/about/","jobTitle":"Website Designer & SEO Specialist for Photographers","worksFor":{"@type":"Organization","@id":"https://connorwalberg.com/#organization","name":"Connor Walberg SEO"},"sameAs":["https://www.youtube.com/channel/UCaxiWCl_YQbYRDmBfZUkB5A","https://www.facebook.com/groups/photographerseo"]}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","@id":"https://connorwalberg.com/#website","name":"Connor Walberg SEO","url":"https://connorwalberg.com","publisher":{"@id":"https://connorwalberg.com/#organization"}}</script>
1<meta name="description" content="Ready to talk about your website or SEO? Reach out and let's see if we're a good fit."><!-- Open Graph --><meta property="og:title" content="Contact Connor Walberg | Web Design + SEO for Photographers"><meta property="og:description" content="Ready to talk about your website or SEO? Reach out and let's see if we're a good fit."><meta property="og:type" content="website"><meta property="og:url" content="https://connorwalberg.com/contact/"><meta property="og:site_name" content="Connor Walberg SEO"><meta property="og:image" content="https://cdn.sanity.io/images/0qig9ixl/production/76f5896678d8bac478138747e5351aa492b81420-800x800.jpg?rect=0,190,800,420&w=1200&h=630&fit=crop&auto=format"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="Contact Connor Walberg | Web Design + SEO for Photographers"><!-- Twitter/X card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Contact Connor Walberg | Web Design + SEO for Photographers"><meta name="twitter:description" content="Ready to talk about your website or SEO? Reach out and let's see if we're a good fit."><meta name="twitter:image" content="https://cdn.sanity.io/images/0qig9ixl/production/76f5896678d8bac478138747e5351aa492b81420-800x800.jpg?rect=0,190,800,420&w=1200&h=630&fit=crop&auto=format"><!-- Favicon --><link rel="icon" type="image/png" href="https://cdn.sanity.io/images/0qig9ixl/production/bd4716c946d3b063a75faa113b9933ee2f88c8ee-1224x1224.png?w=64&h=64"><!-- Google Tag Manager -->
1<script>(function(){const gtmId = "GTM-W34TG699"; 2 3 (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 4 new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 5 j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 6 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 7 })(window,document,'script','dataLayer',gtmId); 8 })();</script>
8<!-- Self-hosted fonts (see global.css). Preload the two faces used above the 9 fold so text paints without waiting on the CSS to be parsed first. --><link rel="preload" href="/fonts/playfair-display-normal-latin.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" href="/fonts/inter-normal-latin.woff2" as="font" type="font/woff2" crossorigin><link rel="stylesheet" href="/_astro/Layout.CU4GWK-I.css"></head><body class="font-sans text-charcoal bg-cream antialiased"><!-- Google Tag Manager (noscript) -->
vendor: 67 bytes, line 9
9<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
9GTM-W34TG699
vendor: 82 bytes, line 9
9" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
9<!-- 10 data-scrolled="false" = transparent, cream text (over dark hero) 11 data-scrolled="true" = cream bg, charcoal text (over light page content) 12 data-hamburger="false" = desktop link row visible 13 data-hamburger="true" = hamburger button visible, links hidden 14--><header id="site-header" class="group/nav fixed top-0 left-0 right-0 z-50 transition-colors duration-300 15 data-[scrolled=true]:bg-cream data-[scrolled=true]:shadow-[0_1px_0_rgba(42,43,42,0.08)]" data-scrolled="false" data-hamburger="false"><nav class="max-w-[1200px] mx-auto px-6 lg:px-12 h-[72px] flex items-center justify-between gap-4"><!-- Logo / Site Name --><a href="/" class="shrink-0 leading-none"><span class="relative inline-flex items-center h-16"><img src="https://cdn.sanity.io/images/0qig9ixl/production/f092f244d473763b69213114148e9209f9df1134-1215x305.png?h=128&auto=format" alt="Connor Walberg SEO" width="255" height="64" class="h-16 w-auto transition-opacity duration-300 group-data-[scrolled=true]/nav:opacity-0"><img src="https://cdn.sanity.io/images/0qig9ixl/production/f092f244d473763b69213114148e9209f9df1134-1215x305.png?h=128&auto=format" alt="Connor Walberg SEO" width="255" height="64" class="h-16 w-auto transition-opacity duration-300 absolute inset-0 opacity-0 group-data-[scrolled=true]/nav:opacity-100"></span></a><!-- Desktop links â hidden in hamburger mode --><ul id="nav-desktop-links" class="flex items-center group-data-[hamburger=true]/nav:hidden"><li class="relative"><button class="nav-dropdown-btn link-underline flex items-center gap-1 text-sm font-sans tracking-[0.08em] 16 whitespace-nowrap px-[15px] transition-colors duration-300 17 text-cream/80 hover:text-cream 18 group-data-[scrolled=true]/nav:text-charcoal/70 group-data-[scrolled=true]/nav:hover:text-charcoal" aria-expanded="false" aria-haspopup="true">Web Design<svg class="nav-chevron w-3 h-3 transition-transform duration-200" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="2,4 6,8 10,4"></polyline></svg></button><ul class="nav-dropdown absolute top-full left-1/2 -translate-x-1/2 mt-2 hidden 19 min-w-[180px] bg-charcoal rounded-[3px] shadow-lg py-2 20 border border-cream/10"><li><a href="/singletrack-sites/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 21 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">Website Platform</a></li><li><a href="/pet-photographer-showit-template/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 22 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">Pet Photographer Template</a></li></ul></li><li class="relative"><button class="nav-dropdown-btn link-underline flex items-center gap-1 text-sm font-sans tracking-[0.08em] 23 whitespace-nowrap px-[15px] transition-colors duration-300 24 text-cream/80 hover:text-cream 25 group-data-[scrolled=true]/nav:text-charcoal/70 group-data-[scrolled=true]/nav:hover:text-charcoal" aria-expanded="false" aria-haspopup="true">SEO<svg class="nav-chevron w-3 h-3 transition-transform duration-200" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="2,4 6,8 10,4"></polyline></svg></button><ul class="nav-dropdown absolute top-full left-1/2 -translate-x-1/2 mt-2 hidden 26 min-w-[180px] bg-charcoal rounded-[3px] shadow-lg py-2 27 border border-cream/10"><li><a href="/seo-audit/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 28 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">SEO Assessment</a></li><li><a href="/seo-for-photographers/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 29 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">SEO for Photographers</a></li><li><a href="/photo-business-collective/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 30 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">Photo Business Collective</a></li><li><a href="/seo-tools/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 31 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">SEO Tools</a></li></ul></li><li class="relative"><button class="nav-dropdown-btn link-underline flex items-center gap-1 text-sm font-sans tracking-[0.08em] 32 whitespace-nowrap px-[15px] transition-colors duration-300 33 text-cream/80 hover:text-cream 34 group-data-[scrolled=true]/nav:text-charcoal/70 group-data-[scrolled=true]/nav:hover:text-charcoal" aria-expanded="false" aria-haspopup="true">About<svg class="nav-chevron w-3 h-3 transition-transform duration-200" viewB
34ox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="2,4 6,8 10,4"></polyline></svg></button><ul class="nav-dropdown absolute top-full left-1/2 -translate-x-1/2 mt-2 hidden 35 min-w-[180px] bg-charcoal rounded-[3px] shadow-lg py-2 36 border border-cream/10"><li><a href="/contact/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 37 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">Contact</a></li><li><a href="/about/" class="block px-5 py-2.5 text-sm font-sans tracking-[0.06em] 38 text-cream/75 hover:text-cream hover:bg-cream/5 transition-colors duration-150">About</a></li></ul></li><li class><a href="/blog/" class="link-underline block text-sm font-sans tracking-[0.08em] whitespace-nowrap 39 px-[15px] transition-colors duration-300 40 text-cream/80 hover:text-cream 41 group-data-[scrolled=true]/nav:text-charcoal/70 group-data-[scrolled=true]/nav:hover:text-charcoal">Blog</a></li></ul><!-- CTA + hamburger --><div id="nav-right" class="flex items-center gap-4 shrink-0"><a id="nav-cta" href="https://connorwalberg.com/singletrack-sites/" class="btn-shimmer btn-pill inline-flex items-center px-5 py-2.5 rounded-[6px] bg-sage text-charcoal 42 text-sm font-sans font-medium tracking-[0.08em] whitespace-nowrap 43 hover:bg-sage/85 hover:-translate-y-0.5 44 transition-[color,background-color,transform] duration-200 45 group-data-[hamburger=true]/nav:hidden">Web Platform</a><!-- Hamburger â only shown in hamburger mode --><button id="nav-toggle" aria-label="Toggle menu" aria-expanded="false" class="hidden group-data-[hamburger=true]/nav:flex flex-col justify-center items-center w-10 h-10 gap-[5px]"><span class="nav-bar block w-6 h-px transition-all duration-300 46 bg-cream group-data-[scrolled=true]/nav:bg-charcoal"></span><span class="nav-bar block w-6 h-px transition-all duration-300 47 bg-cream group-data-[scrolled=true]/nav:bg-charcoal"></span><span class="nav-bar block w-4 h-px transition-all duration-300 self-start 48 bg-cream group-data-[scrolled=true]/nav:bg-charcoal"></span></button></div></nav><!-- Mobile drawer â always charcoal, sits below the nav bar --><div id="nav-mobile" class="hidden bg-charcoal/95 backdrop-blur-sm border-t border-cream/10 px-6 pb-8 pt-6"><ul class="flex flex-col gap-1 mb-6"><li><details class="group/details"><summary class="flex items-center justify-between py-3 cursor-pointer list-none 49 text-cream/75 hover:text-cream font-sans text-base tracking-[0.08em] transition-colors">Web Design<svg class="w-3 h-3 transition-transform duration-200 group-open/details:rotate-180" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="2,4 6,8 10,4"></polyline></svg></summary><ul class="flex flex-col gap-1 pl-4 pb-2"><li><a href="/singletrack-sites/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">Website Platform</a></li><li><a href="/pet-photographer-showit-template/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">Pet Photographer Template</a></li></ul></details></li><li><details class="group/details"><summary class="flex items-center justify-between py-3 cursor-pointer list-none 50 text-cream/75 hover:text-cream font-sans text-base tracking-[0.08em] transition-colors">SEO<svg class="w-3 h-3 transition-transform duration-200 group-open/details:rotate-180" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="2,4 6,8 10,4"></polyline></svg></summary><ul class="flex flex-col gap-1 pl-4 pb-2"><li><a href="/seo-audit/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">SEO Assessment</a></li><li><a href="/seo-for-photographers/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">SEO for Photographers</a></li><li><a href="/photo-business-collective/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">Photo Business Collective</a></li><li><a href="/seo-tools/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">SEO Tools</a></li></ul></details></li><li>
50<details class="group/details"><summary class="flex items-center justify-between py-3 cursor-pointer list-none 51 text-cream/75 hover:text-cream font-sans text-base tracking-[0.08em] transition-colors">About<svg class="w-3 h-3 transition-transform duration-200 group-open/details:rotate-180" viewBox="0 0 12 12" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="2,4 6,8 10,4"></polyline></svg></summary><ul class="flex flex-col gap-1 pl-4 pb-2"><li><a href="/contact/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">Contact</a></li><li><a href="/about/" class="block py-2 text-cream/60 hover:text-cream font-sans text-sm tracking-[0.08em] transition-colors">About</a></li></ul></details></li><li><a href="/blog/" class="block py-3 text-cream/75 hover:text-cream font-sans text-base tracking-[0.08em] transition-colors">Blog</a></li></ul><a href="https://connorwalberg.com/singletrack-sites/" class="inline-flex items-center px-6 py-3 rounded-[6px] bg-sage text-charcoal 52 font-sans font-bold text-[0.7rem] tracking-[0.08em] uppercase hover:bg-sage/85 transition-colors">Web Platform</a></div></header>
52<script type="module">var e=document.getElementById(`site-header`),t=document.getElementById(`nav-toggle`),n=document.getElementById(`nav-mobile`),r=document.getElementById(`nav-desktop-links`),i=document.getElementById(`nav-right`),a=e.querySelector(`nav > a`),o=e.dataset.scrolled===`true`;function s(t){e.dataset.scrolled=t?`true`:`false`}function c(){o||s(window.scrollY>60)}c(),window.addEventListener(`scroll`,c,{passive:!0});function l(){let t=e.dataset.hamburger===`true`;e.dataset.hamburger=`false`;let n=e.querySelector(`nav`).clientWidth,o=a.offsetWidth,s=i.offsetWidth,c=o+r.scrollWidth+s+32>n;e.dataset.hamburger=c?`true`:`false`,t&&!c&&u()}new ResizeObserver(l).observe(e),l();function u(){n.classList.add(`hidden`),t.setAttribute(`aria-expanded`,`false`);let e=t.querySelectorAll(`.nav-bar`);e[0].style.transform=``,e[1].style.transform=``,e[2].style.opacity=``}t.addEventListener(`click`,()=>{let e=n.classList.contains(`hidden`);n.classList.toggle(`hidden`,!e),t.setAttribute(`aria-expanded`,String(e));let r=t.querySelectorAll(`.nav-bar`);e?(r[0].style.transform=`translateY(6px) rotate(45deg)`,r[1].style.transform=`translateY(-6px) rotate(-45deg)`,r[2].style.opacity=`0`):u()}),n.querySelectorAll(`a`).forEach(e=>{e.addEventListener(`click`,u)});var d=e.querySelectorAll(`.nav-dropdown-btn`);function f(e){d.forEach(t=>{if(t===e)return;t.setAttribute(`aria-expanded`,`false`);let n=t.nextElementSibling;n&&n.classList.add(`hidden`);let r=t.querySelector(`.nav-chevron`);r&&(r.style.transform=``)})}d.forEach(e=>{e.addEventListener(`click`,t=>{t.stopPropagation();let n=e.getAttribute(`aria-expanded`)===`true`;if(f(n?void 0:e),!n){e.setAttribute(`aria-expanded`,`true`);let t=e.nextElementSibling;t&&t.classList.remove(`hidden`);let n=e.querySelector(`.nav-chevron`);n&&(n.style.transform=`rotate(180deg)`)}})}),document.addEventListener(`click`,()=>f()),document.addEventListener(`keydown`,e=>{e.key===`Escape`&&f()});</script>
52<main id="main-content"><section class="bg-charcoal pt-36 pb-16 lg:pt-44 lg:pb-20"><div class="max-w-[1200px] mx-auto px-6 lg:px-12"><p class="text-[11px] font-sans font-medium tracking-[0.28em] uppercase text-sage mb-6">Get In Touch</p><h1 class="font-display font-normal text-cream leading-[1.05] max-w-3xl" style="font-size: clamp(2.4rem, 5vw, 4rem);">Let's talk about your business.</h1><p class="font-sans text-cream/55 leading-relaxed mt-6 max-w-2xl" style="font-size: clamp(0.95rem, 1.3vw, 1.1rem);">Whether you're ready to book a custom website or just have questions about SEO, I'd love to hear from you. Fill out the form and I'll be in touch within one business day.</p></div></section><section class="bg-cream py-24 lg:py-32"><div class="max-w-[1200px] mx-auto px-6 lg:px-12"><div class="max-w-2xl mx-auto"><form id="contact-form" method="POST" action="/api/contact" class="flex flex-col gap-8" novalidate><!-- Full name --><label class="flex flex-col gap-3"><span class="text-sm font-sans font-medium text-charcoal">Full name <span class="text-sage" aria-hidden="true">*</span></span><input type="text" name="name" required maxlength="120" autocomplete="name" placeholder="Your name here" class="w-full bg-transparent border-0 border-b border-charcoal/20 px-0 py-2 font-sans text-charcoal placeholder:text-charcoal/70 focus:outline-none focus:border-sage transition-colors"></label><!-- Email --><label class="flex flex-col gap-3"><span class="text-sm font-sans font-medium text-charcoal">Email <span class="text-sage" aria-hidden="true">*</span></span><input type="email" name="email" required maxlength="200" autocomplete="email" placeholder="E.g. [email protected]" class="w-full bg-transparent border-0 border-b border-charcoal/20 px-0 py-2 font-sans text-charcoal placeholder:text-charcoal/70 focus:outline-none focus:border-sage transition-colors"></label><!-- Message --><label class="flex flex-col gap-3"><span class="text-sm font-sans font-medium text-charcoal">Tell me more about your web design or SEO needs</span><textarea name="message" rows="5" maxlength="5000" placeholder="What do I need to know about the project?" class="w-full bg-transparent border border-charcoal/1
525 rounded-[3px] px-4 py-3 font-sans text-charcoal placeholder:text-charcoal/70 focus:outline-none focus:border-sage transition-colors resize-y"></textarea></label><!-- Honeypot â hidden from real users --><div aria-hidden="true" style="position:absolute;left:-9999px;opacity:0;pointer-events:none;" tabindex="-1"><label>Website<input type="text" name="website" tabindex="-1" autocomplete="off"></label></div><!-- Turnstile widget --><div class="cf-turnstile" data-sitekey="0x4AAAAAADB4Eo_8elAhFurA" data-theme="light" data-size="flexible"></div><!-- Status messages --><div id="contact-status" role="status" aria-live="polite" class="hidden text-sm font-sans"></div><!-- Submit --><div class="flex items-center justify-between gap-4 pt-2"><p class="text-xs font-sans text-charcoal/70 leading-relaxed">This form is protected by Cloudflare Turnstile.</p><button type="submit" id="contact-submit" class="btn-shimmer btn-pill inline-flex items-center px-8 py-4 rounded-[6px] bg-sage text-charcoal font-sans font-bold text-[0.7rem] tracking-[0.08em] uppercase hover:bg-sage/90 hover:-translate-y-0.5 disabled:opacity-60 disabled:hover:translate-y-0 disabled:cursor-not-allowed transition-[color,background-color,transform,opacity] duration-200">Send</button></div></form><!-- Turnstile script -->
52<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
52<script type="module">var e=document.getElementById(`contact-form`),t=document.getElementById(`contact-submit`),n=document.getElementById(`contact-status`);if(!e||!t||!n)throw Error(`Contact form elements missing`);function r(e,t){n.textContent=e,n.classList.remove(`hidden`,`text-sage`,`text-red-700`),n.classList.add(t===`success`?`text-sage`:`text-red-700`)}e.addEventListener(`submit`,async i=>{i.preventDefault(),n.classList.add(`hidden`),t.disabled=!0;let a=t.textContent;t.textContent=`Sendingâ¦`;let o=new FormData(e),s=o.get(`cf-turnstile-response`)??``,c={name:o.get(`name`)??``,email:o.get(`email`)??``,message:o.get(`message`)??``,website:o.get(`website`)??``,turnstileToken:s};try{let t=await fetch(`/api/contact`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(c)}),n=await t.json().catch(()=>({}));t.ok&&n.ok?(e.reset(),window.turnstile&&window.turnstile.reset(),r(`Thanks â your message is on its way. Iâll be in touch soon.`,`success`)):r(n.error??`Something went wrong. Please try again.`,`error`)}catch{r(`Network error. Please try again.`,`error`)}finally{t.disabled=!1,t.textContent=a??`Send`}});</script>
52</div></div></section></main><footer class="bg-charcoal text-cream/70"><div class="max-w-[1200px] mx-auto px-6 lg:px-12 pt-20 pb-10"><!-- Top row: brand + columns --><div class="grid grid-cols-1 lg:grid-cols-[2fr_repeat(4,1fr)] gap-12 lg:gap-8 mb-16"><!-- Brand block --><div><a href="/" class="font-display text-2xl text-cream tracking-wide mb-4 block">Connor Walberg SEO</a><p class="text-sm leading-relaxed text-cream/60 max-w-[240px]">Website Design + SEO for Photographers</p><!-- Social icons --><div class="flex items-center gap-4 mt-6"><a href="https://www.youtube.com/channel/UCaxiWCl_YQbYRDmBfZUkB5A" target="_blank" rel="noopener noreferrer" aria-label="YouTube" class="text-cream/55 hover:text-cream transition-colors duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.6 12 3.6 12 3.6s-7.5 0-9.4.5A3 3 0 0 0 .5 6.2 31.1 31.1 0 0 0 0 12a31.1 31.1 0 0 0 .5 5.8 3 3 0 0 0 2.1 2.1c1.9.5 9.4.5 9.4.5s7.5 0 9.4-.5a3 3 0 0 0 2.1-2.1A31.1 31.1 0 0 0 24 12a31.1 31.1 0 0 0-.5-5.8zM9.8 15.5V8.5L15.8 12l-6 3.5z"></path></svg></a><a href="https://www.facebook.com/groups/photographerseo" target="_blank" rel="noopener noreferrer" aria-label="Facebook Community" class="text-cream/55 hover:text-cream transition-colors duration-200"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 24 24"><path d="M24 12.07C24 5.41 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.04V9.41c0-3.02 1.8-4.7 4.54-4.7 1.31 0 2.68.24 2.68.24v2.97h-1.5c-1.49 0-1.96.93-1.96 1.89v2.26h3.32l-.53 3.5h-2.8V24C19.62 23.1 24 18.1 24 12.07z"></path></svg></a></div></div><!-- Link columns --><div><h3 class="text-xs font-sans font-semibold tracking-[0.15em] uppercase text-cream/55 mb-5">Products</h3><ul class="flex flex-col gap-3"><li><a href="/singletrack-sites/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Web Platform</a></li><li><a href="/seo-for-photographers/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">SEO Guide</a></li><li><a href="/photo-business-collective/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Collective</a></li><li><a href="/pet-photographer-showit-template/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Template</a></li></ul></div><div><h3 class="text-xs font-sans font-semibold tracking-[0.15em] uppercase text-cream/55 mb-5">Resources</h3><ul class="flex flex-col gap-3"><li><a href="/blog/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Blog</a></li><li><a href="/seo-tools/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">SEO Tools</a></li><li><a href="/seo-glossary-for-photographers/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">SEO Glossary</a></li><li><a href="/about/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">About</a></li><li><a href="/contact/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Contact</a></li></ul></div><div><h3 class="text-xs font-sans font-semibold tracking-[0.15em] uppercase text-cream/55 mb-5">Account</h3><ul class="flex flex-col gap-3"><li><a href="https://member.connorwalberg.com/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Member Login</a></li><li><a href="/photo-business-collective/" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Membership</a></li><li><a href="https://www.youtube.com/channel/UCaxiWCl_YQbYRDmBfZUkB5A" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">YouTube</a></li></ul></div><div><h3 class="text-xs font-sans font-semibold tracking-[0.15em] uppercase text-cream/55 mb-5">Legal</h3><ul class="flex flex-col gap-3"><li><a href="https://www.iubenda.com/privacy-policy/80872077" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Privacy Policy</a></li><li><a href="https://www.iubenda.com/terms-and-conditions/80872077" class="footer-link text-sm text-cream/65 hover:text-cream transition-colors duration-200">Terms & Conditions</a></li></ul></div></div><!-- Divider --><div class="border-t border-cream/10"></div><!-- Bottom row: copyright --><div class="pt-8 text-xs text-cream/55"><p>Connor Walberg SEO | ©2026</p></div></div></footer><!-- Facebook Pixel -->
52<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a464dc38cf9c127b',t:'MTc5MTI5MTc0NA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
52<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"0c8b37ab7d994da5a730568652cc2847","r":1,"spa":2}' crossorigin="anonymous"></script>
52 53</body>
53<script type="module">if(!window.matchMedia(`(prefers-reduced-motion: reduce)`).matches){let e=new IntersectionObserver(t=>{t.forEach(t=>{t.isIntersecting&&(t.target.classList.add(`is-visible`),e.unobserve(t.target))})},{threshold:.12});document.querySelectorAll(`.animate-on-scroll`).forEach(t=>{e.observe(t)})}</script>
53<script type="module">document.addEventListener(`click`,e=>{let t=e.target?.closest?.(`.yt-facade`);if(!t)return;let n=t.dataset.ytId;if(!n)return;let r=document.createElement(`iframe`);r.src=`https://www.youtube-nocookie.com/embed/${n}?autoplay=1`,r.title=`YouTube video player`,r.className=`absolute inset-0 w-full h-full rounded-[3px]`,r.allow=`accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture`,r.allowFullscreen=!0;let i=document.createElement(`div`);i.className=`relative w-full`,i.style.paddingTop=`56.25%`,i.appendChild(r),t.replaceWith(i),r.focus()});</script>
53</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.