For the complete documentation index, see llms.txt. This page is also available as Markdown.

Customization

The Intercom component has fixed position and styling. This guide shows what can be customized and workarounds for common needs.


Fixed Properties (Cannot Customize)

Position:

  • Bottom-right corner

  • Mobile: 112px from bottom, 16px from right

  • Desktop: 40px from bottom, 40px from right

Styling:

  • Dark theme only

  • 50x50px trigger button

  • 400px × 530px max popover size

  • HelpCircle/CircleX icons

Behavior:

  • Portal rendering

  • Requires authentication


What You Can Customize

1. When the Component Renders

Conditional Display:

Route-Based:

User-Based:

2. Which Agent to Chat With

Change the username prop to switch between different AI agents:

3. Load Behavior


Common Scenarios

Hide on Specific Pages

Multiple Chat Options

Don't render multiple Intercom instances. Use conditional rendering:


Layout Considerations

Avoid Position Conflicts

The Intercom button occupies bottom-right space. Ensure your fixed elements don't overlap:

Reserve Space for Fixed Elements

Z-Index Stacking

Default stacking order:

  1. Page content (z-index: auto)

  2. Intercom trigger (z-index: 10)

  3. Intercom popover (z-index: 50)

  4. Your modals (z-index: 100+)

Ensure your modals use z-index: 100+ to appear above Intercom.


Best Practices

Rendering:

  • Render at root level, not inside scrollable containers

  • Use single instance per page

  • Unmount when not needed for performance

User Experience:

  • Don't show immediately on page load (delay 3-5 seconds)

  • Use descriptive agent usernames (billing_support vs support)

  • Hide on auth pages (/login, /signup)

  • Show based on user permissions

Performance:

  • Default fetchOnMount={false} is optimal (loads on open)

  • Only use fetchOnMount={true} if users need instant access


Limitations Summary

Feature
Customizable?

Button position

❌ Fixed bottom-right

Button styling

❌ Fixed icon/size/colors

Popover dimensions

❌ Fixed max-width/height

Theme

❌ Dark theme only

Z-index values

❌ Fixed (trigger: 10, popover: 50)

When component renders

✅ Conditional rendering

Which agent to chat with

username prop

Message load timing

fetchOnMount prop

Layout around component

✅ Your CSS/positioning


Last updated