Preflight Your Launch Link: OGP Cards Before Slack Eats the Old Image
Five minutes before the launch tweet, someone pastes the URL into the company Slack to “just check the card.” Slack caches the previous campaign creative. The tweet goes out anyway. Discord looks fine; Facebook looks ancient. This is not bad luck — it is a missing preflight.
Launch-day order of operations
- Deploy HTML + image assets to the public host.
- Confirm with curl / view-source that
og:title,og:description,og:imageare absolute and correct. - Open an OGP preview against the production URL.
- Run Meta Sharing Debugger scrape (and LinkedIn inspector if relevant).
- Only then paste into Slack/Discord/X.
Reversing steps 3 and 5 teaches Slack the wrong card first. Treat the first unfurl as a write once / read forever event for that workspace.
Card content that survives the fold
| Field | Failure mode |
|---|---|
| Title | Truncation mid-word; keyword stuffing |
| Description | Empty → platform invents garbage from body |
| Image | Relative URL, 404, or 200 HTML error page |
| Image size | Too small → upscaled blur; wrong aspect → crop |
| Site name | Missing → generic link look |
Write titles for humans in the timeline, not for an internal ticket ID. Descriptions should make sense without the hero image. Marketing sometimes ships a gorgeous image with a placeholder title still set to Home — preview tools catch that before 50k impressions do.
Platform quirks worth budgeting time for
- Slack: sticky; avoid early pastes; consider a unique path for the launch page if you must escape a poisoned cache
- Discord: faster refresh culture, still not instant
- X: card types and image crops differ; test with their card validator when available
- iMessage: opaque; absolute images and HTTPS matter
CDN purge belongs in the runbook next to “tweet.” Overwriting og.png in place without purge is how good deploys look broken.
Template hygiene in the codebase
Centralize meta tags in one layout component. Per-page overrides for launches should be code-reviewed like UI copy. Add a smoke test that fails CI if og:image is relative or missing on key landing templates.
After the first paste goes wrong
Change the image URL (versioned path), scrape debuggers again, and wait. Do not promise “hard refresh fixes Slack” in the war room — it does not. Communicate to the team: unfurl caches are product behavior, not a broken deploy.
Copy length and emoji
Slack truncates aggressively. A witty 120-character og:title may look fine in a preview tool’s full-width layout and broken in the unfurl. Keep titles short; put detail in the description. Emoji in titles render differently across apps — test once if brand depends on them.
Multi-page launches (docs + marketing + app) need consistent site name and image family so the campaign feels intentional when people share deep links. Preview each key URL, not only the homepage.
Ownership
Assign one person on launch day to own “card looks correct” the same way you own DNS and feature flags. Give them debugger access and CDN purge rights beforehand. The worst time to request Meta developer permissions is during the tweet countdown.
Preflight is boring. It is also the difference between a launch card that matches the campaign and a launch card that teleports viewers to last season’s sale.