Social Share Preview
Control the image, title, and description that appear when your short links are shared on Slack, WhatsApp, X, LinkedIn, Discord, Facebook, iMessage, and Bluesky.
What a Share Card Is
When someone posts a link, the receiving platform fetches it and builds a preview from the page's Open Graph tags. Without one, your link unfurls as a bare URL — no image, no context, nothing that says who it came from.
Worse than plain: with no image at all, the card downgrades to the small text-only format on most platforms, so the link takes up less space and carries less signal.
There are two ways to get a card. Generating one is the normal path. Uploading is for when you already have artwork.
Generating a Card
Go to Social Share Preview in the dashboard sidebar, pick a template, fill in the fields, and save.
The Templates
| Template | What it is | Use it when |
|---|---|---|
| Title card | Text on a solid background, with an optional logo | You have no artwork. The only template that needs no image at all |
| Hero split | Copy on the left, image on the right — brand name, badge, title, description, and a call-to-action pill | You have a product shot and something to say about it |
| Image cover | Full-bleed image with the title overlaid on a scrim | You have a strong photograph and want it to carry the card |
Every template takes a title — that is the one required field. Everything else (description, logo, colours, imagery, eyebrow text) is optional and varies by template; the form shows you what the one you picked accepts.
Both image-based templates degrade rather than break. If an image is missing or fails to fetch, Hero split gives the copy the full width and Image cover falls back to a solid background, so you get a plain card rather than a broken one.
Live Preview
The panel beside the form renders the actual card as you type, using your workspace's own domain so the preview matches what recipients will see.
Nothing is saved until you save. The preview is never cached.
The image is generated once, at save time, and stored. Scrapers are served a finished image.
This matters more than it sounds: Facebook's crawler gives up after a few seconds, and Bluesky bakes whatever it receives into the post permanently. Rendering on demand would mean some posts capture a timeout forever.
Your Workspace Already Has One
New workspaces get a share card generated automatically — a Title card built from the workspace name, on a colour derived from the workspace itself so it is stable and not identical to anyone else's.
So the usual first job is editing the card you already have, not creating one from nothing. Open the page and you will see it.
Uploading Your Own Image
If you have artwork already — a designed campaign asset, a brand banner — upload it instead.
- Recommended size: 1200 × 630 pixels, the standard Open Graph ratio
- Format: PNG or JPEG
- Maximum: 5 MB
A smaller thumbnail is produced automatically and is what most chat platforms receive, so unfurls stay fast.
A preview has one image. Choosing a template replaces an uploaded image, and uploading replaces a generated card. The dashboard reopens the form in whichever mode you last saved, with your previous values intact.
Who Can Change It
| Action | Required role |
|---|---|
| View the page | Any signed-in member |
| Change the card, upload, or remove an image | Admin or above |
Org Default and Per-Template Cards
Cards are configured at two levels:
- Organization default — one card, used by every link in the workspace.
- Per template — a card for links built from one specific template, for a campaign with its own branding.
Switch between them with the tabs on the Social Share Preview page. One org-level card covers everything you do not explicitly override.
How a Card Is Resolved
When a platform scrapes one of your short links, each field is resolved independently, first match wins:
- The link's own
og_title/og_description/og_image_url, set through the API withogTitle,ogDescription, andogImageUrlonPOST /api/links,PUT /api/links/:id, orPOST /api/sdk/v1/links - The template's card, if the link came from a template that has one
- The organization default card
- The link's title and description
Shared Linkas a last resort for the title
A link with og_image_url set ignores both the template card and the org default. If a specific link is not showing the card you configured, check whether it has its own OG fields — they win. Send null for a field on PUT /api/links/:id to clear it.
Link-level fields are the right tool for user-shared content: when your backend creates a link for a specific item, pass that item's title and image so the share unfurls as the item rather than as your workspace. The dashboard does not edit these fields; they are API-only.
Because each field resolves on its own, a link can take its title from one layer and its image from another.
Removing a Card
Remove image clears the image and keeps the title and description. To clear the preview entirely, empty the title field and save.
Checking a Card Before You Send It
Paste the link into Slack — it unfurls inline immediately, which is the fastest check. For the others:
- X / Twitter — Card Validator
- LinkedIn — Post Inspector
- Facebook — Sharing Debugger
If you see the old card, the platform cached it. Every validator above has a re-scrape option that forces a fresh fetch.
The free Social Share Preview tool renders the card for any public URL, LinkForty link or not. Useful for auditing your own site's pages, or for checking a link before you own it.
How It Works
Scraper Detection
The redirect server identifies known crawlers by User-Agent — facebookexternalhit, Twitterbot, LinkedInBot, Slackbot, Discordbot, TelegramBot, WhatsApp, PinterestBot, SkypeUriPreview, plus iMessage, Reddit, Bluesky, and Mastodon validators — and serves them an HTML page carrying the Open Graph and Twitter Card tags.
Human visitors are unaffected. They get the normal redirect and never see that page.
Image Delivery
Images live in S3-compatible object storage, and the OG tags point straight at the public URL. There is no round-trip through the application server on a scrape.
Caching
The link lookup and the preview configuration are both cached in Redis for five minutes, so scraper traffic does not reach the database on every request and the redirect path stays fast.
Self-Hosting
Share cards need S3-compatible object storage. Without it, generating a card returns a "storage is not configured" error and the dashboard says so plainly. Set:
AWS_BUCKET=your-bucket-name
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
See the Self-Hosting Guide and Environment Variables.
Related
- Creating Links — setting per-link OG fields
- Link Templates — what a per-template card attaches to
- Custom Domains — the domain your cards are served from