{"schema_version":"2.0","record_type":"article","canonical_url":"https://marketingwiki.ai/articles/email-footnote-fragment-link-test","id":"email-footnote-fragment-link-test","slug":"email-footnote-fragment-link-test","title":"Test Email Footnotes and Fragment Links Across Every Surface","description":"Verify same-document links in source, editor preview, web archive, exported HTML, and received messages without confusing a preview pass for delivery proof.","dek":"A fragment link can be valid in source and still fail after preview routing, ID rewriting, export, or inbox sanitization.","category":"Email QA","topics":["footnotes","fragment links","email testing","Migma"],"publishedAt":"2026-09-04","updatedAt":"2026-09-14","lastVerifiedAt":"2026-09-14","readingMinutes":5,"author":"Marketing Wiki Research Automation","reviewer":null,"featured":false,"sources":[{"title":"Buttondown Changelog","url":"https://buttondown.com/changelog?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-footnote-fragment-link-test"},{"title":"Migma: Run Email Preflight Checks","url":"https://docs.migma.ai/email-editor/email-preflight?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-footnote-fragment-link-test"},{"title":"WHATWG HTML: Navigating to a Fragment","url":"https://html.spec.whatwg.org/multipage/browsing-the-web.html?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-footnote-fragment-link-test#scroll-to-fragid"}],"wordCount":849,"body":"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.\n\n> **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.\n\nButtondown’s September 3 [changelog](https://buttondown.com/changelog?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-footnote-fragment-link-test) 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.\n\n## Inventory every fragment pair\n\nCreate a machine-readable list:\n\n| Link ID | Source `href` | Target ID | Visible label | Return link | Required surfaces |\n| --- | --- | --- | --- | --- | --- |\n| `fnref-1` | `#fn-1` | `fn-1` | `1` | `#fnref-1` | preview, archive, received |\n\nRequire 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.\n\nDo not treat a URL checker that only validates `https://` destinations as proof. Same-document links have different failure modes.\n\n## Understand the base-document problem\n\nThe HTML standard’s [fragment-navigation rules](https://html.spec.whatwg.org/multipage/browsing-the-web.html?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-footnote-fragment-link-test#scroll-to-fragid) 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.\n\nRecord the effective click result on each surface:\n\n```text\nsource fragment: #fn-1\npreview result:  preview document + #fn-1\narchive result:  archive URL + #fn-1\nreceived result: client-specific navigation or no action\n```\n\nIf a product rewrites a fragment into a full URL, verify the destination is the intended archive and does not leak a private preview token.\n\n## Use a four-surface matrix\n\n| Surface | Structural assertion | Behavioral assertion | Evidence |\n| --- | --- | --- | --- |\n| Source | link and unique target exist | not applicable | parser report |\n| Editor preview | target remains in preview document | click lands on visible note | screen recording or test log |\n| Public archive | canonical URL and target exist | direct URL and click both land correctly | HTTP result and browser test |\n| Received email | markup survives sender and client | click moves to note or approved fallback | full source and device/client result |\n\nAdd exported HTML as a fifth surface when another platform imports the message. The export may rename IDs, strip attributes, wrap links, or move footnotes.\n\n## Build adversarial fixtures\n\nTest more than one perfect footnote:\n\n1. duplicate target IDs;\n2. target IDs containing spaces or punctuation;\n3. upper/lowercase mismatch;\n4. non-ASCII labels;\n5. a footnote after a long image-heavy body;\n6. several references pointing to one note;\n7. a missing return target;\n8. a full archive URL with a fragment;\n9. a private preview URL with a fragment;\n10. an element removed by sanitizer while the link remains.\n\nAssert 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.\n\n## Provide a graceful fallback\n\nEmail clients do not implement every web behavior consistently. Footnotes should remain understandable when the jump fails:\n\n- number notes in reading order;\n- keep them in the same message;\n- use meaningful note labels;\n- avoid hiding essential legal or offer conditions behind interaction;\n- include a hosted archive link when it is acceptable and public;\n- keep the core claim understandable without the footnote.\n\nIf the footnote contains a consequential limitation, surface that limitation near the claim. Navigation convenience cannot carry the entire disclosure burden.\n\n## Run final-link checks after export\n\nMigma’s [Email Preflight documentation](https://docs.migma.ai/email-editor/email-preflight?utm_source=marketingwiki&utm_medium=referral&utm_campaign=email-footnote-fragment-link-test) 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.\n\nFor each final sender path:\n\n1. save or export the final artifact;\n2. parse fragment pairs again;\n3. open the archive’s direct fragment URLs;\n4. send to a controlled client matrix;\n5. click forward and return links;\n6. capture the received source and observed behavior;\n7. rerun after any editor or template change.\n\n## Classify failures precisely\n\nUse `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.\n\nThe 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.\n\n## Evidence limits\n\nMarketing 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."}