Skip to main content

Sync and manage websites

How to train Fin on public URLs from your website.

If you’d like to train Fin with website content, you can do this by syncing the public URL for that site.


Get started

Go to Train > Content and then select Website sync below the "Add content" section.

Now enter the public URL of your website (top-level domain) and click Next.

This will fetch all of the pages from the website URL you provide and will read from all the sub domain pages.

Tips:

Review pages to sync

Once you input your URL, we will check that it's valid and accessible. Then you'll need to review the pages to sync. All sub-pages linked in each selected section will be synced. Select only relevant up-to-date content.

Tips:

  • Select pages and sections that contain support content like help articles, guides, or FAQS.

  • Avoid selecting marketing pages, product listings, or pages with complex layouts.

  • All linked sub-pages within selected sections will be automatically included.

  • You can always update your selection later in the advanced settings.

Advanced settings [optional]

Select the Advanced settings dropdown to configure additional URLs, exclude URLs, CSS selectors to exclude, and more.

Additional URLs

Website structures can vary. To make sure that we sync your most relevant content, we recommend you add additional URLs for those specific subpages.

For example, if you input https://myhelpcenter.com/help as the primary URL above, you might also want to add the specific URL like https://myhelpcenter.com/help/index.html

URLs to exclude

To exclude certain pages you don’t want to sync content from, you can add a list of URL globs.

What is a URL glob?

A glob is a string of literal and/or wildcard characters used to match file paths or URLs. Globbing is the act of locating files on a filesystem using one or more globs. Using URL globs also helps to get a range of URLs that are mostly the same, with only a small portion of it changing between the requests.

For example, this URL glob https://{store,docs}.example.com/** lets the crawler access all URLs starting with https://store.example.com/ or https://docs.example.com/ and https://example.com/**/*\?*foo=*

Tip: Not sure if your glob pattern will match the URLs you want to exclude? You can use DigitalOcean's Glob Tool to test patterns against sample URLs before applying them. (This is a third-party tool not maintained by Intercom.)

CSS selectors to exclude

To exclude certain page elements, you can use CSS selectors of those specific sections or elements you want to exclude.

This is useful to skip irrelevant page content. The value must be a valid CSS selector as accepted by the document.querySelectorAll() function. By default, we already remove common navigation elements, headers, footers, modals, scripts, and inline images.

Clickable CSS selector

This allows for DOM elements identified by the CSS selector, to be clicked during the web sync process.

This is useful for expanding collapsed sections, in order to capture their text content. The value must be a valid CSS selector as accepted by the document.querySelectorAll() function.

Examples are "[aria-expanded=\"false\"]", #expand_section

Complex conditions can be also described with a CSS selector. In CSS, chaining the selectors without spaces creates an AND-like condition, for example .button.blue.small will match only elements with all three classes.

Using comma (,) as a separator works like OR, for example .button, .blue, h1 targets all elements with class button, or class blue, or first-level headings.

Wait to load CSS selector

To target content that may have a delay in appearing on the page, you can add a CSS selector that will make the web scraper wait before scraping content.

This is useful for pages for which the default content load recognition by idle network fails. Setting this option completely disables the default behavior, and the page will be processed only if the element specified by this selector appears.

Note: The value must be a valid CSS selector as accepted by the document.querySelectorAll() function.

XML Sitemap

Enable XML Sitemap for a more robust websync on sitemap-supported websites, allowing access to pages that might not be reachable from the initial URLs.

If this option is enabled, the web scraper will look for Sitemaps at the domains of the provided source URL and enqueue matching URLs similarly as the links found on crawled pages. You can also reference a sitemap.xml file directly by adding it as another Start URL e.g. https://www.example.com/sitemap.xml.

Proxy region

You can select a proxy for crawler to use if you require your website to be crawled with a proxy set to a specific region or country.

We currently support the following proxies:

  • Rotating: United States, Germany, France, United Kingdom, Czechia, Hungary

  • Static:

    • United States - 119.13.211.225, 161.123.167.215, 94.176.49.232, 185.223.56.90, 154.17.143.135

    • Europe - 178.171.116.231, 206.232.77.243, 206.232.90.11, 209.20.175.180, 45.94.247.149

    • Australia - 154.220.151.84, 173.254.193.121, 160.224.101.213, 160.224.100.176, 212.70.22.41

Crawler type

Choose how thoroughly the crawler renders each page while syncing this website.

  • Pages syncing empty or truncated usually means JavaScript rendering. Switch to Full and re-sync.

  • Full is heavier, so it's likelier to put a large source on a reduced schedule.

  • You can change this on an existing source and re-sync to compare.

Option

What it does

Use it when

Fast

Reads HTML without running JavaScript.

Content is in the initial HTML — most blogs, docs, help centers.

Auto (default)

We pick, and switch to Full if the site needs JavaScript.

You're not sure. Right for nearly everyone.

Full

Loads each page in a browser and runs JavaScript. Slower.

Content only appears after scripts run, single-page apps JavaScript heavy pages.

Ignore canonical URLs

When enabled, the web scraper ignores canonical link tags (rel="canonical") and treats each URL as a distinct page. This option is disabled by default.

This is useful when a site points many pages at one canonical URL and content is being missed as a result.

Excluding query parameters and respecting robots.txt

There are two more toggles under Advanced settings. Both are off by default.

Respect robots.txt: makes the crawler obey the disallow rules in your site's robots.txt. Turn it on to keep syncing consistent with what you allow other crawlers to reach. If robots.txt disallows paths that hold content you want in Fin, this will reduce what gets synced.

Exclude query parameters: skips any URL with a query string (?). Turn it on when your site appends tracking, session, or sort parameters that produce lots of near-duplicate pages. Leave it off if real content lives behind a query string, like /docs?page=intro — those pages would be skipped too.

Target audiences

The Target step lets you set a default audience for all synced pages and create URL-based rules to automatically assign specific audiences based on URL patterns — no manual tagging required.

First decide whether content from this source is enabled for Fin AI Agent and/or Copilot.

Then you can either set a default Fin audience to apply to all pages synced from this source (if no default is set, content defaults to Everyone), or create rules to assign specific audiences based on URL patterns.

For example: If URL contains /uk, assign the UK audience. Rules are evaluated during sync, so Fin and Copilot always serve the right content to the right audience.

Each rule supports three URL comparators:

  • Starts with — matches URLs beginning with a given prefix.

  • Ends with — matches URLs ending with a given suffix.

  • Contains — matches URLs containing a given substring.

Note:

  • A live preview shows how many pages match each rule, helping you validate rules before saving. This requires a sitemap to be available for your web sync source. Without a sitemap, rules still apply but you can't preview matches.

  • Rules are auto-named on creation but can be renamed. A maximum of 10 rules per web sync source is enforced.

  • Audience rules are additive only: they add audiences to content but never remove existing assignments. Removing a rule does not undo its past audience assignments.

Review sync settings

Finally, review your sync settings then go ahead and click Sync website to start syncing your website content with Intercom.


Manage website sources

Once the sync is complete, you’ll receive an email notification and the website will appear as a synced source in Train > Content under the "Content sources" section.

If you click into a website source, you can preview and manage the individual pages that were synced from the public URL.

Note: Website sources are read-only and can’t be edited within your Fin workspace, they must be edited at the source.

Configure settings

When you view a website page, you’ll find a "Details" panel on the right which contains:

  • Data: View the content type, language, creation date, and last update (when it was last synced with the source).

  • Fin: Enable/disable for Fin Agent and Fin Copilot. When enabled, the content becomes available to customers and teammates, respectively

    • Scheduling: Turn content on or off for Fin and Copilot on set dates.

    • Audience: Ensure customers only get answers and see content from Fin Agent that is relevant for them.

  • Link: The public URL for this website source.

  • Reports: Tracks how often this content is involved and used to resolve conversations by Fin Agent .

  • Tag: Add a tag to group webpages together and keep content organized.

Make it available to Fin or Copilot

To make a website source available to Fin Agent or Fin Copilot, go to Train > Content and click on the website source under the "Content sources" section, then open the relevant webpage you've synced.

From the "Details" panel, scroll down to “Fin” and toggle on:

  • Fin Agent - This setting will make the webpage available for Fin AI to use when responding to customers (it will respect any audience rules).

  • Fin Copilot - This setting will make the webpage available for Fin Copilot to use when responding to teammates.

Schedule website availability

You can schedule when synced website pages turn on or off for Fin and Copilot, at a future date, time, and timezone. Set a start date only, or set both a start and end date to create a time-limited availability window. Scheduling applies to individual pages or in bulk.

Schedule a single page

  1. Open the page. In the right-hand Details panel, find the Scheduling section within the Fin dropdown.

  2. Click Schedule availability.

  3. In the modal: select the AI product (Fin for Service or Fin Copilot), set availability (Enable or Disable), and pick a date, time, and timezone.

  4. Optionally toggle Set end date to add an end date and time — the action reverses automatically at that point.

  5. Click Schedule to confirm.

Bulk schedule pages

  1. Select multiple pages from the content list.

  2. Go to the More actions dropdown and select Schedule availability.

  3. The same scheduling modal applies to all selected items.

How scheduling works

  • Start date only: The enable/disable action fires at the scheduled time and stays in effect until you manually change it.

  • Start + end date: Content turns on (or off) at the start time, then automatically reverts at the end time.

  • Manual changes don't cancel a pending schedule: If you manually toggle availability after setting a schedule, the scheduled transition will still fire at its scheduled time and override your manual change.

  • One pending schedule per item per agent: Setting a new schedule replaces the previous one — no duplicates.

  • Deleted content: If a page is deleted before its schedule fires, the schedule simply won't apply and no error is shown.

Make it available to a specific audience

You can assign audiences to synced content automatically using URL-based rules during web sync creation, or manually on a per-page basis. First, you'll need to create and define the audience you want to target.

Then go to Train > Content and click on the website source under the "Content sources" section, then open the relevant webpage you've synced.

From the "Details" panel, scroll down to “Fin” and use the audience dropdown to select one of your pre-defined audiences.

Note:

  • The default audience for public URLs is “Everyone”.

  • Fin Agent will also respect any audience you apply to a public URL and only use this article to answer customer questions if they match the audience rules.

Add or edit audience rules on existing syncs

You don't need to recreate a sync to add audience targeting. Go to Train > Content, select the source, click the settings dropdown in the top right, and select Open settings. Navigate to the Target step to add or edit URL-based rules.

Note: When audience rules are added to an existing web sync, they apply retroactively to all content already ingested from that source — not just new content going forward.

Re-sync or remove a website as a source

If you’d like to re-sync or remove a public URL as a source, go to Train > Content, and click on the website source under the "Content sources" section, then open the Settings dropdown in the top right.

Here, you can select whether to Re-sync or Remove this source.

Tip: Updates made on your source website won't appear in Intercom immediately. Website re-syncs happen automatically each week, but you can trigger a manual re-sync at any time to show the latest content sooner.

View website sync history

You can view a list of past website syncs to see when they were last run, which pages were found, and any failed pages. Go to Train > Content, and click on the website source under the "Content sources" section, then select View sync history.


Each row in the table represents a past or active run, and you can filter the runs by status (started, success, failed).

It includes the following information:

  • Sync date

  • Status

  • Synced pages

  • Excluded pages

  • Failed pages

  • Duration

  • Sync started by

If a sync has failed, you can hover over the status to see a detailed explanation for why.

Automatic syncs pause when Fin isn't using a website

A new source syncs on schedule for its first 90 days regardless. After that, it keeps syncing automatically if either is true:

  • A page from it was used in a Fin answer in the last 90 days.

Otherwise, scheduled syncs pause.

When paused: pages stay in your Knowledge Hub and stay available to Fin and Copilot (nothing is deleted). Only the re-crawl stops, so edits on your site won't be picked up.

To restore it: The Sync now button refreshes the content once but doesn't restart the schedule. Automatic syncing resumes on its own once Fin uses the source again.

Websites that are heavy to crawl sync less often

Very large sites, and sites needing full JavaScript rendering, cost far more to crawl. When a source turns out to be resource-heavy, we move it from a weekly to an every 14 days schedule.

This happens automatically, per source. To keep a big site on a faster schedule, narrow the crawl by using URL exclusions, or add specific subpages instead of a whole domain.


Troubleshooting website sync

Common issues

When importing website content to enable Fin, you need to enter the public URL. This will search for all pages nested under that URL and sync them for Fin AI Agent to use.

If the importer didn't return the number of pages you expected, there are a few reasons...

The URL provided isn't the top level domain

The website sync works by going to the URL you provide and then searching for all pages nested under that URL. These pages must have the same URL pattern as the URL you provide.

For example, if the top level domain is https://myhelpcenter.com/home, then all pages you want to import must include /home prefix in the URL e.g. https://myhelpcenter.com/home/article. If they do not, remove the prefix and use the most basic URL stem e.g. https://myhelpcenter.com, then try the import again.

The URL is private

If the content you want to use is behind a login, Fin won't be able to access or import it.

Page limits

Website sync has two limits:

  • Domains: you can sync up to 100 different top-level domains.

  • Pages per source: Fin syncs a maximum of 4,000 pages from each source.

A sync can also fail if a single page contains a very large amount of content. You'll be notified by email whenever a sync fails.

Note:

  • If a source has more than 4,000 pages, split it into several sources so each one stays under the limit:

    • Partition the site into smaller sections and add each section as its own source.

    • Sync different URL paths separately for example, one source per product area or category.

  • This keeps every source under the page limit and reduces the content processed per sync.

Websites restricted to specific regional IPs

Fin's website sync (used to add public URLs for Fin AI Agent and Copilot) does not use a dedicated, custom user-agent string at this time.

If your site has strict anti-crawling protection, you can use a static proxy to allow-list a fixed set of IP addresses and ensure your content gets ingested. Select a static proxy under Advanced settings when creating or editing your website sync.

  • By IP address: If your site requires allow-listing, select a static proxy under Advanced settings — this gives you a fixed set of IPs to add to your allow-list.

  • These requests are used only for website syncing. They don't affect your Messenger traffic or end-user tracking.

Pages from non-English or international sites aren't syncing

If your sitemap includes URLs with non-ASCII characters (such as accented letters, or scripts like Chinese or Arabic) some of those pages may not sync as expected. Sitemap discovery now supports these URLs, but they can still run into issues in other parts of the sync process. Try resyncing manually to resolve it. If pages are still missing, contact support.

Website sync errors

When you sync website content, you may see different statuses that indicate what happened during the process. To see your website sync status go to Train > Content and select the website source, then use the Status dropdown to filter by:

  • Syncing

  • Live

  • Failed

  • Excluded

Here’s what each one means and what you can do next:

Syncing

The page sync is still in progress. An initial sync can take anywhere from a few minutes to over an hour based on how much content you have.

Live

The page was successfully synced and can be enabled for Fin and Copilot.

Note: A successful sync doesn’t always mean we were able to scrape all of the content on the page. If you want to confirm full coverage, we recommend previewing Fin with answers you expect it to find from that page.

Excluded

These pages are intentionally not synced because you excluded them in the Advanced sync settings. They can't be retried or included unless otherwise specified.

Failed

These errors mean the sync didn’t complete and may require changes on your side before retrying:

1. Unknown error

  • Message: “This page couldn't be accessed. It may be slow or blocked. Try syncing again, or contact support if it fails.”

  • What it means: Something prevented us from accessing the page, but the cause isn’t clear.

2. Session blocked / Rate limited

  • Message: “The website is preventing us from accessing its content. Check if it's being blocked by an anti-crawler setting or firewall. Check your site configuration and try syncing again. If the issue persists, contact support.”

  • What it means: Your site is actively blocking or limiting our crawler.

3. Network, timeout, or similar errors

  • Message: “This page couldn't be accessed. It may be slow to load or blocked by anti-crawler settings or a firewall. Check your site configuration and try syncing again. If the issue persists, contact support.

  • What it means: The page didn’t load in time or couldn’t be reached due to network issues or blocking.

4. Duplicate

  • Message: “This page has the same content as another that's already synced. Only one version will be included.”

  • What it means: We detected identical content elsewhere, so only one copy is kept.

5. Keyword filtering

  • Message: “Pages with keywords like category, collection, or tag in the URL are excluded by default, as they usually don't contain unique content. If this page should be included, contact support.”

  • What it means: These URLs often represent lists, not standalone content pages.

6. Status code 400

  • Message: “Page content cannot be found. Check that the URL is valid and the page loads without issues.

  • What it means: The URL may be broken or returning an error on your website.

7. Blocked URL

  • Message: “This website domain is blocked from being synced. If you require this, contact support.”

  • What it means: The domain is intentionally excluded from syncing.


​You can retry a failed page sync by hovering over the page, select the three dot menu and then select Resync.


💡Tip

Need more help? Get support from our Community Forum
Find answers and get help from Intercom Support and Community Experts


Did this answer your question?