Why Every Campaign Link Needs a Preflight Check
No pilot takes off without a preflight check. Before every flight, the crew walks through a checklist — fuel levels, instruments, control surfaces, hydraulics — because a single overlooked failure at 30,000 feet is catastrophic. Campaign links deserve the same discipline. One broken URL, one missing meta tag, one slow-loading landing page, and the entire ad budget you spent driving traffic to that link is wasted. A campaign link preflight check is the marketer's cockpit checklist: a single command that validates everything before you hit publish.
What is a campaign link preflight check?
A campaign link preflight check is a single automated command that does three things at once. First, it builds your UTM-tagged URL with consistent, lowercase, properly formatted parameters — eliminating the typos and naming inconsistencies that fragment your analytics. Second, it validates the destination by checking SSL certificates, HTTP status codes, redirect chains, and page load speed. Third, it inspects the landing page for social sharing readiness: Open Graph tags, Twitter Card meta, viewport configuration, canonical URLs, and favicons.
Instead of manually testing each of those things across different tools — a URL builder here, a link checker there, a social preview debugger somewhere else — a preflight check runs all of them in one pass and gives you a clear pass/fail verdict. If everything looks good, you get your tracked URL ready to publish. If something is broken, you get a specific error telling you exactly what to fix. This is what MissingLinkz was built to do, and it's the foundation of the AI agent UTM workflow.
What goes wrong without a preflight check
Skipping a preflight check doesn't just risk a bad link. It risks the entire campaign. Here are five scenarios that happen to marketing teams every week — every one of them preventable with a single check before publishing.
- Missing OG image → blank social preview → 2–3x fewer clicks
- You share a campaign link on LinkedIn and the preview renders as a plain text URL — no image, no title card, no description. Posts with rich image previews generate 2–3x more clicks than bare links. Without an
og:imagetag, you're leaving the majority of your potential engagement on the table. Your ad spend drove impressions to a post that looks broken. - 3-hop redirect chain → UTM parameters stripped → attribution breaks
- Your destination URL redirects from
http://tohttps://, then from the root domain towww, then from/landingto/landing/. Three hops. By the time the browser arrives at the final URL, one of the intermediate redirects has stripped your UTM parameters. Google Analytics records the visit as "direct" with no campaign attribution. You spent the budget but can't prove which channel drove the traffic. This is one of the most common causes of broken campaign link attribution. - 4-second load time → ~7% conversion drop per second
- Research from Google and Deloitte consistently shows that every additional second of page load time costs roughly 7% in conversions. A page that takes four seconds to load has already lost more than a quarter of its potential conversions before the user even sees the content. If you're paying per click, slow pages are burning money in real time.
- Canonical URL mismatch → analytics data splits
- The page's
<link rel="canonical">tag points tohttps://example.com/landingbut your campaign link sends traffic tohttps://example.com/landing/. Google Analytics treats these as two separate pages. Your conversion data is split, your reports tell a fragmented story, and your campaign looks like it performed half as well as it actually did. - HTTP instead of HTTPS → "Not Secure" browser warning
- Every major browser displays a prominent "Not Secure" warning for pages served over HTTP. Users see the warning and bounce immediately. Trust evaporates before the visitor reads a single word. For paid campaigns, you're paying to send people to a page that actively tells them to leave.
Every one of these problems is invisible until after you've spent the budget. That's the entire point of a preflight check — to catch what you can't see by looking at a URL. For a deeper breakdown of the financial impact, read what broken campaign links actually cost you.
The 11 checks MissingLinkz runs
Every time you run mlz preflight, MissingLinkz executes 11 distinct checks against your destination URL. Each one targets a specific failure mode that can break your campaign's performance, attribution, or user experience. Together they form a complete campaign link preflight check.
- 1. SSL / HTTPS
- Verifies that the destination URL is served over HTTPS with a valid certificate. HTTP pages trigger browser security warnings that erode trust and tank click-through rates.
- 2. Resolution (HTTP status)
- Sends a request to the destination and confirms it returns a
200 OK. Catches 404 not-found errors, 500 server errors, and completely unreachable domains before you send paid traffic to them. - 3. Redirect chain
- Follows every redirect hop from the initial URL to the final destination. Flags chains longer than one hop, which slow page loads and risk stripping UTM parameters along the way.
- 4. Response time
- Measures how long the destination takes to respond. Pages slower than 1.5 seconds get a warning; pages slower than 3 seconds fail outright. Every extra second of load time costs roughly 7% in conversions.
- 5. Open Graph tags
- Checks for
og:title,og:description, andog:imagemeta tags. These control how your link appears when shared on LinkedIn, Facebook, Slack, and most other platforms. Missing tags mean a blank, unclickable preview. - 6. Twitter Card tags
- Checks for
twitter:card,twitter:title,twitter:description, andtwitter:image. Twitter/X uses its own card system; without these tags, your link renders as plain text in the feed. - 7. Viewport meta tag
- Confirms the page includes a
<meta name="viewport">tag for mobile responsiveness. Pages without it render at desktop width on phones, making them unreadable and driving up bounce rates on mobile traffic. - 8. Canonical URL
- Compares the page's
<link rel="canonical">value against the destination URL. A mismatch splits your analytics data across two URLs and confuses search engines about which page to index. - 9. Favicon
- Checks for a valid favicon. Missing favicons make your site look unfinished in browser tabs and bookmarks — a small detail that affects perceived credibility, especially for new visitors arriving from ads.
- 10. UTM parameter validation
- Ensures all required UTM parameters (
utm_source,utm_medium,utm_campaign) are present and properly formatted. Catches missing fields, inconsistent casing, and special characters that break tracking. For naming best practices, see our UTM naming convention guide. - 11. UTM parameter preservation
- Follows the full redirect chain with UTM parameters attached and verifies they survive intact on the final destination URL. This is the check that catches redirect-based parameter stripping — the silent killer of campaign attribution.
All 11 checks run in a single command and complete in seconds. The result is a clear pass/fail/warn verdict for each check, plus a top-level ready: true or ready: false that tells you (or your AI agent) whether the link is safe to publish.
Preflight in action
Here's what a real campaign link preflight check looks like. Suppose you're about to promote a product launch on LinkedIn. You run the preflight command:
mlz preflight --url "https://acme.com/launch" --campaign "q1-launch" --source "linkedin" --medium "social" --format human
The result comes back with failures:
ready: false
tracked_url: https://acme.com/launch?utm_source=linkedin&utm_medium=social&utm_campaign=q1-launch
checks:
FAIL og_tags Missing og:image — social previews will be blank
FAIL twitter_card No twitter:card meta tag found
PASS viewport Viewport meta tag present
PASS ssl URL uses HTTPS
PASS resolution Destination responded with 200
WARN redirects 1 redirect detected (http → https)
FAIL response_time Page loaded in 4,180ms (threshold: 1,500ms)
PASS canonical Canonical URL matches destination
PASS favicon Favicon found
PASS utm_valid All required UTM parameters present
PASS utm_preserved UTM parameters preserved through redirects
summary: 8 passed, 1 warning, 3 failed
verdict: 3 checks failed. Do not publish until issues are resolved.
Three problems surfaced before a single dollar was spent: no og:image tag (LinkedIn previews would render blank), no Twitter Card tags (tweets would show a plain URL), and a 4.2-second page load time (costing roughly 20% of potential conversions). The redirect from HTTP to HTTPS is flagged as a warning — one hop is usually acceptable, but worth noting.
After fixing the landing page — adding the missing meta tags and optimizing page speed — you re-run the same command:
ready: true
tracked_url: https://acme.com/launch?utm_source=linkedin&utm_medium=social&utm_campaign=q1-launch
checks:
PASS og_tags All essential Open Graph tags present
PASS twitter_card Twitter Card tags configured
PASS viewport Viewport meta tag present
PASS ssl URL uses HTTPS
PASS resolution Destination responded with 200
PASS redirects No redirect chain detected
PASS response_time Page loaded in 340ms
PASS canonical Canonical URL matches destination
PASS favicon Favicon found
PASS utm_valid All required UTM parameters present
PASS utm_preserved UTM parameters preserved through redirects
summary: 11 passed, 0 warnings, 0 failed
verdict: All checks passed. Ready to publish.
All 11 checks pass. The tracked URL is ready to copy into your LinkedIn post. The landing page will render a rich preview, load fast, track correctly in Google Analytics, and not trigger any browser security warnings. That's what a campaign link preflight check buys you — confidence before you spend.
When to run a preflight check
A campaign link preflight check should be the last step before any link goes live. Run one in each of these situations:
- Before social media posts
- Every link you share on LinkedIn, Twitter, Facebook, or any social platform needs validated OG tags and Twitter Card meta. Run preflight once per platform, since each gets a unique
utm_sourcevalue. Social platforms cache link previews aggressively — if your tags are missing when the platform first crawls the link, the broken preview can persist for hours or days even after you fix it. - Before email campaigns
- Once an email is sent, you can't edit it. A 404 in an email blast to 50,000 subscribers is 50,000 broken experiences you can't take back. Preflight catches dead links, SSL issues, and slow pages before you hit send. Pay special attention to redirect chains — email clients handle redirects inconsistently.
- Before paid ad launches
- Paid campaigns are where preflight checks deliver the highest ROI. Every click costs money. Sending paid traffic to a page that's slow, broken, or missing attribution parameters wastes budget in real time. Run preflight on every ad destination URL before the campaign goes live.
- Before any campaign go-live
- Product launches, partnership announcements, press releases, influencer collaborations — any time you're directing attention to a URL that will receive significant traffic, run a preflight check. The cost of checking is seconds. The cost of not checking is your campaign's performance.
- Once per platform, per campaign
- If you're running a multi-platform campaign, run preflight once per source/medium combination:
--source "linkedin",--source "twitter",--source "newsletter". The destination validation only executes once (results are cached), so subsequent runs for the same URL are near-instant. See the multi-platform workflow in our step-by-step UTM building guide.
The rule is simple: if a link will receive traffic, it gets a preflight check. No exceptions. The same way a pilot doesn't skip the checklist because the flight is short, you don't skip preflight because the campaign is small. For a consistent approach to naming your UTM parameters across all these channels, see our UTM naming convention guide.
For Agents
Give your AI agent a built-in campaign link preflight check. Install MissingLinkz, run your first preflight, and catch broken links before they cost you clicks.
npm install -g missinglinkz
mlz preflight --url "https://yoursite.com/landing" --campaign "spring-launch" --source "linkedin" --medium "social"
Read the full agent integration docs in SKILL.md — or explore the step-by-step human guide if you want to run commands yourself.