← All playbooks
Newsletter migration

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.

Typical timeline10 to 25 business days20 to 50 hours active work
Statusneeds review
Source profileSubstack export help reviewed 2026-11-01
Destination profileKit Substack migration article reviewed 2026-11-01
Documentation date
Review window
Evidence4 sources
This route needs review.Use it as a planning baseline, then verify the dated sources and test with representative data before production.
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

Substack

Reasons to stay
  • Publishing, email, recommendations, network discovery, and paid subscriptions work out of the box
  • Audience, campaigns, automations, and reporting live in one publishing system
Reasons to leave
  • Brand control, automation, data depth, and platform independence are limited
  • Automation logic, analytics history, and deliverability settings are not very portable
New platform

Kit

What gets better
  • Creator-friendly tagging and visual automations make audience journeys approachable
  • Audience, campaigns, automations, and reporting live in one publishing system
What gets worse
  • Publishing, referral, and native monetization features are narrower than newsletter-first platforms
  • Automation logic, analytics history, and deliverability settings are not very portable
Best of the move

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.

Worst of the move

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
01At a glance

Know the shape of the move.

Transfer outcome12 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 1, Manual rebuild: 9, Not transferred: 2.
Clean0
Partial1
Manual9
Lost2
Mapping route8 of 10 fields have a destination path

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.
02What transfers

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
Subscriber CSVmanualcriticalKit 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 cellspartialcriticalKit 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 billinglostcriticalKit 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.
ArchivemanualhighPast 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 sitemanualhighKit 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 webmanualhighFor 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.
AutomationsmanualcriticalAdding 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 fieldmanualcriticalKit 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 mailmanualmediumSubstack'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 accountmanualmediumSarah 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.
StatisticslostlowSubstack'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 linksmanualhighKit 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.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
All-subscriber exportKit subscriberstransformCSV import. Email column required.
Paid subscriber exportPaid subscribers tagmanualSecond file. Add the tag before Start import.
Duplicate emailOne Kit subscriberautomaticKit says it merges duplicates across the two files.
Custom columnMapped field or nothingtransformBlank values overwrite. Unmapped columns are dropped.
Existing Kit tagsSame tags, plus new onesautomaticTags are added. They are not replaced.
PostBroadcast published to the webmanualSet the publish date to the original date.
Paid postBroadcast filtered to the paid tagmanualAlso turn on Only display for paying subscribers.
Paid subscriptionNew Kit SubscriptionunsupportedPayment details do not move.
Profile pageNewsletter SitemanualAudience growth, then Newsletter site.
Substack statisticsNo destinationunsupportedStay in the zip.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Keep Substack's zip and a Kit account that has not emailed the list yet.

  1. Create the Substack export and wait for the email.
  2. Save the zip outside the browser.
  3. Build the paid CSV as a separate file.
  4. Pause Kit automations that trigger on the import tag.
  5. 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.

Transformation · Substack export and Kit's Import CSV

Two CSV imports

Load everyone, then mark who was paid, without blanking fields or firing automations.

  1. From Subscribers, choose Add Subscribers, then Import CSV.
  2. Map the email column. Map tag text to Comma-separated list of tags.
  3. Import the full list first, with automations paused.
  4. 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.

Transformation · Kit Broadcasts and a Subscription product

Archive and paid product

Put old issues on the Newsletter Site and give new payments a home.

  1. Recreate the issues you want public as Broadcasts. Publish them to the web and set the original dates.
  2. Set up Kit payments. Create the paid product with type Subscription and publish it.
  3. Filter paid Broadcasts to the paid tag, and turn on Only display for paying subscribers.
  4. 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.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Pilot

An import starts a sequence

criticalpossible likelihood

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.

Pilot

Blanks wipe names

highpossible likelihood

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.

Cutover

Paid readers get canceled early

criticalpossible likelihood

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.

06Precise timeline

Do the work in this order.

Estimate forA Substack publication moving the list and the public archive to Kit
Total elapsed10 to 25 business days
Active work20 to 50 hours
BufferAdd time if you rebuild a long archive or you wait for paid readers to resubscribe.
01
Days 1 to 3List and paid count2 to 3 days
02
Days 3 to 5Shape the CSVs1 to 2 days
03
Days 5 to 14Import and rebuild4 to 10 days
04
Days 14 to 18Tell people and send2 to 4 days
05
Days 18 to 30Paid resubscribes1 to 2 weeks
  1. 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 checkpoint

    Import?

    Go when: You have the zip and a written plan for paid readers.

    Stop when: You cannot download the subscriber list.

  2. 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 checkpoint

    Start import?

    Go when: Email is mapped and automations on the import tag are off.

    Stop when: A sequence is still active on that tag.

  3. 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 checkpoint

    Send 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.

  4. 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 checkpoint

    Stop 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.

  5. 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 checkpoint

    Cancel Substack paid?

    Go when: The owner accepts who has not moved.

    Stop when: The Kit product is not live.

07The point of change

Cut over with a way back.

Go live

Cutover

Send the next issue from Kit without canceling paid Substack billing in the same step.

Recommended window: A normal send day, after the import email from Kit says the CSV finished.

  1. Confirm automations are still paused.
  2. Send the issue to a small Kit segment, including one paid tag and one free reader.
  3. Publish the Newsletter Site URL where the Substack link used to be.
  4. Mail paid readers the resubscribe plan.
  5. 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.

Return to safety

Rollback

Send the next issue from Substack if the Kit import mis-fired.

Deadline: Before you cancel Substack paid subscriptions.

  1. Stop the Kit sequence if one started.
  2. Send the issue from Substack.
  3. Leave the Kit subscribers in place.
  4. Fix the CSV before you import again.
  5. Do not cancel paid plans.

Proof to capture: The issue went out from Substack, and Kit is not mailing the list.

Rollback immediately when
  • 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
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingFull listCompare the Substack subscriber count with Kit after the import email.Counts match, aside from duplicates Kit merged.Count sheet.
V-02BlockingSecond fileCompare the paid CSV row count with the Paid subscribers tag.The tag matches the file.Tag count.
V-03BlockingNo blanksOpen 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-04BlockingNo surprise sendRead Kit's send log after import.No sequence went out because of the import.Send log.
V-05BlockingDatesOpen three old posts on the Newsletter Site.They show the original dates and the right free or paid lock.Post sample.
V-06BlockingLogged outOpen a paid Broadcast in a private window.Only display for paying subscribers is on, and the body is hidden.Private window.
V-07BlockingSubscription typeRead the paid product in Kit.Type is Subscription and the product is published.Product screen.
V-08BlockingSubstack still chargingConfirm you have not canceled paid plans unless the announcement already went out.The chosen path matches what readers were told.Announcement copy.
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: The owner has accepted the paid resubscribe result, and Substack's zip is still stored.

  1. Archive the zip and both CSVs.
  2. Rename the default Imported tag if you do not want that name.
  3. Turn automations back on only after a test subscriber walks through them.
  4. Cancel Substack paid plans only under the plan you announced.
  5. Keep Substack's export if you still need the statistics.
10Experiences from the field

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.

First-person accountSarah Moon · Sarah Moon Consulting

Sarah Moon on moving a paid Substack to ConvertKitUndated

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.

What they recommend
  • 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.
Worth noticing
  • 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.
Sources and evidence

Verify against the primary material.

Platform behavior changes. Check these sources and the review dates above before executing a production migration.

  1. Kit: migrating from SubstackAccessed 2026-11-01
  2. Kit: import a subscriber listAccessed 2026-11-01
  3. Substack: export posts and subscribersAccessed 2026-11-01
  4. Sarah Moon: moving a paid newsletter to KitAccessed 2026-11-01