Getting started with CardURL
From Checkout to a live social preview. Site key, brand kit, domain verify, templates, then put the hosted URL in og:image. Use the labels you see in the product.
Your site key is a public OG identifier. It appears inside your og:image URL so crawlers can fetch the card. That is expected.
Account, brand kit, domain verify, and billing use your checkout email (magic link) and the Stripe customer portal — not the site key as a password.
1. Start the 7-day trial
On https://cardurl.dev/ click Start 7-day trial. Finish Checkout. Card required. Then $39/month after the trial.
2. Receive or recover your site key
Right after Checkout you land on Your hosted OG URL (/onboarding). Your site key is on the page. We also email a backup to the checkout address.
That success page is your production /og/<siteKey>/… URL (trial included, not stamped). Copy it. Hosted cards work as soon as Checkout completes — no first paid invoice.
If you left that page: open /account. Under Your site key, enter the checkout email. Click Send link. If there is a live subscription (trialing or active), we email the site key and an access link.
3. Set brand kit on the access page
Open the access link from email (or finish the flow from /account → Send link). On the access page, set brand kit for that site key:
- Logo URL (public URL on a verified host; png, jpeg, webp, svg, or gif; keep it small — over ~180KB and the logo is skipped)
- Accent
- Ink
- Font: Inter or Plus Jakarta Sans
Click Save brand kit. Brand kit applies to paid hosted cards on that key. Free homepage preview does not use your brand kit.
4. Verify your domain
Auto mode (?url=) only works for hosts you verify.
- Serve
https://<your-host>/.well-known/cardurl.txtwith a body that contains your site key (plain text is fine). - On the access page, under Verified domains, enter Domain (example: yoursite.com).
- Click Verify domain.
www and the apex are treated the same (www is stripped). Subdomains are not wildcards — app.example.com is not example.com.
If it fails you may see: “That domain is not a public host.” or “Put your site key in https://your.domain/.well-known/cardurl.txt and try again.”
5. Choose a template
Pick one template per card URL: blog, launch, changelog, or docs. Same names on the lander try-it and on paid URLs. Query params: /docs/templates.
6. Install metadata (og:image)
Put a CardURL image URL in each page’s og:image (and matching twitter:image if you use it).
Pattern:
https://cardurl.dev/og/<siteKey>/<template>?url=https://yoursite.com/this-page
Or set title (and optional fields) yourself with query params — see templates.
Different pages need different image URLs (or a template integration that builds the URL per page). Copy-paste examples: /examples.
HTML
<meta property="og:image" content="https://cardurl.dev/og/<siteKey>/blog?url=https://yoursite.com/post" /> <meta property="og:image:width" content="1200" /> <meta property="og:image:height" content="630" />
Next.js
export const metadata = {
openGraph: { images: ["https://cardurl.dev/og/<siteKey>/blog?url=https://yoursite.com/post"] }
}
WordPress
Yoast / Rank Math → Social → Image URL https://cardurl.dev/og/<siteKey>/blog?url=https://yoursite.com/post
Same URL pattern for HTML, Next.js metadata, and WordPress social image fields. More: Install examples.
7. Confirm the page and image are public
The page URL you pass to ?url= must be publicly reachable over https. The CardURL image URL must be publicly reachable too — crawlers will fetch it without your cookies. If the image URL 404s, the card is blank. The marketing /preview path is stamped and is not for production.
8. Check the result (and caching)
Open the Social preview generator at /check. Paste your public page URL. Click Read page. You get a suggested card from the page’s title and description metadata — useful while you wire things up.
Free generator previews are stamped. Production cards on your site key after Checkout are not.
Hosted cards are cached about a day. Do not expect an instant refresh everywhere after every edit. Change the query, or re-save brand/domain (cache purge), then re-check. Slack, X, and iMessage also keep their own caches.
9. Support and billing
Email: hello@loopspur.com
Billing: on the access page use Manage billing (Stripe customer portal), or start from /account if you need a fresh Send link first.
FAQ
What is a CardURL site key?
Your site key is a public OG identifier. It appears inside your og:image URL so crawlers can fetch the card. That is expected. Account, brand kit, domain verify, and billing use your checkout email (magic link) and the Stripe customer portal — not the site key as a password.
Do I need a card for the 7-day trial?
Yes. On https://cardurl.dev/ click Start 7-day trial and finish Checkout. A card is required. Then $39/month after the trial.
When do hosted /og/ URLs work after Checkout?
As soon as Checkout completes. You land on Your hosted OG URL, we show the site key and email a backup. Trial included cards are not stamped. You do not wait for a first paid invoice.
How do I recover my site key later?
Open /account. Under Your site key, enter the checkout email and click Send link. If there is a live subscription (trialing or active), we email the site key and an access link.
How do I verify a domain for auto ?url= mode?
Serve https://<your-host>/.well-known/cardurl.txt with a body that contains your site key. On the access page under Verified domains, enter Domain and click Verify domain. www and the apex are treated the same. Subdomains are not wildcards — app.example.com is not example.com.
What is the free Social preview generator at /check?
Open /check, paste a public page URL, and click Read page. You get a suggested card from the page title and description metadata. Free generator previews are stamped. Production cards on your site key after Checkout are not.
What happens to hosted cards when I cancel?
If you cancel in the portal, renewal stops. Hosted cards keep working through the period you already paid for (or through the trial). When that period ends, those image URLs stop resolving. Replace your social image URL before then if you still need a card. Details: /docs/cancel.