DEV Community

Gyubin Kim
Gyubin Kim

Posted on

Why Couples Find Another Wedding Photographer When They Ask AI (and How to Fix It, 2026)

Series: Getting Cited by AI — Post #10 (niche deep-dive: wedding photographers & planners). #1: Get Cited by ChatGPT → · #2: Why AI Recommends Your Competitor → · #3: Copy-Paste Schema Templates → · #4: Is Your Site Blocking AI Crawlers? → · #5: Reviews & AggregateRating →

A newly-engaged couple opens ChatGPT or Perplexity and types: "best wedding photographer in [city]" or "documentary wedding photographer near [venue], under $4k." The assistant names three studios, links two, and the couple sends two inquiry forms before they've scrolled a single Instagram feed. If you're not one of those three, you didn't lose on style or price — you lost because the model couldn't read your site well enough to quote you.

This is the general series (#1–#5) applied specifically to wedding photography (and the planners next door), because wedding sites have three quirks that make them especially invisible to AI: galleries that are 100% images, "inquire for pricing" with nothing typed, and testimonials trapped as screenshots.

Honest caveat first: doing everything below does not guarantee a citation, and there's no fixed timeline for when assistants pick up changes. What it does is remove the specific, fixable reasons a photographer gets skipped. No bookings or rankings are promised here — only that the machine can finally read what your couples already love about you.


The three reasons wedding photographers go invisible

1. The site is a gallery, not a page.
Most photographer homepages are a full-bleed slideshow and a logo — gorgeous to a human, nearly empty to a crawler. The model lands on your domain, finds image files and a "Contact" link, and has almost no text to understand your style, your city, your venues, or your packages. A stunning gallery the machine can't parse is, to an answer engine, a blank page.

2. "Inquire for pricing" tells the model nothing.
Couples ask AI very budget-specific questions — "wedding photographer in [city] under $3,500," "how much does an 8-hour wedding package cost." If your site never types out even a starting range ("collections begin at $3,200"), the assistant can't match you to that query and quotes whoever did publish a range. You don't have to post a full price list — you have to be quotable.

3. There's nothing answer-shaped.
Couples ask machines specific questions — "do you travel," "how many photos do we get," "how long until we see our gallery," "do you shoot film or digital," "second shooter included?" If your site never answers those in plain text, the model grabs the answer (and the citation) from a competitor's FAQ or a generic wedding-blog listicle instead of you.

None of these are talent problems. They're readability problems — and readability is fixable in an afternoon, without touching your photography.


The 10-minute wedding-photographer visibility check

Run this on your own site before changing anything:

  1. View source on your homepage (right-click → View Page Source) and Ctrl-F for your city or your style, e.g. Nashville or documentary. If your own city isn't in the page text, the crawler has little to localize you with.
  2. Find your packages as plain text. Is there a real /pricing or /investment page with typed-out collections and at least a starting range, or is it a single "inquire" button and a contact form?
  3. Search the actual question. Open Perplexity and ask "wedding photographer in [your city] for [your style]" — are you named? Who is? Read their page; it's almost always more text-readable, not more talented.
  4. Check the schema. Paste your URL into any schema validator. Most photographer sites have nothing, or a generic WebSite tag — not a LocalBusiness/ProfessionalService with service area, services, and hours.
  5. Check crawler access (see #4) — Squarespace, Showit, and some gallery/security plugins can block AI user-agents by default.

Anything that fails is on the fix list below, roughly in priority order.


The fixes (highest leverage first)

Fix 1 — Turn your galleries into pages with words

Keep the images — just stop letting them be the only content. Give each signature wedding a short text intro: the venue name, the city, the season, the vibe ("a fall elopement at [venue], [city]"). Now the model has real, quotable text tying you to venues and locations couples actually search. This single change does more than any schema tag, because it gives the assistant something to read.

Fix 2 — Publish a starting range and what's included

Add a /investment page that types out your collections in plain text: a starting price ("collections begin at $3,200"), hours of coverage, whether a second shooter and engagement session are included, and turnaround time. You control the numbers; you just have to make them text. This is the single biggest reason budget-qualified couples never reach you through AI.

Fix 3 — Answer the questions couples actually ask

Add a short FAQ in real text — the ones you answer in every consult:

  • Do you travel / what's your service area? Any travel fee?
  • How many edited images do we receive?
  • How long until we get our full gallery?
  • Is a second shooter included?
  • Do you shoot film, digital, or both?
  • How far in advance should we book?

Plain, accurate answers. This is exactly the content assistants love to quote because it is the answer.

Fix 4 — Make your reviews machine-readable

You almost certainly have real reviews on Google, The Knot, or WeddingWire. Surface a few as text on the site and, only if the numbers are true, mark them up (see #5). Real numbers only — a rating in your markup that doesn't match your public profiles gets your whole markup discounted. Never invent a rating or a review.

Fix 5 — Confirm the crawlers are allowed

If your site builder or a security/SEO plugin blocks GPTBot, OAI-SearchBot, PerplexityBot, or ClaudeBot, none of the above matters. #4 walks the check.


Copy-paste schema for a wedding photographer

Drop this in your homepage <head>, replacing every placeholder with your real values. Don't ship a field you can't verify — delete it instead of guessing.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "ProfessionalService",
  "additionalType": "https://schema.org/Photograph",
  "name": "YOUR STUDIO NAME",
  "description": "Wedding photographer serving CITY and REGION — documentary/editorial coverage, travel available.",
  "url": "https://yourstudio.com",
  "telephone": "+1-555-555-5555",
  "image": "https://yourstudio.com/sample-wedding.jpg",
  "priceRange": "$$$",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "CITY",
    "addressRegion": "ST",
    "addressCountry": "US"
  },
  "areaServed": [
    { "@type": "City", "name": "CITY" },
    { "@type": "AdministrativeArea", "name": "REGION / STATE" }
  ],
  "knowsAbout": ["wedding photography", "elopements", "engagement sessions"],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Collections",
    "itemListElement": [
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Full-day wedding coverage" } },
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Elopement / micro-wedding" } },
      { "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Engagement session" } }
    ]
  }
}
</script>
Enter fullscreen mode Exit fullscreen mode

Pair it with an FAQPage block built from your real answers (template in #3). Together they cover who/where/what you offer and the questions couples ask — the two things assistants need to cite you with confidence.

A note for planners: the same three fixes apply, with one swap — your "quotable" content is your vendor knowledge and venue coverage, not packages. Type out the venues, regions, and wedding sizes you handle, and answer "what does a planner cost / what's the difference between full and partial planning" in plain text. Use @type": "ProfessionalService" with areaServed and an FAQ. Couples ask AI for planners exactly the way they ask for photographers.


Priority order, if you only do three things

  1. Words on your galleries (Fix 1) — venue + city + vibe as text the model can quote.
  2. A starting range with what's included (Fix 2) — so budget-qualified couples can be matched to you.
  3. ProfessionalService + FAQPage schema (Fix 3) — label it so the machine is sure.

Everything else (reviews markup, crawler access) compounds on top, but those three are where an invisible studio becomes a readable one.


FAQ

My work speaks for itself — isn't great photography enough?
For a human who already found you, yes. But an AI assistant choosing who to name can't see your photos the way a couple does; it reads text. Give it words about your style, venues, and packages and you become quotable. The photography still closes the booking — this just gets you into the shortlist.

Do I have to post my full price list?
No. A single honest starting line ("collections begin at $3,200") is enough to get matched to budget queries. The goal is a quotable range, not a public menu.

Will this get me into ChatGPT's answers?
It makes you eligible and readable, which is the part you control. No one can guarantee a citation or a timeline — anyone who does is overselling. This removes the fixable reasons you're skipped; pickup still depends on the assistant.

Is it okay to mark up reviews if they're real but I'm not sure of the exact count?
Use only numbers you can verify against your public Google/The Knot/WeddingWire profiles. A mismatch discounts your entire markup. See #5.


Two ways to act on this:

🔎 Free, no-strings: send your site URL to faithpath25@gmail.com with the subject "GEO snapshot" — I'll send back a 1-page read of exactly what AI assistants can and can't currently see on your site, plus the specific fixes. Free pilot, wherever you operate; if it's useful, a short review is all I ask.

🧰 Do it yourself: the copy-paste schema kits, checklists, and the full GEO audit live at SprintLanding → (includes a free starter). Prices in USD; Gumroad converts to your local currency at checkout.

Top comments (0)