Email QA5 min read

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
Direct answer

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:

Scroll table →
Link IDSource hrefTarget IDVisible labelReturn linkRequired surfaces
fnref-1#fn-1fn-11#fnref-1preview, 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#

Scroll table →
SurfaceStructural assertionBehavioral assertionEvidence
Sourcelink and unique target existnot applicableparser report
Editor previewtarget remains in preview documentclick lands on visible notescreen recording or test log
Public archivecanonical URL and target existdirect URL and click both land correctlyHTTP result and browser test
Received emailmarkup survives sender and clientclick moves to note or approved fallbackfull 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:

  1. duplicate target IDs;
  2. target IDs containing spaces or punctuation;
  3. upper/lowercase mismatch;
  4. non-ASCII labels;
  5. a footnote after a long image-heavy body;
  6. several references pointing to one note;
  7. a missing return target;
  8. a full archive URL with a fragment;
  9. a private preview URL with a fragment;
  10. 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.

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:

  1. save or export the final artifact;
  2. parse fragment pairs again;
  3. open the archive’s direct fragment URLs;
  4. send to a controlled client matrix;
  5. click forward and return links;
  6. capture the received source and observed behavior;
  7. 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.