GUIDES / IMPORTING THE MAP INTO

How to bulk upload URL redirects to HubSpot from a csv

an importer with a mapping step, a batch size of 500, and pattern redirects for the folders.

by Max Lorenz, Goodaim · updated 10 sep 2026

hubspot url redirects
  • /old-page301
    /new-page
  • /blog/:slugpattern
    /insights/:slug

SHORT ANSWER

HubSpot bulk-uploads redirects from a csv: Settings, Content, Domains & URLs, the URL Redirects tab, Import. The dialog reads your columns and asks which one is the original url and which the destination, so the header does not have to match anything exactly. Each upload holds 500 rows and either succeeds as a whole or fails as a whole. Whole folders are better handled outside the csv, as a flexible pattern redirect with :slug on both sides.

Which file do I start from?

In Silentfrog, pick plain path pairs (wix, hubspot, other) under for in the export and the download is already this file: a from,to csv the mapping step reads straight away, with directory rules written out row by row. Pages that kept their url, rows still unmatched and unverified needs-review rows are left out of it, so nothing gets imported that nobody looked at (the two downloads). The rest of this page says what is in the file and how the import behaves, and it works just as well for a two-column csv of path pairs from anywhere else.

The generic csv next to it is the audit trail: absolute urls, confidence, match type, the unmatched rows with an empty target. Keep it with the project, do not import it.

export

site settings → publishing → 301 redirects, or the data api

the two export buttons — webflow csv and generic csv — next to the option that includes needs-review matches.

the export: the importer picker, the redirects file it produces, and the generic csv next to it.

Preparing the file

  • Download HubSpot’s sample csv from the import dialog once and copy its headers, so the mapping step recognises the columns without help. The two you need are the original url and the redirect destination; redirect type and a note are optional.
  • Paths, not full urls, in the original column. A full url pins the rule to one domain, a path applies wherever the site is served.
  • 140 characters at most per url in a bulk upload. Sort the left column by length and look at the longest few; a very old campaign url with parameters can exceed it and has to be added by hand.
  • No wildcard rows. The plain path pairs file has none; a directory rule is written out as its rows. If a csv from elsewhere has a row with (.*) on the left, it fails the whole upload. Folders are better done as pattern redirects anyway, next section.
  • Split at 500 rows. Number the files so a failed one is easy to find again.

EXAMPLE

a 1 100-row map with three directory rules: the three rules become pattern redirects, their rows are deleted from the file, and the remaining 380 rows go up as one upload.

Folders as flexible pattern redirects

A directory rule in Silentfrog is a flexible pattern redirect in HubSpot: add a redirect in the tool, choose the flexible pattern type, and enter /blog/:slug as the original url and /insights/:slug as the destination. The variable name is yours to choose; it has to be the same on both sides.

Order matters in the tool: a pattern rule for /blog/:slug also matches /blog/tag/name and would send it to /insights/tag/name. Add the more specific rule for /blog/tag/:slug first, or give tag and author paths their own rule pointing at the blog index, and check the priority order in the list afterwards.

What a pattern cannot know is whether the target exists. Silentfrog’s directory preview lists the slugs the new site does not have; those get a row of their own in the csv, pointing at the closest page, and the csv rows take precedence over the pattern when they are listed above it.

Redirects HubSpot already has

The URL Redirects tab lists what is there, including rules from earlier moves. The import dialog offers to overwrite existing redirects with the same original url; tick it when the new map should win. Then read the old list for chains: a rule whose destination is an original url in your new file should be changed to the final target.

After the upload

  • A failed upload imports nothing and puts an error spreadsheet in your notifications. Fix the rows it names and upload the file again in full.
  • Crawl the old url list against the live site: one 301, then 200. Open one url under each pattern redirect by hand, including one that should hit a more specific rule.
  • A redirect for a url that is still a published page does nothing; unpublish it first.
  • Watch Search Console for the following weeks: pages with redirect up, not found flat.

In short

  • Settings, Content, Domains & URLs, URL Redirects, Import; map your two columns to original url and destination.
  • Paths, 140 characters at most, 500 rows per upload; an upload succeeds or fails as a whole.
  • Folders are flexible pattern redirects with :slug on both sides, made in the tool, with specific rules above them.
  • Tick overwrite existing redirects when the new map should win; flatten chains in the old list.
  • After the upload, crawl the old urls against the live site and test one url per pattern.