Before you start#
You'll need:
- A ConvertKit (Kit) account with subscriber-export permission
- An AcelleMail installation up and running
- ~30 minutes for <100k subscribers
ConvertKit was rebranded to Kit in 2024. The UI shifted but the export flow remains the same — this guide uses the current Kit screen names.
Export from Kit (ConvertKit)#
In Kit's top nav, click Subscribers. Filter by tag, segment, form, or "all subscribers" — whichever scope you want to migrate. Then click Export in the toolbar.
Kit asks for format (CSV) and field selection — pick all the custom fields you've defined. The file prepares in the background; Account → Imports & Exports shows the download link when ready (usually <5 minutes).
Exported CSV includes: email, first name, all custom fields, tags (comma-separated), confirmed-at timestamp, source.
Import into AcelleMail (the same 6 clicks for every source)#
Once you have the CSV exported from your previous platform, the import flow in AcelleMail is identical regardless of where the data came from.
1. Open your destination list#
In AcelleMail's sidebar, click Audience → choose the list that will receive the migrated subscribers (or create a new one — New list button top-right).

You'll see a per-list overview card with subscriber counts:

2. Click "Import" in the list toolbar#
The wizard entrypoint is on the list detail page:

3. Upload your CSV#
Drop the CSV file from the previous platform into the upload area:

AcelleMail parses the file and confirms detection:

4. Map the columns#
The wizard auto-detects standard columns (email, first_name, last_name) and shows green Mapped to EMAIL chips. Adjust manually for any non-standard column from the source:

5. Pick duplicate handling#
In the same screen, choose what AcelleMail does when a subscriber already exists in this list:
- Skip — keep the existing row, don't overwrite
- Update — overwrite name/tags/custom fields with values from the CSV
- Unsubscribe — mark existing rows as unsubscribed (rare; used when re-importing an opted-out list)
6. Run the import#
Click Start import. The job runs in the background — close the popup, work elsewhere, return to Audience → [list] → Import to see progress:

You'll see Pending → Running → Complete per import job, with rows-imported / rows-skipped / errors counts.
After the import#
- Verify list count matches your expected size (rows that failed validation appear in the Errors column with a downloadable error CSV).
- Re-tag if needed — for behavioural data that doesn't fit a CSV column (e.g. "opened campaign X"), you may need to re-create the tag via segmentation rules.
- Pause for warm-up — if the imported list is large (>10k) and your sending IP is new or recently rotated, run a short warm-up campaign to your most-engaged 10% before the full send. See IP warm-up best practices for the schedule.
Rebuilding Kit (ConvertKit) automations#
Kit's automations (formerly called "sequences" + "rules") map to AcelleMail's Automations. Equivalent triggers:
| Kit trigger |
AcelleMail trigger |
| Subscribes via form |
Subscribed to list |
| Tag added |
Tag added |
| Clicks link in email |
Link clicked |
| Purchases (via integration) |
Custom event (API) |
| Date condition |
Date relative |
| Form submission |
Subscribed to list (form's target list) |
Kit's "Visual Automations" (drag-and-drop sequence builder) closely mirror AcelleMail's automation canvas — the rebuild is largely 1:1 with the same node primitives.
Merge-tag syntax differences#
| Kit (ConvertKit) |
AcelleMail |
{{ subscriber.first_name }} |
{{ subscriber.first_name }} (no change!) |
{{ subscriber.email_address }} |
{{ subscriber.email }} |
{{ subscription.unsubscribe_url }} |
{{ unsubscribe_url }} |
Kit uses Liquid templating, very close to AcelleMail's own syntax. Most templates copy-paste with only the email_address → email rename and unsubscribe-URL rename.
Advanced: API-driven migration with Kit's subscribers endpoint
Export from Kit via API:
# Kit (v4) API key from Account → API & Apps
curl -X GET "https://api.kit.com/v4/subscribers?per_page=1000" \
-H "Authorization: Bearer <KIT_API_KEY>" \
-o kit-subscribers.json
Paginate via after cursor; loop until response pagination.has_next_page is false.
Import into AcelleMail:
ACELLE_TOKEN="..."
ACELLE_LIST_UID="..."
jq -c '.subscribers[] | {email: .email_address, first_name: .first_name}' kit-subscribers.json \
| while read sub; do
curl -X POST "https://acellemail.com/api/v1/subscribers" \
-H "Authorization: Bearer $ACELLE_TOKEN" \
-d "{\"list_uid\":\"$ACELLE_LIST_UID\",\"subscriber\":$sub}"
done
For Kit's "Commerce" features (paid subscriptions, products), AcelleMail doesn't have direct equivalents — those workflows typically stay on Kit or move to a dedicated subscription tool.
Related articles#