All guides
HubSpotMigration

How to Bulk Update URLs in HubSpot

By SearchReplace··9 min read

URLs change more often than most teams plan for. A website migration changes every page's address. A rebrand swaps out the entire domain. A product rename changes a subset of URLs. An acquisition folds one site into another. Even something as simple as restructuring your blog from /blog/category/post to /resources/post creates hundreds of broken internal links if you don't update the references.

The problem in HubSpot is that URLs don't live in one place. They're embedded in blog post body content, CRM record properties, email templates, CTA buttons, landing pages, knowledge base articles, and workflow actions. Updating the pages themselves (with redirects) is step one. Finding and replacing every reference to the old URLs — buried across your entire portal — is step two. And it's the step most teams skip or do incompletely.

Where URLs hide in HubSpot

Before you can update URLs, you need to know where they live. Here's a comprehensive inventory:

CRM record properties

Contact records:

  • Website URL property
  • LinkedIn, Twitter, and other social media URL fields
  • Custom URL properties (portfolio URL, calendar link, etc.)

Company records:

  • Website URL property
  • LinkedIn company page URL
  • Company domain name (not a URL per se, but related)
  • Custom URL properties

Deal records:

  • Custom URL properties (proposal link, contract link, etc.)

Ticket records:

  • Custom URL properties (knowledge base article reference, etc.)

Blog posts

Blog posts are the most common place where internal URLs accumulate. Every time you link to another page on your site, to a resource, or to a landing page, that URL is hardcoded into the blog post's HTML content. A site with 200 blog posts might contain 1,000+ internal links.

Common URL types in blog posts:

  • Internal links to other blog posts
  • Links to landing pages and pillar pages
  • Links to downloadable resources (PDFs, ebooks)
  • Image source URLs (if images are hosted on a CDN that's changing)
  • CTA links embedded in the content
  • Links in author bios

Website and landing pages

Similar to blog posts, website pages and landing pages contain hardcoded URLs in their content modules. Navigation menus, footer links, and sidebar widgets may also contain URLs, though these are typically managed through template-level settings rather than page content.

Email templates

Both marketing email templates and sales email templates contain URLs:

  • Button links ("Learn More," "Get Started," "Book a Demo")
  • Text links in body copy
  • Image links (clickable images that go to a page)
  • Footer links (website, blog, social media, unsubscribe)
  • Preheader text that references a URL

Other locations

  • CTAs: HubSpot CTA buttons have a destination URL configured in their settings
  • Chatflows: Bot messages that include links
  • Knowledge base articles: Internal links between articles, and links to external pages
  • Meeting pages: Custom confirmation pages that redirect to a specific URL
  • Workflow email actions: Emails sent by workflows contain the same types of URLs as regular templates
  • Snippets: Text snippets used by sales reps may include links

Types of URL updates

Domain change

The most common bulk URL update: every instance of olddomain.com needs to become newdomain.com. This is a straightforward string replacement, but the volume of affected locations makes it daunting.

Example: https://acme-corp.com/blog/post-title becomes https://apex-industries.com/blog/post-title

Path structure change

The domain stays the same, but the URL path changes. This is common during website restructuring.

Example: https://yoursite.com/blog/post-title becomes https://yoursite.com/resources/articles/post-title

Protocol change

Migrating from HTTP to HTTPS. While most browsers handle this transparently, hardcoded http:// URLs in your content should be updated to https:// to avoid unnecessary redirects and mixed content warnings.

Example: http://yoursite.com/page becomes https://yoursite.com/page

Subdomain change

Moving a subdomain to a new location — blog.yoursite.com to yoursite.com/blog, or app.yoursite.com to dashboard.yoursite.com.

Example: https://blog.acme.com/post-title becomes https://acme.com/blog/post-title

CDN or asset URL change

If you're changing where files are hosted (switching CDNs, moving from HubSpot's File Manager to another host), every image and document reference needs updating.

Example: https://cdn2.hubspot.net/your-portal/files/ebook.pdf becomes https://assets.yoursite.com/downloads/ebook.pdf

The manual approach (and why it doesn't scale)

For a handful of URLs, manual updates work. Open the blog post, use your browser's find function (Ctrl+F) to locate the old URL, update it, and publish. Open the email template, find the link, update it, save.

But consider the math. A site with:

  • 200 blog posts averaging 5 internal links each = 1,000 URLs to check
  • 50 email templates averaging 3 links each = 150 URLs to check
  • 5,000 CRM records with website URL properties = 5,000 URLs to check
  • 30 landing pages averaging 4 links each = 120 URLs to check

That's over 6,000 URLs to find and update. Even at 30 seconds per URL (which is optimistic), you're looking at 50 hours of work. And manual work means missed URLs — you'll inevitably overlook a link buried in an old blog post or a rarely-used email template.

Using search and replace for URL updates

Bulk search and replace is the practical approach for URL updates at scale. Here's what replacing a domain across blog content looks like:

The process varies by where the URLs live.

CRM record properties

URL properties on contacts, companies, deals, and tickets can be updated with a search-and-replace operation targeting the specific property. The workflow:

  1. Select the object type (e.g., Companies)
  2. Select the property (e.g., Website URL)
  3. Search for the old URL pattern (e.g., acme-corp.com)
  4. Replace with the new URL pattern (e.g., apex-industries.com)
  5. Preview all affected records
  6. Apply

For domain changes, you typically search for just the domain portion rather than full URLs. This catches all URL variations — with or without www, with any path, with any protocol.

Blog post content

Blog post body content is stored as HTML in HubSpot. A search-and-replace across blog post content that finds old URLs and replaces them with new URLs handles the entire blog in one operation.

Important: When searching URLs in blog post HTML, be aware that the URL might appear in different forms:

  • As an href attribute: href="https://acme-corp.com/page"
  • As an src attribute: src="https://acme-corp.com/image.jpg"
  • As plain text: Visit us at https://acme-corp.com

Searching for the domain string (without HTML attributes) catches all three forms.

Approach for complex URL changes

For domain changes, a simple string replacement works: replace olddomain.com with newdomain.com.

For path structure changes, you need to be more precise. If you're changing /blog/ to /resources/articles/, search for /blog/ and replace with /resources/articles/. But verify with the preview that this doesn't catch URLs you didn't intend to change — for example, if you have a page at /blog-policy/ that shouldn't be affected.

For the most complex URL transformations — where different old URLs map to different new URLs — you may need multiple search-and-replace operations, each targeting a specific URL pattern.

A systematic URL update workflow

Here's a step-by-step process for a comprehensive URL update:

Phase 1: Inventory and planning

  1. List all URL patterns that are changing. Be specific: which domains, paths, and subdomains are affected?
  2. Create a mapping document. For each old URL pattern, document the new URL pattern.
  3. Set up 301 redirects for the actual pages. This is separate from updating references, but it's the safety net. Even if you miss some URL references in content, the redirect ensures users and search engines reach the right page.

Phase 2: CRM record updates

  1. Update company website URLs. Search across Company records for old domain references in the Website URL property.
  2. Update contact website URLs. Same operation on Contact records.
  3. Update custom URL properties. Any custom properties that store URLs need checking too.

Phase 3: Content updates

  1. Update blog post URLs. Search and replace across blog post content for old URL patterns.
  2. Update website page URLs. Same operation for website pages and landing pages.
  3. Update email template URLs. Check and update marketing email templates and sales templates.

Phase 4: Verification

  1. Crawl the site. Use Screaming Frog or a similar crawler to check for remaining old URL references on your live site.
  2. Search for stragglers. Run one final search across all object types and content for the old domain. Anything still appearing was missed in previous passes.
  3. Monitor 404s. After launch, watch your 404 error log for a few weeks. Each 404 from an old URL pattern reveals a reference you missed.

Handling edge cases

URLs with query parameters. A URL like https://acme-corp.com/page?utm_source=email should be caught by a search for acme-corp.com, but verify this in your preview. Some search tools handle query parameters differently.

URLs in markdown or rich text. If your blog content uses markdown-style links [link text](url) or HTML <a href="url">, both formats should be caught by a plain-text URL search. But double-check that the replacement doesn't break the surrounding markup.

Encoded URLs. Some URLs are URL-encoded (spaces as %20, special characters as their encoded equivalents). If your old URLs contain special characters, search for both the human-readable and encoded versions.

Relative vs. absolute URLs. Some content uses relative URLs (/blog/post-title instead of https://yoursite.com/blog/post-title). If only the domain is changing, relative URLs don't need updating. If the path structure is changing, they do.

URLs in image alt text and title attributes. Less common, but some teams include URLs in image alt text or title attributes for accessibility or tracking purposes.

Prevention: reducing future URL update burden

Use relative URLs for internal links. When linking between pages on your own site, use relative URLs (/blog/post-title) instead of absolute URLs (https://yoursite.com/blog/post-title). This way, domain changes don't affect internal links.

Use HubSpot's CTA tool for important links. HubSpot CTAs have a centralized URL setting. Updating the CTA's URL updates it everywhere the CTA is used. This is more maintainable than hardcoded links.

Centralize asset hosting. Use a consistent location for images, PDFs, and other assets. If you must change hosting later, all references follow a predictable pattern that's easy to search and replace.

Document your URL structure. Maintain a living document that describes your URL conventions. When the team follows consistent patterns, future URL updates are more predictable and easier to execute.

Bulk URL updates are a tedious but essential part of any migration or restructuring. The difference between doing it well and doing it poorly shows up in your SEO rankings, user experience, and the number of broken-link complaints your team fields for months afterward.


Updating URLs across your HubSpot portal? SearchReplace finds every reference to old URLs in your CRM records and CMS content — with preview and one-click rollback.

Related HubSpot guides for planning, previewing, and validating the next step.

Still editing HubSpot records one by one?

Start with 100 free applied records — no credit card required.