<!DOCTYPE html><html lang="en"> <head><meta name="sentry-route-name" content="%2Funderexposed"/><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"><meta name="robots" content="index,follow"><link rel="canonical" href="https://trovatten.com/underexposed"><title>#1 Social Media &amp; Marketing Course for Photographers</title><meta name="description" content="A course and community for photographers who want to land clients, build an audience, and get their work seen."><meta property="og:title" content="Underexposed | Get your work in front of people who can pay you"><meta property="og:description" content="A course and community for photographers who want to land clients, build an audience, and get their work seen."><meta property="og:type" content="website"><meta property="og:url" content="https://trovatten.com/underexposed"><meta property="og:site_name" content="Underexposed"><meta property="og:image" content="https://trovatten.com/underexposed-assets/versioned/trovatten-hero-1280.92e6dc687356.jpeg?social=20260910"><meta property="og:image:secure_url" content="https://trovatten.com/underexposed-assets/versioned/trovatten-hero-1280.92e6dc687356.jpeg?social=20260910"><meta property="og:image:type" content="image/jpeg"><meta property="og:image:width" content="1280"><meta property="og:image:height" content="720"><meta property="og:image:alt" content="Frederik Trovatten, founder of Underexposed, seated at a wooden table"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Underexposed | Get your work in front of people who can pay you"><meta name="twitter:description" content="A course and community for photographers who want to land clients, build an audience, and get their work seen."><meta name="twitter:image" content="https://trovatten.com/underexposed-assets/versioned/trovatten-hero-1280.92e6dc687356.jpeg?social=20260910"><meta name="twitter:image:alt" content="Frederik Trovatten, founder of Underexposed, seated at a wooden table"><link rel="icon" href="/favicon.ico" sizes="any"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="preload" href="/_astro/libre-franklin-latin-wght-normal.CLTz0ja0.woff2" as="font" type="font/woff2" crossorigin><link rel="preload" as="image" href="/underexposed-assets/versioned/trovatten-mobile-camera-right-1067.d41c31bdc18f.webp" imagesrcset="/underexposed-assets/versioned/trovatten-mobile-camera-right-480.fa138aba16df.webp 480w, /underexposed-assets/versioned/trovatten-mobile-camera-right-640.4e6ce07ac8dc.webp 640w, /underexposed-assets/versioned/trovatten-mobile-camera-right-800.510accac42d8.webp 800w, /underexposed-assets/versioned/trovatten-mobile-camera-right-1067.d41c31bdc18f.webp 1067w" imagesizes="100vw" type="image/webp" media="(max-width: 767px)" fetchpriority="high"><link rel="preload" as="image" href="/underexposed-assets/versioned/trovatten-hero-1280.92e6dc687356.jpeg" type="image/jpeg" media="(min-width: 768px)" fetchpriority="high"><!--
  Advanced Consent Mode v2 (max practical measurement).

  - Tags always load (Stape Custom Loader). Denied users still send cookieless
    Google pings so GA can count traffic and model conversions.
  - Global default: granted (non-regulated regions get full cookies without a click).
  - EEA + UK + CH default: denied until Accept all (cookieless until then).
  - Stored v1.all / v1.necessary overrides defaults via consent update.
  - "Necessary only" is still respected (denied + no marketing cookies).

  Loader snippet regenerated from Stape Power-ups → Custom Loader with:
  Domain metrics.trovatten.com, Same Origin Path /metrics, GTM-P2SQXNC,
  Enhanced ad blocker protection, Cookie Keeper via external_id.
  Netlify edge proxy: netlify/edge-functions/stape-metrics.js
--><script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://trovatten.com/underexposed#organization","name":"Underexposed","url":"https://trovatten.com/underexposed","logo":"https://trovatten.com/underexposed-assets/versioned/full-white-220.3cf8ab620deb.png","founder":{"@id":"https://trovatten.com/#person"}},{"@type":"Course","@id":"https://trovatten.com/underexposed#course","name":"Underexposed: Marketing for Photographers","description":"Marketing lessons, tools, feedback, and community that help photographers get discovered, published, and hired.","provider":{"@id":"https://trovatten.com/underexposed#organization"},"url":"https://trovatten.com/underexposed","hasCourseInstance":{"@type":"CourseInstance","courseMode":"online"},"offers":{"@type":"Offer","url":"https://community.trovatten.com/checkout/start","category":"Subscription","price":"199","priceCurrency":"USD","description":"Seven-day free trial. A one-time $199 enrollment payment follows if the trial is not cancelled, then membership is $29 per month."}},{"@type":"WebPage","@id":"https://trovatten.com/underexposed#webpage","url":"https://trovatten.com/underexposed","name":"Try Underexposed Free for 7 Days","description":"Six guided videos, three practical challenges, and a private trial community for photographers.","mainEntity":{"@id":"https://trovatten.com/underexposed#course"},"inLanguage":"en"}]}</script><!--
  PostHog is initialized once by GTM. This only queues page classification
  before that initialization so the native $pageview inherits the properties.
--> <!-- Inline and synchronous: classify the first visit before any tracking loads. --> <script>/* Shared by the website, the setup page and the GTM consent-init tag. */
(function () {
  if (window.__trovattenInternalAnalytics) return;
  var key = 'trovatten_internal';
  var host = window.location.hostname.toLowerCase();
  var owned = host === 'trovatten.com' || /\.trovatten\.com$/.test(host);
  var preview = !owned;
  var query = new URLSearchParams(window.location.search);
  var explicit = query.get('internal_test') === '1';
  var qaCampaign = /^codex(?:_|$)/i.test(query.get('utm_source') || '');
  var currentPageInternal = explicit || qaCampaign;

  function cookiePresent() {
    try {
      return document.cookie.split(';').some(function (part) {
        return part.trim() === key + '=v1';
      });
    } catch (_) { return false; }
  }

  function stored() {
    if (cookiePresent()) return true;
    try { return window.localStorage.getItem(key) === 'v1'; }
    catch (_) { return false; }
  }

  function save(enabled) {
    currentPageInternal = enabled;
    try {
      document.cookie = key + '=' + (enabled ? 'v1' : '') + '; Path=/; Max-Age=' +
        (enabled ? '31536000' : '0') + '; SameSite=Lax' +
        (owned ? '; Domain=trovatten.com' : '') +
        (window.location.protocol === 'https:' ? '; Secure' : '');
      // Also remove an older host-only copy when turning the mode off.
      if (!enabled) document.cookie = key + '=; Path=/; Max-Age=0; SameSite=Lax';
    } catch (_) {}
    try {
      if (enabled && !cookiePresent()) window.localStorage.setItem(key, 'v1');
      else window.localStorage.removeItem(key);
    } catch (_) {}
    return stored();
  }

  if (currentPageInternal) save(true);

  function blocked() {
    return preview || currentPageInternal || stored();
  }

  window.__trovattenInternalAnalytics = {
    version: 1,
    blocked: blocked,
    persistent: stored,
    sharedCookie: function () { return owned && cookiePresent(); },
    enable: function () { return save(true); },
    disable: function () { save(false); },
    reason: function () { return preview ? 'non-production' : blocked() ? 'internal-testing' : 'production'; }
  };
  if (blocked()) document.documentElement.setAttribute('data-analytics-disabled', preview ? 'non-production' : 'internal-testing');
  // Keep the marker in the URL when storage fails, so a reload remains excluded.
  if (explicit && cookiePresent()) {
    query.delete('internal_test');
    try {
      window.history.replaceState(window.history.state, '', window.location.pathname +
        (query.toString() ? '?' + query.toString() : '') + window.location.hash);
    } catch (_) {}
  }
})();
</script> <script>(function(){const context = {"page_type":"underexposed","content_slug":"underexposed","site_area":"underexposed"};

  (() => {
    window.__trovattenAnalyticsContext = context;
    if (window.__trovattenInternalAnalytics?.blocked()) return;
    window.posthog = window.posthog || [];
    if (typeof window.posthog.register === "function") {
      window.posthog.register(context);
    } else if (typeof window.posthog.push === "function") {
      window.posthog.push(["register", context]);
    }
  })();
})();</script> <script src="/analytics.js?v=20260809" defer></script><!--
  Advanced Consent Mode v2 (max practical measurement).

  - Tags always load (Stape Custom Loader). Denied users still send cookieless
    Google pings so GA can count traffic and model conversions.
  - Global default: granted (non-regulated regions get full cookies without a click).
  - EEA + UK + CH default: denied until Accept all (cookieless until then).
  - Stored v1.all / v1.necessary overrides defaults via consent update.
  - "Necessary only" is still respected (denied + no marketing cookies).

  Loader snippet regenerated from Stape Power-ups → Custom Loader with:
  Domain metrics.trovatten.com, Same Origin Path /metrics, GTM-P2SQXNC,
  Enhanced ad blocker protection, Cookie Keeper via external_id.
  Netlify edge proxy: netlify/edge-functions/stape-metrics.js
--> <!-- Inline and synchronous: classify the first visit before any tracking loads. --> <script>/* Shared by the website, the setup page and the GTM consent-init tag. */
(function () {
  if (window.__trovattenInternalAnalytics) return;
  var key = 'trovatten_internal';
  var host = window.location.hostname.toLowerCase();
  var owned = host === 'trovatten.com' || /\.trovatten\.com$/.test(host);
  var preview = !owned;
  var query = new URLSearchParams(window.location.search);
  var explicit = query.get('internal_test') === '1';
  var qaCampaign = /^codex(?:_|$)/i.test(query.get('utm_source') || '');
  var currentPageInternal = explicit || qaCampaign;

  function cookiePresent() {
    try {
      return document.cookie.split(';').some(function (part) {
        return part.trim() === key + '=v1';
      });
    } catch (_) { return false; }
  }

  function stored() {
    if (cookiePresent()) return true;
    try { return window.localStorage.getItem(key) === 'v1'; }
    catch (_) { return false; }
  }

  function save(enabled) {
    currentPageInternal = enabled;
    try {
      document.cookie = key + '=' + (enabled ? 'v1' : '') + '; Path=/; Max-Age=' +
        (enabled ? '31536000' : '0') + '; SameSite=Lax' +
        (owned ? '; Domain=trovatten.com' : '') +
        (window.location.protocol === 'https:' ? '; Secure' : '');
      // Also remove an older host-only copy when turning the mode off.
      if (!enabled) document.cookie = key + '=; Path=/; Max-Age=0; SameSite=Lax';
    } catch (_) {}
    try {
      if (enabled && !cookiePresent()) window.localStorage.setItem(key, 'v1');
      else window.localStorage.removeItem(key);
    } catch (_) {}
    return stored();
  }

  if (currentPageInternal) save(true);

  function blocked() {
    return preview || currentPageInternal || stored();
  }

  window.__trovattenInternalAnalytics = {
    version: 1,
    blocked: blocked,
    persistent: stored,
    sharedCookie: function () { return owned && cookiePresent(); },
    enable: function () { return save(true); },
    disable: function () { save(false); },
    reason: function () { return preview ? 'non-production' : blocked() ? 'internal-testing' : 'production'; }
  };
  if (blocked()) document.documentElement.setAttribute('data-analytics-disabled', preview ? 'non-production' : 'internal-testing');
  // Keep the marker in the URL when storage fails, so a reload remains excluded.
  if (explicit && cookiePresent()) {
    query.delete('internal_test');
    try {
      window.history.replaceState(window.history.state, '', window.location.pathname +
        (query.toString() ? '?' + query.toString() : '') + window.location.hash);
    } catch (_) {}
  }
})();
</script> <script>(function(){const consentEnabled = false;

  (() => {
    const cookieName = "trovatten_consent";
    const match = document.cookie
      .split("; ")
      .find((cookie) => cookie.startsWith(`${cookieName}=`));
    let storedValue = "";
    if (match) {
      try {
        storedValue = decodeURIComponent(match.split("=").slice(1).join("="));
      } catch {
        storedValue = "";
      }
    }
    const preference = consentEnabled
      ? storedValue === "v1.all"
        ? "all"
        : storedValue === "v1.necessary"
          ? "necessary"
          : null
      : "all";

    window.dataLayer = window.dataLayer || [];
    window.gtag = window.gtag || function gtag() {
      window.dataLayer.push(arguments);
    };

    const denied = {
      ad_storage: "denied",
      ad_user_data: "denied",
      ad_personalization: "denied",
      analytics_storage: "denied",
      personalization_storage: "denied",
      functionality_storage: "denied",
      security_storage: "granted",
    };

    const granted = {
      ad_storage: "granted",
      ad_user_data: "granted",
      ad_personalization: "granted",
      analytics_storage: "granted",
      personalization_storage: "granted",
      functionality_storage: "granted",
      security_storage: "granted",
    };

    // GDPR/ePrivacy-heavy markets: start denied (cookieless pings only).
    // Google applies `region` from the request geo, not the browser locale.
    const regulatedRegions = [
      "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR", "DE", "GR",
      "HU", "IS", "IE", "IT", "LV", "LI", "LT", "LU", "MT", "NL", "NO", "PL",
      "PT", "RO", "SK", "SI", "ES", "SE", "GB", "CH",
    ];

    if (consentEnabled) {
      // Global default first: full measurement outside regulated regions.
      window.gtag("consent", "default", { ...granted, wait_for_update: 500 });
      // Regulated regions override the global default until the user accepts.
      window.gtag("consent", "default", {
        ...denied,
        region: regulatedRegions,
        wait_for_update: 500,
      });
    } else {
      // Consent UI is temporarily off: grant every consent type everywhere.
      window.gtag("consent", "default", granted);
    }

    window.gtag("set", "ads_data_redaction", true);
    window.gtag("set", "url_passthrough", true);

    if (consentEnabled) {
      if (preference === "all") {
        window.gtag("consent", "update", granted);
      } else if (preference === "necessary") {
        window.gtag("consent", "update", denied);
      }
    }

    window.__trovattenConsentEnabled = consentEnabled;
    window.__trovattenConsentPreference = preference;
  })();
})();</script> <script type="module" src="/_astro/ConsentHead.astro_astro_type_script_index_0_lang.WPUvamE6.js"></script><link rel="stylesheet" href="/_astro/underexposed.BTU5oj45.css"></head> <body data-trial-checkout-url="https://community.trovatten.com/checkout/start" data-direct-checkout-url="https://community.trovatten.com/checkout/instant" data-deployed-route="/underexposed" class="has-sticky" style="--underexposed-video-poster: url(&quot;/underexposed-assets/versioned/underexposed-video-poster.be9fcae7bb15.jpg&quot;)"> <main> <section class="hero hero--portrait-grid" id="top" data-hero> <picture class="hero-media"> <source media="(min-width: 768px)" srcset="/underexposed-assets/versioned/trovatten-hero-1280.92e6dc687356.jpeg"> <source media="(max-width: 767px)" srcset="/underexposed-assets/versioned/trovatten-mobile-camera-right-480.fa138aba16df.webp 480w, /underexposed-assets/versioned/trovatten-mobile-camera-right-640.4e6ce07ac8dc.webp 640w, /underexposed-assets/versioned/trovatten-mobile-camera-right-800.510accac42d8.webp 800w, /underexposed-assets/versioned/trovatten-mobile-camera-right-1067.d41c31bdc18f.webp 1067w" sizes="100vw" type="image/webp"> <img src="/underexposed-assets/versioned/trovatten-mobile-camera-right.0eaa39a02b08.jpg" alt="Photographer Frederik Trovatten holding a Rolleiflex camera" width="800" height="1200" loading="eager" fetchpriority="high" decoding="async" srcset="/underexposed-assets/versioned/trovatten-mobile-camera-right-480.a0d5ad7296e9.jpg 480w, /underexposed-assets/versioned/trovatten-mobile-camera-right-640.712854b9c05e.jpg 640w, /underexposed-assets/versioned/trovatten-mobile-camera-right.0eaa39a02b08.jpg 1067w" sizes="100vw"> </picture> <header class="hero-top"> <a href="#top" aria-label="Underexposed home"><img class="hero-logo" src="/underexposed-assets/versioned/full-white-220.a67a56caf7c8.webp" alt="Underexposed" width="220" height="92"></a> </header> <div class="hero-body"> <h1 class="hero-headline--split hero-headline--discovery"><span>Get your work in</span><span>front of people</span><span>who can pay you</span></h1> <p class="hero-lead"><span class="hero-sub-line">Course + community for photographers</span> <span class="hero-sub-line">who want to land clients and build an audience.</span></p> <div data-major-cta><a href="#trial-challenges" class="button button--full" data-underexposed-cta data-cta-location="underexposed_trial_hero" data-cta-stage="trial"><span class="hero-cta-primary">Try Underexposed for free</span></a></div> <p class="hero-reassurance">The strategy behind my six-figure photography career, exhibitions, and a 120K+ audience.</p> </div> </section> <section class="authority" aria-label="Frederik Trovatten publication features"><div class="wrap"><div class="logo-row"><div class="logo-cell"><img src="/underexposed-assets/versioned/national-geographic-logo-140.8e343a24c8e5.png" alt="National Geographic" width="140" height="41" loading="lazy" decoding="async"></div><div class="logo-cell"><img src="/underexposed-assets/versioned/adage-logo.99eafab0fa5d.svg" alt="Ad Age" width="300" height="93" loading="lazy" decoding="async"></div><div class="logo-cell"><img src="/underexposed-assets/versioned/petapixel-logo-160.ca2bf76fcebb.webp" alt="PetaPixel" width="160" height="41" loading="lazy" decoding="async"></div><div class="logo-cell"><img src="/underexposed-assets/versioned/fstoppers-logo-160.dc0526cf7deb.webp" alt="Fstoppers" width="160" height="43" loading="lazy" decoding="async"></div></div><h2 class="authority-title">Frederik's work featured in</h2></div></section> <section class="section paper-light" aria-labelledby="proof-title"> <div class="wrap"> <header class="proof-intro"><h2 class="section-title section-title--proof" id="proof-title">Results within 30 days</h2><p class="proof-subtitle">after joining Underexposed</p></header> <div class="proof-results" aria-label="Member results"> <article class="proof-result"><img class="proof-avatar" src="/underexposed-assets/versioned/rudi-64.213b324ebae8.webp" alt="Rudi, fashion photographer" width="64" height="64" loading="lazy" decoding="async"><h3>Landed a Vogue feature</h3><p class="proof-byline">Rudi · Fashion photographer</p></article> <article class="proof-result"><img class="proof-avatar" src="/underexposed-assets/versioned/richard-avatar-192.5b5baa92d035.webp" srcset="/underexposed-assets/versioned/richard-avatar-104.d4dafc46b569.webp 104w, /underexposed-assets/versioned/richard-avatar-156.74b4df63dbf6.webp 156w, /underexposed-assets/versioned/richard-avatar-192.5b5baa92d035.webp 192w" sizes="(min-width: 768px) 60px, 52px" alt="Richard, visual storyteller" width="192" height="192" loading="lazy" decoding="async"><h3>3K → 11K on Instagram</h3><p class="proof-byline">Richard · Visual storyteller</p></article> <article class="proof-result"><img class="proof-avatar" src="/underexposed-assets/versioned/underexposed-cristi-96.19033aae4287.jpg" alt="Cristian Percu, photographer" width="96" height="91" loading="lazy" decoding="async"><h3>12× growth in new followers</h3><p class="proof-byline">Cristian Percu · Photographer</p></article> </div> </div> </section> <section class="section" id="trial-challenges" aria-labelledby="trial-title"><div class="wrap trial-layout"><header class="trial-head"><h2 class="section-title section-title--trial" id="trial-title" aria-label="Become exposure-ready in 7 days."><span class="section-title-line">BECOME EXPOSURE-READY</span><span class="section-title-line">IN 7 DAYS.</span></h2><p class="intro">Clear positioning. Focused portfolio. A memorable introduction.</p><p class="intro">Three challenges. Feedback from Frederik as you go.</p></header><div class="trial-desktop" aria-label="Five foundations for your first seven days"><div class="trial-desktop-track"><article class="trial-milestone"><span class="trial-milestone-day">1</span><span class="trial-milestone-node" aria-hidden="true"></span><h3>CLEAR POSITIONING</h3><p>Make it instantly clear what you photograph and what you want to be hired for.</p></article><article class="trial-milestone"><span class="trial-milestone-day">2</span><span class="trial-milestone-node" aria-hidden="true"></span><h3>A FOCUSED BODY OF WORK</h3><p>Shape what you show around the work you want more of.</p></article><article class="trial-milestone"><span class="trial-milestone-day">3</span><span class="trial-milestone-node" aria-hidden="true"></span><h3>PERSONALITY AND POINT OF VIEW</h3><p>Show the taste, personality and perspective behind your photographs.</p></article><article class="trial-milestone"><span class="trial-milestone-day">4</span><span class="trial-milestone-node" aria-hidden="true"></span><h3>A CLEAR PATH TO HIRE</h3><p>Make it obvious how to hire you and what you need to get started.</p></article><article class="trial-milestone trial-milestone--finish"><span class="trial-milestone-day">5</span><span class="trial-milestone-node" aria-hidden="true"></span><h3>EXPOSURE-READY</h3><p>Now you’re ready for <b>a lot more eyes on your work.</b></p></article></div></div><div class="trial-mobile" data-trial-mobile><nav class="trial-mobile-nav" aria-label="Choose a first-week foundation"><button type="button" data-trial-nav="0" aria-current="step">1</button><button type="button" data-trial-nav="1">2</button><button type="button" data-trial-nav="2">3</button><button type="button" data-trial-nav="3">4</button><button type="button" data-trial-nav="4"><span class="trial-day-seven" data-trial-day-seven><span class="trial-day-seven-number" data-trial-day-seven-number>5</span><span class="trial-day-seven-sparks" data-trial-day-seven-sparks aria-hidden="true"><i data-trial-spark></i><i data-trial-spark></i><i data-trial-spark></i><i data-trial-spark></i><i data-trial-spark></i><i data-trial-spark></i></span></span></button></nav><div class="trial-mobile-cards" data-trial-cards tabindex="0" aria-label="Swipe through the five foundations"><article class="trial-mobile-card" id="trial-day-1" data-trial-card="0"><span class="trial-mobile-day">1</span><h3>CLEAR POSITIONING</h3><p>Make it instantly clear what you photograph and what you want to be hired for.</p></article><article class="trial-mobile-card" id="trial-day-2" data-trial-card="1"><span class="trial-mobile-day">2</span><h3>A FOCUSED BODY OF WORK</h3><p>Shape what you show around the work you want more of.</p></article><article class="trial-mobile-card" id="trial-day-3" data-trial-card="2"><span class="trial-mobile-day">3</span><h3>PERSONALITY AND POINT OF VIEW</h3><p>Show the taste, personality and perspective behind your photographs.</p></article><article class="trial-mobile-card" id="trial-day-4" data-trial-card="3"><span class="trial-mobile-day">4</span><h3>A CLEAR PATH TO HIRE</h3><p>Make it obvious how to hire you and what you need to get started.</p></article><article class="trial-mobile-card trial-mobile-card--finish" id="trial-day-5" data-trial-card="4"><span class="trial-mobile-day">5</span><h3 aria-label="EXPOSURE-READY"><span>EXPOSURE-</span><span>READY</span></h3><p>Now you’re ready for <b>a lot more eyes on your work.</b></p></article></div></div><div class="trial-signup" data-major-cta><a href="https://community.trovatten.com/checkout/start" class="button button--full" data-underexposed-cta data-cta-location="underexposed_trial_first_week" data-cta-stage="checkout">Start my 7-day free trial</a><p class="trial-signup-terms"><strong>$0 today. Get started in minutes</strong></p><a class="offer-secondary" href="#full-access" data-underexposed-cta data-cta-location="underexposed_trial_skip" data-cta-stage="pricing">Skip the trial. Get full access →</a></div></div></section> <section class="course-depth course-depth--outcomes" id="course-depth" aria-labelledby="course-depth-title"><header class="course-depth-head course-depth-head--outcomes course-depth-head--cream"><div class="wrap"><p class="outcomes-eyebrow">AFTER YOUR TRIAL · FULL COURSE + COMMUNITY</p><h2 class="course-depth-title" id="course-depth-title">GET SEEN.<br><mark class="outcomes-highlight">GET HIRED.</mark></h2><p class="course-depth-intro">30+ short lessons on getting your photography noticed and finding clients, with feedback and support as you put them into practice.</p></div></header><div class="wrap"><div class="course-chapters course-chapters--illustrated" aria-label="Underexposed course chapters"><article class="course-chapter"><div class="course-chapter-meta"><span class="course-chapter-label">SEO</span></div><h3>Get found when<br>clients search</h3><div class="chapter-illustration" aria-hidden="true"><div class="chapter-device chapter-device--query"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="10.5" cy="10.5" r="6.5"></circle><path d="m16 16 5 5"></path></svg><span class="chapter-query-rotation" data-query-rotation><span>Paris wedding<br>photographer</span><span>London portrait<br>photographer</span><span>Berlin fashion<br>photographer</span><span>New York event<br>photographer</span></span></div></div><p>Rank on Google for clients already searching for a photographer like you.</p></article><article class="course-chapter"><div class="course-chapter-meta"><span class="course-chapter-label">Social</span></div><h3>Reach the people<br>who hire you</h3><div class="chapter-illustration" aria-hidden="true"><div class="chapter-device chapter-device--social chapter-engagement"><span class="chapter-engagement-stat"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M20.8 4.6a5.5 5.5 0 0 0-7.8 0L12 5.7l-1.1-1.1a5.5 5.5 0 0 0-7.8 7.8L12 21l8.8-8.6a5.5 5.5 0 0 0 0-7.8Z"></path></svg><span>1.2K</span></span><span class="chapter-engagement-stat"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M21 11.5a8.4 8.4 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.4 8.4 0 0 1-3.8-.9L3 21l1.9-5.7a8.4 8.4 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.4 8.4 0 0 1 3.8-.9h.5a8.5 8.5 0 0 1 8 8Z"></path></svg><span>86</span></span><span class="chapter-engagement-stat"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="7" r="4"></circle><path d="M4 21v-2a8 8 0 0 1 16 0v2"></path></svg><span>237</span></span></div></div><p>Get your photography seen on Instagram, not buried in the feed.</p></article><article class="course-chapter"><div class="course-chapter-meta"><span class="course-chapter-label">AI search</span></div><h3>Get named when<br>clients ask AI</h3><div class="chapter-illustration" aria-hidden="true"><div class="chapter-device chapter-device--query"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="m12 3 2.5 6.5L21 12l-6.5 2.5L12 21l-2.5-6.5L3 12l6.5-2.5Z"></path><path d="m20 2 .8 2.2L23 5l-2.2.8L20 8l-.8-2.2L17 5l2.2-.8Z"></path></svg><span>Best street<br>photographer in LA</span></div></div><p>Be the photographer ChatGPT names when a client asks who to book.</p></article><article class="course-chapter"><div class="course-chapter-meta"><span class="course-chapter-label">Video</span></div><h3>Turn Reels into<br>real bookings</h3><div class="chapter-illustration" aria-hidden="true"><div class="chapter-device chapter-device--video"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="m9 5 11 7-11 7Z"></path></svg><span>128K views</span></div></div><p>Turn your photography into Reels that get noticed without compromising your work.</p></article><article class="course-chapter"><div class="course-chapter-meta"><span class="course-chapter-label">Portfolio</span></div><h3>Get hired off<br>your portfolio</h3><div class="chapter-illustration" aria-hidden="true"><div class="chapter-device chapter-device--query"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="16" rx="2"></rect><path d="M7 2v6m10-6v6M3 11h18m-12 5 2 2 4-4"></path></svg><span>Booked: June 12</span></div></div><p>Get your portfolio seen by clients ready to book work like yours.</p></article><article class="course-chapter"><div class="course-chapter-meta"><span class="course-chapter-label">Press</span></div><h3>Get your work<br>published</h3><div class="chapter-illustration" aria-hidden="true"><div class="chapter-device chapter-device--query"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="17" rx="2"></rect><path d="M7 8h10M7 12h4m3 0h3M7 16h4m3 0h3"></path></svg><span>Featured in Vogue</span></div></div><p>Get published. Find the right editors to pitch in the Underexposed Press Vault™.</p></article></div></div></section> <section class="section ink-section" id="trailer" aria-labelledby="definition-title"><div class="wrap definition-grid"><div class="definition-copy"><h2 class="section-title section-title--light" id="definition-title">Inside the course &amp; community</h2><p class="intro intro--light">A practical online marketing course for photographers, with a community to help you get your photography discovered, remembered, published, and hired.</p></div><div><div class="video-frame"><wistia-player data-wistia-lazy="true" media-id="2guqxnfn4v" aspect="1.7777777777777777" preload="none"></wistia-player></div><p class="video-caption"><span>Inside Underexposed</span><span>Watch · 02:09</span></p></div></div></section> <section class="section" id="community" aria-labelledby="doing-title"><div class="wrap community-showcase"><header class="community-head"><h2 class="section-title community-title" id="doing-title"><span>The course gives you structure.</span><span>The <mark class="community-highlight">community</mark> helps you execute.</span></h2></header><div class="community-content"><figure class="community-image"><img src="/underexposed-assets/versioned/course-hero-900.b1dbffcc3a0a.webp" srcset="/underexposed-assets/versioned/course-hero-420.abf548afa57a.webp 420w, /underexposed-assets/versioned/course-hero-640.854761d08d36.webp 640w, /underexposed-assets/versioned/course-hero-768.a9f38c4e8ab9.webp 768w, /underexposed-assets/versioned/course-hero-900.b1dbffcc3a0a.webp 900w" sizes="auto, (min-width: 768px) 52vw, calc(100vw - 2rem)" alt="Underexposed Circle community feed with photography strategy discussions" width="640" height="640" loading="lazy" decoding="async"></figure><div class="community-benefits steps"><article class="community-card step"><span class="community-check" aria-hidden="true">✓</span><div><h3>Personal feedback from Frederik</h3><p>Get eyes on your photography portfolio, content, positioning, and pitches.</p></div></article><article class="community-card step"><span class="community-check" aria-hidden="true">✓</span><div><h3>Live workshops + Q&A</h3><p>Deep dives into social media for photographers and practical marketing strategies, with live Q&As.</p></div></article><article class="community-card step"><span class="community-check" aria-hidden="true">✓</span><div><h3>Focused strategy spaces</h3><p><a href="/instagram">Instagram</a>, YouTube, <a href="/seo">SEO</a>, <a href="/reddit">Reddit</a>, press, portfolio, video, and more.</p></div></article></div></div></div></section> <section id="pricing" aria-labelledby="pricing-title"><div class="pricing-wrap"><article class="pricing-card"><div class="pricing-copy" id="full-access"><header class="pricing-head"><h2 class="display display--small" id="pricing-title">What you'll get</h2></header><div class="pricing-trust"><div class="pricing-avatars" aria-label="Underexposed community photographers"><span class="pricing-avatar"><img src="/underexposed-assets/versioned/avatar-1-48.9a0707f409b8.jpg" alt="Underexposed community photographer holding a camera" width="48" height="48" loading="lazy" decoding="async"></span><span class="pricing-avatar"><img src="/underexposed-assets/versioned/avatar-2-48.22d452fcb0ee.jpg" alt="Underexposed community photographer with curly blonde hair" width="48" height="48" loading="lazy" decoding="async"></span><span class="pricing-avatar"><img src="/underexposed-assets/versioned/avatar-3-48.a87358c6f317.jpg" alt="Underexposed community photographer wearing a blue cap" width="48" height="48" loading="lazy" decoding="async"></span><span class="pricing-avatar"><img src="/underexposed-assets/versioned/avatar-4-48.c2616aee1bb8.jpg" alt="Underexposed community photographer outdoors" width="48" height="48" loading="lazy" decoding="async"></span><span class="pricing-avatar"><img src="/underexposed-assets/versioned/avatar-5-48.3ca800a9d22a.jpg" alt="Underexposed community photographer in colored studio lighting" width="48" height="48" loading="lazy" decoding="async"></span></div><p>Trusted by photographers worldwide</p></div><ul class="pricing-benefits"><li><span class="check" aria-hidden="true">✓</span><span style="white-space: normal">30+ video lessons on marketing for photographers</span></li><li><span class="check" aria-hidden="true">✓</span><span>Press vault: 200+ journalists to pitch</span></li><li><span class="check" aria-hidden="true">✓</span><span>Private community of working photographers</span></li><li><span class="check" aria-hidden="true">✓</span><span>Monthly workshops with direct feedback</span></li></ul></div><div class="pricing-offer"><p class="pricing-amount"><strong>$199 to join. First month included.</strong></p><p class="pricing-billing">Then $29/month for community, feedback and live workshops. Cancel anytime.</p><div class="pricing-action" data-major-cta><a href="https://community.trovatten.com/checkout/instant" class="button button--full" data-underexposed-cta data-cta-location="underexposed_direct_pricing" data-cta-stage="checkout">Get full access now</a><a class="offer-secondary" href="#trial-challenges" data-underexposed-cta data-cta-location="underexposed_pricing_free_trial" data-cta-stage="trial">Start a free trial</a></div></div></article><div class="pricing-proof"><img src="/underexposed-assets/versioned/instagram-founder.ceae9b0c9cfd.jpg" alt="Mike Krieger, co-founder of Instagram" width="750" height="750" loading="lazy" decoding="async"><blockquote>“Your advice was spot on, Frederik.<br>Let me know when you're in the Bay Area.”<cite>Mike Krieger · Co-founder of Instagram</cite></blockquote></div></div></section> <section class="section paper-light" id="meet-frederik" aria-labelledby="founder-title"><div class="wrap founder-grid"><div class="contact-sheet" aria-label="Street photograph by Frederik Trovatten"><figure class="contact-frame"><img src="/underexposed-assets/versioned/frederik-street-work.71cf1b260d47.webp" alt="Street photograph by Frederik Trovatten" width="1200" height="675" loading="lazy" decoding="async"></figure></div><div class="founder-copy"><h2 class="section-title" id="founder-title">Meet Frederik</h2><div class="intro"><p>Before photography, I spent 17 years as a social media and online marketing strategist.</p><p>When I picked up a camera, photography was new to me. Getting my work in front of the right people was not.</p><p>With no agent, no industry connections, and no marketing budget, I was shooting commissioned work for Facebook within a year.</p><p>My goal with Underexposed is to help your photographs reach people who appreciate your work, remember your name, and hire you.</p></div><div class="credentials"><div class="credential"><strong>3x Cannes Gold Lions</strong><span>Cannes Lions · Burger King Mexico</span></div><div class="credential"><strong>18 years</strong><span>Marketing and social media</span></div><div class="credential"><strong>180K+ followers</strong><span>Built across social media</span></div><div class="credential"><strong>Global brand work</strong><span>Coca-Cola, Burger King, Facebook</span></div></div></div></div></section> <section class="section" aria-labelledby="fit-title"><div class="wrap fit-grid"><div><h2 class="section-title" id="fit-title">Underexposed is for you, if...</h2><div class="fit-list"><div class="fit-item"><span>✓</span><div><strong>Your photography is better than the opportunities you are getting.</strong></div></div><div class="fit-item"><span>✓</span><div><strong>You want routes to discovery beyond Instagram.</strong></div></div><div class="fit-item"><span>✓</span><div><strong>You want the right people to remember your name.</strong></div></div><div class="fit-item"><span>✓</span><div><strong>You are willing to publish, test, pitch, and improve.</strong></div></div></div></div><aside class="not-for-you"><h3>It's not for you if...</h3><div class="fit-list fit-list--negative"><div class="fit-item"><span>×</span><div><strong>You're already fully booked, consistently turning down work, and don't need help getting seen, growing an audience, or booking more clients.</strong></div></div></div></aside></div></section> <section class="section paper-light faq" id="faq" aria-labelledby="faq-title"><div class="narrow"><header class="faq-head"><h2 class="section-title" id="faq-title">Straight answers</h2></header><div class="faq-list"><details><summary><span>Why would Underexposed work when other things haven’t?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>More posts, another website redesign, and another batch of Reels can still leave your work getting likes from photographers without reaching potential clients. Underexposed teaches photography marketing: how you, as a photographer, reach people who hire: through local marketing, a portfolio they can find through search, and outreach that puts your work in front of clients and editors.</p></details><details><summary><span>Can this help me get clients with a small following?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>Yes. Underexposed includes specific local marketing strategies that are especially useful if you have a small audience. You’ll learn how to get your work in front of potential clients in your area, without needing a large following first.</p></details><details><summary><span>How long until I see inquiries?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>It depends on your starting point, your market, and what you put into practice. Improving your profile and reaching out to potential clients can create opportunities sooner. Building visibility through search takes longer. There’s no fixed timeline for bookings.</p></details><details><summary><span>Is this mainly an Instagram course?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>Instagram is where the <a href="#trial-challenges">trial</a> starts. The full course also covers your portfolio, Google and AI search, press, YouTube, video, and outreach. The goal is to give people more ways to discover your photography.</p></details><details><summary><span>Do I have to be comfortable on camera?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>No. The trial includes one introduction Reel and shows you how to make it. You don’t have to be a presenter.</p></details><details><summary><span>How much time will I need?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>Plan for two to four hours a week to watch the short lessons and apply them to your own work. The course is self-paced, so you can work around shoots and busy periods.</p></details><details><summary><span>What will I actually do during the free trial?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>You’ll get six short videos, three practical challenges, and a private trial group with Frederik. The challenges guide you through improving your profile, publishing a portfolio carousel, and creating an introduction Reel. You’ll have something live to show for the week.</p></details><details><summary><span>What happens after the trial, and what will I pay?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>The seven-day trial is free. Cancel before it ends and you pay nothing.</p><p>If you stay, you’ll pay <strong>$199 on day 7</strong>. That unlocks the full course, tools, Press Vault, and community, with your first month included.</p><p>Your <strong>$29 monthly membership starts one month later</strong>. Plus tax.</p></details><details><summary><span>Why a membership, and what happens if I cancel?</span><span class="faq-icon" aria-hidden="true"></span></summary><p>The course gives you a foundation in online marketing. The <a href="#pricing">Underexposed membership</a> gives you feedback, workshops, community, and updates as the ways people discover photography change. Cancel anytime. Your access continues until the end of your paid period.</p></details></div></div></section> <section class="final" id="final-cta" data-major-cta aria-labelledby="final-title"><div class="narrow"><h2 class="display display--small" id="final-title">Stop being photography's best-kept secret.</h2><p class="final-lead">Get your work in front of clients, editors, brands, and agencies who can hire, publish, or commission you.</p><a href="#trial-challenges" class="button button--full" data-underexposed-cta data-cta-location="underexposed_trial_closing" data-cta-stage="trial">Start My 7-Day Free Trial</a><p class="billing">7 days free. Cancel during your trial and pay nothing.</p></div></section> </main> <div class="sticky is-hidden" id="mobile-sticky-cta" aria-label="Start the Underexposed free trial"><a href="#trial-challenges" class="button" data-underexposed-cta data-cta-location="underexposed_trial_sticky" data-cta-stage="trial">Start My 7-Day Free Trial</a></div> <script>
    (() => {
      const keep = new Set(['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'utm_term', 'utm_id', 'fbclid', 'oppref', 'gclid', 'gbraid', 'wbraid', 'affiliate_code', 'coupon_code']);
      const current = new URLSearchParams(location.search);
      const checkoutParams = new URLSearchParams();
      current.forEach((value, key) => { if (keep.has(key)) checkoutParams.set(key, value); });
      if (!checkoutParams.get('oppref')) {
        const cookie = document.cookie.split(';').map((part) => part.trim()).find((part) => part.startsWith('__oppref='));
        if (cookie) {
          const encoded = cookie.slice('__oppref='.length);
          let clickId = encoded;
          try { clickId = decodeURIComponent(encoded); } catch {}
          if (clickId) checkoutParams.set('oppref', clickId);
        }
      }
      let linker = {};
      try { if (typeof window.__trovattenGetGaLinkerParams === 'function') linker = window.__trovattenGetGaLinkerParams() || {}; } catch {}
      Object.entries(linker || {}).forEach(([key, value]) => {
        if ((key === '_gl' || key === '_ga' || key.startsWith('_ga_')) && value) checkoutParams.set(key, value);
      });
      document.querySelectorAll('[data-cta-stage="checkout"]').forEach((link) => {
        const destination = new URL(link.getAttribute('href'), location.origin);
        if (destination.hostname !== 'community.trovatten.com') return;
        checkoutParams.forEach((value, key) => destination.searchParams.set(key, value));
        link.href = destination.toString();
      });

      const mobileTrial = document.querySelector('[data-trial-mobile]');
      if (mobileTrial) {
        const cardRail = mobileTrial.querySelector('[data-trial-cards]');
        const cards = [...mobileTrial.querySelectorAll('[data-trial-card]')];
        const navButtons = [...mobileTrial.querySelectorAll('[data-trial-nav]')];
        const daySeven = mobileTrial.querySelector('[data-trial-day-seven]');
        const daySevenBurst = mobileTrial.querySelector('[data-trial-day-seven-sparks]');
        const daySevenFirstSpark = daySevenBurst?.querySelector('[data-trial-spark]');
        const reducedMotion = matchMedia('(prefers-reduced-motion: reduce)');
        let daySevenCelebrated = false;
        const celebrateDaySeven = () => {
          if (daySevenCelebrated) return;
          daySevenCelebrated = true;
          if (reducedMotion.matches || !daySeven || !daySevenBurst || !daySevenFirstSpark) return;
          daySeven.classList.add('is-celebrating');
          daySevenFirstSpark.addEventListener('animationend', () => {
            daySeven.classList.remove('is-celebrating');
          }, { once: true });
        };
        const setActiveMilestone = (index) => {
          navButtons.forEach((button, buttonIndex) => {
            if (buttonIndex === index) button.setAttribute('aria-current', 'step');
            else button.removeAttribute('aria-current');
          });
          if (index === cards.length - 1) celebrateDaySeven();
        };
        // A wide mobile rail cannot align its last card to the left edge.
        // Compare reachable scroll positions and keep the requested card when
        // two cards share the same position at the end of the rail.
        let requestedMilestone = 0;
        const targetLeft = (card) => Math.max(0, Math.min(
          cardRail.scrollWidth - cardRail.clientWidth,
          card.getBoundingClientRect().left - cardRail.getBoundingClientRect().left + cardRail.scrollLeft
        ));
        navButtons.forEach((button, index) => {
          button.addEventListener('click', () => {
            const card = cards[index];
            if (!card || !cardRail) return;
            requestedMilestone = index;
            cardRail.scrollTo({
              left: targetLeft(card),
              behavior: matchMedia('(prefers-reduced-motion: reduce)').matches ? 'auto' : 'smooth'
            });
            setActiveMilestone(index);
          });
        });
      if (cardRail && cards.length) {
          let frame = 0;
          cardRail.addEventListener('scroll', () => {
            cancelAnimationFrame(frame);
            frame = requestAnimationFrame(() => {
              const activeIndex = cards.reduce((closest, card, index) => (
                Math.abs(targetLeft(card) - cardRail.scrollLeft) < Math.abs(targetLeft(cards[closest]) - cardRail.scrollLeft) ? index : closest
              ), requestedMilestone);
              setActiveMilestone(activeIndex);
            });
          }, { passive: true });
          setActiveMilestone(0);
        }
      }

      const wistiaPlayer = document.querySelector('[data-wistia-lazy]');
      const loadWistia = () => {
        if (!wistiaPlayer || wistiaPlayer.dataset.wistiaLoaded === 'true') return;
        wistiaPlayer.dataset.wistiaLoaded = 'true';
        const addScript = (src, type = '') => {
          if (document.querySelector('script[src="' + src + '"]')) return;
          const script = document.createElement('script');
          script.src = src;
          script.async = true;
          if (type) script.type = type;
          document.head.append(script);
        };
        addScript('https://fast.wistia.com/embed/2guqxnfn4v.js', 'module');
        addScript('https://fast.wistia.com/player.js');
      };
      if (wistiaPlayer) {
        if ('IntersectionObserver' in window) {
          const wistiaObserver = new IntersectionObserver((entries) => {
            if (!entries.some((entry) => entry.isIntersecting)) return;
            wistiaObserver.disconnect();
            loadWistia();
          }, { rootMargin: '1200px 0px', threshold: .01 });
          wistiaObserver.observe(wistiaPlayer);
        } else {
          loadWistia();
        }
      }

      const sticky = document.getElementById('mobile-sticky-cta');
      const stickyLink = sticky?.querySelector('[data-underexposed-cta]');
      const majorCtas = [...document.querySelectorAll('[data-major-cta], #pricing, .trial-signup .offer-secondary')];
      if (!sticky || !stickyLink || !('IntersectionObserver' in window)) return;
      const visible = new Map(majorCtas.map((element) => [element, false]));
      const update = () => {
        sticky.classList.toggle('is-hidden', [...visible.values()].some(Boolean));
      };
      const observer = new IntersectionObserver((entries) => {
        entries.forEach((entry) => visible.set(entry.target, entry.isIntersecting));
        update();
      }, { threshold: 0 });
      visible.forEach((_, element) => observer.observe(element));
      update();
    })();
  </script><script>
    (() => {
      const query = document.querySelector('[data-query-rotation]');
      if (!query || !('IntersectionObserver' in window)) return;
      const reducedMotion = matchMedia('(prefers-reduced-motion: reduce)');
      let visible = false;
      const update = () => {
        const playing = visible && !document.hidden && !reducedMotion.matches;
        if (playing) query.classList.add('is-ready');
        query.classList.toggle('is-playing', playing);
      };
      new IntersectionObserver(([entry]) => {
        visible = entry.isIntersecting;
        update();
      }).observe(query);
      document.addEventListener('visibilitychange', update);
      reducedMotion.addEventListener('change', update);
    })();
  </script></body> </html>