Swap the og:image block in Dawn's snippets/meta-tags.liquid for one Liquid line.
Shopify themes print their own Open Graph tags. In Dawn they live in `snippets/meta-tags.liquid`, which `layout/theme.liquid` renders, and its `if page_image` block prints og:image from the product, collection or article image — other pages get the social sharing image from Online Store → Preferences. Open Online Store → ⋯ → Edit code (duplicate the theme first, as Shopify recommends) and replace that block: `og_url`, assigned at the top of the same file from `canonical_url`, goes through `url_encode` into the auto-OG address. Dawn prints no `twitter:image`, so X falls back to og:image and every network shows the same card. Allow the domain your canonical URLs use in the dashboard first. Liquid also has `hmac_sha256`, so a signed `/i/` URL would work too — but the signing secret would then sit in theme code that every staff account with theme access can read.
snippets/meta-tags.liquid
{%- comment -%}
Dawn: snippets/meta-tags.liquid, rendered from layout/theme.liquid.
Replace Dawn's whole `if page_image` block (it prints og:image from the
product, collection or article image) with the lines below.
Do not just delete it: when a theme prints no og:image, Shopify adds
one from page_image by itself.
og_url is assigned at the top of this file: canonical_url, or the
shop origin on the password page.
{%- endcomment -%}
{%- assign og_card = og_url | url_encode | prepend: 'https://shareglint.com/u/acc_YOUR_ACCOUNT_ID.png?url=' -%}
<meta property="og:image" content="{{ og_card }}">
<meta property="og:image:secure_url" content="{{ og_card }}">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
{%- comment -%}
Leave the rest of the file as it is. Dawn prints no twitter:image, so X
falls back to og:image, and twitter:card is already summary_large_image.
{%- endcomment -%}
A theme update does not reliably keep your edit. Shopify installs an update as a new copy of the theme, and when your code changes are incompatible with it, all of them are removed from the updated copy — Dawn's og:image block is back and the card is gone, with nothing to warn you. After every theme update, open the page source of a product and check that og:image still points at the card.
Nothing in your site calls an API: the crawler that reads the tag requests the image URL, and the first request reads the page's title, description and image and renders the card. Later requests get the same file. Only pages on the domains you allowed in the dashboard get an image — any other address answers 403 — so the URL holds no key. We re-read a page at most every 60 minutes, so a new title shows up within that time.
100 images a month free, then $9 for 2,000. A new card uses one image of your quota; the card is cached by what is on it, so an unchanged page is never charged twice, also when shared with ?utm_source=.