{"id":381113,"date":"2026-10-19T22:23:51","date_gmt":"2026-10-19T22:23:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/importer-for-substack\/"},"modified":"2026-10-19T22:23:27","modified_gmt":"2026-10-19T22:23:27","slug":"toposeo-importer-for-substack","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/toposeo-importer-for-substack\/","author":23580056,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.4","stable_tag":"1.2.4","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"TopoSEO Importer for Substack","header_author":"TopoSEO","header_description":"Bulk-import your Substack back-catalogue into WordPress from a Substack export .zip \u2014 every published post, photos copied into the Media Library, Substack widgets stripped out, and configurable filing rules that sort posts into your categories.","assets_banners_color":"475547","last_updated":"2026-10-19 22:23:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.toposeo.com\/tools\/substack-to-wordpress-importer\/","header_author_uri":"https:\/\/www.toposeo.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.4":{"tag":"1.2.4","author":"toposeo","date":"2026-10-19 22:23:27","revision":3755627}},"upgrade_notice":{"1.2.4":"<p>First WordPress.org release of the free TopoSEO Importer for Substack.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3755638,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3755638,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3755632,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3755632,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings \u2014 your Substack address, ownership confirmation and canonical choice.","2":"Category Setup \u2014 smart match, ordered custom rules, fallback and guardrails.","3":"Import \u2014 upload your export .zip, choose live or draft, and track progress."}},"plugin_section":[],"plugin_tags":[87,6606,4155,455,194015],"plugin_category":[42,59],"plugin_contributors":[287599],"plugin_business_model":[],"class_list":["post-381113","plugin","type-plugin","status-publish","hentry","plugin_tags-import","plugin_tags-importer","plugin_tags-migration","plugin_tags-newsletter","plugin_tags-substack","plugin_category-contact-forms","plugin_category-utilities-and-tools","plugin_contributors-toposeo","plugin_committers-toposeo"],"banners":{"banner":"https:\/\/ps.w.org\/toposeo-importer-for-substack\/assets\/banner-772x250.png?rev=3755632","banner_2x":"https:\/\/ps.w.org\/toposeo-importer-for-substack\/assets\/banner-1544x500.png?rev=3755632","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/toposeo-importer-for-substack\/assets\/icon-128x128.png?rev=3755638","icon_2x":"https:\/\/ps.w.org\/toposeo-importer-for-substack\/assets\/icon-256x256.png?rev=3755638","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>TopoSEO Importer for Substack brings your existing Substack posts into WordPress as native\nposts, from the official Substack export file you download from your own account. It\ncleans out Substack's subscribe and share widgets, copies every photo into your Media\nLibrary (so nothing hotlinks back to Substack), and can sort each post into the right\ncategory using configurable filing rules.<\/p>\n\n<p>It is built for a one-time migration of your own history, and it is safe to run\nrepeatedly \u2014 nothing is ever imported twice. When you publish more on Substack later,\ncreate a fresh export and run the importer again; it brings in only the new posts.<\/p>\n\n<h4>What the free plugin does<\/h4>\n\n<ul>\n<li><strong>Imports every published post<\/strong> with its photos, dates, titles and subtitles, from\na Substack export .zip.<\/li>\n<li><strong>Copies photos into your Media Library<\/strong> \u2014 full-resolution copies, de-duplicated so\na photo used in several posts is stored once, with the first image set as the\nfeatured image. Nothing hotlinks to Substack.<\/li>\n<li><strong>Strips Substack widgets<\/strong> \u2014 subscribe, share and other Substack-only blocks are\nremoved so you get clean WordPress content.<\/li>\n<li><strong>Auto-files into categories<\/strong> with smart match and an ordered list of custom rules\n(contains \/ starts with \/ exactly equals \/ regular expression), a fallback category\nand guardrails that protect posts you have filed by hand.<\/li>\n<li><strong>Rewrites internal links<\/strong> \u2014 links between your own posts are repointed to their\nimported WordPress copies.<\/li>\n<li><strong>Canonical option<\/strong> \u2014 keep Substack as the canonical home (so the WordPress copy is\nnot treated as duplicate content), or let WordPress stay self-canonical.<\/li>\n<li><strong>Gentle, resumable imports<\/strong> \u2014 gentle mode (on by default), a Stop button, a\nposts-per-cycle pacing control, live progress and a Status tab, so large archives\nwork even on tight shared hosting. Posts can be imported live or staged as drafts.<\/li>\n<\/ul>\n\n<h4>Pro<\/h4>\n\n<p>A one-time <a href=\"https:\/\/www.toposeo.com\">TopoSEO Pro upgrade<\/a> adds a 301 redirect map for\nyour old Substack links, AI image alt text, AI SEO meta descriptions, AI category\nsuggestions and selective import (by keyword, series or date range). The free importer\nkeeps working with or without it.<\/p>\n\n<h4>What it sends and fetches<\/h4>\n\n<p>The plugin downloads your post images from Substack's image CDN while importing. By\ndefault it only retrieves images hosted on Substack's own infrastructure (the only\nimages a Substack export references); any image a post embeds from another site is\nleft linked to its original source unless you turn on \"External images\" in Settings.\nIt makes no other external requests and sends no data anywhere.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin imports the images in your Substack export by downloading them from the servers that host them, so your published posts do not hotlink back to Substack. This happens only while you are running an import.<\/p>\n\n<p>For every image referenced by your export, the plugin sends an HTTP request to fetch that image from:<\/p>\n\n<ul>\n<li><strong>Substack's image CDN<\/strong> (<code>substackcdn.com<\/code>) and the Amazon S3 storage Substack keeps media in (<code>amazonaws.com<\/code>). Only the image URL from your export is requested \u2014 no account credentials, personal data or site data are sent. These are Substack's own services; see Substack's Terms of Use (https:\/\/substack.com\/tos) and Privacy Policy (https:\/\/substack.com\/privacy).<\/li>\n<\/ul>\n\n<p>If you enable the optional \"External images\" setting, the plugin will also download images your posts embedded from other websites, by requesting those image URLs directly from wherever they are hosted. This is off by default.<\/p>\n\n<p>The plugin makes no other external requests, performs no license or activation checks, and sends no data to TopoSEO or any other third party.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>On Substack, go to <strong>Settings \u2192 Import\/Export \u2192 Export<\/strong>, create a new export,\nand download the .zip.<\/li>\n<li>In WordPress, go to <strong>TopoSEO Importer for Substack \u2192 Settings<\/strong>, enter your Substack\naddress, confirm you own the content, and (optionally) set up the <strong>Category\nSetup<\/strong> tab.<\/li>\n<li>Go to <strong>TopoSEO Importer for Substack \u2192 Import<\/strong> and upload the .zip.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20a%20scraper%3F\"><h3>Is this a scraper?<\/h3><\/dt>\n<dd><p>No. It does not crawl or scrape Substack. It imports the official export .zip that you\ndownload from your own Substack account, so it only ever touches content you own.<\/p><\/dd>\n<dt id=\"will%20it%20duplicate%20my%20posts%20if%20i%20run%20it%20twice%3F\"><h3>Will it duplicate my posts if I run it twice?<\/h3><\/dt>\n<dd><p>No. Posts are de-duplicated by their Substack slug and images by their original URL, so\nthe import is safe to re-run. Re-running brings in only posts that are not already on\nyour site.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20old%20substack%20links%3F\"><h3>What happens to my old Substack links?<\/h3><\/dt>\n<dd><p>The free version gives you a canonical option: keep Substack as the canonical home so\nsearch engines are not confused by duplicate content, or let WordPress stay\nself-canonical. A full 301 redirect map for old Substack URLs is part of the Pro\nupgrade.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20delete%20my%20imported%20posts%3F\"><h3>Does uninstalling delete my imported posts?<\/h3><\/dt>\n<dd><p>No. Uninstalling removes only the plugin's own settings. Your imported posts and their\nphotos stay in WordPress.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>First WordPress.org release of the free importer. Imports your Substack export .zip\ninto WordPress: posts with photos copied into the Media Library, Substack widgets\nstripped, rule-based category filing, internal-link rewriting, a canonical option,\nand gentle, resumable imports with live progress.<\/li>\n<\/ul>","raw_excerpt":"Import your Substack archive into WordPress from an export .zip: photos saved to the Media Library, widgets stripped, and posts auto-filed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/381113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=381113"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/toposeo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=381113"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=381113"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=381113"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=381113"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=381113"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=381113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}