Page Header Code Injection, one page at a time.
Code injection in Squarespace has no variable for the page address, so each page gets its own tag: Pages panel → gear icon next to the page → Advanced → Page Header Code Injection, with that page's address URL-encoded after ?url=. Code injection comes with the Core, Plus and Advanced plans (and some legacy ones) and does not run on checkout pages. Squarespace writes its own social tags above your code — twitter:card set to summary, plus og:image and twitter:image when the page has a Social Image or the site a social sharing logo — so leave the page's Social Image empty and repeat twitter:card and twitter:image in your snippet, or X keeps the small square. On version 7.1 Squarespace warns that HTML in this field disappears if you turn off the header's transparency: check the page source again after changing the header.
Page settings → Advanced → Page Header Code Injection
<!-- Pages panel → gear icon next to the page → Advanced →
Page Header Code Injection. There is no variable for the page
address here: one snippet per page, with that page's own address
URL-encoded after ?url= -->
<meta property="og:image" content="https://shareglint.com/u/acc_YOUR_ACCOUNT_ID.png?url=https%3A%2F%2Fwww.your-site.com%2Fservices">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<!-- Squarespace writes its own twitter:card ("summary", a small square)
above this code, plus og:image and twitter:image when the page has
a Social Image or the site a social sharing logo. X reads
twitter:image before og:image, so say it here too. -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content="https://shareglint.com/u/acc_YOUR_ACCOUNT_ID.png?url=https%3A%2F%2Fwww.your-site.com%2Fservices">
Post Blog Item Code Injection looks like the place for blog posts, but it adds the same code to every post and lands in the body, below the post content (above it in some 7.0 templates) — not in the <head>, where Open Graph tags belong. For posts and products, open the item's auto-OG URL once in a browser, save the PNG and upload it as the item's Social Image: for collection items Squarespace uses that image before the featured image.
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=.