Skip to main content

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

TemplateWhat it isUse it when
Title cardText on a solid background, with an optional logoYou have no artwork. The only template that needs no image at all
Hero splitCopy on the left, image on the right — brand name, badge, title, description, and a call-to-action pillYou have a product shot and something to say about it
Image coverFull-bleed image with the title overlaid on a scrimYou 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.

Cards are rendered when you save, not when a link is shared

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.

Uploaded or generated, never both

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

ActionRequired role
View the pageAny signed-in member
Change the card, upload, or remove an imageAdmin 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:

  1. The link's own og_title / og_description / og_image_url, set through the API with ogTitle, ogDescription, and ogImageUrl on POST /api/links, PUT /api/links/:id, or POST /api/sdk/v1/links
  2. The template's card, if the link came from a template that has one
  3. The organization default card
  4. The link's title and description
  5. Shared Link as a last resort for the title
Link-level OG fields override your cards

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:

If you see the old card, the platform cached it. Every validator above has a re-scrape option that forces a fresh fetch.

Check any URL without signing in

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.