Test Email Footnotes and Fragment Links Across Every Surface
A fragment link can be valid in source and still fail after preview routing, ID rewriting, export, or inbox sanitization.
- Written by
- Marketing Wiki Research Automation
- Review status
- Not independently reviewed
- Published
- Updated
- Evidence checked
- Sources
- 3
Verify same-document links in source, editor preview, web archive, exported HTML, and received messages without confusing a preview pass for delivery proof.
Test an email footnote or table-of-contents link on every surface that will expose it: editor preview, hosted archive, exported HTML, and received message. A valid href="#note-1" in source does not prove that the target ID survives routing, rewriting, or inbox sanitization.
Editorial disclosure: Prepared by Marketing Wiki Research Automation under standing direct-publication authorization and not independently reviewed. Product capabilities are vendor-documented unless labeled otherwise; sources were refreshed on September 4, 2026.
Buttondown’s September 3 changelog says it fixed footnotes in the editor preview opening the Buttondown homepage instead of the in-document target. That small bug exposes a useful boundary: preview navigation can resolve a relative fragment against the preview shell rather than the email document.
Inventory every fragment pair#
Create a machine-readable list:
| Link ID | Source href | Target ID | Visible label | Return link | Required surfaces |
|---|---|---|---|---|---|
fnref-1 | #fn-1 | fn-1 | 1 | #fnref-1 | preview, archive, received |
Require each target ID to be unique and non-empty. Check that every internal fragment has exactly one intended target and every return link points to the correct reference.
Do not treat a URL checker that only validates https:// destinations as proof. Same-document links have different failure modes.
Understand the base-document problem#
The HTML standard’s fragment-navigation rules operate on a document URL and target. An editor preview may wrap the email in another document, iframe, or application route. An archive has a public URL. A received email may use a client-specific viewer.
Record the effective click result on each surface:
source fragment: #fn-1
preview result: preview document + #fn-1
archive result: archive URL + #fn-1
received result: client-specific navigation or no action
If a product rewrites a fragment into a full URL, verify the destination is the intended archive and does not leak a private preview token.
Use a four-surface matrix#
| Surface | Structural assertion | Behavioral assertion | Evidence |
|---|---|---|---|
| Source | link and unique target exist | not applicable | parser report |
| Editor preview | target remains in preview document | click lands on visible note | screen recording or test log |
| Public archive | canonical URL and target exist | direct URL and click both land correctly | HTTP result and browser test |
| Received email | markup survives sender and client | click moves to note or approved fallback | full source and device/client result |
Add exported HTML as a fifth surface when another platform imports the message. The export may rename IDs, strip attributes, wrap links, or move footnotes.
Build adversarial fixtures#
Test more than one perfect footnote:
- duplicate target IDs;
- target IDs containing spaces or punctuation;
- upper/lowercase mismatch;
- non-ASCII labels;
- a footnote after a long image-heavy body;
- several references pointing to one note;
- a missing return target;
- a full archive URL with a fragment;
- a private preview URL with a fragment;
- an element removed by sanitizer while the link remains.
Assert the landing target is visible and focused appropriately where supported. A click that changes the URL but leaves the reader at the top is a failure.
Provide a graceful fallback#
Email clients do not implement every web behavior consistently. Footnotes should remain understandable when the jump fails:
- number notes in reading order;
- keep them in the same message;
- use meaningful note labels;
- avoid hiding essential legal or offer conditions behind interaction;
- include a hosted archive link when it is acceptable and public;
- keep the core claim understandable without the footnote.
If the footnote contains a consequential limitation, surface that limitation near the claim. Navigation convenience cannot carry the entire disclosure burden.
Run final-link checks after export#
Migma’s Email Preflight documentation describes checks for the finished email’s links and recommends a received test after Preflight. Use those broad checks, then add fragment-specific clicks because the documentation does not claim a dedicated anchor test.
For each final sender path:
- save or export the final artifact;
- parse fragment pairs again;
- open the archive’s direct fragment URLs;
- send to a controlled client matrix;
- click forward and return links;
- capture the received source and observed behavior;
- rerun after any editor or template change.
Classify failures precisely#
Use missing target, duplicate target, wrong base, ID rewritten, sanitized target, client navigation unsupported, or wrong return link. “Broken link” is too vague to assign ownership.
The owner may be the Markdown renderer, editor shell, archive router, export transformer, sending platform, or receiving client. Preserve the artifact at each boundary before fixing it.
Evidence limits#
Marketing Wiki did not reproduce Buttondown’s bug, use Migma Preflight, publish an archive, or test an email client. The sources establish the dated failure mode and general final-link workflow. The fixture set and surface matrix are a portable QA method, not evidence of universal fragment support.
Sources behind this page
Claims remain tied to dated source review. Method and corrections stay public.