Why a Twitter Cards Audit Matters for Ecommerce
When a product link is shared on X (formerly Twitter), Twitter Cards pull structured metadata to render a rich preview โ image, title, description, and price. If any element is misconfigured, the link renders as plain text, and the click-through opportunity disappears. For stores sharing product drops, running influencer campaigns, or relying on organic social sharing, that gap directly costs revenue.
This checklist covers 12 discrete audit items. Each has a clear pass criterion and a fail condition. Run it on your homepage, a category page, and at least three product pages before marking any item complete.
The 12-Item Twitter Cards Audit Checklist
**1. twitter:card tag is present and set correctly.** Pass: every page includes a `<meta name='twitter:card'>` tag with a valid value (`summary`, `summary_large_image`, `app`, or `player`). Fail: tag is absent, misspelled, or uses a deprecated value like `photo` or `gallery`.
**2. summary_large_image is used on all product pages.** Pass: product pages use `summary_large_image` so the hero product image renders at full width. Fail: product pages default to `summary`, which renders a small thumbnail that buries the product visual.
**3. twitter:title is present and under 70 characters.** Pass: `<meta name='twitter:title'>` exists and the value is 70 characters or fewer. Fail: tag is absent (Twitter falls back to og:title, which may be truncated differently) or exceeds 70 characters and gets cut mid-word in the card.
**4. twitter:description is present and under 200 characters.** Pass: `<meta name='twitter:description'>` is populated with a concise, product-specific sentence under 200 characters. Fail: tag is missing, blank, or mirrors the full meta description verbatim at 300+ characters.
**5. twitter:image points to an absolute URL.** Pass: `<meta name='twitter:image'>` uses a full absolute URL (https://). Fail: the value is a relative path (`/images/product.jpg`), which Twitter cannot resolve and will cause the image to drop from the card.
**6. twitter:image meets minimum dimension requirements.** Pass: the referenced image is at least 144ร144 px for `summary` cards or at least 300ร157 px (recommended 1200ร628 px) for `summary_large_image`. Fail: image is smaller than minimums or is not a 2:1 aspect ratio for large image cards, causing distortion or blank space.
**7. twitter:image file size is under 5 MB.** Pass: the image file weighs under 5 MB and is in JPG, PNG, WEBP, or GIF format. Fail: file exceeds 5 MB or uses an unsupported format like SVG or AVIF, causing Twitter to discard it entirely.
**8. twitter:site is populated with the store's verified X handle.** Pass: `<meta name='twitter:site'>` contains the store's active X account handle (e.g., `@storename`). Fail: tag is absent, uses a placeholder, or references a suspended or inactive account, losing attribution in shared cards.
**9. og: fallback tags are present as a safety net.** Pass: `og:title`, `og:description`, and `og:image` are all present because Twitter reads Open Graph tags as fallbacks when twitter-specific tags are missing. Fail: OG tags are absent, meaning a missing twitter:tag produces a blank card field with no fallback.
**10. Cards render correctly in Twitter Card Validator (or a live post).** Pass: pasting the URL into the Twitter Card Validator (cards-dev.twitter.com/validator) or sharing the URL in a draft post shows the card preview with image, title, and description populated. Fail: the tool shows 'Card not found,' a blank image, or truncated fields.
**11. No conflicting duplicate meta tags exist in the page source.** Pass: each twitter: meta tag appears exactly once in the `<head>`. Fail: CMS plugins, theme code, and app-injected scripts have created two or more `<meta name='twitter:image'>` tags (or any other field), and Twitter reads only the first occurrence, which may be stale or incorrect.
**12. Dynamic product pages generate unique Cards, not a sitewide default.** Pass: each product URL produces a card with that product's specific title, image, and description โ confirmed by checking three distinct product URLs in the validator. Fail: all product pages return identical card data pulled from a global template, meaning every shared product link looks the same.
How to Run the Audit Without Developer Help
Use browser DevTools (View Source or Elements panel) to inspect the `<head>` of any page and search for `twitter:`. This surfaces every twitter meta tag rendered at page load. For JavaScript-rendered storefronts (headless, Hydrogen, Next.js), inspect the final DOM, not just the raw HTML source, because tags injected by client-side code won't appear in a plain view-source check.
For bulk validation across hundreds of product URLs, export the product URL list from your ecommerce platform's admin, then run them through a crawl tool like Screaming Frog or a custom script that fetches each URL and parses the meta tags. Flag any URL where `twitter:card` is absent, `twitter:image` is a relative path, or `twitter:title` exceeds 70 characters.
Common Ecommerce Platform Failure Points
Shopify themes inject Twitter Card tags through a `social-meta-tags.liquid` snippet. If a third-party SEO app also injects them, duplicate tags appear. The fix is to disable one source โ typically the theme snippet โ and let the SEO app own all social meta output.
WooCommerce sites using Yoast SEO or Rank Math handle Twitter Cards through the plugin's social settings panel. The failure point is product variations: the plugin pulls the parent product image, not the selected variant image. Stores selling products where variant images differ significantly (color, style) need custom logic to push the variant image into the twitter:image tag.
Headless storefronts built on platforms like Hydrogen or Next.js Commerce require explicit server-side rendering of meta tags. If the Twitter Card tags are injected only after client-side hydration, crawlers and Twitter's card fetcher โ which does not execute JavaScript โ see no tags and render a plain link.
Actionable Priority Order After the Audit
Fix items 1, 5, and 11 first. A missing `twitter:card` tag, a relative image URL, and duplicate tags are the three issues that completely break card rendering regardless of every other setting. Resolve these before addressing character limits or handle attribution.
After structural fixes, address item 12 โ unique Cards per product page. This is the highest-impact change for ecommerce stores because influencer shares, customer reposts, and affiliate links all point to individual product URLs. A generic sitewide card template wastes every one of those shares.