Substack → Kit
Kit has no Substack importer. You export Substack, import two CSVs, and rebuild the archive as Broadcasts. Paid billing does not move. Readers have to subscribe again if you want Kit to charge them.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Substack
- Publishing, email, recommendations, network discovery, and paid subscriptions work out of the box
- Audience, campaigns, automations, and reporting live in one publishing system
- Brand control, automation, data depth, and platform independence are limited
- Automation logic, analytics history, and deliverability settings are not very portable
Kit
- Creator-friendly tagging and visual automations make audience journeys approachable
- Audience, campaigns, automations, and reporting live in one publishing system
- Publishing, referral, and native monetization features are narrower than newsletter-first platforms
- Automation logic, analytics history, and deliverability settings are not very portable
Kit: Creator-friendly tagging and visual automations make audience journeys approachable. This removes a major source-side concern: Brand control, automation, data depth, and platform independence are limited.
What you lose: Publishing, email, recommendations, network discovery, and paid subscriptions work out of the box. What you inherit: Publishing, referral, and native monetization features are narrower than newsletter-first platforms.
Jump to a section
Know the shape of the move.
This timeline assumes
- One Substack publication, free or paid. The site also documents Substack → Ghost, Substack → Beehiiv, Substack → WordPress, and Kit → Substack.
- Kit's article dated 12 September 2026 is the procedure. It does not offer a dedicated Substack importer. Kit's CSV article, dated 26 June 2026, lists importers for ActiveCampaign, Beehiiv, GetResponse, Keap, Mailchimp, and Drip.
- You can download Substack's export. Their help, updated 12 December 2023, says Settings, then Exports, then Create new export. You get a zip of posts, the subscriber list, and statistics, and an email when it is ready.
- Paid subscriptions stay on Substack until each reader subscribes on Kit. Kit says payment details cannot be migrated.
- You pause Kit visual automations before an import that adds people to a tag or a form.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Subscriber CSV | manual | critical | Kit says to export all subscribers as a CSV, and paid subscribers as a second CSV. Kit merges duplicates across the two files. Substack's export is one zip that includes the subscriber list. | Start from Substack's zip. If it has one list, filter paid rows into the second file Kit asks for. |
| Blank cells | partial | critical | Kit replaces existing subscriber fields with the CSV, including blanks. Tags already on a person are kept. New tags are added. Kit's example shows a blank first name wiping a name you already stored. | Drop columns you do not want to overwrite. Split the file if some rows would blank a field you need. |
| Paid billing | lost | critical | Kit says there is no way to move paid subscriptions with their payment details. Their workaround is to cancel the Substack subscriptions and ask people to subscribe again on Kit. Tell them first. Kit also mentions refund requests. | Pick one path before import. Keep charging on Substack for now, or announce a resubscribe. Do both only with a written owner. |
| Archive | manual | high | Past issues do not appear on the Kit site by themselves. Kit says to recreate them as Broadcasts, publish them to the web, and change each publish date to the original date. Only web-published Broadcasts show on the Newsletter Site. | Move the posts you still want public. Leave the rest in the Substack zip. |
| Newsletter site | manual | high | Kit says to recreate the Substack profile as a Newsletter Site. The menu is Audience growth, then Newsletter site. You set the name, picture, bio, and URL, then replace Substack links. | Publish the Newsletter Site and subscribe yourself before you announce the move. |
| Paid posts on the web | manual | high | For a paid issue, Kit says to filter the Broadcast to the paid tag, and to turn on Only display for paying subscribers under Publish to web. The paid product type has to be Subscription. | Create the Subscription product, publish it, and open one old paid post while logged out. |
| Automations | manual | critical | Adding imported people to a tag or a form can start a Visual Automation or a Rule. Adding them to a sequence starts that sequence unless it is inactive. The default import tag is named Imported plus the date and time. You can rename it. | Pause automations. Import without a live sequence. Turn them on after a test subscriber looks right. |
| Email field | manual | critical | Kit requires an email column. Other columns import only if you map them. Tags map to Comma-separated list of tags. Unmapped columns are skipped. | Map email first. Map the paid tag on the second file before Start import. |
| Welcome mail | manual | medium | Substack's welcome and recommendations do not become a Kit sequence. Sarah Moon, who discloses a Kit affiliate relationship, describes writing a welcome email, resending a few older pieces, and pitching the paid tier to free readers. That is her sequence, not an import. | Write the sequence after the import, and do not attach it to the CSV. |
| Stripe account | manual | medium | Sarah Moon wrote that she had to set up a separate Stripe account for ConvertKit, Kit's former name, and that she does not know why. Treat that as her experience. Kit's current article says to set up payments on the Kit account, then create the Subscription product. | Follow Kit's payments setup. Do not assume your existing Stripe account is already connected. |
| Statistics | lost | low | Substack's zip includes statistics. Kit's import is subscribers and, if you rebuild them, Broadcasts. Old open history does not become Kit reporting. | Keep the zip if you still want those numbers. |
| Domain and links | manual | high | Kit says to replace Substack links with the Newsletter Site URL. Substack keeps sending until you stop it. | Change the public links after a test issue sends from Kit. Leave Substack able to mail until that issue looks right. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| All-subscriber export | Kit subscribers | transform | CSV import. Email column required. |
| Paid subscriber export | Paid subscribers tag | manual | Second file. Add the tag before Start import. |
| Duplicate email | One Kit subscriber | automatic | Kit says it merges duplicates across the two files. |
| Custom column | Mapped field or nothing | transform | Blank values overwrite. Unmapped columns are dropped. |
| Existing Kit tags | Same tags, plus new ones | automatic | Tags are added. They are not replaced. |
| Post | Broadcast published to the web | manual | Set the publish date to the original date. |
| Paid post | Broadcast filtered to the paid tag | manual | Also turn on Only display for paying subscribers. |
| Paid subscription | New Kit Subscription | unsupported | Payment details do not move. |
| Profile page | Newsletter Site | manual | Audience growth, then Newsletter site. |
| Substack statistics | No destination | unsupported | Stay in the zip. |
Make the move recoverable.
Create the source-of-truth backup
Keep Substack's zip and a Kit account that has not emailed the list yet.
- Create the Substack export and wait for the email.
- Save the zip outside the browser.
- Build the paid CSV as a separate file.
- Pause Kit automations that trigger on the import tag.
- Leave paid billing on Substack until you choose the resubscribe path.
Proof to capture: The zip, the two CSVs, and a Kit import that has not started a sequence.
Two CSV imports
Load everyone, then mark who was paid, without blanking fields or firing automations.
- From Subscribers, choose Add Subscribers, then Import CSV.
- Map the email column. Map tag text to Comma-separated list of tags.
- Import the full list first, with automations paused.
- Create a Paid subscribers tag. Import the paid file and add that tag before Start import.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Archive and paid product
Put old issues on the Newsletter Site and give new payments a home.
- Recreate the issues you want public as Broadcasts. Publish them to the web and set the original dates.
- Set up Kit payments. Create the paid product with type Subscription and publish it.
- Filter paid Broadcasts to the paid tag, and turn on Only display for paying subscribers.
- Write to paid readers before you cancel anything on Substack.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
An import starts a sequence
The CSV is added to a tag or a sequence that has a live automation.
- Consequence
- The whole Substack list gets a welcome email, or a paid pitch, at once.
- Mitigation
- Pause automations. Import to a tag that nothing triggers on.
Stop if: Kit shows a sequence send you did not mean to start.
Blanks wipe names
A second CSV has an empty first-name column for people already in Kit.
- Consequence
- Kit stores the blank. The old name is gone.
- Mitigation
- Remove empty columns. Split the file the way Kit's import article shows.
Stop if: A spot check shows a known name replaced by empty.
Paid readers get canceled early
Substack paid subscriptions are canceled before the Kit product exists and before you told people.
- Consequence
- You stop collecting, and Kit still has no card on file. Kit's article mentions refund requests.
- Mitigation
- Announce first. Cancel only after the Subscription product is published, or keep billing on Substack.
Stop if: The Kit product is not published and a cancel is queued.
Do the work in this order.
- Days 1 to 3 · inventory
List and paid count
3 to 6 hours active2 to 3 days elapsedSubstack export email waiting- Start the Substack export.
- Count free and paid subscribers.
- Decide whether paid billing stays on Substack for now.
Depends on: Publication admin
Stop / go checkpointImport?
Go when: You have the zip and a written plan for paid readers.
Stop when: You cannot download the subscriber list.
- Days 3 to 5 · backup
Shape the CSVs
3 to 6 hours active1 to 2 days elapsedNone, once the zip arrives waiting- Build the all-subscriber file and the paid file.
- Drop columns that would blank Kit fields.
- Pause automations.
Depends on: Zip downloaded
Stop / go checkpointStart import?
Go when: Email is mapped and automations on the import tag are off.
Stop when: A sequence is still active on that tag.
- Days 5 to 14 · pilot
Import and rebuild
8 to 24 hours active4 to 10 days elapsedKit's import email waiting- Import the full list, then the paid file with the tag.
- Set up the Newsletter Site and the Subscription product.
- Republish a sample of old posts with the original dates.
Depends on: Paused automations
Stop / go checkpointSend from Kit?
Go when: Counts match and a test reader can open a free post and is blocked from a paid one.
Stop when: The paid tag is missing or a name was wiped.
- Days 14 to 18 · cutover
Tell people and send
3 to 8 hours active2 to 4 days elapsedReader replies waiting- Replace public Substack links.
- Send one issue from Kit.
- Email paid readers about billing before any cancel.
Depends on: Passed pilot
Stop / go checkpointStop Substack sends?
Go when: The Kit issue arrived and the paid note is out.
Stop when: Kit is bouncing a slice of the list you did not expect.
- Days 18 to 30 · observe
Paid resubscribes
3 to 6 hours active1 to 2 weeks elapsedPeople updating cards waiting- Watch who resubscribes.
- Keep Substack paid billing until that window ends, if that was the plan.
- Kit's article says you can contact their migrations team.
Depends on: Announcement sent
Stop / go checkpointCancel Substack paid?
Go when: The owner accepts who has not moved.
Stop when: The Kit product is not live.
Cut over with a way back.
Cutover
Send the next issue from Kit without canceling paid Substack billing in the same step.
- Confirm automations are still paused.
- Send the issue to a small Kit segment, including one paid tag and one free reader.
- Publish the Newsletter Site URL where the Substack link used to be.
- Mail paid readers the resubscribe plan.
- Leave Substack able to send until that mail is done.
Proof to capture: A Kit issue in the test inboxes, the paid post locked when logged out, and Substack not canceled yet.
Rollback
Send the next issue from Substack if the Kit import mis-fired.
- Stop the Kit sequence if one started.
- Send the issue from Substack.
- Leave the Kit subscribers in place.
- Fix the CSV before you import again.
- Do not cancel paid plans.
Proof to capture: The issue went out from Substack, and Kit is not mailing the list.
- A sequence sent during import
- Names or fields were blanked
- Paid and free counts do not match
- A paid post is public
- The Subscription product is not published
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Full list | Compare the Substack subscriber count with Kit after the import email. | Counts match, aside from duplicates Kit merged. | Count sheet. | |
V-02Blocking | Second file | Compare the paid CSV row count with the Paid subscribers tag. | The tag matches the file. | Tag count. | |
V-03Blocking | No blanks | Open five people you already had in Kit, including one with an empty cell in the CSV. | Fields you meant to keep are still filled. | Spot check. | |
V-04Blocking | No surprise send | Read Kit's send log after import. | No sequence went out because of the import. | Send log. | |
V-05Blocking | Dates | Open three old posts on the Newsletter Site. | They show the original dates and the right free or paid lock. | Post sample. | |
V-06Blocking | Logged out | Open a paid Broadcast in a private window. | Only display for paying subscribers is on, and the body is hidden. | Private window. | |
V-07Blocking | Subscription type | Read the paid product in Kit. | Type is Subscription and the product is published. | Product screen. | |
V-08Blocking | Substack still charging | Confirm you have not canceled paid plans unless the announcement already went out. | The chosen path matches what readers were told. | Announcement copy. |
Remove the scaffolding safely.
Safe after: The owner has accepted the paid resubscribe result, and Substack's zip is still stored.
- Archive the zip and both CSVs.
- Rename the default Imported tag if you do not want that name.
- Turn automations back on only after a test subscriber walks through them.
- Cancel Substack paid plans only under the plan you announced.
- Keep Substack's export if you still need the statistics.
When the plan met reality.
First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.
Sarah Moon describes exporting Substack subscribers to a CSV, creating a ConvertKit account, which is Kit's former name, and importing that file with a tag for where people came from. She says payments do not migrate. You either leave paid billing on Substack and tag those readers, or cancel and ask them to resubscribe. She prefers a clean break and writes that you will lose some paid subscribers at first. She also says she needed a separate Stripe account and does not know why. The page shows 23 March and no year. She discloses that she is a Kit affiliate. Do not treat a fee figure in that post as current Kit pricing.
- Choose the keep-billing-on-Substack path or the resubscribe path before you cancel anyone.
- Tag the imported list so you can still see who came from Substack after the CSV lands.
- Her payment warning matches Kit's later help article: card details do not move with the CSV.
- The separate Stripe account is her experience of ConvertKit. The page does not give a year.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- Kit: migrating from SubstackAccessed 2026-11-01
- Kit: import a subscriber listAccessed 2026-11-01
- Substack: export posts and subscribersAccessed 2026-11-01
- Sarah Moon: moving a paid newsletter to KitAccessed 2026-11-01