Schema Implementation Templates

Ready-to-customize JSON-LD templates for MusicVenue, Event, and LocalBusiness schema. With platform-by-platform implementation instructions and a validation checklist.

For Venue Operators

You don't need to understand the code. You need to fill in the highlighted fields with your venue's information and hand the completed template to your developer or paste it into your website platform's code injection tool.

Every field is labeled and explained in plain English on the following pages.

For Developers

These are production-ready JSON-LD templates following schema.org standards. MusicVenue (LocalBusiness subtype), MusicEvent (Event subtype), and BreadcrumbList.

Validate with Google's Rich Results Test and schema.org's validator. Common errors and fixes are at the end of this document.


Before the Templates

Why Schema Markup Matters

When AI tools like ChatGPT, Google's AI Overviews, and Perplexity try to understand your venue, they read your website looking for clues about what kind of place it is, what events are happening, and who it's for. Without schema markup, they're guessing. With it, you're telling them directly.

Schema markup is structured code (specifically JSON-LD format) that sits in the head of your HTML pages. Visitors never see it. AI crawlers read it and use it to build an accurate picture of your venue without having to infer anything.

Without schema markup:
AI guesses: a page about a venue. Mentions music and events. Address might be 123 Main St. AI hedges. It may describe you vaguely or leave you out of results.

With schema markup:
AI knows: a MusicVenue, 350-cap, 123 Main St, Nashville, TN, open Fri-Sun. AI cites with confidence. It can recommend you for specific queries.

3 Things to Know

Before you Implement:

  1. Crawlability Comes First. Schema only helps if AI crawlers can reach your page. Before implementing schema, run the View Source test on your homepage (right-click > View Page Source, then search for your venue name). If your venue name doesn't appear in the source code, fix the crawlability problem first. See the AI Crawlability Checklist for how to address this.
  1. Each Template Goes in the Section of the Relevant Page. Your developer will know where this is. If you're using WordPress with Yoast or RankMath, those plugins handle placement automatically. If you're using Squarespace's Code Injection tool, it goes in the Header Code Injection box under Settings > Advanced > Code Injection.
  1. Validate After Implementing. Google's Rich Results Test will tell you immediately whether your schema is valid, what it detected, and what errors need fixing. Run it on every page you add schema to. Don't skip this step.

Template 1 | MusicVenue / LocalBusiness

Add to: Your homepage AND your About page
* Update whenever your core venue info changes

This template tells AI what kind of entity your venue is, where it is, how to contact it, when it's open, and how to describe it. This is the foundation. Everything else builds on it.

Replace every value in [BRACKETS] with your venue's actual information.

---------- COPY FROM HERE ----------

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": ["MusicVenue", "LocalBusiness"],

  // REQUIRED: Your official venue name -- exactly as on your signage
  "name": "[YOUR VENUE NAME]",

  // REQUIRED: Your primary website URL
  "url": "https://[yourvenuewebsite.com]",

  // REQUIRED: Full address -- must match your GBP and Yelp exactly
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "[123 Main St]",
    "addressLocality": "[City]",
    "addressRegion": "[ST]",
    "postalCode": "[00000]",
    "addressCountry": "US"
  },

  // REQUIRED: Your main phone number -- same format everywhere
  "telephone": "+1-[555-555-5555]",

  // REQUIRED: 2-3 sentences. Specific facts only -- capacity, genre,
  // location context, age policy. No marketing language.
  "description": "[A 350-capacity all-ages room in East Nashville
  with a focus on emerging indie and Americana artists.]",

  // RECOMMENDED: Your opening hours
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Friday", "Saturday"],
      "opens": "19:00",
      "closes": "02:00"
    }
  ],

  // RECOMMENDED: One good photo of your venue
  "image": "https://[yourvenuewebsite.com/images/venue-photo.jpg]",

  // RECOMMENDED: Ticket price range, e.g. "$10-$35"
  "priceRange": "[$10-$35]",

  // RECOMMENDED: Your social profiles and booking page
  "sameAs": [
    "https://www.facebook.com/[yourvenue]",
    "https://www.instagram.com/[yourvenue]",
    "https://www.bandsintown.com/v/[yourvenue]"
  ]
}
</script>

---------- END OF TEMPLATE 1 ----------

Field-By-Field Guide

"name" (REQUIRED)
Your official venue name, exactly as it appears on your signage. Include "The" if it's part of the name. This must match your GBP, Yelp, and every other platform exactly.

"url" (REQUIRED)
Your venue's primary website URL, including https://. Use the homepage URL here.

"address" (REQUIRED)
Your full address. streetAddress is the street line only. addressLocality is your city. addressRegion is your two-letter state abbreviation. This must match your canonical NAP.

"telephone" (REQUIRED)
Your main contact phone number. Use the format +1-XXX-XXX-XXXX. Must match your GBP and all other listings.

"description" (REQUIRED)
Two to three sentences with specific, citable facts. Capacity, location context, age policy, genre focus, what makes your room distinct. Do not use generic marketing language. "premier destination" tells AI nothing.

"openingHoursSpecification" (OPTIONAL)
Your actual operating hours. List each day or group of days. Use 24-hour time format. Omit days you're closed rather than listing them as closed.

"image" (OPTIONAL)
A direct URL to a high-quality photo of your venue interior or exterior. HTTPS required. This helps AI and Google understand your venue visually.

"priceRange" (OPTIONAL)
A general ticket price range using a dollar sign string, e.g. "$10-$35" or "$$". Helps AI filter venue recommendations for budget-aware queries.

"sameAs" (OPTIONAL)
A list of URLs for your official profiles on other platforms. Include Facebook, Instagram, Bandsintown, Yelp, and any other platform where you maintain an active presence. This helps AI connect your profiles as a unified entity.


Template 2 | MusicEvent / Event

Add to: Each individual show page, OR your main events listing page (one block per show)
* Add with each new booking

This is the template that makes your shows machine-readable. Without it, AI may know your venue exists but can't name a single upcoming event. Add one copy of this block for each show, updated with that show's specific details.

The Offer block at the bottom is critical. Without it, AI knows the event exists but can't tell anyone how to buy a ticket.

Where This Goes for Widget-Based Event Calendars:
If your events are displayed via a Ticketmaster or Eventbrite widget, those events aren't crawlable from your site. The fix is to add this schema block manually to each show's page, or to a dedicated plain-text events page.

The schema tells AI about the event even when the widget can't be read. See the AI Crawlability Checklist for the full widget workaround.

---------- COPY FROM HERE (one copy per show) ----------

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "MusicEvent",

  // REQUIRED: Full name of the event -- usually Artist Name + show type
  "name": "[The Midnight -- Live at Your Venue]",

  // REQUIRED: Start date and time in ISO 8601 format: YYYY-MM-DDTHH:MM
  // This is doors time OR show time -- be consistent across all events
  "startDate": "[2026-07-12T20:00]",

  // RECOMMENDED: End time -- estimated is fine
  "endDate": "[2026-07-12T23:00]",

  // REQUIRED: Your venue, referenced back to Template 1
  "location": {
    "@type": "MusicVenue",
    "name": "[YOUR VENUE NAME]",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "[123 Main St]",
      "addressLocality": "[City]",
      "addressRegion": "[ST]",
      "postalCode": "[00000]"
    }
  },

  // REQUIRED: The performer(s)
  "performer": {
    "@type": "MusicGroup",
    "name": "[The Midnight]"
  },

  // REQUIRED: 1-2 sentences describing the artist and the show
  "description": "[Synth-pop duo The Midnight brings their cinematic
  sound to an intimate club setting. All ages, general admission.]",

  // RECOMMENDED: A show image or artist photo
  "image": "https://[yourvenuewebsite.com/images/the-midnight-show.jpg]",

  // REQUIRED: The ticket offer -- do not skip this block
  "offers": {
    "@type": "Offer",
    "url": "https://[your-ticket-link.com/the-midnight-july12]",
    // Use "InStock" until sold out, then switch to "SoldOut"
    "availability": "https://schema.org/InStock",
    "price": "[25]",
    "priceCurrency": "USD",
    // When tickets go on sale -- use ISO 8601 format
    "validFrom": "[2026-06-01T10:00]"
  },

  // RECOMMENDED: update if show is cancelled or rescheduled
  "eventStatus": "https://schema.org/EventScheduled",

  // RECOMMENDED: online or in-person
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode"
}
</script>

---------- END OF TEMPLATE 2 ----------

Critical Fields (Don’t Skip These)

"startDate" (REQUIRED)
Must be in ISO 8601 format: YYYY-MM-DDTHH:MM. Not "July 12 at 8pm." Not "7/12/2026." The format is 2026-07-12T20:00. Without valid formatting this entire block is invalid and won't be read.

"offers" block (REQUIRED)
This is the most commonly missing field in venue schema. Without the Offer block, AI knows your event exists but can't direct anyone to buy a ticket. Include the ticket URL, price, currency, and availability status for every event.

"location" (REQUIRED)
The location block references your venue back to Template 1. Use the exact same venue name and address as in Template 1. This is how AI connects your events to your venue entity.

"performer" (REQUIRED)
Use MusicGroup for bands, MusicGroup or Person for solo artists. The name must match how the artist is known. Use their official name, not a shortened version.

"description" (REQUIRED)
One to two sentences about the artist's sound and what makes this show worth attending. Specific language here is what gets cited in discovery queries like "good synth-pop shows this month."

"eventStatus" (OPTIONAL but important)
Update to EventCancelled or EventRescheduled if plans change. Leaving a cancelled show as EventScheduled sends incorrect information to AI and fans.

Multiple Performers on One Bill

Make "performer" an array:

"performer": [
  {"@type": "MusicGroup", "name": "Headliner"},
  {"@type": "MusicGroup", "name": "Opener"}
]

List the headliner first.


Template 3 | BreadcrumbList

Add to: Every page on your site
* Tells AI how your site is organized

BreadcrumbList schema tells AI crawlers how your pages relate to each other and how your site is structured. It's less critical than Templates 1 and 2 but contributes to AI treating your site as a coherent entity rather than a collection of disconnected pages.

It's also what enables Google to show breadcrumb navigation in search results.

---------- COPY FROM HERE ----------

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://[yourvenuewebsite.com]"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Events",
      "item": "https://[yourvenuewebsite.com/events]"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "[The Midnight -- July 12]",
      "item": "https://[yourvenuewebsite.com/events/the-midnight-july12]"
    }
  ]
}
</script>

---------- END OF TEMPLATE 3 ----------

Adjust the number of items to match your site's actual structure. A simple venue site might have Home > Events > [Show Name]. A more complex site might have Home > Music > Genre > [Show Name]. Use your real URL structure, not an ideal one.


Implementation

Platform-by-Platform Instructions

How you add these templates depends on your website platform. Find your platform below. If your platform isn't listed, share these instructions with your developer.

The process is the same across any platform that allows head tag editing.

WordPress

Recommended method: schema plugin
Install Yoast SEO, RankMath, or Schema Pro. These plugins add LocalBusiness and MusicVenue schema automatically and handle placement. Configure the plugin to set your site type as "Local Business" and your business type as "MusicVenue." For Event schema, install The Events Calendar plugin. It supports Event schema natively but may require configuration to include all required fields.

Manual method: header code injection
In your WordPress admin, go to Appearance > Theme Editor (or use a plugin like Insert Headers and Footers). Add Template 1 to the site-wide header. Add Template 2 to individual show pages using a per-page code block or a custom field. Add Template 3 to each page type.

What to tell your developer:
"Can you add MusicVenue schema from the JAM Agency template to our homepage, and Event schema to each show page? The Event schema needs name, startDate, location, performer, description, and an Offer block with the ticket URL. Please validate with Google Rich Results Test after implementing."

Squarespace

Method: Code Injection
Go to Settings > Advanced > Code Injection. Paste Template 1 into the Header Code Injection box. This adds it site-wide. For individual pages, go to the page settings, open the Advanced tab, and paste Template 2 into the Page Header Code Injection field for each show page.

Note on AI crawler access:
Squarespace does not block AI crawlers by default. However, a setting to block them exists in Settings > Crawlers. If that setting has been enabled, AI crawlers including GPTBot and PerplexityBot will not be able to read your site. Check the setting and confirm AI crawlers are allowed before troubleshooting why schema isn't working. Schema added via Code Injection will help Google regardless, but you want all crawlers to have access.

What to tell your Squarespace admin:
"I need to add schema markup to our site. Can you go to Settings > Advanced > Code Injection and add the code I'm sending you to the Header Code Injection box? I also need per-page schema added to each show page in the Advanced tab. Also, please check Settings > Crawlers and confirm AI crawlers are not blocked."

Wix

Method: Wix Structured Data Markup tool
Wix has a built-in Structured Data Markup tool in the SEO section of your site dashboard. Use it to add schema to individual pages. For site-wide schema (Template 1), use the Custom Meta Tags section in Site Settings > SEO > Advanced SEO.

Alternative: Wix Velo (developer required)
For full control over schema placement, Wix Velo allows custom code injection. This requires a developer but enables dynamic Event schema that updates automatically with your event listings.

What to tell your Wix developer:
"I need MusicVenue schema on the homepage and Event schema on each show page. I have the JSON-LD templates. Can you implement them via Velo and validate with Google's Rich Results Test?"


Validation

Confirm Your Schema Is Working

Run these steps after implementing each template. Don't assume it's working. Verify it. Schema with a single formatting error is completely invalid and returns nothing, with no visible sign anything is wrong.

  1. Google Rich Results Test: Go to search.google.com/test/rich-results. Enter your venue's homepage URL. Under "Detected Items," you should see LocalBusiness or MusicVenue. Enter a show page URL. You should see MusicEvent. Any red errors mean the schema block is invalid and won't be read. Fix them before moving on.
  1. Schema.org Validator: Go to validator.schema.org. Paste your full JSON-LD code (not the page URL) directly. This validator catches errors that Google's tool sometimes misses, particularly around field types and required nested objects.
  1. Google Search Console URL Inspection: If you have Search Console connected, use the URL Inspection tool on your homepage and a show page. Under "Enhancements," you should see structured data detected. If nothing appears, the schema isn't being read by Google's crawler.
  1. The AI Spot Check: After 5-7 days, ask Perplexity: "What events does [venue name] have coming up?" If your shows now appear with correct details, your Event schema is working. Ask ChatGPT or Claude to describe your venue. If the description is more specific and accurate than before, your MusicVenue schema is doing its job.

Common Errors

What Goes Wrong and How to Fix It

These are the errors that appear most often in venue schema implementations. All of them are caught by the Rich Results Test.

ERROR: Invalid date format

Wrong:startDate: "July 12 at 8pm"
Right:startDate: "2026-07-12T20:00"
Why:startDate must be in ISO 8601 format. Google will reject any other format entirely. YYYY-MM-DDTHH:MM is the pattern. 8pm is 20:00.

ERROR: Missing Offer block

Wrong:Event schema with no "offers" field
Right:Add the full offers block with url, availability, price, priceCurrency
Why:The offers block is required for Google's Event rich result. Without it, the event may still be indexed but won't qualify for ticket display in search results.

ERROR: Name/address mismatch between templates

Wrong:Template 1 name: "The Majestic" / Template 2 location name: "Majestic Theater"
Right:Use the exact same name string in both templates
Why:The venue name in your Event schema location block must match your MusicVenue template exactly. Even minor differences prevent Google from connecting the two entities.

ERROR: Mismatched canonical info

Wrong:Schema address: "123 Main Street" / GBP address: "123 Main St"
Right:Use identical formatting across schema and all platform listings
Why:Your schema address must match your Google Business Profile, Yelp, and every other listing exactly. The NAP Audit Template covers this in full.

ERROR: eventStatus not updated for cancellations

Wrong:"eventStatus": "EventScheduled" -- even after the show is cancelled
Right:"eventStatus": "https://schema.org/EventCancelled"
Why:Google and AI tools read eventStatus to determine whether to surface your event. A cancelled show left as EventScheduled will continue to mislead fans and AI.

ERROR: Availability not updated for sold-out shows

Wrong:"availability": "https://schema.org/InStock" -- even when sold out
Right:"availability": "https://schema.org/SoldOut"
Why:Update availability to SoldOut when a show is gone. AI and Google Events will reflect the status in their results.

Deeper Reading

This guide is part of the "Finding Your Venue in the AI Era" series.

Related reading:

Other guides: AI Crawlability Checklist | NAP Audit Template | AI Strategies Built for Independent Venues

Questions or ready to talk through implementation? Start a conversation with us.

AI Crawlability Checklist

A plain-English checklist for independent venue operators, festival promoters, and event marketers at any skill level.

How To Use This Guide

You don't need to log into your website to use most of this checklist, and you don't need a developer. Each section tells you exactly what to do, what you're looking for, and what to do if something's broken.

Start at the top and work down. Do one thing completely before moving to the next. The guide is organized in two parts.

Part 1 covers the five AI engines your fans are most likely using, what each one can and can't see on your site, and how to test each one without any technical tools.

Part 2 is the fix list: what to do when the tests reveal a problem.

Google Is Now Three Different AI Products

The Google Question

This confuses most venue operators, and it matters for how you test your visibility. Google is both a traditional search engine and an AI engine now, and the AI side has three distinct surfaces that work differently.

Here's what each one is and what feeds it.

SurfaceWhat It IsMonthly UsersWhat Feeds It
Google Search (AI Overviews)The AI summary box above your blue links. This is where most venue discovery happens. This is still the highest-priority surface.2.5 billionGooglebot + Google-Extended, Schema markup, GBP, consistent citations.
Google AI ModeThe conversational search tab. Longer queries, deeper answers. Now the global default.1 billionSame infrastructure as AI overviews. Merging with AI overviews throughout 2026.
GeminiThe standalone AI assistant app. Closer to ChatGPT than to Google search. Worth testing separately, but lower priority for venues.900 millionTrained on web data. Doesn't do live searches the way Perplexity does.

NEW IN 2026: Google's Agentic Booking Layer

Since November 2025, Google AI Mode can search for event tickets on a fan's behalf and surface real-time options with direct booking links. This rolled out to all US users in summer 2026. It's not a separate app as it's built directly into AI Mode, on by default.

The confirmed ticketing partners are: Ticketmaster, StubHub, SeatGeek, and Vivid Seats. Independent venues don't get direct access to this layer. Your events are only visible to Google's booking agent if they're listed on one of these partner platforms. There's no way to opt in as a venue directly. The access runs through the intermediaries.


Part 1 | Test Each AI Engine

What Can It See?

For each engine below, run the test. It takes under two minutes and requires nothing but a browser and your venue name. Mark each as pass, partial, or needs work.

Then use Part 2 to fix what's broken.

Engine 1

Google (AI Overviews + AI Mode)

Google is where most fans start. The familiar map pack of three listings is being replaced by AI-generated local packs that show one or two venues, selected based on how well Google understands your business. Your Google Business Profile is the single most important input into this system.

THE TESTS:

  • Search your venue name on Google. Does a knowledge panel appear on the right? Is every field accurate: name, address, phone, hours, website, category?
  • Search "live music venues near me" or "[your city] concert venues" from your phone. Does your venue appear in any AI-generated result, local pack, or event listing? Note the format of what you see. It probably doesn't look like the map pack you remember.
  • Search "[your venue name] upcoming events." Does Google surface any of your actual shows? Or nothing, or results from a third-party site?
  • Run the View Source test on your homepage. Right-click your homepage, choose View Page Source (Ctrl+U on Windows, Cmd+Option+U on Mac). Search for your venue name in the source code. If it's there, Google can read it. If the source is mostly script tags with no readable text, you have a crawlability problem.
  • Check your GBP events. Log into your Google Business Profile. Are your upcoming shows listed as Google Posts using the Event post type? If not, add them: go to Posts in the left menu, choose Event post type, fill in the show name, date, doors time, and ticket link. About five minutes per show.

What to Look For:
Google knowing your venue name and basic facts is the baseline. Google surfacing your actual upcoming shows is the goal. If it knows you exist but can't name your events, your event data pipeline has a gap.

Engine 2

ChatGPT (OpenAI)

ChatGPT is the AI tool most of your fans are likely using. It has two ways of knowing things about your venue: what it learned during training (which may be months or years old) and what it can look up in real time via web search. Both matter, and they behave differently.

THE TESTS:

  • Open chat.openai.com (free account works). Type: "Tell me about [your venue name] in [your city]. What kind of events do they host, where are they located, and how can I find their upcoming shows?" Note what it says, what it gets wrong, and what it hedges on.
  • Ask ChatGPT about upcoming events. Type: "What events does [venue name] have coming up?" If it says it doesn't have real-time information, that's the training-only version. If it searches and returns results, note whether those results match your actual calendar.
  • Ask a discovery question. Type: "What are the best small live music venues in [your city]?" Note whether your venue appears. If it doesn't, note which venues do appear and why they might be better known to ChatGPT.

Why ChatGPT Might Not See Your Site:
ChatGPT's crawler is called GPTBot. If your site is on Squarespace, check your Settings > Crawlers to confirm GPTBot is not being blocked.

The option to block AI crawlers exists but is not checked by default. If it has been enabled, that means ChatGPT may know almost nothing about your venue from your own website, relying entirely on third-party sources like Yelp, press coverage, and Bandsintown.

For more see Part 2, Fix 3.

Engine 3

Perplexity

Perplexity is the AI engine most similar to a search engine: it does live web searches every time someone asks a question, synthesizes the results, and cites its sources. This makes it one of the best tools for testing your current AI visibility, because what it returns reflects what's accessible right now, not months ago.

THE TESTS:

  • Open perplexity.ai (free account works). Type: "What events does [venue name] have coming up?" Note whether it finds your actual shows, pulls from a third-party source, or returns nothing.
  • Ask a local discovery question. Type: "Best live music venues in [your city] for [genre] music." Note whether your venue appears. Perplexity will cite its sources (check where those citations come from).
  • Check the citations. When Perplexity gives an answer about venues in your city, look at the sources it cites. Are any your own website? Or is it pulling from Yelp, local blogs, and Bandsintown? Those third-party sources are your citation audit starting point.

Why Perplexity is the Most Useful Test:
Because it searches live, a good Perplexity result means your current web presence is in reasonable shape.

A bad result (no events found, wrong information, missing from discovery searches) tells you about right-now problems, not historical ones. Fix those first.

Engine 4

Claude (Anthropic)

Claude is theAI assistant made by Anthropic. It's increasingly used for research and discovery, and it tends to be careful about hedging when its information may be outdated. That hedging is a useful signal: it tells you how confident AI systems are in what they know about your venue.

THE TESTS:

  • Open claude.ai (free account works). Type: "What can you tell me about [venue name] in [city]? What do they host, and how would I find out what's coming up?" Note the confidence level and anything it gets wrong.
  • Note the hedging language. Does Claude say things like "I believe" or "as of my last update" or "I'm not certain"? That hedging means the citation data it's found is inconsistent or thin. Confident, specific answers mean your citation profile is solid.

Compare Claude and ChatGPT answers:
Ask both the same question about your venue. Where they agree, the information is probably well-corroborated.

Where they disagree (one says jazz venue, one says wedding venue), something in your citation profile is sending conflicting signals. That conflict is what to fix.

Engine 5

Bing + Microsoft Copilot

Bing isn't an afterthought. On US desktop, it holds roughly 17-18% market share, and Microsoft has built its Copilot AI assistant directly into Bing Search. Bing also pulls event data from Bandsintown (the same infrastructure that feeds Apple Music and Spotify). For venues whose fans are more likely to be searching from a work computer, Bing visibility may matter more than you'd expect.

THE TESTS:

  • Open bing.com and search your venue name. Does a knowledge card appear? Is the information accurate? Bing builds its knowledge cards from Bing Places for Business. If yours is unclaimed or outdated, the card may be wrong.
  • Search "[your venue] upcoming events" on Bing. Bing pulls event data from Bandsintown. If you've claimed your Bandsintown Pro profile and your shows are listed, they should appear here. If nothing shows, Bandsintown Pro is the fix.
  • Open bing.com/chat (Microsoft Copilot) and ask a discovery question. Type: "What are good live music venues in [your city]?" Note whether your venue appears and what source Copilot cites.

Claim your Bing Places for Business profile:
Go to bingplaces.com and claim your venue. It's free and takes about fifteen minutes.

Bing Places feeds Bing's knowledge cards and is a separate system from Google Business Profile. Most venues have never touched it.


Part 2 | The Fix List

What to Do When the Tests Reveal a Problem

Work through whichever fixes apply based on the tests in Part 1.

Each fix is written for someone who may not have access to their website backend. Where a fix requires website access, it says so clearly and explains what to ask your developer.

Fix 1

Your Google Business Profile Is Incomplete or Outdated

No website access required.

Log in to your Google Business Profile at business.google.com. Verify every field against your canonical venue information: your official name exactly as it appears on your signage, your full address, your current phone number, your website URL, your correct category (Music Venue is a specific category worth using), and your current hours.

  • Verify name, address, phone, website, and category
  • Add your next 3 upcoming shows as GBP Events. Go to Posts in the left menu, choose Event post type, fill in the show name, date, doors time, and a ticket link. his will take approximately five minutes per show and this feeds both Google's event data and Google's AI answers about what's happening locally.
  • Add or update photos (aim for at least 10 current images)
  • Respond to any unanswered reviews
  • Review the Q&A section and answer any outstanding questions. The Q&A section is publicly editable. If you haven't answered the common questions, someone else may have, and their answers are what AI reads.

Fix 2

Your Venue Doesn’t Appear in Event Discovery Searches

No website access required.

The fastest path to event visibility across Google, Apple Music, Spotify, Shazam, and Bing is a claimed and current Bandsintown Pro profile.

Note: Google's agentic booking layer runs exclusively through confirmed ticketing partners (Ticketmaster, StubHub, SeatGeek, Vivid Seats). Independent venues can't access that layer directly.

Bandsintown feeds Google's event discovery and AI answers (a different, valuable surface) but not the agentic ticket purchase flow.

  • Go to bandsintown.pro/venues and claim your venue profile
  • Add all upcoming shows with dates, times, and ticket links
  • Keep the profile current as you add new bookings. Treat Bandsintown Pro like your second GBP (update it every time you confirm a new show).
  • Also claim Bing Places at bingplaces.com if you haven't already

Fix 3

AI Crawlers Can’t Read Your Website

Some steps require website access or a developer conversation.

This is the most common and most impactful problem. If the View Source test showed your venue name wasn't in the page source, or if ChatGPT and Claude know almost nothing accurate about your venue from your own site, your site has a crawlability problem.

Here's what to do based on your platform.

If you're on Squarespace:

Squarespace does not block AI crawlers by default. However, an option to block them exists in Settings > Crawlers. If you or someone on your team has enabled that setting, AI crawlers including GPTBot, PerplexityBot, and ClaudeBot will be blocked. Check the setting and make sure AI crawlers are not blocked. If you're unsure, ask your Squarespace admin: "Can you check Settings > Crawlers and confirm that AI crawlers are allowed?"

The more common Squarespace issue is JavaScript rendering: Squarespace pages are JavaScript-heavy, and some AI crawlers can't execute JavaScript. The fix is to add a plain-text static events page alongside your existing site (a simple page listing your upcoming shows in plain HTML text gives crawlers something to read).

For the long term: WordPress serves readable HTML by default. For venues that depend on discovery searches, that migration investment may eventually be worth exploring.

If you're on Wix or Webflow:

Run the View Source test and look for your venue name. Wix and Webflow vary depending on how the site was built. If content is missing from the source, ask your developer about server-side rendering. Both platforms have improved SSR support and it may require rebuilding specific pages rather than the whole site.

If you're on WordPress:

Check your robots.txt file at yourvenue.com/robots.txt. Look for any Disallow rules that might block AI crawlers. If you see GPTBot, PerplexityBot, or ClaudeBot in a Disallow rule, ask your developer to remove them. Also install a schema plugin if you don't have one: Yoast SEO, RankMath, or Schema Pro. Configure for LocalBusiness and MusicVenue. See Fix 4 for schema details.

Fix 4

Your Venue Has No Schema Markup

Requires website access or developer.

Schema markup is invisible code that tells AI exactly what your venue is and what events you're hosting. Go to Google's Rich Results Test and enter your venue URL. If the result shows no detected items, you have no schema.

  • On WordPress: Install Yoast SEO or RankMath, configure for LocalBusiness and MusicVenue.
  • On Squarespace: Use Settings > Advanced > Code Injection to add JSON-LD schema to your site header.
  • For Event schema: Each show page should include name, startDate, location, and an Offer block with the ticket URL. Without the Offer block, AI knows the event exists but can't tell anyone how to buy a ticket.
  • Verify your schema after implementing: Go to Google's Rich Results Test and paste your URL and confirm Detected Items appear with no errors.

Schema Templates:
JSON-LD templates for MusicVenue, Event, and LocalBusiness schema are available now! Check out our Schema Implementation Templates guide.

Fix 5

AI Gets Your Venue Wrong or Hedges On Basic Facts

No website access required for the audit. Fixes vary.

If ChatGPT and Claude describe your venue differently, or if either hedges on basic facts like your address or category, your citation profile has inconsistencies.

  • Decide on your canonical NAP: Your official name, address, and phone number exactly. Write it down. This is the version that needs to appear identically everywhere. Not similar, identical.
  • Check these platforms and correct any inconsistencies: Google Business Profile, Apple Business Connect (business.apple.com), Yelp, Bing Places, Facebook Business Page, TripAdvisor (if applicable), Bandsintown Pro venue profile.
  • Run a free citation scan at moz.com/local/search. Enter your venue name and zip code. The report surfaces listings you didn't know existed and flags inconsistencies.
  • Rewrite your venue description on each platform with specific, citable facts. Capacity, location, age policy, parking, genre focus, what makes your room distinct. Two to three specific sentences outperform two paragraphs of generic marketing language.

Fix 6

Your Event Calendar Isn't Machine-Readable

Requires developer conversation or alternative approach.

If your events live inside a Ticketmaster or Eventbrite widget, AI crawlers can't read them from your site. The widget loads from a third-party server after the page; crawlers see a placeholder, not your shows.

  • Keep your GBP events current as your primary machine-readable calendar. The most accessible fix. About five minutes per show. Google reads it directly and it feeds AI Overviews.
  • Keep your Bandsintown Pro listing current. This feeds the full distribution network: Apple Music, Spotify, Google, Shazam, and Bing. This is your best path to event discovery visibility, separate from the agentic booking layer which independent venues can't access directly.
  • Ask your developer about adding a plain-text events page to your site. Even a simple page listing show name, date, time, and ticket link in plain HTML is fully crawlable by every AI bot.
  • Publish show announcements as individual pages on your site. A page per show with the artist name, a description of their sound, date, practical details, and a ticket link is crawlable, indexable, and gives AI something to cite. Fifteen minutes per show, and it's the announcement you're already writing for email or social.

Verification | After Your Fixes

Run These Five Final Tests

Run these one week after making changes, not immediately, because it takes a few days for some platforms to update.

  1. The View Source test: Right-click your homepage and View Page Source. Search for your venue name. It should now appear in the source code.
  1. The GBP knowledge panel test: Search your venue name on Google. Your knowledge panel should show accurate information and at least one upcoming event.
  1. The Google Rich Results test: Go to Google's Rich Results Test and enter your URL. You should see LocalBusiness or MusicVenue schema with no errors.
  1. The Perplexity event test: Ask Perplexity: "What events does [venue name] have coming up?" You should see your actual shows cited from at least one source.
  1. The four-AI description test: Ask ChatGPT, Claude, Perplexity, and Google each to describe your venue. The answers should now be more consistent and more specific than your baseline.

Go Deeper

Finding Your Venue in the AI Era

Each fix in Part 2 links to deeper reading in the "Finding Your Venue in the AI Era" series.

FixGo Deeper in the Blog Series
Fix 1 (GBP)Local Search Changed. Is Your Venue Ready?
Fix 2 (Bandsintown)More Ways to Show Up: The Platforms Actually Feeding AI Your Event Data
Fix 3 (Crawlability)Deep Dive: Website Visibility, AI Crawlers, and the Event Calendar Problem
Fix 4 (Schema)Schema Markup: What It Is, Whether Your Venue Has It, and Why AI Cares and Deep Dive: How to Build a Digital Presence AI Trusts
Fix 5 (Citations)The AI Citation Problem: Why Consistency Across the Web Matters More Than Ever and Deep Dive: Writing Event Content That Gets Cited, Not Just Indexed
Fix 6 (Event Data)Deep Dive: Writing Event Content That Gets Cited

Schema Markup: What It Is, Whether Your Venue Has It, and Why AI Cares

Schema markup sounds technical. It's really not. It's just a way of telling AI search exactly what your venue is, what events you're hosting, and why it should trust you. Most venues haven't done it.

Schema markup is code you add to your website that explicitly tells search engines and AI crawlers what things are. Not just that a page exists, but what kind of page it is, what entity it describes, and what the specific data on it means. Instead of letting Google guess that the number on your contact page is a phone number and the date on your events page is an event date, schema markup tells Google directly: this is a phone number, this is an event, this is a music venue, this is when the doors open.

AI search tools rely on this kind of explicit labeling heavily. They're trying to build an accurate picture of your venue from everything they can find; schema is the most direct way you can contribute to that picture.

THE THREE SCHEMA TYPES THAT MATTER MOST FOR VENUES

You don't need to know all 800-plus schema types. For an independent venue, three cover most of the ground:

  • MusicVenue (a subtype of LocalBusiness) tells AI that your venue is specifically a place where live music happens. This matters for discovery queries like "live music venues near me," where AI is filtering for venues of a specific type.
  • Event schema labels your individual show listings: the name of the event, the date and time, the performer, the ticket URL, the venue it's at. When this is in place, Google can pull your events directly into search results, and AI can include them in answers to "what's happening at [venue] this weekend."
  • LocalBusiness covers the foundational information: your address, hours, phone number, price range, and a description of what you do. Even if you have nothing else, this schema tells AI crawlers the basic facts about your business in a format they can read reliably.

Each of these is implemented as JSON-LD, which is a block of structured code typically placed in the header of your website. It's invisible to visitors but readable by every major crawler.

"Schema is the most direct way you can contribute to the picture AI builds of your venue. Most venues haven't contributed anything."

HOW TO CHECK IF YOU HAVE ANY

Go to Google's Rich Results Test (it's free) and enter your venue's URL. It will tell you what structured data it finds on your page, whether it's valid, and whether it qualifies for rich results in Google search. You're looking for any entries under "Detected Items." If there's nothing there, you have no schema.

You can also check by looking at your page source (right-click, View Page Source) and searching for the text "application/ld+json." If you find it, that's your schema block. If you don't, it's not there.

Common finding: many venues have partial schema from their website platform that covers basic LocalBusiness data but has no Event schema at all. You can have the venue recognized without a single show being machine-readable. That's a meaningful gap.

THE SITE PLATFORM PROBLEM, AGAIN

Here's where the Post 4 conversation comes back around. Schema markup is only useful if AI can actually reach your page. If your site is on Squarespace and AI crawlers are being blocked by the firewall by default, the most beautifully constructed schema in the world won't help with AI tools that can't access your site. The crawlability problem comes first; schema is what you layer on top once the foundation is accessible.

For venues on Squarespace specifically: Google's own crawler does execute JavaScript and can generally read your site, so schema added via Squarespace's code injection tool will help with Google search and Google AI Overviews. It just won't help with ChatGPT, Perplexity, or other AI tools that rely on GPTBot or PerplexityBot.

For venues on WordPress: schema plugins like Yoast SEO, RankMath, or Schema Pro handle most of this for you and are worth having active. They still need to be configured for Event schema if you want your shows to be machine-readable.

WHAT IT LOOKS LIKE IN PRACTICE

A simplified version of Event schema for a show:

{
   "@context": "https://schema.org",
   "@type": "MusicEvent",
   "name": "The Midnight - Live",
   "startDate": "2026-07-12T20:00",
   "location": {
       "@type": "MusicVenue",
       "name": "Your Venue Name",
       "address": "123 Main St, Your City, ST 00000"
   },
   "offers": {
       "@type": "Offer",
       "url": "https://yourticketlink.com",
       "availability": "https://schema.org/InStock"
   }
}

That block, added to the page for each event, tells every crawler that reads it exactly what's happening, when, where, and how to buy a ticket. It's the difference between AI guessing at your events and AI knowing them.

Post 7 moves from your own site to how you appear everywhere else, which turns out to matter just as much.