API HTML Sanitizer Issue: Forced H1 Promotion in Articles Causes Duplicate Headings and SEO Degradation | Community
Skip to main content
Submitted

API HTML Sanitizer Issue: Forced H1 Promotion in Articles Causes Duplicate Headings and SEO Degradation

Related products:Knowledge & Help Center
  • July 6, 2026
  • 0 replies
  • 7 views

I am writing to report a frustrating HTML parsing issue when creating or updating Help Center Articles via the API (including version 2.15 and others).

Problem Description: When uploading an article's <body> HTML that does not contain an <h1> tag but starts with an <h2> (or <h3>), the Intercom HTML Sanitizer / Block Converter forcefully promotes the highest-level heading to an <h1>.

Steps to Reproduce:

  1. Use the Article API to create/update an article.

  2. Pass the following HTML payload for the body: <h2>Introduction</h2><p>Some text here.</p>

  3. Check the rendered article in the Intercom Help Center or within the Intercom Article Block Editor.

Current Behavior: The parser automatically converts the <h2> tag into an <h1>. Because the Help Center template already renders the Article Title as the primary <h1> (or visual equivalent), the final published page ends up with two <H1> tags.

Business & Technical Impact:

  • SEO Penalty: Multiple H1 tags on a single page violate fundamental SEO best practices, negatively impacting the search ranking of our Help Center.

  • Accessibility (a11y): Screen readers rely on a strict semantic hierarchy. A forced, duplicate H1 breaks the expected document structure for visually impaired users.

  • Migration Friction: We are forced to inject zero-width spaces (<h1>&#8203;</h1>) at the top of our payloads just to bypass your parser and preserve our original <h2> tags.

Feature Request: Could the engineering team consider either:

  1. Respecting the original HTML semantic hierarchy when no H1 is provided in the payload (leaving H2 as H2).

  2. Introducing a parameter in the API payload (e.g., disable_heading_promotion: true) to bypass the automatic Block Editor restructuring.

Thank you for looking into this core API behavior.