# Apex Sentinel — Union Chill NY Monthly Audit

**URL:** https://unionchillny.com/
**Platform:** wordpress
**Archetype:** community
**Run ID:** 2026-04-19T06-18-18-831Z
**Scanned:** 2026-04-19T06:32:04.060Z
**Duration:** 820s

This is a **monthly deep audit**. The crawler performed a full-site scan including
Lighthouse performance, axe-core accessibility (WCAG 2.2 AA), cross-browser compatibility,
security headers, schema markup validation, and SEO best-practice checks.

Because this site is not a repository we control, Apex Sentinel **cannot automatically
apply fixes** — instead, each finding below includes an AI-generated plain-English
explanation + step-by-step recommended fix you can hand to a developer or execute
in your CMS directly.

---

## Executive Summary

**Overall grade:** **F**

| Dimension | Count | Meaning |
|---|---|---|
| Pages crawled | 21 | Full sitemap + linked pages |
| P0 (critical) | 1 | Site-down or compliance-breaking |
| P1 (urgent) | 7 | Significant revenue / SEO / UX impact |
| P2 (high) | 69 | Quality / ranking / trust degradation |
| P3 (medium) | 68 | Polish + optimization |
| "Do first" items | 7 | AI-flagged top priorities |
| Quick wins (< 30 min) | 26 | Fastest ROI items |

---

## Top 10 Actions (Ranked)

If you only have time for ten things this month, do these — in this order.

1. **[P0] 🔴 DO FIRST Sensitive artifact exposed: /wp-login.php** — _A successful hack could expose customer data, payment info, product inventory, or allow an attacker to deface your site or inject malware—all of which violate cannabis compliance requirements and destroy customer trust._
   Page: https://unionchillny.com/wp-login.php
   Effort: Quick win (< 30 min)
2. **[P1] 🔴 DO FIRST 1 mixed-content references (http://)** — _Mixed content warnings erode customer confidence during checkout and age verification, and search engines may penalize pages with security issues, harming your ability to rank for local dispensary searches._
   Page: https://unionchillny.com/
   Effort: Quick win (< 30 min)
3. **[P1] 🔴 DO FIRST Lighthouse perf (mobile): 34/100** — _Slow mobile load causes cart abandonment, missed age-verification completions, and ranking penalties in Google Search—directly reducing online orders and foot traffic from search._
   Page: https://unionchillny.com/
   Effort: Moderate (1-3 hours)
4. **[P1] 🔴 DO FIRST A11y: ARIA dialog and alertdialog nodes should have an accessible name** — _Visually impaired customers cannot use your age verification gate, blocking them from accessing your site entirely and exposing you to ADA compliance risk._
   Page: https://unionchillny.com/
   Effort: Quick win (< 30 min)
5. **[P1] 🔴 DO FIRST A11y: Elements must meet minimum color contrast ratio thresholds (×47)** — _Low contrast fails accessibility compliance and directly blocks customers with vision impairments from viewing products, checking inventory, or completing purchases — cutting off a significant portion of potential customers and exposing your business to ADA compliance risk._
   Page: https://unionchillny.com/
   Effort: Moderate (1-3 hours)
6. **[P1] 🔴 DO FIRST A11y: Links must have discernible text (×11)** — _Customers with visual impairments cannot navigate your site or find products, reducing accessibility compliance and excluding a portion of your potential customer base._
   Page: https://unionchillny.com/
   Effort: Moderate (1-3 hours)
7. **[P1] 🔴 DO FIRST Journey failed: default: homepage → age gate → menu visible** — _The age gate (legally required for cannabis retail) fails to load properly, blocking customer access to your product listings and store information, which directly prevents sales._
   Page: https://unionchillny.com/
   Effort: Moderate (1-3 hours)
8. **[P1] 🟠 HIGH Lighthouse bestPractices (desktop): 59/100** — _A low best practices score can suppress search ranking in competitive local markets and may trigger security warnings in some browsers, reducing customer trust and click-through rates from search results._
   Page: https://unionchillny.com/
   Effort: Moderate (1-3 hours)
9. **[P2] 🟠 HIGH No JSON-LD schema** — _Missing schema data reduces your chances of appearing in Google's rich snippets (enhanced search results with ratings, hours, or product details), which typically drive 20–30% higher click-through rates than plain links._
   Page: https://unionchillny.com/hello-world/
   Effort: Moderate (1-3 hours)
10. **[P2] 🟠 HIGH 8 image(s) missing alt text** — _Missing alt text blocks both accessibility (potential customers using screen readers leave frustrated) and image SEO (you're losing visibility in Google Images, where cannabis product and dispensary photos drive traffic)._
   Page: https://unionchillny.com/hello-world/
   Effort: Quick win (< 30 min)

---

## Findings by Severity

### P0 — 1 finding

### 1. Sensitive artifact exposed: /wp-login.php

- **Severity:** P0   |   **Priority:** 🔴 DO FIRST
- **Effort:** Quick win (< 30 min)
- **Business category:** security
- **Page URL:** https://unionchillny.com/wp-login.php
- **Rule:** `tier5.exposed.artifact`

**What it means (plain English)**

Your WordPress admin login page is publicly accessible at /wp-login.php. This is a known entry point that automated attackers scan for constantly. While WordPress login pages are normally public, exposing this path makes your site an easier target for brute-force attacks (repeated password-guessing attempts) and credential theft.

**Why it matters for your business:** A successful hack could expose customer data, payment info, product inventory, or allow an attacker to deface your site or inject malware—all of which violate cannabis compliance requirements and destroy customer trust.

**Technical root cause:** WordPress exposes /wp-login.php by default with no blocking. Your site is not using IP whitelisting, basic authentication, or a Web Application Firewall (WAF) to restrict access to admin pages.

**Recommended fix — step by step**

1. Install and activate the free 'Wordfence Security' plugin (Plugins → Add New → search 'Wordfence' → Install Now → Activate)
2. In Wordfence Settings → Login Security, enable 'Force two-factor authentication' and set 'Limit login attempts' to 5 failed logins per 5 minutes
3. Change your default WordPress login URL from /wp-login.php to a custom path (Wordfence → Change Login URL → set custom URL like /admin-secure-entrance, save, and test immediately)
4. Optional but recommended: Contact your hosting provider and request they enable a Web Application Firewall (WAF) rule to block /wp-login.php access from outside your office IP address
5. Test the change by logging out, visiting https://unionchillny.com/wp-login.php (should return 404 or redirect), then log back in via your new custom URL

---

### P1 — 7 findings

### 1. 1 mixed-content references (http://)

- **Severity:** P1   |   **Priority:** 🔴 DO FIRST
- **Effort:** Quick win (< 30 min)
- **Business category:** compliance
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier5.mixed-content`

**What it means (plain English)**

Your website loads over HTTPS (secure), but one resource is being loaded from an unencrypted HTTP link — specifically to oasas.ny.gov/HOPELine. Modern browsers will block this resource or show a security warning to visitors, reducing trust and potentially breaking functionality on that page.

**Why it matters for your business:** Mixed content warnings erode customer confidence during checkout and age verification, and search engines may penalize pages with security issues, harming your ability to rank for local dispensary searches.

**Technical root cause:** A link or embedded resource pointing to http://oasas.ny.gov (New York's substance abuse authority) is hardcoded or embedded in a page template, widget, or plugin without the HTTPS protocol.

**Recommended fix — step by step**

1. Log into WordPress admin → Pages/Posts → find the page containing the OASAS HOPELine reference (likely a footer, sidebar, or compliance/resources section)
2. Edit that page and locate the link or embed pointing to 'http://oasas.ny.gov/HOPELine' — use the browser's Inspector (F12 → Network tab) to confirm the exact location if needed
3. Change the link from 'http://oasas.ny.gov' to 'https://oasas.ny.gov' in the page editor
4. If the link is in a footer widget, go to WordPress admin → Appearance → Widgets → find the widget containing the link and update it there instead
5. If this is a plugin (e.g., a compliance banner plugin), go to the plugin settings and update the resource URL to HTTPS
6. Save/publish and clear any caching plugin (go to Appearance → Cache, WP Super Cache, or similar, and purge cache)
7. Visit the live page in an Incognito window and open Inspector (F12 → Console) — confirm no 'mixed content' warnings appear

### 2. Lighthouse perf (mobile): 34/100

- **Severity:** P1   |   **Priority:** 🔴 DO FIRST
- **Effort:** Moderate (1-3 hours)
- **Business category:** revenue
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.perf-mobile`

**What it means (plain English)**

Your mobile site takes 32.5 seconds for the largest text/image to appear on screen (Lighthouse calls this LCP). Visitors see a blank or incomplete page for most of that time, then the content finally loads. A score of 34/100 means your mobile experience is in the bottom quartile—most competitors rank higher. This is a user experience crisis on phones, where ~60% of cannabis retail traffic originates.

**Why it matters for your business:** Slow mobile load causes cart abandonment, missed age-verification completions, and ranking penalties in Google Search—directly reducing online orders and foot traffic from search.

**Technical root cause:** LCP delay typically stems from unoptimized hero images, render-blocking JavaScript (especially tracking/ads), or slow server response. WordPress sites often load heavy plugins (contact forms, chat, analytics) before the page is visible.

**Recommended fix — step by step**

1. Install and activate Lighthouse-focused caching plugin: WP Super Cache or W3 Total Cache. Configure to enable browser caching (set expiry to 30 days) and minify CSS/JS.
2. Open WordPress Admin → Media Library → identify hero images on homepage and product pages. Use ShortPixel (free tier) or Imagify to compress and convert to WebP. Aim for <200KB per image.
3. Audit active plugins: Admin → Plugins → list all. Disable non-essential ones (e.g., chat, surveys, pixel trackers) and retest mobile performance. Re-enable only if Lighthouse score stays >60.
4. Defer non-critical JavaScript: Install Async JavaScript plugin or use Perfmatters. Set Google Analytics, Meta Pixel, and chat widgets to 'defer' or 'async' load.
5. Check server response time: open Lighthouse report HTML, find 'Server response time' metric. If >600ms, contact your hosting provider (request PHP version upgrade or move to WP-optimized tier like WP Engine or Kinsta).
6. Re-run Lighthouse mobile test in WordPress Admin → Site Health or via PageSpeed Insights to confirm improvement. Target ≥70 before next month.

### 3. A11y: ARIA dialog and alertdialog nodes should have an accessible name

- **Severity:** P1   |   **Priority:** 🔴 DO FIRST
- **Effort:** Quick win (< 30 min)
- **Business category:** compliance
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier9.a11y.aria-dialog-name`

**What it means (plain English)**

Your site has an age-gate dialog (the "baag3-gate" element) that doesn't have a proper accessible name. This means screen readers can't announce what the dialog is for, leaving visually impaired visitors confused about what they're looking at or how to interact with it.

**Why it matters for your business:** Visually impaired customers cannot use your age verification gate, blocking them from accessing your site entirely and exposing you to ADA compliance risk.

**Technical root cause:** The dialog element has role="dialog" and aria-modal="true" but lacks aria-label, aria-labelledby, or title attributes that would tell assistive technology what the dialog's purpose is.

**Recommended fix — step by step**

1. In WordPress admin, install and activate the plugin 'WP Accessibility' if not already active, or use a custom code snippet
2. Locate the age-gate HTML (likely in a page builder, custom code block, or theme file at /wp-content/themes/[theme-name]/); search for 'baag3-gate'
3. Add aria-label="Age verification dialog" directly to the div element: <div id="baag3-gate" class="baag3-overlay" role="dialog" aria-modal="true" aria-label="Age verification dialog">
4. Alternatively, if the dialog has a visible heading inside it, use aria-labelledby="[heading-id]" instead (e.g., if a heading has id="age-title", use aria-labelledby="age-title")
5. Test the fix using the WAVE browser extension (Wave.webaim.org) or axe DevTools in Chrome to confirm the dialog now has an accessible name
6. If using a page builder (Elementor, Divi, etc.), check builder settings for the dialog/popup component for an 'Accessibility Label' or 'ARIA Label' field and populate it

### 4. A11y: Elements must meet minimum color contrast ratio thresholds (×47)

- **Severity:** P1   |   **Priority:** 🔴 DO FIRST
- **Effort:** Moderate (1-3 hours)
- **Business category:** compliance
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier9.a11y.color-contrast`

**What it means (plain English)**

Your website has 47 places where text and background colors don't have enough contrast — meaning visitors with low vision or color blindness will struggle to read them. The audit found buttons and badges with text that's only 3.1 times darker than the background, but accessibility standards require at least 4.5 times darker. This affects product cards, badges, and call-to-action buttons throughout your site.

**Why it matters for your business:** Low contrast fails accessibility compliance and directly blocks customers with vision impairments from viewing products, checking inventory, or completing purchases — cutting off a significant portion of potential customers and exposing your business to ADA compliance risk.

**Technical root cause:** The product carousel and card components (likely from Dutchie, your point-of-sale integration) use light blue text (#0b99e6) on white backgrounds, and badge labels with insufficient color separation. These colors pass basic visual inspection but fail the mathematical WCAG 2 AA standard that requires 4.5:1 contrast for normal text.

**Recommended fix — step by step**

1. Log into WordPress admin → Appearance → Customize → Colors (or your theme's color panel) and note all current text/background color pairs
2. Run the site through https://webaim.org/resources/contrastchecker/ for each color combination found — plug in #0b99e6 (foreground) and #ffffff (background) to confirm the 3.12 ratio failure
3. For Dutchie-embedded product cards: Contact Dutchie support and request they increase the contrast of badge and button text in their embed, or ask if your account has a 'high-contrast mode' setting in their dashboard
4. For any custom WordPress text/buttons: Edit the CSS in Appearance → Customize → Additional CSS (or child theme style.css). Change light blue text to a darker shade like #003d7a or darker, and test ratio at contrastchecker
5. For badge backgrounds: Consider switching to a darker background color or white text on colored background (test both paths in contrast checker until you hit 4.5:1)
6. Install the WAVE Web Accessibility Evaluation Tool (free browser extension) and re-scan the homepage to verify all 47 instances are resolved
7. Document the changes in a spreadsheet: color pair → old ratio → new ratio → verified date

### 5. A11y: Links must have discernible text (×11)

- **Severity:** P1   |   **Priority:** 🔴 DO FIRST
- **Effort:** Moderate (1-3 hours)
- **Business category:** compliance
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier9.a11y.link-name`

**What it means (plain English)**

Your website has 11 links that screen readers cannot properly identify. This happens when links contain only images without alt text, or when links have no visible or hidden text label. People using assistive technology (screen readers) will hear "link" with no context about where it goes or what it does.

**Why it matters for your business:** Customers with visual impairments cannot navigate your site or find products, reducing accessibility compliance and excluding a portion of your potential customer base.

**Technical root cause:** Links are built with images that have empty alt attributes, or links lack aria-label attributes and contain no text content. Elementor (your page builder) created these links without accessible text.

**Recommended fix — step by step**

1. Log into WordPress admin → Pages → edit the homepage
2. Click the Elementor pencil icon to open the visual editor
3. Find the logo link (selector .elementor-element-e04e2fa) — click it and open the Advanced tab
4. Add aria-label="Union Chill NY Home" in the Attributes field
5. For the product image link in the carousel (selector .elementor-element-5af4c7f) — click it, go Advanced tab, add aria-label="Shop Flower Products"
6. Repeat for all 11 flagged links: inspect each one, determine its purpose (home, product category, store location), and add a descriptive aria-label
7. Save and publish; run axe DevTools browser extension on the live site to confirm all link-name errors are resolved

### 6. Journey failed: default: homepage → age gate → menu visible

- **Severity:** P1   |   **Priority:** 🔴 DO FIRST
- **Effort:** Moderate (1-3 hours)
- **Business category:** compliance
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier10.journey.failed`

**What it means (plain English)**

Your site is trying to load JavaScript files, but the server is sending them back as HTML instead of JavaScript. Modern browsers reject this for security reasons—it's like asking for a book and receiving a newspaper instead. This breaks your age-gate functionality and prevents visitors from accessing your menu after verification.

**Why it matters for your business:** The age gate (legally required for cannabis retail) fails to load properly, blocking customer access to your product listings and store information, which directly prevents sales.

**Technical root cause:** One or more <script type="module"> tags are pointing to URLs that don't exist or return HTML error pages (404/500). The server responds with a generic HTML error page instead of the actual JavaScript file, violating MIME type requirements for ES6 modules.

**Recommended fix — step by step**

1. Open WordPress admin → Appearance → Theme File Editor (or Plugins → Plugin File Editor if using a plugin for age gate). Search for any <script type="module"> tags and note the file paths they reference.
2. Visit each referenced script URL directly in your browser (e.g., https://unionchillny.com/wp-content/themes/your-theme/js/age-gate.js) to confirm they return JavaScript, not an error page.
3. If URLs are broken, correct the paths in the script tags to match your actual file structure. Common mistake: referencing /wp-content/plugins/plugin-name/js/file.js when the file is actually in a subfolder like /js/modules/file.js.
4. If using a plugin for age gating (e.g., MyCannaBiz, Canny, or Age Gate Pro), deactivate and reactivate it via Plugins → Installed Plugins to regenerate its asset files.
5. Check the Network tab in Chrome DevTools (F12 → Network) while reloading the homepage. Look for red 404 or 500 responses on .js files. Click each and verify the Response tab shows JavaScript code, not HTML.
6. If you use a caching plugin (WP Super Cache, W3 Total Cache, etc.), clear all caches via Settings → [Plugin Name] → Clear Cache.
7. Test the age gate flow again in a private/incognito browser window to confirm the menu is accessible after clicking 'Enter' or 'I'm 21+'.

### 7. Lighthouse bestPractices (desktop): 59/100

- **Severity:** P1   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.bestPractices-desktop`

**What it means (plain English)**

Your site's Lighthouse best practices score is 59 out of 100, which signals problems with browser compatibility, HTTPS security, cookie handling, or third-party script loading. This isn't immediately visible to visitors, but search engines and modern browsers flag it as a trust issue. A score below 90 suggests at least one or two significant code or configuration problems.

**Why it matters for your business:** A low best practices score can suppress search ranking in competitive local markets and may trigger security warnings in some browsers, reducing customer trust and click-through rates from search results.

**Technical root cause:** Lighthouse best practices failures typically stem from unsecured external resources (non-HTTPS embeds), outdated JavaScript libraries, missing Content Security Policy headers, or deprecated browser APIs used by plugins or theme code.

**Recommended fix — step by step**

1. Open the Lighthouse HTML report at /Users/markwallace/BKH/apex-sentinel/runs/2026-04-19T06-18-18-831Z/lighthouse/union-chill/lighthouse-desktop.html and screenshot each failed audit (look for red or orange items under 'Best Practices')
2. In WordPress admin, go to Plugins and deactivate each non-essential plugin one at a time, then re-run Lighthouse from Chrome DevTools (F12 → Lighthouse tab) to isolate which plugin is causing failures
3. If failures mention 'Unused JavaScript' or 'third-party scripts,' check Settings → General and any SEO/analytics plugins for tracking codes (Google Analytics, Meta Pixel) — ensure they use the latest version and are loaded over HTTPS only
4. Check your theme for insecure external embeds: WordPress admin → Appearance → Theme File Editor, search for 'http://' (unencrypted) URLs and replace with 'https://'
5. If failures mention 'No CSP meta tag,' install the free plugin 'Head and Footer Scripts' (by wpweaver) and add a Content-Security-Policy header via that plugin, or ask your host to add it via .htaccess or server config
6. Verify all embedded maps, social feeds, or third-party widgets (menus, reservation systems) load over HTTPS — edit each shortcode or widget in the WordPress editor and update URLs if needed

---

### P2 — 69 findings

### 1. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/hello-world/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your website is missing JSON-LD structured data—a machine-readable format that tells Google what your pages are about. Without it, search engines have to guess whether a page is a blog post, a product listing, a local business, or something else. This is especially important for cannabis dispensaries, where Google needs clear signals about your license, location, and compliance status.

**Why it matters for your business:** Missing schema data reduces your chances of appearing in Google's rich snippets (enhanced search results with ratings, hours, or product details), which typically drive 20–30% higher click-through rates than plain links.

**Technical root cause:** WordPress does not output JSON-LD schema automatically unless a plugin or custom theme code adds it. Your theme likely lacks built-in schema generation, and no SEO plugin (like Yoast, RankMath, or All in One SEO) is currently active or configured to generate it.

**Recommended fix — step by step**

1. Install and activate 'Yoast SEO' (or 'RankMath' as an alternative) from WordPress Plugins → Add New.
2. In Yoast SEO settings (WordPress menu → SEO), go to Search Appearance → Local Business and configure your dispensary's name, address, phone, license number, and opening hours.
3. On each product/service page, use Yoast's Content Analysis tab to verify schema generation—look for a green checkmark confirming schema was added.
4. Test the homepage and a sample product page using Google's Rich Results Test (https://search.google.com/test/rich-results) to confirm JSON-LD is present and valid.
5. For the blog post at /hello-world/, set its page type to 'BlogPosting' in Yoast's schema settings if it's editorial content, or remove it if it's placeholder spam.

### 2. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/hello-world/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your site should have alt text—a short description that screen readers read aloud to blind visitors and that search engines use to understand what the image shows. Your 'Hello World' page has 8 images with no alt text at all, which means those visitors can't tell what those images depict, and Google can't index them for image search.

**Why it matters for your business:** Missing alt text blocks both accessibility (potential customers using screen readers leave frustrated) and image SEO (you're losing visibility in Google Images, where cannabis product and dispensary photos drive traffic).

**Technical root cause:** Images were uploaded to WordPress without filling in the 'Alt Text' field in the media library, or the image blocks in the page editor lack alt attributes.

**Recommended fix — step by step**

1. Log into WordPress admin → go to Media Library → find each of the 8 images on the Hello World page and click to edit
2. In the 'Alt Text' field, write a brief, descriptive phrase (e.g., 'Cannabis flower product display' or 'Union Chill storefront entrance') for each image
3. Alternatively, edit the Hello World page directly → click each image block → in the right sidebar under 'Advanced' or 'Block' settings, paste alt text into the Alt Text field
4. Regenerate the page cache (if using a caching plugin like WP Super Cache, go to Settings → WP Super Cache → 'Delete Cache')
5. Test by using a free tool like WAVE (wave.webaim.org) to scan the page and confirm alt text now appears

### 3. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your site isn't using JSON-LD structured data—a machine-readable format that tells Google what your content is about (e.g., a blog post, product, local business). Without it, search engines have to guess the meaning of your pages, which often leads to missed opportunities for rich search results (like star ratings, event dates, or product prices displayed directly in Google).

**Why it matters for your business:** Missing schema markup means you're losing visibility in Google Search results—potential customers won't see enhanced snippets that could drive clicks, and local search for your dispensary location becomes harder to optimize.

**Technical root cause:** WordPress doesn't auto-generate JSON-LD schema; it requires either a plugin (like Yoast SEO, Rank Math, or All in One SEO) or manual code insertion into your theme's header. Your site currently has none configured.

**Recommended fix — step by step**

1. Install and activate Yoast SEO or Rank Math (both free tiers support schema). Go to WordPress Dashboard → Plugins → Add New, search 'Yoast SEO', install, and activate.
2. After activation, go to Yoast SEO → General → Features and ensure 'Schema' is toggled ON.
3. Set your site type: Yoast SEO → General → Site representation → choose 'Organization' and fill in your business name, logo URL, and local address (critical for cannabis compliance).
4. For the blog post at /elevate-your-winter-activities-corning-ny/, edit the post and scroll to the Yoast SEO metabox → Schema tab. Set the content type to 'BlogPosting' if not auto-detected.
5. Verify schema output: visit your site page in Google's Rich Results Test (search.google.com/test/rich-results), paste the affected URL, and confirm JSON-LD blocks appear with no errors.
6. Repeat schema validation for 3–5 key pages (homepage, product/menu pages, license/compliance pages) to ensure consistent markup.

### 4. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Eight images on your blog post about winter activities in Corning, NY are missing alt text — a brief description that appears if the image won't load and helps search engines understand what each image shows. This makes the page harder for people using screen readers and reduces your visibility in image search results (Google Images).

**Why it matters for your business:** Missing alt text hurts both accessibility compliance and your ability to rank in Google Images, which drives traffic to blog content that builds community engagement and brand authority.

**Technical root cause:** Images were likely uploaded to WordPress without filling in the 'Alt Text' field in the media library, or the theme template doesn't enforce alt text on images.

**Recommended fix — step by step**

1. Log into WordPress Admin → Posts → Edit the 'Elevate Your Winter Activities' post
2. Click each image in the post editor; right-click or click the image and select 'Edit'
3. In the Image Details panel, fill the 'Alternative Text' field with a brief, accurate description (e.g., 'Winter hiking trail in Corning, NY' or 'Couple enjoying outdoor activities in snow')
4. Repeat for all 8 images, then click 'Update' and publish
5. To prevent this on future posts, go to WordPress Settings → Media and add a note in your editorial checklist reminding authors to fill alt text before publishing
6. Optionally: install the free plugin 'Yoast SEO' → Tools → Check if any existing posts are flagged for missing alt text, and batch-review them

### 5. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-2/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your page doesn't include JSON-LD structured data — a standardized code block that tells search engines what your content is about. Without it, Google can't reliably understand your page's topic, products, or business details, which limits how well the page appears in search results and knowledge panels.

**Why it matters for your business:** Missing schema reduces the chance that your dispensary location, product listings, and reviews show up in local search results and Google Maps — directly affecting foot traffic and online visibility for customers searching "cannabis near me."

**Technical root cause:** The WordPress theme or page template does not automatically inject JSON-LD blocks for blog posts, products, or local business information. No plugin is actively generating or inserting this structured data.

**Recommended fix — step by step**

1. Install the free Yoast SEO plugin (or upgrade if already installed) via WordPress Admin → Plugins → Add New, search 'Yoast SEO', install and activate.
2. In Yoast SEO settings (Admin → Yoast SEO → General), navigate to 'Feature Manager' and ensure 'Schema' is enabled.
3. Edit the affected post (Posts → [post title]) and open the Yoast SEO sidebar on the right. Under 'Schema' tab, confirm the post type is set correctly (e.g., 'BlogPosting').
4. For your homepage and business info, go to Admin → Yoast SEO → Site Features → Organization Schema, and fill in your dispensary's legal name, address, phone, license number, and logo.
5. Install and activate the 'Schema App Structured Data' plugin as a secondary source (Admin → Plugins → Add New, search 'Schema App'), which can auto-generate LocalBusiness schema for your location page.
6. Visit the affected post and check the Yoast SEO preview; you should see 'No errors found' in the Schema section after a few hours.
7. Run the page through Google's Rich Results Test (https://search.google.com/test/rich-results) to confirm schema is now present and valid.

### 6. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-2/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your site should have descriptive alt text — a short text label that screen readers (software used by people with vision loss) read aloud, and that search engines use to understand what's in the image. Right now, 8 images on your winter activities post have no alt text at all. This makes those images invisible to both assistive technology users and search engine crawlers.

**Why it matters for your business:** Missing alt text blocks visually-impaired customers from understanding your content, reduces your rankings for image-based searches (like 'cannabis products near Corning NY'), and may expose you to accessibility complaints.

**Technical root cause:** Images were uploaded to WordPress and inserted into the post without filling in the Alt Text field during upload or editing. WordPress allows this by default, but leaves the alt attribute blank in the HTML.

**Recommended fix — step by step**

1. Log into WordPress Admin → go to the affected post 'Elevate Your Winter Activities – Corning NY'
2. Click Edit to enter the post editor
3. Locate each image in the editor and click it to select it
4. In the block sidebar on the right (or inline toolbar), find the Alt Text field and write a 5–10 word description (e.g., 'Winter hiking trail near Corning, NY' or 'Cannabis product packaging – Elevate brand')
5. Repeat for all 8 images on that post
6. Click Update to save changes
7. Audit your other posts for the same issue: WordPress Admin → Media Library → look for any images with blank Alt Text fields, and fill them in

### 7. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-3/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your blog post page doesn't include structured data — a machine-readable format that tells Google what the page is about (e.g., article title, author, publish date). Without it, search engines have to guess your content's meaning, which hurts ranking for relevant queries and reduces the chance your content appears in rich results like snippets or news carousels.

**Why it matters for your business:** Missing schema data reduces organic search visibility for blog content that could drive traffic to your dispensary and build community authority in the Corning, NY area.

**Technical root cause:** WordPress requires either a plugin (like Yoast SEO, Rank Math, or All in One SEO) or manual code insertion to generate JSON-LD blocks. The site currently has neither for blog posts.

**Recommended fix — step by step**

1. Install and activate Yoast SEO Free plugin (Plugins → Add New → search 'Yoast SEO' → Install Now → Activate)
2. Go to Yoast SEO → General settings and connect your Google Search Console (paste your verification code if prompted)
3. Edit the affected blog post (Posts → Edit 'Elevate Your Winter Activities…')
4. Scroll to the Yoast SEO block below the editor and set Content Type to 'Article', fill in Focus Keyphrase (e.g., 'winter activities Corning NY'), and ensure Author is populated
5. Verify the fix by visiting https://unionchillny.com/elevate-your-winter-activities-corning-ny-3/ and opening browser DevTools (F12) → Search → search for '"@type": "Article"' — you should see a JSON block
6. Repeat this process for other blog posts on the site to build consistent schema coverage

### 8. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-3/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your website should have descriptive alt text — a short text description that screen readers read aloud to blind/low-vision visitors, and that search engines use to understand image content. Your post 'Elevate Your Winter Activities' has 8 images with no alt text at all, making them invisible to both assistive technology users and search engines.

**Why it matters for your business:** Missing alt text reduces your SEO ranking for image searches, limits accessibility compliance (exposing you to ADA litigation risk), and prevents visually impaired customers from engaging with your content — a growing legal concern in cannabis retail.

**Technical root cause:** Images were likely inserted into the post via WordPress media uploader without filling in the 'Alt Text' field during upload or edit. WordPress does not auto-generate alt text; it must be manually added or populated via a plugin.

**Recommended fix — step by step**

1. In WordPress admin, go to Posts → 'Elevate Your Winter Activities' → Edit.
2. Scroll to each image block and click it to select.
3. In the right-side panel under 'Image Settings', locate the 'Alt text' field.
4. Write a brief, descriptive phrase (5–12 words) for each image (e.g., 'Winter hiking trail in Corning NY with snow-covered trees' instead of just 'winter').
5. Install the free plugin 'Alt Text Generator' (or Yoast SEO Premium) to flag future images missing alt text on publish.
6. Set up a WordPress workflow reminder: before publishing any post, use the native accessibility checker (Tools → Accessibility) to catch missing alt text automatically.

### 9. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-4/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

All 8 images on this page are missing alt text — short descriptions that explain what each image shows. Search engines and screen readers (used by people with vision impairments) can't understand images without alt text. This means your page is invisible to both search bots and accessibility users.

**Why it matters for your business:** Missing alt text reduces your search ranking for relevant keywords, blocks sales from visually impaired customers (who use assistive technology), and exposes you to ADA compliance risk.

**Technical root cause:** Images were uploaded to WordPress and inserted into the post without filling in the 'Alt text' field in the image block or media library. WordPress requires explicit input to populate the alt attribute.

**Recommended fix — step by step**

1. Log into WordPress admin → go to the affected post 'Elevate Your Winter Activities – Corning NY'
2. Enter Edit mode; identify each image in the post
3. Click each image → in the right-side panel, find the 'Alt text' field → write a short, descriptive phrase (e.g., 'Group snowshoeing on Corning trail' not 'image123')
4. For product/strain images: use format '[Strain Name] cannabis flower in jar' or '[Product Type] — [Key Visual]'
5. Save the post
6. Run https://www.webstorm.net/ or install the free WordPress plugin 'Alt Text Checker' to audit all other pages for missing alt text
7. Create a content checklist: before publishing any new post, check 'Alt text added to all images' before clicking Publish

### 10. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-5/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your page doesn't include structured data — a standardized, machine-readable format that tells search engines what your content is about. For a cannabis retailer, this means Google can't easily understand whether a page is about your dispensary location, a product, an event, or educational content. Without it, search results may show incomplete or generic previews.

**Why it matters for your business:** Missing schema reduces click-through rates from search results, makes it harder for local searchers to find your dispensary hours/location, and weakens eligibility for rich snippets (like star ratings or local business cards) that drive foot traffic.

**Technical root cause:** The WordPress theme or page builder is not outputting JSON-LD blocks in the page <head> or body. Most modern WordPress plugins (Yoast SEO, RankMath, Schema Pro) generate this automatically, but the site either doesn't use one, or it's not configured.

**Recommended fix — step by step**

1. Install Yoast SEO (free version): Go to WordPress Admin → Plugins → Add New → search 'Yoast SEO' → Install & Activate
2. Activate Yoast's schema feature: In WP Admin, go to Yoast SEO → Settings → Search Appearance → Content Types, and toggle ON 'LocalBusiness' schema (critical for dispensary sites)
3. Configure LocalBusiness schema: Go to Yoast SEO → Settings → Search Appearance → Local Business → fill in your dispensary name, address, phone, hours, and license number (if public-facing)
4. For this specific page, edit it in WordPress: go to the page → scroll to Yoast SEO metabox → Schema tab → set it to 'Article' or 'News Article' as appropriate
5. Verify output: Visit the affected URL in a browser → View Page Source (Ctrl+U) → search for '"@context": "https://schema.org' to confirm JSON-LD blocks are present
6. Test in Google Rich Results Test: Go to Google's Rich Results Test tool → paste the URL → run → verify LocalBusiness, Article, or other schema appears without errors

### 11. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-5/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your website needs descriptive alt text — a short text description that appears if the image doesn't load and is read aloud by screen readers for visually impaired visitors. Your article page has 8 images, none of which have alt text. This hurts both accessibility (you're excluding customers who use assistive technology) and search engine visibility (Google can't understand what those images show).

**Why it matters for your business:** Missing alt text reduces your search ranking for image-based queries, limits your reach to disabled visitors (a legal and ethical liability), and misses an opportunity to reinforce keyword relevance for product discovery.

**Technical root cause:** Images were likely uploaded without alt text filled in during the media upload step in WordPress, and no bulk audit or template has been enforced to catch missing descriptions.

**Recommended fix — step by step**

1. Log into WordPress admin → Media Library → filter by the post/page URL (elevate-your-winter-activities-corning-ny-5) to identify those 8 images.
2. For each image, click Edit → scroll to Alt Text field → write a 5–10 word description (e.g., 'Family ice skating at local Corning rink' or 'Winter hiking trail in Finger Lakes').
3. Ensure each alt text includes a relevant keyword if natural (e.g., 'Corning NY winter activities' rather than 'image123').
4. After fixing this post, install the WordPress plugin 'SEO by Yoast' (free version) → go to Tools → Bulk Editor → select Image Alt Text checker to flag any other posts missing alt on your site.
5. Create a content checklist template in your publishing workflow: before hitting Publish, confirm all images have alt text filled in the Media sidebar.

### 12. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-6/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your website isn't using JSON-LD structured data—a standardized way to tag information (like business name, address, hours, product reviews) so search engines can understand and display it correctly. Without it, Google has to guess what your content means, which hurts how your pages appear in search results and makes it harder for customers to find key details like your location or whether you're open.

**Why it matters for your business:** Missing schema markup reduces your visibility in local search results and knowledge panels, directly losing foot traffic and online orders from customers searching for cannabis dispensaries near them.

**Technical root cause:** No structured data markup has been added to the page HTML. WordPress doesn't automatically generate schema; it must be added via a plugin (like Yoast SEO, RankMath, or SchemaApp) or custom theme code.

**Recommended fix — step by step**

1. Install the Yoast SEO plugin: go to WordPress Admin → Plugins → Add New → search 'Yoast SEO' → Install & Activate
2. Activate Yoast's schema features: Admin → Yoast SEO → Settings → Site connections → toggle on 'Organization' schema
3. Fill in your organization details in Yoast: Admin → Yoast SEO → Site connections → enter Business Name, phone, address, logo URL
4. For the affected post, open it in the editor → scroll to Yoast SEO block → verify 'Schema' tab shows LocalBusiness or BlogPosting markup; if blank, hit 'Update' to regenerate
5. Test the fix: paste the post URL into Google's Rich Results Test (https://search.google.com/test/rich-results) and confirm schema appears
6. Repeat for other high-traffic pages (homepage, product category pages, license/compliance pages)

### 13. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-6/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

All 8 images on this blog post are missing alt text — descriptive labels that screen readers use to describe images to visually impaired visitors, and that search engines use to understand image content. This blocks both accessibility compliance and image SEO performance.

**Why it matters for your business:** Missing alt text locks out customers using screen readers or assistive technology, exposes you to accessibility lawsuits, and prevents Google Images from ranking your product/lifestyle photos — losing a traffic source.

**Technical root cause:** Images were likely uploaded to WordPress without filling the 'Alt Text' field in the media library, or were inserted via shortcodes/blocks without alt attributes.

**Recommended fix — step by step**

1. Log into WordPress admin → go to Media → Library → filter by 'Unattached' or search for images used on the post 'elevate-your-winter-activities-corning-ny-6'
2. For each of the 8 images, click the image → in the right panel under 'Alt Text', write a clear 5–12 word description (e.g., 'Snow-covered hiking trail in Corning, NY with evergreen trees')
3. Focus alt text on what the image shows; if it's a product photo, include strain name or product type (e.g., 'Union Chill premium flower eighth in branded packaging')
4. Save each image, then visit the post frontend and use a free tool like axe DevTools (Chrome extension) to verify all images now have alt text
5. Set a recurring task: before publishing any new post, audit images in the Gutenberg editor — alt text field is visible in the image block sidebar

### 14. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-7/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your website isn't telling search engines what your content is about using structured data — a machine-readable format called JSON-LD. This is like having a product on a shelf with no label; humans can figure it out, but automated systems can't. Without it, Google can't confidently show your pages in specialized results (like local business listings or product carousels).

**Why it matters for your business:** Missing schema data reduces the chance your dispensary appears in Google Maps, local search results, and rich snippets — costing you foot traffic and online visibility to customers actively searching for cannabis retailers near Corning, NY.

**Technical root cause:** The WordPress site has no schema markup plugin enabled (like Yoast SEO, RankMath, or All in One SEO) and no manual JSON-LD blocks in the page templates or content.

**Recommended fix — step by step**

1. Install and activate the free RankMath SEO plugin from WordPress plugin library (Dashboard → Plugins → Add New → search 'rankmath' → Install Now → Activate).
2. Go to RankMath Settings (left sidebar) → Setup Wizard → follow the Business Info step to configure your dispensary name, address, phone, and license number.
3. Under RankMath Settings → Schema → Local Business, ensure 'Cannabis Retail' or 'Cannabis Store' is selected and your NAP (Name, Address, Phone) matches your Google Business Profile exactly.
4. Edit the affected post (Elevate Your Winter Activities...) → scroll to RankMath metabox → check 'Enable Schema' and select 'Article' schema type → save.
5. Use Google's Rich Results Test (https://search.google.com/test/rich-results) to paste your post URL and confirm schema is now detected.
6. Repeat the schema assignment for all high-traffic blog posts (anything with 100+ monthly views) over the next 2 weeks.

### 15. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-7/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your website should have alt text — a short text description that screen readers read aloud to visitors who are blind or visually impaired, and that search engines use to understand what the image shows. On this page, all 8 images are missing that description, making the content invisible to assistive technology users and reducing your SEO relevance for image-based searches.

**Why it matters for your business:** Missing alt text locks out customers using screen readers, exposes you to ADA compliance risk, and reduces organic search traffic from image search and Google's ranking algorithms.

**Technical root cause:** Images were inserted into the WordPress post without filling in the 'Alt Text' field in the media uploader or image block settings. WordPress does not auto-generate alt text.

**Recommended fix — step by step**

1. In WordPress admin, navigate to Posts → All Posts, then click 'Edit' on the post titled 'Elevate Your Winter Activities – Corning, NY'.
2. In the editor, click the first image to select it. On the right sidebar (or inline), locate the 'Alt Text' field and write a concise, descriptive phrase (e.g., 'Winter hiking trail at Corning Nature Preserve').
3. Repeat for all 8 images on this post — each alt text should describe what the image shows in 5–10 words, not keyword-stuffed.
4. After updating each image, click 'Update' to save the post.
5. Repeat this process for all other blog posts and landing pages with images to fix the issue site-wide; use WordPress's Media Library (Media → Library) to bulk-audit and filter images with missing alt text if your version supports it.
6. Consider installing the Yoast SEO plugin (free version): it flags missing alt text in the editor and reminds you to add it before publishing future posts.

### 16. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-8/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your site is missing JSON-LD structured data—a machine-readable format that tells search engines what your content is about. Without it, Google has to guess whether a page is a blog post, a product listing, or location information, which reduces your chances of appearing in rich search results (like star ratings or event cards).

**Why it matters for your business:** Missing schema markup costs you visibility in Google Search results and local pack listings, which directly reduces organic traffic to your dispensary pages and product information.

**Technical root cause:** WordPress does not automatically generate JSON-LD schema for content; it must be added manually via code or a plugin. Most WordPress sites using default themes lack any structured data implementation.

**Recommended fix — step by step**

1. Install Yoast SEO plugin (free version) via WordPress admin → Plugins → Add New → search 'Yoast SEO' → Install & Activate.
2. Go to Yoast SEO settings → Search Appearance → Schema → enable Organization schema and set your business name, logo, contact info.
3. For the blog post affecting your search visibility, edit https://unionchillny.com/elevate-your-winter-activities-corning-ny-8/ in WordPress editor, scroll to Yoast SEO meta box → 'Schema' tab → select 'Article' as content type.
4. Add breadcrumb navigation: Yoast SEO → Advanced → Breadcrumbs → enable and add code snippet to your theme footer (Yoast provides the code).
5. Test the fix: paste your URL into Google Search Console → URL Inspection tool → check 'Enhancements' section to verify schema is now detected.
6. Repeat schema assignment for all blog posts and product pages in your library.

### 17. 8 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-8/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your site is missing alt text—a short text description that screen readers read aloud for visually impaired visitors and that search engines use to understand what images show. All 8 images on this post lack those descriptions, which means Google can't index them and visitors using assistive technology get no context.

**Why it matters for your business:** Missing alt text hurts SEO (images don't rank in Google Images, a traffic source) and exposes you to ADA accessibility complaints, which are increasingly common for cannabis retail sites.

**Technical root cause:** The WordPress post editor was used to insert images without filling in the 'Alt Text' field in the image block settings, leaving that metadata blank in the HTML.

**Recommended fix — step by step**

1. Log into WordPress Admin → Posts → Edit the post 'Elevate Your Winter Activities – Corning NY'
2. Click each image block in the editor and look for the 'Alt text' field in the right sidebar (or click the image and press 'Edit' to open the image details panel)
3. Write a short, descriptive alt text for each image (e.g., 'snow-covered hiking trail near Corning NY' or 'cozy cannabis lounge interior with fireplace'). Keep it under 125 characters.
4. Click 'Update' to save the post
5. Audit other high-traffic posts the same way: check your top 5 blog posts for missing alt text and fix them first
6. Going forward, make alt text a mandatory step in your editorial checklist before publishing—add it to your WordPress post template or checklist plugin if you use one (e.g., Checklist plugin from Extendify)

### 18. Missing meta description

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

Your homepage doesn't have a meta description—the 155-character summary that appears below your page title in Google search results. Without it, Google generates a random excerpt from your page, which often looks unprofessional and misses your key selling points. This is a quick fix in WordPress.

**Why it matters for your business:** A missing meta description hurts click-through rate from search results; potential customers may choose a competitor's listing instead if yours looks incomplete or unclear.

**Technical root cause:** The WordPress homepage template either has no meta description field configured, or the field exists but is empty. Most WordPress themes require you to explicitly add this in the page editor or via an SEO plugin.

**Recommended fix — step by step**

1. Log into WordPress admin → Pages → select your homepage
2. If you have Yoast SEO installed: scroll to the 'Yoast SEO' box at the bottom, paste a 155-character description into the 'Meta description' field (e.g., 'Union Chill NY: Premium cannabis dispensary in New York. Wide selection, expert staff, age 21+ welcome. Visit us today.')
3. If no SEO plugin exists: install Yoast SEO (Plugins → Add New → search 'Yoast' → click Install Now), then repeat step 2
4. Click 'Update' to save the page
5. Wait 1–2 weeks for Google to re-index, then check Google Search Console (Appearance → traffic results) to confirm the new description appears in search results

### 19. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your homepage doesn't include JSON-LD structured data — a standardized format that tells search engines what your business is, where it's located, and what you sell. Without it, Google has to guess your business type and details, which means search results may not display your hours, address, reviews, or product info correctly.

**Why it matters for your business:** Missing schema reduces your visibility in local search results and Google Maps, making it harder for customers near your dispensary to find you when they search for cannabis retailers in New York.

**Technical root cause:** WordPress sites need either manual schema code in the header, or a structured data plugin (like Yoast SEO, RankMath, or SchemaApp) to generate and inject JSON-LD blocks. None is currently active or configured.

**Recommended fix — step by step**

1. Install the free Yoast SEO plugin: wp-admin → Plugins → Add New, search 'Yoast SEO', click Install and Activate.
2. Go to Yoast SEO → Settings → Integration and verify 'Advanced Settings' is enabled.
3. Navigate to Yoast SEO → Search Appearance → Content Types and ensure 'Organization' schema is toggled ON.
4. Go to Yoast SEO → Settings → Site representation and fill in: Business name (Union Chill NY), Address, Phone, Logo URL, and Social media profiles.
5. Visit Yoast SEO → Search Appearance → Knowledge Graph and confirm your business type is set to 'LocalBusiness' or 'CannabisStore' if available.
6. Use Google's Rich Results Test (search.google.com/test/rich-results) to paste your homepage URL and confirm schema appears.
7. If Yoast does not have a Cannabis/Dispensary schema option, install RankMath plugin as an alternative (it has more retail-specific schemas).

### 20. 39 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Your site has 39 images without alt text (descriptive text read by screen readers and search engines). This means visually impaired customers cannot understand what those images show, and search engines cannot index them for image search or context.

**Why it matters for your business:** Missing alt text reduces your visibility in Google Images, hurts SEO rankings for product/strain searches, and blocks accessibility for customers using screen readers — a legal and ethical compliance risk in cannabis retail.

**Technical root cause:** Images were likely uploaded to WordPress without filling in the Alt Text field during media upload, or added via theme/plugin without alt attributes defined in the HTML.

**Recommended fix — step by step**

1. Go to WordPress Admin → Media Library → filter to show images missing alt text (use a plugin like 'Alt Text' or manually review each image).
2. For each missing image, click Edit → fill in the Alt Text field with a short, descriptive phrase (e.g., 'Blue Dream cannabis flower in glass jar' or 'Edibles product lineup').
3. Install the free 'Yoast SEO' plugin (if not already active) → go to Tools → Image SEO → enable auto-detection and bulk-edit interface to batch-add alt text.
4. For product images, prioritize strains/SKUs first (highest traffic); then homepage hero images; then secondary category/blog images.
5. Set a WordPress Media upload guideline in your team: require alt text before publish (enforced via Yoast SEO's checks).
6. Test with a screen reader (NVDA free on Windows, or VoiceOver on Mac) on 5–10 pages to verify alt text reads naturally.

### 21. Missing meta description

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/about-us/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

Your About Us page is missing a meta description — the 155-character summary that appears under your page title in Google search results. Without it, Google generates a random snippet from your page text, which may not highlight what makes Union Chill NY special. This hurts click-through rates because potential customers can't see a compelling reason to visit your page.

**Why it matters for your business:** A missing meta description reduces organic click-through rate by 5–15% on search results, meaning fewer customers find your About Us page and learn about your dispensary's story, values, or unique offerings.

**Technical root cause:** The page template or post settings in WordPress are not populated with a meta description field, either because no SEO plugin is configured or the field was left blank during page creation.

**Recommended fix — step by step**

1. Log into WordPress admin → Pages → About Us
2. If you use Yoast SEO plugin, scroll to the Yoast SEO meta box at the bottom of the editor and fill in the 'Meta description' field with 155 characters or fewer describing your dispensary (e.g., 'Learn about Union Chill NY's mission to provide quality cannabis products and community education in New York.').
3. If you use All in One SEO, look for the 'Description' field in the plugin meta box and fill it similarly.
4. If neither plugin is active, install Yoast SEO (free version) → Plugins → Add New → search 'Yoast SEO' → Install → Activate, then return to step 2.
5. Click Publish or Update to save changes.
6. Wait 24–48 hours, then check Google Search Console (Google → Search Console → your property → Pages) to verify the new description appears in search results.

### 22. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/about-us/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your website doesn't include JSON-LD structured data—a standardized format that tells search engines what your page is about. For a dispensary, this means Google can't easily understand your location, hours, licensing status, or product categories. Without it, you're invisible to local search features and rich results (the cards showing ratings, hours, phone numbers).

**Why it matters for your business:** Missing schema directly reduces visibility in Google Maps, local pack results, and knowledge panels—the discovery channels where customers search for nearby dispensaries and verify your legitimacy.

**Technical root cause:** WordPress theme or plugins are not outputting LocalBusiness, Organization, or Product schema.org markup in the page's <head> or structured sections.

**Recommended fix — step by step**

1. Install the free 'Yoast SEO' plugin (Dashboard → Plugins → Add New → search 'Yoast SEO' → Install & Activate).
2. Go to Yoast SEO → Settings → Integrations and connect your Google Search Console account.
3. Return to Yoast SEO → Settings → Organization and fill in: Name ('Union Chill NY'), Logo (upload company logo), Phone, Email, and Address.
4. On the /about-us/ page editor, scroll to the Yoast meta box (below content) → Schema tab → ensure 'Organization' is selected.
5. For product/inventory pages: use Yoast's 'Product' schema or install 'WooCommerce' if selling products, which auto-generates Product schema.
6. Publish and verify markup rendered: visit https://validator.schema.org → paste your page URL → confirm Organization schema appears in results.
7. Resubmit affected pages in Google Search Console (URL Inspection tool) to refresh indexing.

### 23. 17 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/about-us/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Your about-us page has 17 images with no alt text — the written descriptions that screen readers use to tell blind/low-vision visitors what an image shows. Without alt text, those visitors see nothing, and search engines can't index the image content either. This hurts both accessibility compliance and your ability to rank for image-related searches.

**Why it matters for your business:** Missing alt text blocks disabled customers from understanding your dispensary's layout, products, and team, potentially costing you sales; it also weakens SEO for local searches where dispensary photos are a trust signal.

**Technical root cause:** Images were uploaded to WordPress without filling in the alt text field during upload or in the image block settings; the WordPress media library may lack a reminder workflow to enforce alt text on every image.

**Recommended fix — step by step**

1. Log into WordPress admin → Media Library, search for images used on /about-us/, and add descriptive alt text (50–125 characters, e.g., 'Union Chill NY interior with product display shelves') to each.
2. Alternatively, edit the About Us page directly: click each image block → in the right sidebar under Image Settings, find the Alt Text field and fill it in with what the image shows.
3. Install the free plugin Accessibility Checker (a11y) from the WordPress plugin repository to highlight missing alt text on future edits.
4. Create a simple editorial checklist: before publishing any page, run a quick visual scan or use the Accessibility Checker to confirm all images have alt text.
5. Test the page with a screen reader (NVDA on Windows, free; or VoiceOver on Mac) or use the WAVE browser extension to confirm alt text is now readable.

### 24. Missing meta description

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/ethos/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

The /ethos/ page lacks a meta description—the 155-character summary that appears below your page title in Google search results. Without it, Google generates a random excerpt from your page content, which may not highlight what makes Union Chill's values compelling or relevant to customers searching for dispensaries.

**Why it matters for your business:** Missing meta descriptions reduce click-through rates from search results; potential customers see a generic or awkward snippet instead of your core message, losing traffic to competitors with optimized listings.

**Technical root cause:** The page was likely created in WordPress without filling in the meta description field in the SEO plugin (Yoast, Rank Math, or All in One SEO), or the theme template doesn't display that field for custom pages.

**Recommended fix — step by step**

1. Log in to WordPress admin → Pages → find 'Ethos' page → scroll to the bottom SEO section (Yoast/Rank Math/All in One SEO plugin).
2. In the 'Meta Description' or 'SEO Description' field, write 150–160 characters that highlight Union Chill's mission and values (e.g., 'Learn about Union Chill NY's commitment to community, quality, and responsible cannabis retail in New York.').
3. Click 'Update' to save the page.
4. Repeat this process for any other pages showing the 'no-description' flag in your audit report.
5. Install Google Search Console (if not already done): go to search.google.com/search-console → add your site → verify ownership via WordPress plugin (Yoast or All in One SEO include this).
6. Submit the updated /ethos/ page to Google Search Console to refresh its index within 24–48 hours.

### 25. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/ethos/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your website isn't using JSON-LD (a standardized code format that tells search engines what your content is about). Search engines like Google can still index your pages, but they have to guess at details like your business name, address, phone number, and product categories. Without this structured data, you're missing opportunities to appear in rich search results — those fancy boxes with stars, prices, or hours that appear above regular links.

**Why it matters for your business:** Cannabis retailers depend on local search visibility. Without structured data, you're less likely to appear in Google Maps, local pack results, or knowledge panels — meaning customers searching 'dispensary near me' or 'cannabis products [city]' won't find you as easily.

**Technical root cause:** WordPress doesn't automatically generate JSON-LD schema markup. Most sites rely on an SEO plugin (like Yoast SEO, Rank Math, or All in One SEO) to create and inject this code. If you're not using one of these, or if the plugin is disabled, no schema blocks are being generated.

**Recommended fix — step by step**

1. Install Yoast SEO (free version) from WordPress admin → Plugins → Add New → search 'Yoast SEO' → Install → Activate
2. Go to Yoast SEO → General → Site connections, and fill in your business name, phone, address, and business type (select 'Local Business' or 'Store')
3. Under Yoast SEO → Site features, enable 'Schema' if not already on
4. Visit WordPress admin → Yoast SEO → Search Console to connect your Google Search Console account (improves schema verification)
5. Edit the affected page (/ethos/) and scroll to the Yoast SEO meta box at the bottom — ensure 'Readability' and 'SEO' are marked green
6. Regenerate the XML sitemap: Yoast SEO → Sitemaps → copy the sitemap URL and test it in Google Search Console
7. Use Google's Rich Results Test (search.google.com/test/rich-results) and paste your /ethos/ URL to verify schema is now present and valid

### 26. 17 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/ethos/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Your /ethos/ page has 17 images with no alt text — short descriptions that screen readers use to tell visually impaired visitors what the images show. Without alt text, those visitors can't understand the images, and search engines can't index the image content for visibility.

**Why it matters for your business:** Missing alt text reduces your page's search ranking for image-heavy content, and it blocks visually impaired customers from exploring your brand story — both of which shrink your audience.

**Technical root cause:** Images were added to the page without alt attributes populated in the WordPress media library or editor. WordPress does not auto-generate alt text.

**Recommended fix — step by step**

1. Log into WordPress admin → Go to Media Library → click each image used on /ethos/ and edit it to add a short alt text (e.g., 'Union Chill team member in dispensary' or 'Cannabis flower close-up'). Aim for 5–10 words per image.
2. If you're using a page builder (Gutenberg, Elementor, etc.), edit the /ethos/ page, click each image block, and fill in the 'Alt text' field in the block settings panel.
3. Install the free plugin 'WP Accessibility' (WordPress.org) → Dashboard → Settings → WP Accessibility → check 'Check Images for Alt Text' to get alerts for future untagged images.
4. Open Yoast SEO (if installed) → go to the /ethos/ page editor → scroll to 'Readability' → look for orange/red flags about images without alt text → resolve each one.
5. After updating, run your page through the free tool WAVE (wave.webaim.org) to confirm all images now have alt text.

### 27. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/latest-news/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your news page doesn't include JSON-LD structured data—machine-readable code that tells Google what your content is about. Without it, search engines have to guess whether a page is a news article, a product listing, or something else, which reduces your visibility in search results and specialty features like Google News.

**Why it matters for your business:** Missing schema markup means your news and dispensary content ranks lower in search results, and you lose eligibility for rich snippets (like star ratings or event listings) that drive click-through rates from potential customers.

**Technical root cause:** WordPress doesn't automatically generate JSON-LD schema for custom post types or news content; it requires either a structured data plugin (like Yoast SEO, Rank Math, or Schema Pro) or manual code insertion in your theme's template files.

**Recommended fix — step by step**

1. Install and activate Yoast SEO or Rank Math (both free versions support schema generation) from WordPress admin → Plugins → Add New.
2. If using Yoast: Go to Yoast SEO → Settings → XML Sitemaps, enable schema output, then visit each news post and confirm the 'Schema' tab shows Article markup.
3. If using Rank Math: Go to Rank Math → Schema → Global Settings, enable Article schema, then configure the article author and publication date settings.
4. Test a news URL (e.g., https://unionchillny.com/latest-news/) using Google's Rich Results Test (search.google.com/test/rich-results) and confirm JSON-LD appears in the output.
5. If you prefer manual implementation: Ask your developer to add <script type="application/ld+json"> blocks to your news template with Article schema including headline, datePublished, and author.

### 28. 17 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/latest-news/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

All 17 images on your Latest News page are missing alt text — text descriptions that screen readers use to tell blind or low-vision visitors what each image shows. This also means search engines can't understand what those images contain, so they won't appear in Google Images and won't boost your page's relevance for related search terms.

**Why it matters for your business:** Missing alt text blocks potential customers using assistive technology from accessing your content, reduces your visibility in Google Images search (a source of referral traffic), and creates legal risk under accessibility compliance standards like ADA.

**Technical root cause:** Images were likely uploaded to WordPress without filling in the alt text field during upload, or the theme template doesn't enforce alt text as required.

**Recommended fix — step by step**

1. Log into WordPress admin → go to Media Library → filter for images used on /latest-news/
2. For each image, click to open its details panel and fill in the alt text field with a brief, descriptive phrase (e.g., 'Cannabis product display' or 'Team member at dispensary counter') — avoid keyword stuffing
3. If images are embedded in post/page content, edit the page → click each image → open Image Details → fill alt text there
4. For cannabis product images, write alt text that describes the product type and key visual attributes (e.g., 'Sativa flower strain in clear container') to aid both accessibility and SEO
5. After updating, re-run an accessibility scanner (use free tool like WAVE or Axe DevTools browser extension) on that page to confirm all 17 are now tagged
6. Set a WordPress user permission/training rule: require alt text before images can be published (consider installing 'WP Accessibility Helper' or 'Accessibility Checker' plugin to enforce this going forward)

### 29. Missing meta description

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/contact/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

The contact page is missing a meta description — the 155-character summary that appears under your page title in Google search results. Without it, Google may auto-generate a snippet that doesn't highlight what visitors will actually find on that page, making fewer people click through from search.

**Why it matters for your business:** A missing meta description on your contact page reduces click-through rate from search results, meaning fewer customers inquire about products or visit your dispensary location.

**Technical root cause:** The page was likely created without filling in the SEO meta description field in WordPress, or a plugin is not enforcing descriptions during page creation.

**Recommended fix — step by step**

1. Log in to WordPress → Pages → Contact → scroll to Yoast SEO module (or equivalent SEO plugin section) at the bottom of the editor
2. In the 'SEO Title & Meta Description' section, click into the Meta Description field
3. Write a 155-character description: e.g., 'Questions about our cannabis products? Contact Union Chill NY's dispensary team. We're here to help with orders, hours, and licensing info.'
4. Verify the green 'Readability' light shows in the Yoast preview, then click Update
5. If using a different SEO plugin (All in One SEO, Rank Math), access Pages → Contact and paste the description into that plugin's metabox instead
6. Repeat for any other contact or key conversion pages without descriptions

### 30. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/contact/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your Contact page doesn't include structured data — machine-readable code that tells search engines what your page is about. For a dispensary, this means Google can't automatically understand your hours, phone number, address, or license info, so it can't display that info in search results or Maps.

**Why it matters for your business:** Missing schema means customers searching for 'cannabis dispensary near me' won't see your hours, location, or contact details in Google Maps or local search snippets, reducing foot traffic and phone inquiries.

**Technical root cause:** WordPress doesn't auto-generate JSON-LD schema for contact pages. Most SEO plugins (Yoast, Rank Math, All in One SEO) require explicit setup or a schema plugin to output this data.

**Recommended fix — step by step**

1. Install Rank Math SEO (free tier) via WordPress Admin → Plugins → Add New → search 'Rank Math SEO' → install + activate
2. Go to Rank Math → Content AI → Business Profile and fill in: business name, phone, address, hours of operation, license number, and business type (Dispensary)
3. On the Contact page itself, click Rank Math in the editor sidebar → Schema → enable LocalBusiness and/or ContactPage templates
4. For the Contact page specifically, ensure the schema block includes your phone number, email, physical address, and hours; save and publish
5. Use Google Search Console (unionchillny.com → Settings → Verification) to test the schema with the Rich Results Test tool (search.google.com/test/rich-results) and confirm LocalBusiness and ContactPage show as valid

### 31. 9 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/contact/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your Contact page is missing alt text — a short description that screen readers read aloud to blind/low-vision visitors, and that search engines use to understand what an image shows. This blocks accessibility compliance and wastes SEO value.

**Why it matters for your business:** Visitors using screen readers cannot navigate your contact form or understand product/location images; you may also miss ranking opportunities in Google Images for cannabis product searches.

**Technical root cause:** Images were uploaded to WordPress without filling in the Alt Text field in the Media Library, or the theme/page builder did not enforce alt text entry.

**Recommended fix — step by step**

1. Log in to WordPress Dashboard → Media Library; filter by 'Unattached' or search for images from the /contact/ page
2. For each image, click Edit → scroll to Alt Text field and write a concise, descriptive 5–10 word phrase (e.g., 'Union Chill storefront on Madison Avenue' or 'Cannabis product selection board')
3. If using Elementor or another page builder, open the /contact/ page in edit mode, click each image widget, and fill the Alt Text box in the right panel
4. Install the free plugin 'WP Accessibility' (Accessibility → Alt Text) to audit all pages at once and see remaining gaps
5. After fixing Contact, run the same audit on your Product, Home, and About pages — this is a site-wide issue

### 32. Missing meta description

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/location/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

The location page is missing a meta description—the 160-character snippet that appears under your page title in Google search results. Without it, Google generates a random excerpt from your page content, which may not highlight your most important information (like store hours or address).

**Why it matters for your business:** Potential customers searching for your dispensary location won't see a compelling preview in search results, reducing click-through rates and foot traffic.

**Technical root cause:** The WordPress page or post object for /location/ does not have a meta description field populated in its SEO plugin (likely Yoast SEO, Rank Math, or All in One SEO).

**Recommended fix — step by step**

1. Log into WordPress admin → Pages → find 'Location' page
2. Scroll to the SEO plugin section at the bottom of the editor (typically labeled 'Yoast SEO' or 'Rank Math')
3. Locate the 'Meta description' field and enter a 150–160 character description, e.g.: 'Visit Union Chill NY's Brooklyn location. Open daily 10am–10pm. Licensed dispensary with premium cannabis products.'
4. Click 'Update' to save
5. Verify the change by searching 'Union Chill NY location' in Google within 48 hours

### 33. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/location/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your location page doesn't include JSON-LD structured data — a block of code that tells search engines (like Google) what your page is about in machine-readable format. For a cannabis dispensary, this means Google can't automatically understand your business name, address, hours, or license details, so they won't appear in rich search results (the fancy cards with stars, hours, phone numbers).

**Why it matters for your business:** Without schema markup, your location page ranks lower in local search results and can't display pricing, inventory, or age-gate status in search previews, reducing clicks from customers searching 'cannabis near me' or 'dispensary hours NY'.

**Technical root cause:** WordPress is not automatically outputting Organization, LocalBusiness, or Place schema.org JSON-LD blocks. Either your theme doesn't include it, or a schema plugin is not active/configured.

**Recommended fix — step by step**

1. Install Yoast SEO (free version) via WordPress Admin → Plugins → Add New → search 'Yoast SEO' → Install Now → Activate
2. Go to Yoast SEO → General → enable 'XML sitemaps' and confirm 'Schema' is enabled (default is on)
3. Navigate to Yoast SEO → Integration and verify 'Yoast SEO removes' is NOT blocking your schema output
4. Add your business details: go to Yoast SEO → Company Details → enter Business Name: 'Union Chill NY', Address, Phone, License/Regulation ID in the 'Additional Organization Info' section if available
5. Go to your /location/ page in WordPress editor → scroll to Yoast SEO metabox at bottom → set 'Focus Keyphrase' to 'cannabis dispensary near me' or 'Union Chill NY location' and confirm the schema preview shows your address/hours
6. If Yoast's schema is still blank, check Settings → Permalinks and save (this refreshes WordPress rewrite rules), then clear any active caching plugin (WP Super Cache → Delete Cache if enabled)
7. Verify output: visit https://unionchillny.com/location/ in a browser, open DevTools (F12 → Elements tab), search for 'LocalBusiness' — you should see a JSON-LD block with your address and hours

### 34. 9 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/location/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your location page is missing alt text—the descriptive labels that screen readers use to tell visitors what an image shows, and that search engines use to understand your content. This makes your location page inaccessible to blind and low-vision customers, and it wastes SEO opportunity because Google cannot index what those images depict.

**Why it matters for your business:** Visitors using screen readers cannot learn about your dispensary locations or see product/store photos, reducing footfall from accessibility-conscious customers; you also lose local search ranking signals because location-based images aren't indexed.

**Technical root cause:** Images were uploaded without alt text attributes. WordPress allows this by default; most image blocks and galleries never prompt admins to fill in alt text unless a plugin enforces it.

**Recommended fix — step by step**

1. In WordPress admin, go to Media Library and filter by 'location' or navigate to Media → Library.
2. Click each image and check the 'Alt Text' field on the right panel.
3. For location photos, write descriptive alt text like 'Union Chill NY Midtown dispensary storefront' or 'Cannabis product shelf at Union Chill location'; for product images, use 'High-CBD flower strain in packaging'.
4. Install the free plugin 'WP Alt Text Assistant' (search Plugins → Add New) to get reminders when uploading new images without alt text.
5. After adding alt text to all 9 images, visit the location page in a browser and use a free tool like WAVE (wave.webaim.org) to confirm all images now have alt text.

### 35. Missing meta description

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/area/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

Your /area/ page doesn't have a meta description — that's the 155-character summary that appears under your URL in Google search results. Without it, Google generates random snippets from your page content, which often look unprofessional and don't encourage clicks. This is a quick fix that directly impacts how many customers find you via search.

**Why it matters for your business:** Missing meta descriptions lower click-through rates from Google Search; potential customers see bland auto-generated text instead of a compelling reason to visit your menu or location info.

**Technical root cause:** The WordPress page or post for /area/ either has no meta description filled in the SEO plugin (if using Yoast, Rank Math, or All in One SEO), or the theme's default description output is empty.

**Recommended fix — step by step**

1. Log into WordPress admin → Pages → find the page with URL slug 'area' → scroll to the SEO plugin section (Yoast, Rank Math, or All in One SEO — check which one you're using in Plugins).
2. In that plugin's meta description field, write a 150–160 character description that includes your location or service keyword, e.g. 'Explore Union Chill NY cannabis products and locations in New York. Age 21+ dispensary with lab-tested flower, edibles, and more.'
3. Click Save or Update, then wait 5–10 minutes for WordPress to regenerate the page.
4. Visit https://unionchillny.com/area/ in a private browser tab, right-click → View Page Source, and search for 'meta name="description"' to confirm the new description is live.
5. Repeat this process for any other key pages missing descriptions (check your homepage, menu/products page, and about/contact pages first).

### 36. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/area/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your site isn't using JSON-LD structured data — a machine-readable format that tells Google and other search engines what your pages are about. Without it, search engines have to guess at your content type, location, business hours, and products, which hurts your visibility in local search results and knowledge panels.

**Why it matters for your business:** For a cannabis dispensary competing in local search, missing schema means you're invisible in Google Maps, local pack results, and voice search — all channels where customers find nearby dispensaries.

**Technical root cause:** WordPress sites need schema markup either built into the theme, added via an SEO plugin (like Yoast SEO or Rank Math), or manually inserted into theme template files. Your site currently has neither.

**Recommended fix — step by step**

1. Install Yoast SEO Premium or Rank Math Pro plugin from wp-admin → Plugins → Add New.
2. Once activated, go to Yoast SEO → Site Connections → add your Google Business Profile URL to enable auto-schema linking.
3. In Yoast SEO → Schema, enable Organization schema and LocalBusiness schema, then fill in: business name, address, phone, license number, hours of operation.
4. For the /area/ page specifically, go to the page editor → Yoast SEO metabox → Schema tab → select 'Location' and confirm address/coordinates are correct.
5. Install the Schema Pro plugin or use WooCommerce's built-in product schema if you list products, to markup dispensary offerings with price and availability.
6. Test your changes: go to Google Search Console → URL Inspection → paste https://unionchillny.com/area/ → check 'Enhancements' tab for schema detection.
7. Repeat for homepage and key landing pages (products, about, contact).

### 37. 14 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/area/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your Area page is missing alt text—a short description that screen readers read aloud to blind visitors and that search engines use to understand what images show. Right now, those 14 images are invisible to assistive technology and provide zero SEO value.

**Why it matters for your business:** You're losing search rankings for image-related queries (like 'Union Chill NY strains' or 'cannabis products near me') and excluding blind/low-vision customers from your site, which is both a legal risk under ADA and a missed audience.

**Technical root cause:** Images were uploaded or inserted into WordPress without filling the Alt Text field. WordPress stores alt text in the attachment metadata; if left blank during upload or editing, no alt attribute renders in the HTML.

**Recommended fix — step by step**

1. In WordPress admin, go to Media → Library and filter to show images used on the Area page (or manually identify them).
2. For each image, click Edit and scroll to the Alt Text field; write 5–10 words describing what the image shows (e.g., 'Union Chill dispensary storefront on Main Street' or 'Indica strain flower close-up').
3. If images are embedded via shortcodes or page builders (Elementor, Gutenberg blocks), open the Area page in editor, select each image block, and fill its Alt Text field in the sidebar.
4. After updating, run a quick check: right-click an image in your browser, select Inspect, and confirm the <img> tag has an alt='' attribute with your text.
5. Optional: use a free WordPress plugin like 'Alt Text Generator' or 'Yoast SEO' to audit and remind you to add alt text to new uploads going forward.

### 38. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elementskit-content/dynamic-content-widget-accc2fb-99/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your site is missing JSON-LD structured data—code that tells search engines what your pages contain and how they're organized. Without it, Google cannot easily understand that you're a cannabis dispensary with products, hours, and location information. This makes it harder for you to appear in search results and local maps.

**Why it matters for your business:** Missing schema markup reduces your visibility in Google Search and Google Maps, directly limiting foot traffic and online orders from customers searching for 'cannabis near me' or your specific products.

**Technical root cause:** The page (a dynamic content widget) was generated without structured data markup. WordPress + ElementsKit do not automatically add JSON-LD schema; it must be manually inserted or added via an SEO plugin.

**Recommended fix — step by step**

1. Install Yoast SEO Free (Plugins → Add New → search 'Yoast SEO' → Install & Activate)
2. Go to Yoast SEO → General → Features tab, ensure 'XML sitemaps' and 'Schema output' are enabled
3. Edit the affected page (Pages → select the dynamic content widget page) → Yoast SEO metabox → scroll to 'Schema' tab → verify 'Page' or 'Article' schema is selected
4. If Yoast is already installed, go to Yoast SEO → Settings → Site representation → add your Business name, address, phone, and license number (key for cannabis compliance)
5. Publish/Update the page, then test at Google's Rich Results Test (https://search.google.com/test/rich-results) to confirm schema appears

### 39. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elementor-hf/header/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your site doesn't include JSON-LD structured data—machine-readable code that tells search engines what your pages are about. For a cannabis retailer, this means Google can't easily understand that you're a dispensary with products, location, hours, and licenses, so it shows less relevant information in search results.

**Why it matters for your business:** Without schema markup, you lose local search visibility (Google Maps, local pack results), product rich snippets, and credibility signals that help customers find you when searching for dispensaries nearby.

**Technical root cause:** WordPress isn't automatically outputting JSON-LD blocks. Elementor (your page builder) isn't configured to inject schema, and no SEO plugin (like Yoast, RankMath, or All in One SEO) is actively generating it for your pages.

**Recommended fix — step by step**

1. Install and activate 'Yoast SEO' (free version) via WordPress Admin → Plugins → Add New; search 'Yoast SEO', click Install Now, then Activate.
2. Go to Yoast SEO → General → Features toggle; ensure 'XML sitemaps' and 'Advanced settings pages' are ON.
3. Navigate to Yoast SEO → Search Appearance → Business; fill in 'Business Name' (Union Chill NY), 'Business Type' (Local Business / Cannabis Retailer), 'Address', 'Phone', and 'Opening Hours'.
4. For product pages: edit each product post, scroll to Yoast SEO meta box, set Schema type to 'Product' and fill Product name, price, availability.
5. For location/hours: go to Yoast SEO → Search Appearance → Local Business → fill 'Multiple Locations' if you have them, or single location details.
6. Test output: visit a product page, View Page Source (Ctrl+U), search for '"@type": "Product"' or '"@type": "LocalBusiness"' to confirm schema is rendering.
7. Submit updated sitemap to Google Search Console (if you have access) so Google re-crawls with new schema.

### 40. 39 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elementor-hf/header/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Your site has 39 images without alt text—alternative text that describes what's in each image. Search engines and assistive technologies (screen readers used by people with vision loss) can't understand what these images show. This creates a double problem: visitors who rely on screen readers get a worse experience, and Google may rank your product pages lower because the content isn't fully readable to search bots.

**Why it matters for your business:** Missing alt text reduces your search visibility for product-related queries and excludes customers with visual disabilities from your store, potentially violating accessibility laws and limiting your market reach.

**Technical root cause:** Images in Elementor (your page builder) were inserted without filling in the alt text field during upload or placement. Elementor doesn't auto-generate alt text, so it defaults to empty unless manually added per image.

**Recommended fix — step by step**

1. Log in to WordPress admin → Media Library, filter by 'Unattached' or sort by upload date to find recent images.
2. For each image, click Edit, scroll to 'Alt Text' field, and write a concise 5–10 word description (e.g., 'Cannabis flower buds, GMO strain, indoor grow' not just 'image' or 'photo').
3. In WordPress admin, navigate to Pages, open the affected page (https://unionchillny.com/elementor-hf/header/), click Edit with Elementor, select each image widget, and fill the 'Alternative Text' field in the right panel.
4. Install the free plugin Yoast SEO → go to Tools → Image SEO and use the bulk-edit view to add alt text to remaining images in batches.
5. For future uploads: always add alt text in the Media Library *before* inserting into Elementor. Create a simple team checklist: 'Describe product strain, color, or effect clearly and include dominant cannabinoid if visible.'
6. Run a re-scan using Google PageSpeed Insights (paste your URL) → Lighthouse → Accessibility tab to confirm improvements.

### 41. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elementor-hf/footer/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your site doesn't include JSON-LD structured data—a standardized code format that tells search engines what your content is about. Without it, Google can't easily understand key details like your business name, address, hours, products, or reviews. This is especially important for local cannabis retailers, where search engines need to verify compliance and legitimacy.

**Why it matters for your business:** Missing schema reduces your visibility in local search results and Google Maps, making it harder for customers to find you when they search for 'dispensary near me' or 'buy cannabis in NY.' It also signals to search engines that your site may be less trustworthy.

**Technical root cause:** The WordPress site (or Elementor theme) has not been configured to output schema.org JSON-LD blocks in the page head. Most WordPress SEO plugins include schema generation, but it must be enabled and configured per page type.

**Recommended fix — step by step**

1. Install Yoast SEO Free (if not already active): go to Plugins → Add New → search 'Yoast SEO' → Install & Activate.
2. Go to Yoast SEO → Settings → Organization & edit the Organization details: business name 'Union Chill NY', address, phone, license number/URL (if publicly shareable per NY regulations), and hours.
3. Go to Yoast SEO → Settings → Site connections → enable Local Business schema and fill in the 'Business type' as 'Cannabis Dispensary' (or closest match).
4. For product pages (if you list strains/products): edit each product post → Yoast SEO block → set Content type to 'Product' → fill in price, availability, brand.
5. For your homepage: edit the homepage → Yoast SEO block → set Content type to 'Organization' and confirm Organization data syncs.
6. Visit https://search.google.com/test/rich-results and paste your homepage URL to validate schema output appears.
7. Resubmit your site to Google Search Console → Coverage tab to trigger a re-crawl.

### 42. 39 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/elementor-hf/footer/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Your site has 39 images without alt text—text descriptions that screen readers use to tell visually impaired visitors what an image shows. This also helps search engines understand your images, which can improve rankings for image search and boost overall SEO performance.

**Why it matters for your business:** Missing alt text makes your site harder for people with vision loss to navigate, exposes you to ADA compliance risk, and wastes SEO value in Google Images—where cannabis product photos and dispensary photos could drive local traffic.

**Technical root cause:** Images were likely uploaded and inserted into Elementor (WordPress visual builder) without filling in the alt text field during upload or editing. This is common when bulk-uploading or using stock photos.

**Recommended fix — step by step**

1. In WordPress, go to Media → Library and filter by images used on your site.
2. Open each image's edit modal (click the pencil icon) and fill in the 'Alt Text' field with a brief, descriptive phrase (e.g., 'Union Chill dispensary storefront' or 'cannabis flower product close-up').
3. For product images, include the strain name or product type; for photos of the space or team, describe the scene briefly.
4. If using Elementor, you can also right-click an image in the editor → Edit Image → Alt Text tab and add text there.
5. Use a WordPress audit plugin like SEMrush SEO or Yoast SEO (free version) → Tools → Site Audit to re-scan and confirm all images now have alt text.
6. Prioritize images on homepage, product pages, and footer (the affected URL shows footer images also lack alt)—these are most visible to visitors and search engines.

### 43. 16 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/category/blog/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Your blog category page has 16 images with no descriptive alt text. Alt text is the text search engines and screen readers use to understand what an image shows. Without it, people using assistive technology can't understand those images, and search engines can't index them properly.

**Why it matters for your business:** Missing alt text reduces your organic search visibility for image-based searches and blocks visually impaired visitors from engaging with your blog content, shrinking your audience and hurting SEO rankings.

**Technical root cause:** Images were likely uploaded to WordPress without filling in the alt text field during upload, or were added via older posts that predate alt text best practices.

**Recommended fix — step by step**

1. Log into WordPress admin → Media Library, filter by 'Unattached' or manually review recent uploads
2. For each image on /category/blog/, click it → hover 'Edit' → open the Media modal → fill 'Alt Text' field with a 5–10 word description of what the image shows (e.g., 'Cannabis leaf on wooden surface' not 'image123')
3. If images are embedded in blog posts, edit each post → click the image → click the pencil icon → fill 'Alternative Text' field → click 'Update'
4. Install the free plugin 'Bulk Rename Attachments' or 'Complete Bulk Image Alt Text' to speed up the process for remaining images
5. Set a WordPress template or checkbox reminder: every new image upload must include alt text before publishing
6. Run an SEO plugin like Yoast SEO or All in One SEO → Tools → check 'Images without alt text' to spot new gaps quarterly

### 44. 16 image(s) missing alt text

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/author/admin-union/
- **Rule:** `tier2.a11y.img-missing-alt`

**What it means (plain English)**

Every image on your site should have descriptive alt text — a short text description that screen readers read aloud to blind or low-vision visitors, and that search engines use to understand what the image shows. Right now, 16 images on your author page have no alt text at all, making them invisible to both accessibility tools and search engines.

**Why it matters for your business:** Missing alt text hurts your SEO rankings, excludes customers using screen readers (a legal accessibility risk), and reduces the chances that image search traffic finds your products.

**Technical root cause:** Images were uploaded to WordPress without alt text filled in, or the theme/page builder didn't enforce alt text as a required field during upload.

**Recommended fix — step by step**

1. Log into WordPress admin → Media Library, filter by 'Unattached' or search for images from the author page URL
2. Click each image and add a concise, descriptive alt text (e.g., 'Union Chill cannabis flower package on white background' or 'Team member Sarah at dispensary counter')
3. For product images, include the product name and key attribute (strain, format, etc.)
4. Alternatively, go to WordPress admin → Pages/Posts → find the author page → click 'Edit' and select each image block to add alt text directly in the block settings
5. Save changes and run a re-scan with an accessibility tool (e.g., WAVE or axe DevTools browser extension) to confirm all 16 are now filled

### 45. Mobile perf measurement failed

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** performance
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier3.perf.mobile-fail`

**What it means (plain English)**

Our automated performance testing tool timed out when trying to load your homepage on mobile—it waited 60 seconds and gave up. This means the page either took longer than a minute to fully load, or it got stuck waiting for background network activity to finish. We couldn't measure mobile performance metrics (speed, responsiveness) as a result.

**Why it matters for your business:** Slow mobile load times frustrate customers trying to find your dispensary, check hours, or verify your license—especially on slower cellular connections—which directly reduces visits and sales.

**Technical root cause:** The page is likely loading heavy unoptimized images, slow third-party scripts (ads, analytics, chat widgets), or the WordPress server itself is responding slowly. The 'networkidle' condition means the page kept making requests beyond the reasonable load window.

**Recommended fix — step by step**

1. Log in to WordPress admin → Tools → Site Health and note any warnings about performance or server resources.
2. Go to Media library, identify the largest image files (likely hero images or product photos), and re-export them at 1200px width max using a tool like TinyPNG or Squoosh before re-uploading.
3. Install the free plugin Autoptimize (Plugins → Add New → search 'Autoptimize' → Install & Activate) to minify CSS/JS and defer non-critical scripts.
4. Go to Settings → Autoptimize → check 'Optimize CSS Code' and 'Optimize JavaScript Code', then check 'Defer non-aggregated JS files' and save.
5. Install WP Super Cache (Plugins → Add New → search 'WP Super Cache' → Install & Activate) to serve cached HTML pages to repeat visitors.
6. Check Plugins list for any unused plugins (chat, pop-ups, analytics trackers) and deactivate/delete them—each adds load time.
7. Request your hosting provider run a performance audit or check server CPU/memory usage during peak hours; if hosting is undersized, consider a faster plan.

### 46. No H1 on homepage

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier4.h1.missing`

**What it means (plain English)**

Your homepage doesn't have an H1 tag — the main headline that tells search engines and screen readers what the page is about. Search engines use this to understand your page's topic, and people using assistive technology rely on it to navigate. Without it, both SEO and accessibility suffer.

**Why it matters for your business:** Missing H1 reduces your homepage's ability to rank for key terms like 'cannabis dispensary near me' or 'NY weed shop', and makes your site harder to use for visitors with disabilities — a growing audience and a compliance risk.

**Technical root cause:** The homepage likely uses a logo, image, or generic text styled as a heading instead of a proper H1 HTML element, or the H1 is missing entirely from the template.

**Recommended fix — step by step**

1. Log into WordPress admin → Pages → Home (or whichever page is set as your homepage)
2. In the editor, identify the main headline/title of the page (e.g., 'Welcome to Union Chill NY' or your primary value proposition)
3. Select that text and use the 'Heading' dropdown in the toolbar; choose 'Heading 1 (H1)' from the list
4. If your theme uses a Gutenberg block editor, ensure the headline is in an H1 block (not a Paragraph or custom block); if using classic editor, wrap it with <h1> tags in HTML view
5. Save the page and visit https://unionchillny.com/ in an incognito browser to confirm the H1 appears
6. Optional: use a free tool like https://www.seobility.net/en/seocheck/ to verify the H1 is now detected

### 47. Missing core schema types: Organization, LocalBusiness, WebSite

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier4.schema.missing-core`

**What it means (plain English)**

Your website is not publishing structured data — machine-readable information about your business, location, and site. Search engines use this to understand what you are, where you're located, and how to display your business in search results and maps. Without it, Google and other search engines have to guess, which often means they display incomplete or incorrect information about Union Chill.

**Why it matters for your business:** Missing structured data directly reduces your visibility in local search results, Google Maps, and knowledge panels — all critical for a cannabis retail location where customers search 'dispensary near me' or 'weed shop in New York.'

**Technical root cause:** WordPress is not automatically generating or outputting Organization, LocalBusiness, and WebSite schema.org JSON-LD blocks in the page head. This usually happens when no SEO plugin is configured, or the plugin is disabled for these schema types.

**Recommended fix — step by step**

1. Install the Yoast SEO plugin (free version) via WordPress Admin → Plugins → Add New → search 'Yoast SEO' → Install Now → Activate.
2. Go to Yoast SEO → Settings → Search Appearance → Knowledge Graph section and enter your business name, logo URL, and select 'Organization' as your entity type.
3. Navigate to Yoast SEO → Settings → Search Appearance → Local Business and fill in: business type (select 'Shop'), address, phone number, and service area (New York).
4. In Yoast SEO → Settings → Search Appearance → Website, confirm your site name and tagline are filled in.
5. Go to Yoast SEO → Settings → Integrations and connect to Google Search Console (paste your property URL to verify ownership).
6. Save all settings and visit your homepage in a browser, then right-click → View Page Source and search for '"@context": "https://schema.org"' to confirm schema blocks are now present.
7. Submit your homepage URL to Google Search Console → URL Inspection to force a re-crawl and index refresh.

### 48. Missing security header: content-security-policy

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** security
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier5.header.content-security-policy`

**What it means (plain English)**

Your site is missing a Content Security Policy (CSP) header — a security rule that tells browsers which sources (scripts, images, styles) are allowed to load. Without it, attackers could inject malicious code more easily. This is particularly important for a cannabis retailer handling customer data and payment information.

**Why it matters for your business:** A CSP breach could expose customer information, compromise your reputation, and potentially violate state cannabis compliance requirements around data protection.

**Technical root cause:** WordPress sites hosted behind Cloudflare typically need CSP configured either at the application level (via WordPress plugin or .htaccess) or at the Cloudflare Workers/Page Rules level. Currently, no CSP directive is being sent in the HTTP response headers.

**Recommended fix — step by step**

1. Log into Cloudflare dashboard → select unionchillny.com domain → navigate to Security → Content Security Policy
2. If CSP option exists, click 'Create Policy' and enable Managed CSP, or manually add a baseline policy: default-src 'self'; script-src 'self' 'unsafe-inline' cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;
3. Alternatively, access WordPress admin → Plugins → search 'security' or 'CSP' → install a plugin like 'WP Content Security Policy' or 'All In One Security'
4. If using a security plugin (e.g., Wordfence, Sucuri), navigate to its settings and enable 'Add Content Security Policy Header'
5. Test the fix by visiting https://unionchillny.com in a browser, opening Developer Tools (F12) → Network tab, reload, and verify 'content-security-policy' appears in the Response Headers
6. Start with a permissive policy (report-only mode) for 1 week to catch errors, then switch to enforced mode

### 49. 53 tap targets under 44px at mobile-375

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier6.a11y.small-targets`

**What it means (plain English)**

Your site has 53 buttons, links, and other clickable elements that are smaller than 44×44 pixels on mobile phones. WCAG 2.5.5 is an accessibility standard (used in many U.S. states' digital accessibility laws) that requires interactive elements to be large enough for users with limited dexterity, tremors, or vision impairments to tap accurately. On a narrow screen, small targets frustrate all users—they cause mis-taps and cart abandonment.

**Why it matters for your business:** Visitors with accessibility needs or on older phones will abandon your site, reducing orders and exposing Union Chill to potential accessibility complaints or litigation, especially since New York has strong ADA enforcement.

**Technical root cause:** Your theme or custom CSS likely sets button, link, and form input padding/dimensions without enforcing a 44px minimum at mobile viewport. Mobile-first CSS was either not applied or inherited from desktop-optimized styles.

**Recommended fix — step by step**

1. Open WordPress Admin → Appearance → Customize. Go to Mobile Display settings and check if there is a 'Minimum Touch Target' or 'Button Padding' option. If not, proceed to next step.
2. Go to Appearance → Additional CSS and add this rule: @media (max-width: 600px) { button, a[role='button'], input[type='submit'], input[type='button'], .menu a, .cart a { min-width: 44px; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; } }
3. Test on mobile at 375px width using Chrome DevTools (F12 → Device Toolbar). Click each small element to confirm it now meets 44×44.
4. If buttons still appear small after CSS, check your theme's button.css or style.css in Appearance → File Editor. Look for padding: or height: rules on button and a[role='button'] selectors and increase padding to at least 12px on all sides.
5. If your navigation menu is custom or from a plugin (e.g., Elementor, Divi), open that plugin's menu settings and set 'Link Padding' or 'Item Height' to minimum 44px at mobile breakpoint.
6. Once updated, run a mobile audit via WAVE (wave.webaim.org) or axe DevTools browser extension to verify count drops to <5 exceptions.

### 50. 50 tap targets under 44px at tablet-768

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier6.a11y.small-targets`

**What it means (plain English)**

Your website has 50 interactive buttons, links, and form fields that are smaller than 44×44 pixels when viewed on a tablet. This makes them difficult to tap accurately, especially for visitors with motor control challenges or anyone using a touchscreen. WCAG 2.5.5 is an accessibility standard that ensures all clickable elements are large enough to hit reliably.

**Why it matters for your business:** Customers on tablets and mobile devices — a large portion of dispensary traffic — may struggle to navigate your menu, add items to cart, or complete age verification, leading to abandoned visits and lost sales.

**Technical root cause:** Your theme or custom CSS is likely setting button padding, font sizes, and link areas below 44px in height or width at tablet viewport widths (768px). This often occurs when designs are optimized for desktop and shrink too much on medium screens without responsive adjustments.

**Recommended fix — step by step**

1. Open WordPress Admin → Customize (or your page builder) and switch to tablet preview (768px width) to identify which elements feel cramped to tap
2. In your theme's CSS file (Appearance → Customize → Additional CSS, or child theme's style.css), add minimum padding rules: all buttons and links should have at least 12px padding + a min-height/min-width of 44px
3. For your age-gate popup and checkout buttons specifically, set explicit CSS: `button { min-height: 44px; min-width: 44px; padding: 12px 16px; }` to prioritize compliance
4. Test each interactive element (menu toggles, 'Add to Cart', 'Verify Age', form inputs, filters) at 768px viewport and verify you can tap them with one finger without zooming
5. If using a page builder (Elementor, WP Bakery, etc.), select problem buttons → increase padding in the builder's spacing panel until they appear 44px or larger
6. Use the WAVE or Accessibility Insights browser extension set to tablet viewport to re-check your progress
7. Document the change in a comment in your CSS file: `/* WCAG 2.5.5 target size fix: 44px min for tablet accessibility */

### 51. Lighthouse bestPractices (mobile): 61/100

- **Severity:** P2   |   **Priority:** 🟠 HIGH
- **Effort:** Moderate (1-3 hours)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.bestPractices-mobile`

**What it means (plain English)**

Your mobile site is scoring 61/100 on Google's best practices checklist — below the healthy target of 90. This means visitors may encounter outdated browser APIs, unoptimized images, or third-party scripts that slow things down or cause unexpected behavior. The Lighthouse report details exactly which best practices are failing; you'll find them in the HTML report linked in the audit evidence.

**Why it matters for your business:** A low best practices score signals to search engines (and customers) that your site may be unreliable or slow, harming both SEO rankings and customer trust — critical for a cannabis retailer competing on user experience and compliance perception.

**Technical root cause:** Common causes include unoptimized third-party scripts (ads, analytics, age-gate vendors), outdated WordPress plugins, images served in inefficient formats, missing security headers, or JavaScript that blocks page rendering. The specific failures are itemized in your Lighthouse HTML report.

**Recommended fix — step by step**

1. Download and open the Lighthouse HTML report (lighthouse-mobile.html) from the audit evidence folder; scroll to 'Best Practices' section and note each failed audit (e.g., 'Avoids deprecated APIs', 'Uses HTTPS', 'Images in modern formats')
2. In WordPress admin, go to Plugins → Installed Plugins and deactivate any unused or outdated plugins; re-test after each deactivation to isolate culprits
3. Install and configure WP Rocket or Autoptimize (free) to lazy-load images, minify CSS/JS, and defer non-critical JavaScript — then re-run Lighthouse to measure improvement
4. Check Settings → General → Home URL and Site URL to ensure both use HTTPS (not HTTP); if not, use Really Simple SSL plugin to force HTTPS site-wide
5. Review any third-party age-gate, payment, or age-verification plugins for outdated code; contact vendor support if the plugin hasn't been updated in 2+ years
6. In WordPress, install Image Optimization plugin (ShortPixel or Smush) to convert JPGs/PNGs to modern WebP format automatically
7. Re-run Lighthouse Mobile (via Chrome DevTools → Lighthouse → Mobile) after each fix and aim to reach 85+; share updated report with your team

### 52. Missing meta description

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/hello-world/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

Your 'Hello World' blog post page doesn't have a meta description — the 50–160 character summary that appears below your page title in Google search results. Search engines and visitors use this snippet to understand what your page is about before clicking.

**Why it matters for your business:** Without a meta description, Google may auto-generate a poor snippet or show nothing, reducing click-through rates from search results and making your content less discoverable to customers searching for cannabis products or dispensary info.

**Technical root cause:** WordPress doesn't auto-generate meta descriptions by default. Either no SEO plugin is active, or the plugin (like Yoast SEO or Rank Math) hasn't been configured to add descriptions to this post.

**Recommended fix — step by step**

1. Install Yoast SEO plugin (if not already active): Go to WordPress Admin → Plugins → Add New → search 'Yoast SEO' → Install and Activate.
2. Edit the 'Hello World' post: WordPress Admin → Posts → Hello World → scroll to the Yoast SEO box at the bottom.
3. Fill in the 'Meta description' field with 120–160 characters describing the post content (e.g., 'Learn about cannabis wellness tips and community updates from Union Chill NY.').
4. Click 'Update' to save the post.
5. Once Yoast is active, set a default description template for all future posts: Yoast SEO → Settings → Titles & Metas → set a fallback pattern like '%%title%% | Union Chill NY'.

### 53. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-4/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your blog post about winter activities in Corning doesn't include JSON-LD structured data—a code block that tells Google what the content is about (an article, a product, an event, etc.). Without it, search engines have to guess the page's topic and may rank it lower or display it poorly in search results.

**Why it matters for your business:** Blog posts about local activities and events help drive organic traffic to your dispensary. Missing structured data means Google may not understand the content well enough to show it to nearby customers searching for things to do—reducing visibility and foot traffic.

**Technical root cause:** WordPress is not automatically outputting JSON-LD schema.org markup for blog posts. Either the theme lacks schema support, or an SEO plugin that would generate it (like Yoast or RankMath) is not installed or not configured.

**Recommended fix — step by step**

1. Install the free Yoast SEO plugin: WordPress Admin → Plugins → Add New → search 'Yoast SEO' → Install and Activate
2. Go to Yoast SEO → Settings → Site Connections and link your site to Google Search Console to enable schema validation
3. Edit the affected post (elevate-your-winter-activities-corning-ny-4) in WordPress → check the Yoast SEO metabox at the bottom → ensure 'Article' is selected under 'Content Type'
4. Publish/Update the post and wait 24 hours, then visit Google Search Console → URL Inspection → paste the post URL → click 'Request Indexing' to re-crawl
5. Repeat this process for other blog posts on your site, or configure Yoast to auto-generate schema for the 'post' post-type going forward

### 54. Missing meta description

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/latest-news/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

The /latest-news/ page is missing a meta description — the 150-160 character summary that appears below your page title in Google search results. Without it, Google will auto-generate a snippet from page content, which is often choppy and may not highlight your most important message. This is a quick fix in WordPress.

**Why it matters for your business:** Missing descriptions reduce click-through rates from search results; visitors may skip your news page for competitors who have clear, compelling descriptions. For a community-focused dispensary, news updates build trust and engagement, so visibility here matters.

**Technical root cause:** The WordPress page or post editor has not had a meta description field filled in, either because the SEO plugin (Yoast, Rank Math, etc.) is not active, not configured, or the field was simply left blank when the page was published.

**Recommended fix — step by step**

1. Log into WordPress admin → Posts or Pages → search for and open 'Latest News'
2. Scroll to the SEO plugin metabox (Yoast SEO, Rank Math, or All in One SEO) at the bottom of the editor
3. Click 'Edit snippet' or the meta description field and write a 150–160 character summary, e.g., 'Stay informed about Union Chill NY. Read our latest news on product drops, community events, and industry updates.'
4. Ensure the focus keyword (e.g., 'Union Chill news') appears naturally in the description
5. Click Save or Update, then verify the change in a search result preview or via Google Search Console within 24–48 hours

### 55. Missing meta description

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elementskit-content/dynamic-content-widget-accc2fb-99/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

This page is missing a meta description—the 160-character summary that appears under your page title in Google search results. Without it, Google generates a generic snippet that may not encourage clicks. This particular page appears to be a dynamically generated ElementsKit widget page, which may not be intended for public search visibility.

**Why it matters for your business:** Missing meta descriptions reduce click-through rates from search results, directly lowering organic traffic and customer discovery for your dispensary.

**Technical root cause:** The ElementsKit dynamic content widget page lacks a meta description tag in the WordPress page settings or theme header. Dynamic pages generated by page builders sometimes bypass standard SEO settings.

**Recommended fix — step by step**

1. Log into WordPress admin → Pages → find 'dynamic-content-widget-accc2fb-99' in the list
2. Click Edit and scroll to the Yoast SEO (or All in One SEO) meta description field below the editor
3. Write a 155–160 character description: e.g., 'Explore Union Chill NY's cannabis products, strains, and dispensary hours. Licensed retail in New York.'
4. If this is a test/admin page not meant for customers, add 'noindex' in Yoast SEO → Advanced → 'Allow search engines to show this page in search results?' → set to NO
5. Click Update and wait 24–48 hours for Google to re-crawl

### 56. Missing meta description

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/elementor-hf/header/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

Your website has a page missing a meta description — that's the short summary (usually 150–160 characters) that appears below your page title in Google search results. Without it, Google will auto-generate a snippet, which often looks unprofessional and may not highlight your most important information about your dispensary.

**Why it matters for your business:** Missing meta descriptions reduce click-through rates from search results because potential customers see generic or irrelevant text instead of a compelling reason to visit your site, directly impacting foot traffic and online orders.

**Technical root cause:** The page at /elementor-hf/header/ (a Elementor template/header partial) was not assigned a meta description in WordPress. This is likely a template or backend page that isn't meant for public viewing but is being indexed by search engines.

**Recommended fix — step by step**

1. Log into WordPress admin → go to Pages or Posts and search for the URL slug 'elementor-hf/header' to locate the page.
2. Click Edit on that page, then scroll to the Yoast SEO box at the bottom (or use Rank Math if installed). If neither plugin is visible, install Yoast SEO from Plugins → Add New.
3. In the SEO plugin's meta description field, write a 150–160 character description (e.g., 'Union Chill NY — Premium cannabis dispensary in New York. Browse flower, edibles, concentrates & more. Age 21+.')
4. If this is a template-only page not meant for customers, consider setting it to 'noindex' in the SEO plugin to prevent Google from ranking it.
5. Click Save/Update, then wait 2–3 days for Google to re-crawl and update search results.

### 57. Missing meta description

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/category/blog/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

Your blog category page (/category/blog/) doesn't have a meta description—the 160-character summary that appears below your page title in Google search results. Without it, Google will auto-generate one from your page content, which often looks choppy or irrelevant. This reduces click-through rates from search.

**Why it matters for your business:** Lower click-through rates from search results mean fewer visitors discovering your blog content, reducing opportunities to engage customers and build brand authority in the cannabis community.

**Technical root cause:** WordPress category pages typically inherit default settings that don't auto-populate meta descriptions. Unless explicitly set via an SEO plugin, these archive pages ship without descriptive metadata.

**Recommended fix — step by step**

1. Install Yoast SEO (if not already active) or verify it's enabled: Dashboard → Plugins → search 'Yoast SEO'
2. Navigate to Posts → Categories and click on 'Blog'
3. Scroll to the Yoast SEO section at the bottom of the category edit page
4. In the 'Meta description' field, write a 160-character summary, e.g., 'Explore Union Chill NY's cannabis blog for tips on strains, wellness, and community stories.'
5. Click 'Update' to save
6. Repeat for any other category pages (e.g., /category/news/, /category/events/) that lack descriptions

### 58. Missing canonical

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/category/blog/
- **Rule:** `tier2.meta.no-canonical`

**What it means (plain English)**

Your blog category page doesn't tell search engines which version of this page is the 'official' one. Without a canonical tag, Google might see duplicate or similar content across your site and get confused about which page to rank. This is especially risky if your blog posts appear in multiple places (e.g., in different category views or archive pages).

**Why it matters for your business:** Search engines may dilute ranking power across multiple versions of your blog content, reducing visibility for blog posts that could drive organic traffic and customer engagement to your dispensary.

**Technical root cause:** WordPress category archive pages don't automatically include a canonical tag by default. Most SEO plugins add them, but either the plugin isn't installed, isn't configured for category pages, or the setting has been disabled.

**Recommended fix — step by step**

1. Install Yoast SEO (free version) from WordPress.org plugin library if not already active: Dashboard → Plugins → Add New → search 'Yoast SEO' → Install → Activate
2. Once active, go to Yoast SEO → Settings → Site features and confirm 'Canonical URLs' is toggled ON
3. Navigate to Posts → Categories, click on 'Blog' category, scroll to the Yoast SEO meta box at the bottom, and verify the canonical URL field is populated (it should auto-generate)
4. If canonical is still missing after Yoast is active, check Dashboard → Yoast SEO → General → Crawl optimization and ensure 'Remove ?replytocom parameters' is enabled (sometimes conflicts block canonicals)
5. Clear your site cache if using a caching plugin: go to your caching plugin settings (e.g., WP Super Cache, W3 Total Cache) and select 'Purge all cache'
6. Re-check the page source (right-click → View Page Source, search for 'canonical') to confirm the tag now appears

### 59. Missing canonical

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/author/admin-union/
- **Rule:** `tier2.meta.no-canonical`

**What it means (plain English)**

This author page has no canonical tag—a HTML instruction that tells search engines which version of a page is the 'official' one. Without it, search engines may index duplicate or near-duplicate versions of this page, diluting its search ranking power and confusing crawlers about which URL should appear in results.

**Why it matters for your business:** Author pages typically rank poorly for dispensary searches, but missing canonicals here signal indexing confusion to Google, wasting crawl budget and potentially hiding your main product/location pages in search results.

**Technical root cause:** WordPress does not automatically add canonical tags to author archive pages. The theme or an SEO plugin (Yoast, Rank Math, All in One SEO) needs to inject this tag into the page head.

**Recommended fix — step by step**

1. Install or activate an SEO plugin if not already present: go to Plugins → Add New, search 'Yoast SEO' or 'Rank Math', install and activate.
2. If using Yoast SEO: go to SEO → Search Appearance → Archives, find 'Author archives', toggle 'Show author archives in search results' to OFF (disables indexing of author pages entirely, which is safest for a dispensary site).
3. If using Rank Math: go to Rank Math → Settings → Titles & Meta → Archives, find 'Author', set 'Robots meta' to 'noindex, follow' to prevent indexing.
4. If no SEO plugin is active, add this line to your theme's functions.php: `add_filter( 'wpseo_canonical', function() { if ( is_author() ) return false; } );` (requires theme file editing or child theme; contact your host if unsure).
5. Test the fix: visit https://unionchillny.com/author/admin-union/ and inspect page source (Ctrl+U or Cmd+U) to confirm either a canonical tag is present OR the page is marked noindex.

### 60. No JSON-LD schema

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/author/admin-union/
- **Rule:** `tier2.schema.none`

**What it means (plain English)**

Your author page is missing JSON-LD structured data — a standardized format that tells Google what type of content is on the page. Without it, search engines have to guess whether this is a person profile, a blog author, or something else. This is especially important for cannabis sites, where clear, machine-readable business and compliance information builds trust with search engines.

**Why it matters for your business:** Missing schema reduces the chance that your author and team credentials appear in search results, limiting your ability to build authority and trust signals that Google rewards—particularly critical in the heavily-regulated cannabis space.

**Technical root cause:** WordPress does not automatically generate JSON-LD schema for author archive pages; you need either a dedicated SEO plugin (like Yoast SEO or Rank Math) configured to emit schema, or manual markup added to the page template.

**Recommended fix — step by step**

1. Install Yoast SEO (free version) via WordPress Plugins → Add New, search 'Yoast SEO', install and activate.
2. Log in to Yoast SEO settings (Dashboard → Yoast SEO → Settings) and enable 'Author Archives' under the 'Features' tab.
3. Go to Yoast SEO → Search Appearance → Archives, find 'Author Archives', toggle it ON, and set the title template to something like '%%name%% - Cannabis Consultant at %%sitename%%'.
4. Visit https://unionchillny.com/author/admin-union/ and confirm that <script type="application/ld+json"> blocks now appear in the page source (View Page Source, Ctrl+F 'ld+json').
5. Optional: Use Google's Rich Results Test (https://search.google.com/test/rich-results) to validate the schema is correct.

### 61. A11y: Heading levels should only increase by one

- **Severity:** P2   |   **Priority:** 🟡 MEDIUM
- **Effort:** Quick win (< 30 min)
- **Business category:** accessibility
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier9.a11y.heading-order`

**What it means (plain English)**

Your site has an h5 heading (the smallest heading level) appearing without proper heading hierarchy. Headings should flow from h1 → h2 → h3, etc., in order. When screen readers encounter an h5 directly after an h1, they can't determine the content structure, making it harder for blind and low-vision visitors to navigate your site.

**Why it matters for your business:** Accessibility compliance reduces legal liability and expands your customer base to include people using assistive technology; proper heading structure also helps search engines understand your page organization.

**Technical root cause:** The cannabis license information is marked as an h5 without intermediate h2, h3, or h4 headings establishing proper nesting. This likely happened through custom theme styling or a plugin that auto-assigned heading levels.

**Recommended fix — step by step**

1. Log into WordPress admin and navigate to the page containing the license text (likely your homepage or About page).
2. Open the page in the block editor and locate the 'Cannabis License: OCM-CAURD-25-000269' text.
3. If it's a custom HTML block, edit the source: change <h5> to <h3> or <h2> depending on what other headings appear above it on the page (check the visual hierarchy).
4. If it's a paragraph block with styling applied, delete the h5 and instead: highlight the text → use the toolbar 'Heading' dropdown → select 'Heading 3' (or appropriate level).
5. Verify the heading order visually: use the Outline panel in the block editor (sidebar → Document → Outline) to confirm h1, then h2, then h3 progression.
6. Click 'Update' to save the page.
7. Run a quick accessibility check: open https://www.WAVE.webaim.org, paste your URL, and verify 'heading-order' error is gone.

### 62. Missing meta description

- **Severity:** P2   |   **Priority:** ⚪ LOW
- **Effort:** Quick win (< 30 min)
- **Business category:** seo
- **Page URL:** https://unionchillny.com/author/admin-union/
- **Rule:** `tier2.meta.no-description`

**What it means (plain English)**

Your author page (the one for "admin-union") doesn't have a meta description — a 150-160 character summary that tells search engines and visitors what the page is about. When Google shows your site in search results, it uses this description; without it, Google generates something automatically, which is often less compelling and may hurt click-through rates.

**Why it matters for your business:** Author pages rarely drive retail traffic, but missing descriptions on any public page reduce your ability to control how Union Chill appears in search results, which can suppress overall site visibility and visitor trust.

**Technical root cause:** WordPress author pages are typically auto-generated and don't have meta description fields populated by default. Unless a plugin or custom code fills this field, it remains empty.

**Recommended fix — step by step**

1. Install the free Yoast SEO plugin (Plugins → Add New → search 'Yoast SEO' → Install and Activate).
2. Go to the author page in WordPress (Users → click 'admin-union').
3. Scroll down to the Yoast SEO section and add a meta description like: 'Meet the Union Chill NY team — your trusted source for cannabis education, products, and community in New York.'
4. Click 'Update' to save.
5. Optional: Go to Yoast SEO → General Settings → Titles & Metas and set a default template for author pages so future author pages auto-populate: e.g., '%%title%% — Union Chill NY Cannabis Dispensary'.

### 63. Missing meta description

- **Severity:** P2
- **Page URL:** https://unionchillny.com/elementor-hf/footer/
- **Rule:** `tier2.meta.no-description`

**Detail**

Page has no meta description.

### 64. No JSON-LD schema

- **Severity:** P2
- **Page URL:** https://unionchillny.com/category/blog/
- **Rule:** `tier2.schema.none`

**Detail**

Page has no JSON-LD structured data blocks.

### 65. 53 tap targets under 44px at mobile-320

- **Severity:** P2
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier6.a11y.small-targets`

**Detail**

Interactive elements smaller than 44x44 fail WCAG 2.5.5 target size.

### 66. 53 tap targets under 44px at mobile-414

- **Severity:** P2
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier6.a11y.small-targets`

**Detail**

Interactive elements smaller than 44x44 fail WCAG 2.5.5 target size.

### 67. Lighthouse perf (desktop): 70/100

- **Severity:** P2
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.perf-desktop`

**Detail**

Score 70 is below target 90. See HTML report for details.

### 68. A11y: Landmarks should have a unique role or role/label/title (i.e. accessible name) combination

- **Severity:** P2
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier9.a11y.landmark-unique`

**Detail**

Ensure landmarks are unique
Impact: moderate
WCAG: 
Learn more: https://dequeuniversity.com/rules/axe/4.11/landmark-unique?application=playwright

### 69. A11y: All page content should be contained by landmarks (×23)

- **Severity:** P2
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier9.a11y.region`

**Detail**

Ensure all page content is contained by landmarks
Impact: moderate
WCAG: 
Learn more: https://dequeuniversity.com/rules/axe/4.11/region?application=playwright

---

### P3 — 68 findings

### 1. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/hello-world/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 2. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/hello-world/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 3. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 4. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 5. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-2/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 6. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-2/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 7. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-3/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 8. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-3/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 9. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-4/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 10. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-4/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 11. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-5/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 12. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-5/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 13. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-6/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 14. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-6/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 15. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-7/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 16. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-7/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 17. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-8/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 18. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elevate-your-winter-activities-corning-ny-8/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 19. Title length 11 chars

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier2.meta.title-length`

**Detail**

Title should be 20-65 chars. Got: "Union Chill"

### 20. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 21. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 22. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/about-us/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 23. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/about-us/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 24. Title length 19 chars

- **Severity:** P3
- **Page URL:** https://unionchillny.com/ethos/
- **Rule:** `tier2.meta.title-length`

**Detail**

Title should be 20-65 chars. Got: "Ethos – Union Chill"

### 25. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/ethos/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 26. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/ethos/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 27. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/latest-news/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 28. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/latest-news/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 29. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/contact/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 30. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/contact/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 31. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/location/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 32. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/location/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 33. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/area/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 34. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/area/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 35. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementskit-content/dynamic-content-widget-accc2fb-99/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 36. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementskit-content/dynamic-content-widget-accc2fb-99/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 37. 1 image(s) missing alt text

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementskit-content/dynamic-content-widget-accc2fb-99/
- **Rule:** `tier2.a11y.img-missing-alt`

**Detail**

Images without alt fail a11y + hurt SEO.

### 38. Title length 11 chars

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementor-hf/header/
- **Rule:** `tier2.meta.title-length`

**Detail**

Title should be 20-65 chars. Got: "Union Chill"

### 39. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementor-hf/header/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 40. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementor-hf/header/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 41. Title length 11 chars

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementor-hf/footer/
- **Rule:** `tier2.meta.title-length`

**Detail**

Title should be 20-65 chars. Got: "Union Chill"

### 42. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementor-hf/footer/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 43. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/elementor-hf/footer/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 44. Title length 18 chars

- **Severity:** P3
- **Page URL:** https://unionchillny.com/category/blog/
- **Rule:** `tier2.meta.title-length`

**Detail**

Title should be 20-65 chars. Got: "Blog – Union Chill"

### 45. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/category/blog/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 46. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/category/blog/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 47. Missing OpenGraph metadata

- **Severity:** P3
- **Page URL:** https://unionchillny.com/author/admin-union/
- **Rule:** `tier2.meta.no-og`

**Detail**

Page missing og:title and/or og:image.

### 48. Missing Twitter card

- **Severity:** P3
- **Page URL:** https://unionchillny.com/author/admin-union/
- **Rule:** `tier2.meta.no-twitter-card`

**Detail**

No twitter:card meta tag.

### 49. Desktop perf measurement failed

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier3.perf.desktop-fail`

**Detail**

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "https://unionchillny.com/", waiting until "networkidle"


### 50. SSL Labs grade: unknown

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier5.fortress.ssl-grade`

**Detail**

Qualys SSL Labs: SSL Labs HTTP 400. Aim for A+ via strong TLS 1.3, HSTS, CAA, and preload.

### 51. DNSSEC not enabled

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier5.fortress.dnssec-missing`

**Detail**

DNSSEC adds cryptographic verification to DNS responses. Consider enabling via your registrar.

### 52. No CAA DNS records

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier5.fortress.caa-missing`

**Detail**

CAA records restrict which CAs may issue certs for your domain, preventing rogue issuance. Add CAA for letsencrypt.org / digicert.com / etc.

### 53. DMARC policy is p=none (monitoring only)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier5.fortress.dmarc-weak`

**Detail**

DMARC published at p=none — monitoring mode only. After 2-4 weeks of clean reports, tighten to p=quarantine → p=reject.

### 54. No DKIM selectors found (standard selectors)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier5.fortress.dkim-missing`

**Detail**

Tried selectors: google, default, selector1, selector2, s1, k1 — none matched at unionchillny.com. DKIM improves deliverability + anti-spoofing.

### 55. Lighthouse a11y (mobile): 89/100

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.a11y-mobile`

**Detail**

Score 89 is below target 95. See HTML report for details.

### 56. Lighthouse seo (mobile): 85/100

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.seo-mobile`

**Detail**

Score 85 is below target 95. See HTML report for details.

### 57. LH mobile: Preconnect to required origins (Est savings of 370 ms)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.uses-rel-preconnect-mobile`

**Detail**

Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).

### 58. LH mobile: Preload Largest Contentful Paint image

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.prioritize-lcp-image-mobile`

**Detail**

If the LCP element is dynamically added to the page, you should preload the image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/articles/optimize-lcp#optimize_when_the_resource_is_discovered).

### 59. LH mobile: Defer offscreen images (Est savings of 107 KiB)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.offscreen-images-mobile`

**Detail**

Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).

### 60. LH mobile: Eliminate render-blocking resources (Est savings of 4,890 ms)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.render-blocking-resources-mobile`

**Detail**

Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).

### 61. LH mobile: Minify CSS (Est savings of 2 KiB)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.unminified-css-mobile`

**Detail**

Minifying CSS files can reduce network payload sizes. [Learn how to minify CSS](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/).

### 62. Lighthouse a11y (desktop): 89/100

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.a11y-desktop`

**Detail**

Score 89 is below target 95. See HTML report for details.

### 63. Lighthouse seo (desktop): 85/100

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lighthouse.seo-desktop`

**Detail**

Score 85 is below target 95. See HTML report for details.

### 64. LH desktop: Preconnect to required origins (Est savings of 110 ms)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.uses-rel-preconnect-desktop`

**Detail**

Consider adding `preconnect` or `dns-prefetch` resource hints to establish early connections to important third-party origins. [Learn how to preconnect to required origins](https://developer.chrome.com/docs/lighthouse/performance/uses-rel-preconnect/).

### 65. LH desktop: Preload Largest Contentful Paint image

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.prioritize-lcp-image-desktop`

**Detail**

If the LCP element is dynamically added to the page, you should preload the image in order to improve LCP. [Learn more about preloading LCP elements](https://web.dev/articles/optimize-lcp#optimize_when_the_resource_is_discovered).

### 66. LH desktop: Defer offscreen images (Est savings of 114 KiB)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.offscreen-images-desktop`

**Detail**

Consider lazy-loading offscreen and hidden images after all critical resources have finished loading to lower time to interactive. [Learn how to defer offscreen images](https://developer.chrome.com/docs/lighthouse/performance/offscreen-images/).

### 67. LH desktop: Eliminate render-blocking resources (Est savings of 440 ms)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.render-blocking-resources-desktop`

**Detail**

Resources are blocking the first paint of your page. Consider delivering critical JS/CSS inline and deferring all non-critical JS/styles. [Learn how to eliminate render-blocking resources](https://developer.chrome.com/docs/lighthouse/performance/render-blocking-resources/).

### 68. LH desktop: Minify CSS (Est savings of 2 KiB)

- **Severity:** P3
- **Page URL:** https://unionchillny.com/
- **Rule:** `tier8.lh-opportunity.unminified-css-desktop`

**Detail**

Minifying CSS files can reduce network payload sizes. [Learn how to minify CSS](https://developer.chrome.com/docs/lighthouse/performance/unminified-css/).

---

## Findings by Page

Grouped by URL — useful when working through the site one page at a time.

### https://unionchillny.com/
_46 findings on this page_

- **[P1] 1 mixed-content references (http://)** 🔴 DO FIRST
  Your website loads over HTTPS (secure), but one resource is being loaded from an unencrypted HTTP link — specifically to oasas.ny.gov/HOPELine. Modern browsers will block this resource or show a secur
- **[P1] Lighthouse perf (mobile): 34/100** 🔴 DO FIRST
  Your mobile site takes 32.5 seconds for the largest text/image to appear on screen (Lighthouse calls this LCP). Visitors see a blank or incomplete page for most of that time, then the content finally 
- **[P1] Lighthouse bestPractices (desktop): 59/100** 🟠 HIGH
  Your site's Lighthouse best practices score is 59 out of 100, which signals problems with browser compatibility, HTTPS security, cookie handling, or third-party script loading. This isn't immediately 
- **[P1] A11y: ARIA dialog and alertdialog nodes should have an accessible name** 🔴 DO FIRST
  Your site has an age-gate dialog (the "baag3-gate" element) that doesn't have a proper accessible name. This means screen readers can't announce what the dialog is for, leaving visually impaired visit
- **[P1] A11y: Elements must meet minimum color contrast ratio thresholds (×47)** 🔴 DO FIRST
  Your website has 47 places where text and background colors don't have enough contrast — meaning visitors with low vision or color blindness will struggle to read them. The audit found buttons and bad
- **[P1] A11y: Links must have discernible text (×11)** 🔴 DO FIRST
  Your website has 11 links that screen readers cannot properly identify. This happens when links contain only images without alt text, or when links have no visible or hidden text label. People using a
- **[P1] Journey failed: default: homepage → age gate → menu visible** 🔴 DO FIRST
  Your site is trying to load JavaScript files, but the server is sending them back as HTML instead of JavaScript. Modern browsers reject this for security reasons—it's like asking for a book and receiv
- **[P2] Missing meta description** 🟠 HIGH
  Your homepage doesn't have a meta description—the 155-character summary that appears below your page title in Google search results. Without it, Google generates a random excerpt from your page, which
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your homepage doesn't include JSON-LD structured data — a standardized format that tells search engines what your business is, where it's located, and what you sell. Without it, Google has to guess yo
- **[P2] 39 image(s) missing alt text** 🟠 HIGH
  Your site has 39 images without alt text (descriptive text read by screen readers and search engines). This means visually impaired customers cannot understand what those images show, and search engin
- **[P2] Mobile perf measurement failed** 🟠 HIGH
  Our automated performance testing tool timed out when trying to load your homepage on mobile—it waited 60 seconds and gave up. This means the page either took longer than a minute to fully load, or it
- **[P2] No H1 on homepage** 🟠 HIGH
  Your homepage doesn't have an H1 tag — the main headline that tells search engines and screen readers what the page is about. Search engines use this to understand your page's topic, and people using 
- **[P2] Missing core schema types: Organization, LocalBusiness, WebSite** 🟠 HIGH
  Your website is not publishing structured data — machine-readable information about your business, location, and site. Search engines use this to understand what you are, where you're located, and how
- **[P2] Missing security header: content-security-policy** 🟠 HIGH
  Your site is missing a Content Security Policy (CSP) header — a security rule that tells browsers which sources (scripts, images, styles) are allowed to load. Without it, attackers could inject malici
- **[P2] 53 tap targets under 44px at mobile-320** 
- **[P2] 53 tap targets under 44px at mobile-375** 🟠 HIGH
  Your site has 53 buttons, links, and other clickable elements that are smaller than 44×44 pixels on mobile phones. WCAG 2.5.5 is an accessibility standard (used in many U.S. states' digital accessibil
- **[P2] 53 tap targets under 44px at mobile-414** 
- **[P2] 50 tap targets under 44px at tablet-768** 🟠 HIGH
  Your website has 50 interactive buttons, links, and form fields that are smaller than 44×44 pixels when viewed on a tablet. This makes them difficult to tap accurately, especially for visitors with mo
- **[P2] Lighthouse bestPractices (mobile): 61/100** 🟠 HIGH
  Your mobile site is scoring 61/100 on Google's best practices checklist — below the healthy target of 90. This means visitors may encounter outdated browser APIs, unoptimized images, or third-party sc
- **[P2] Lighthouse perf (desktop): 70/100** 
- **[P2] A11y: Heading levels should only increase by one** 🟡 MEDIUM
  Your site has an h5 heading (the smallest heading level) appearing without proper heading hierarchy. Headings should flow from h1 → h2 → h3, etc., in order. When screen readers encounter an h5 directl
- **[P2] A11y: Landmarks should have a unique role or role/label/title (i.e. accessible name) combination** 
- **[P2] A11y: All page content should be contained by landmarks (×23)** 
- **[P3] Title length 11 chars** 
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 
- **[P3] Desktop perf measurement failed** 
- **[P3] SSL Labs grade: unknown** 
- **[P3] DNSSEC not enabled** 
- **[P3] No CAA DNS records** 
- **[P3] DMARC policy is p=none (monitoring only)** 
- **[P3] No DKIM selectors found (standard selectors)** 
- **[P3] Lighthouse a11y (mobile): 89/100** 
- **[P3] Lighthouse seo (mobile): 85/100** 
- **[P3] LH mobile: Preconnect to required origins (Est savings of 370 ms)** 
- **[P3] LH mobile: Preload Largest Contentful Paint image** 
- **[P3] LH mobile: Defer offscreen images (Est savings of 107 KiB)** 
- **[P3] LH mobile: Eliminate render-blocking resources (Est savings of 4,890 ms)** 
- **[P3] LH mobile: Minify CSS (Est savings of 2 KiB)** 
- **[P3] Lighthouse a11y (desktop): 89/100** 
- **[P3] Lighthouse seo (desktop): 85/100** 
- **[P3] LH desktop: Preconnect to required origins (Est savings of 110 ms)** 
- **[P3] LH desktop: Preload Largest Contentful Paint image** 
- **[P3] LH desktop: Defer offscreen images (Est savings of 114 KiB)** 
- **[P3] LH desktop: Eliminate render-blocking resources (Est savings of 440 ms)** 
- **[P3] LH desktop: Minify CSS (Est savings of 2 KiB)** 

### https://unionchillny.com/category/blog/
_7 findings on this page_

- **[P2] Missing meta description** 🟡 MEDIUM
  Your blog category page (/category/blog/) doesn't have a meta description—the 160-character summary that appears below your page title in Google search results. Without it, Google will auto-generate o
- **[P2] Missing canonical** 🟡 MEDIUM
  Your blog category page doesn't tell search engines which version of this page is the 'official' one. Without a canonical tag, Google might see duplicate or similar content across your site and get co
- **[P2] No JSON-LD schema** 
- **[P2] 16 image(s) missing alt text** 🟠 HIGH
  Your blog category page has 16 images with no descriptive alt text. Alt text is the text search engines and screen readers use to understand what an image shows. Without it, people using assistive tec
- **[P3] Title length 18 chars** 
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/ethos/
_6 findings on this page_

- **[P2] Missing meta description** 🟠 HIGH
  The /ethos/ page lacks a meta description—the 155-character summary that appears below your page title in Google search results. Without it, Google generates a random excerpt from your page content, w
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your website isn't using JSON-LD (a standardized code format that tells search engines what your content is about). Search engines like Google can still index your pages, but they have to guess at det
- **[P2] 17 image(s) missing alt text** 🟠 HIGH
  Your /ethos/ page has 17 images with no alt text — short descriptions that screen readers use to tell visually impaired visitors what the images show. Without alt text, those visitors can't understand
- **[P3] Title length 19 chars** 
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elementor-hf/header/
_6 findings on this page_

- **[P2] Missing meta description** 🟡 MEDIUM
  Your website has a page missing a meta description — that's the short summary (usually 150–160 characters) that appears below your page title in Google search results. Without it, Google will auto-gen
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your site doesn't include JSON-LD structured data—machine-readable code that tells search engines what your pages are about. For a cannabis retailer, this means Google can't easily understand that you
- **[P2] 39 image(s) missing alt text** 🟠 HIGH
  Your site has 39 images without alt text—alternative text that describes what's in each image. Search engines and assistive technologies (screen readers used by people with vision loss) can't understa
- **[P3] Title length 11 chars** 
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elementor-hf/footer/
_6 findings on this page_

- **[P2] Missing meta description** 
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your site doesn't include JSON-LD structured data—a standardized code format that tells search engines what your content is about. Without it, Google can't easily understand key details like your busi
- **[P2] 39 image(s) missing alt text** 🟠 HIGH
  Your site has 39 images without alt text—text descriptions that screen readers use to tell visually impaired visitors what an image shows. This also helps search engines understand your images, which 
- **[P3] Title length 11 chars** 
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/author/admin-union/
_6 findings on this page_

- **[P2] Missing meta description** ⚪ LOW
  Your author page (the one for "admin-union") doesn't have a meta description — a 150-160 character summary that tells search engines and visitors what the page is about. When Google shows your site in
- **[P2] Missing canonical** 🟡 MEDIUM
  This author page has no canonical tag—a HTML instruction that tells search engines which version of a page is the 'official' one. Without it, search engines may index duplicate or near-duplicate versi
- **[P2] No JSON-LD schema** 🟡 MEDIUM
  Your author page is missing JSON-LD structured data — a standardized format that tells Google what type of content is on the page. Without it, search engines have to guess whether this is a person pro
- **[P2] 16 image(s) missing alt text** 🟠 HIGH
  Every image on your site should have descriptive alt text — a short text description that screen readers read aloud to blind or low-vision visitors, and that search engines use to understand what the 
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/hello-world/
_5 findings on this page_

- **[P2] Missing meta description** 🟡 MEDIUM
  Your 'Hello World' blog post page doesn't have a meta description — the 50–160 character summary that appears below your page title in Google search results. Search engines and visitors use this snipp
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your website is missing JSON-LD structured data—a machine-readable format that tells Google what your pages are about. Without it, search engines have to guess whether a page is a blog post, a product
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  Every image on your site should have alt text—a short description that screen readers read aloud to blind visitors and that search engines use to understand what the image shows. Your 'Hello World' pa
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/about-us/
_5 findings on this page_

- **[P2] Missing meta description** 🟠 HIGH
  Your About Us page is missing a meta description — the 155-character summary that appears under your page title in Google search results. Without it, Google generates a random snippet from your page t
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your website doesn't include JSON-LD structured data—a standardized format that tells search engines what your page is about. For a dispensary, this means Google can't easily understand your location,
- **[P2] 17 image(s) missing alt text** 🟠 HIGH
  Your about-us page has 17 images with no alt text — the written descriptions that screen readers use to tell blind/low-vision visitors what an image shows. Without alt text, those visitors see nothing
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/latest-news/
_5 findings on this page_

- **[P2] Missing meta description** 🟡 MEDIUM
  The /latest-news/ page is missing a meta description — the 150-160 character summary that appears below your page title in Google search results. Without it, Google will auto-generate a snippet from p
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your news page doesn't include JSON-LD structured data—machine-readable code that tells Google what your content is about. Without it, search engines have to guess whether a page is a news article, a 
- **[P2] 17 image(s) missing alt text** 🟠 HIGH
  All 17 images on your Latest News page are missing alt text — text descriptions that screen readers use to tell blind or low-vision visitors what each image shows. This also means search engines can't
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/contact/
_5 findings on this page_

- **[P2] Missing meta description** 🟠 HIGH
  The contact page is missing a meta description — the 155-character summary that appears under your page title in Google search results. Without it, Google may auto-generate a snippet that doesn't high
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your Contact page doesn't include structured data — machine-readable code that tells search engines what your page is about. For a dispensary, this means Google can't automatically understand your hou
- **[P2] 9 image(s) missing alt text** 🟠 HIGH
  Every image on your Contact page is missing alt text — a short description that screen readers read aloud to blind/low-vision visitors, and that search engines use to understand what an image shows. T
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/location/
_5 findings on this page_

- **[P2] Missing meta description** 🟠 HIGH
  The location page is missing a meta description—the 160-character snippet that appears under your page title in Google search results. Without it, Google generates a random excerpt from your page cont
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your location page doesn't include JSON-LD structured data — a block of code that tells search engines (like Google) what your page is about in machine-readable format. For a cannabis dispensary, this
- **[P2] 9 image(s) missing alt text** 🟠 HIGH
  Every image on your location page is missing alt text—the descriptive labels that screen readers use to tell visitors what an image shows, and that search engines use to understand your content. This 
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/area/
_5 findings on this page_

- **[P2] Missing meta description** 🟠 HIGH
  Your /area/ page doesn't have a meta description — that's the 155-character summary that appears under your URL in Google search results. Without it, Google generates random snippets from your page co
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your site isn't using JSON-LD structured data — a machine-readable format that tells Google and other search engines what your pages are about. Without it, search engines have to guess at your content
- **[P2] 14 image(s) missing alt text** 🟠 HIGH
  Every image on your Area page is missing alt text—a short description that screen readers read aloud to blind visitors and that search engines use to understand what images show. Right now, those 14 i
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elementskit-content/dynamic-content-widget-accc2fb-99/
_5 findings on this page_

- **[P2] Missing meta description** 🟡 MEDIUM
  This page is missing a meta description—the 160-character summary that appears under your page title in Google search results. Without it, Google generates a generic snippet that may not encourage cli
- **[P2] No JSON-LD schema** 🟠 HIGH
  Your site is missing JSON-LD structured data—code that tells search engines what your pages contain and how they're organized. Without it, Google cannot easily understand that you're a cannabis dispen
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 
- **[P3] 1 image(s) missing alt text** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟠 HIGH
  Your site isn't using JSON-LD structured data—a machine-readable format that tells Google what your content is about (e.g., a blog post, product, local business). Without it, search engines have to gu
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  Eight images on your blog post about winter activities in Corning, NY are missing alt text — a brief description that appears if the image won't load and helps search engines understand what each imag
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny-2/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟠 HIGH
  Your page doesn't include JSON-LD structured data — a standardized code block that tells search engines what your content is about. Without it, Google can't reliably understand your page's topic, prod
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  Every image on your site should have descriptive alt text — a short text label that screen readers (software used by people with vision loss) read aloud, and that search engines use to understand what
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny-3/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟠 HIGH
  Your blog post page doesn't include structured data — a machine-readable format that tells Google what the page is about (e.g., article title, author, publish date). Without it, search engines have to
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  Every image on your website should have descriptive alt text — a short text description that screen readers read aloud to blind/low-vision visitors, and that search engines use to understand image con
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny-4/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟡 MEDIUM
  Your blog post about winter activities in Corning doesn't include JSON-LD structured data—a code block that tells Google what the content is about (an article, a product, an event, etc.). Without it, 
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  All 8 images on this page are missing alt text — short descriptions that explain what each image shows. Search engines and screen readers (used by people with vision impairments) can't understand imag
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny-5/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟠 HIGH
  Your page doesn't include structured data — a standardized, machine-readable format that tells search engines what your content is about. For a cannabis retailer, this means Google can't easily unders
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  Every image on your website needs descriptive alt text — a short text description that appears if the image doesn't load and is read aloud by screen readers for visually impaired visitors. Your articl
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny-6/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟠 HIGH
  Your website isn't using JSON-LD structured data—a standardized way to tag information (like business name, address, hours, product reviews) so search engines can understand and display it correctly. 
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  All 8 images on this blog post are missing alt text — descriptive labels that screen readers use to describe images to visually impaired visitors, and that search engines use to understand image conte
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny-7/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟠 HIGH
  Your website isn't telling search engines what your content is about using structured data — a machine-readable format called JSON-LD. This is like having a product on a shelf with no label; humans ca
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  Every image on your website should have alt text — a short text description that screen readers read aloud to visitors who are blind or visually impaired, and that search engines use to understand wha
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/elevate-your-winter-activities-corning-ny-8/
_4 findings on this page_

- **[P2] No JSON-LD schema** 🟠 HIGH
  Your site is missing JSON-LD structured data—a machine-readable format that tells search engines what your content is about. Without it, Google has to guess whether a page is a blog post, a product li
- **[P2] 8 image(s) missing alt text** 🟠 HIGH
  Every image on your site is missing alt text—a short text description that screen readers read aloud for visually impaired visitors and that search engines use to understand what images show. All 8 im
- **[P3] Missing OpenGraph metadata** 
- **[P3] Missing Twitter card** 

### https://unionchillny.com/wp-login.php
_1 finding on this page_

- **[P0] Sensitive artifact exposed: /wp-login.php** 🔴 DO FIRST
  Your WordPress admin login page is publicly accessible at /wp-login.php. This is a known entry point that automated attackers scan for constantly. While WordPress login pages are normally public, expo


---

_Generated by Apex Sentinel Monthly Audit · 2026-04-19T06:45:44.051Z · Powered by Bud Authority._