Skip to content

Importing content from a spreadsheet

How to bring posts, articles and short posts from an .xlsx or .csv spreadsheet with their original date and author (file, columns, options, preview, progress and report), what makes a row get skipped, each warning and the limits.

The Import content button brings into the community the history that lived somewhere else (WordPress, Substack, Circle, an old group, a spreadsheet): each row of the spreadsheet becomes a post, an article or a short post, with its original date and, when possible, its original author. You say where each column goes, check a preview and only then import. No one is notified.

What it's for

CommunitySpreadsheet
Moving from a blog or newsletterThe export of the articles, with title, HTML text, date and the author's e-mail
Old forum or groupThe discussions, each with the e-mail of whoever started it, going into a Feed space
AssociationThe archive of announcements from the past years, all in a Content space
CourseThe class notices as short posts, in the order they went out

How it works

Where it is and who can

In the header of Content and Feed spaces, click the arrow next to New Content (in the Feed, New Status) and choose Import content. Only the owner and admins see this option; for the other roles it doesn't show up, and the API refuses.

With the community's joining suspended by Memberfy, the import doesn't start. See Suspension of joining and sales.

The three types

TypeHow it comes inWhere it can go
PostTitle and textContent or Feed space
ArticleTitle and textContent or Feed space
Short postText only, up to 500 characters, with no title and no tagsFeed space only

The type applies to every row (the Type option) or comes from a column of the spreadsheet, with values such as post, article or short (also status, blog, newsletter, in English, Portuguese, Spanish, Italian or German).

What the import respects

  • The original date stays. The post comes in with the spreadsheet's date as its publication date, at that date's place in the Feed and in the space's list, not at the top.
  • Silently. Nothing is notified: no member gets a notice or an e-mail, the posts stay out of the news e-mails and highlights, and no one earns points in the Ranking. Only whoever imported gets, at the end, an e-mail with the summary.
  • The author comes by e-mail. The author e-mail column links each row to a person in the community. They must be a member and have a role below yours (the owner imports on behalf of admins, moderators, finance and members; the admin, on behalf of moderators, finance and members). Otherwise the row is skipped and the report says why. Your own e-mail always works. Whoever imported is recorded in the Logs on every post made on behalf of someone else.
  • A future or invalid date doesn't go in. The row is skipped. An empty date becomes the import date, and the row goes in with a warning.
  • Nothing goes in twice. A post or article with the same title and the same date as one already in the community is skipped; importing the same spreadsheet again doesn't duplicate anything. Rows repeated within the spreadsheet itself also go in only once.
  • The images come along. The images inside the text are downloaded and hosted on Memberfy, with the same limits as an image uploaded through the app; the links in the text stay as they are. An image that can't be downloaded stays as a link to the original, and the report tells you.
  • Links become a player or a card. The links in the text of each imported post become a player or a card, up to 5 per post, in the background, after the post comes in.

Limits

WhatLimit
File.xlsx or .csv, up to 5 MB
RowsUp to 5,000 data rows (and 100 columns)
Images per row20; the rest stay as links
Images per import300 or 500 MB, whichever comes first; the rest stay as links
Imports at the same timeOne per community; the next starts when the previous one ends

A spreadsheet whose texts add up to more than 25 MB is refused before it starts: split it into smaller parts.

Step by step

1. File

  1. In the Content or Feed space, click Import content.
  2. Drag the spreadsheet or click to choose (.xlsx or .csv · up to 5 MB and 5,000 rows).
  3. Check how it was read:
    • Sheet: in an .xlsx, which sheet to read.
    • Header row: Memberfy finds it on its own; to change it, click another row of the table.
    • Delimiter (comma, semicolon, tab or pipe) and Encoding: in a .csv, worked out on their own; you can change them.

2. Columns

Each column shows up with its first 3 rows and a suggested destination in Goes to. Adjust what you need; whatever is left on Ignore isn't imported. Each destination takes one column only.

DestinationWhat goes in it
TitleRequired for posts and articles. Titles over 300 characters are cut
ContentText, Markdown or HTML. Required to continue
Author e-mailThe post goes under the name of the community member with this e-mail. Without this column, everything goes out under your name
Publication dateThe original date. A date without a time zone uses the community's time zone
SpaceThe id, the address or the name of a Content or Feed space (capitals and accents don't matter)
Typepost, article or short
TagsSeveral, separated by commas, semicolons or pipes (up to 20 per post)

3. Options

  • Space (or Default space, when there's a space column): where the posts go, or the space used when the row has no valid one. None (skip the row) skips the rows without a valid space.
  • Type (or Default type): Post, Article or Short post. Short posts only go into Feed spaces.
  • Who can see: Members only or Public.
  • Date order, which shows up when the spreadsheet has dates like 03/04/2024: Day/month/year or Month/day/year. The screen shows an example from the spreadsheet ("03/04/2024 will be read as April 3, 2024.") and, when the spreadsheet has a date that only fits one order (like 12/25/2023), picks that order and tells you.
  • Time zone: dates without a time zone are read in the community's time zone, which the screen shows.
  • Author with an unknown e-mail, for when the spreadsheet's e-mail belongs to no one in the community: Skip the row or Publish under my name (the row goes in with a warning).

Accepted dates: YYYY-MM-DD (with or without time and time zone), DD/MM/YYYY or MM/DD/YYYY (with /, . or - and an optional time), dates with the month's name in English (15 March 2024, Mar 15, 2024) and Unix timestamps. In an .xlsx, an Excel date cell counts as it is.

4. Preview

The preview saves nothing. It shows the summary (rows in the spreadsheet, how many will be imported, how many with their original date, how many without a date, skipped rows, rows with warnings, images to download and the size of the texts) and the first 10 rows as they will look: type, title, space, author, date and warnings, with the skipped ones marked.

5. Confirm

Click Import N posts and confirm. The import runs in the background: you can close the window.

6. Progress

The screen shows "120 of 800 rows". Cancel import stops the remaining rows; posts that already went in stay published.

7. Report and history

At the end, the screen shows Imported, Skipped, Failed and With warnings, the Rows that didn't go in (with the reason) and the ones that Went in with warnings. Download report creates a CSV with the row, the result, the title and the reason. Whoever imported also gets the summary by e-mail.

Previous imports, at the top of the window, lists the community's imports, with their status (Not started, Queued, Importing, Completed, Failed, Canceled or Abandoned) and View to open the report. A spreadsheet that was read but not imported within 24 hours becomes Abandoned.

Why a row was skipped

In the reportWhat it meansWhat to do
No titleA post or article without a titleFill in the title or import the row as a short post
No contentA short post without textFill in the content
No valid spaceThe row has no space that takes this type, and there's no default space that fitsChoose a default space, or fix the space column
Invalid dateThe date wasn't understood, or doesn't exist (like 02/31)Fix the date or change the Date order
Date in the futureThe date is later than now: the import doesn't schedule postsFix the date
Content too longA short post with more than 500 charactersImport it as a post or article
Repeated in the spreadsheetSame type, title, date and start of the text as an earlier rowNothing: the first one went in
A post with this title and date already existsAn identical post or article is already in the community, from an earlier import or made by handNothing: that's what prevents duplicates
The author e-mail belongs to no one in the communityThe e-mail isn't a member's, and the option is Skip the rowInvite the person first, or choose Publish under my name
You can only publish under the name of someone with a lower role than yoursThe e-mail belongs to someone with a role equal to or above yoursAsk an owner to import, or remove the e-mail from the row
Error while saving (result Failed)Something went wrong while saving that rowImport the spreadsheet again: what already went in is skipped

What each warning means

A row with a warning went in; the warning says what changed.

WarningWhat it means
Type not recognizedThe Type column's value isn't post, article or short; the type from the options was used
Title cutThe title was over 300 characters and was cut
Space not foundThe row's space doesn't exist in the community; the default space was used
Space of another kindThe row's space doesn't take this type (for example, a short post in a Content space); the default space was used
No dateThe date cell was empty; the post went in with the import date
Author not foundThe e-mail belongs to no one in the community; the post went out under your name (the Publish under my name option)
Tags ignoredShort posts don't have tags
Image not downloadedAn image in the text couldn't be downloaded; a link to the original was kept
Image not supportedThe image's address isn't a web link that can be downloaded; it was kept as a link
Too many images in the postThe text had more than 20 images; the rest were kept as links
Import image limitThe import reached 300 images or 500 MB; the rest were kept as links

Frequently asked questions

Will members get a flood of notices? No. Nothing in the import notifies members or counts points, whatever the date.

Can I import comments and likes? No. The import brings posts, articles and short posts. To bring people, use Import members from a spreadsheet.

I imported and some authors were missing. Can I import again? Yes. Invite the people, import the same spreadsheet and the rows that already went in are skipped as A post with this title and date already exists. Short posts don't go through that check: on a second import, keep only the rows that were missing.

What if I get a post's date wrong? Edit the post and change the Publication date. See Publication date.

Through the assistant

The assistant does the same import in four steps: analyze_content_import (reads the spreadsheet), preview_content_import (the summary, without saving), start_content_import (imports after showing the summary) and get_content_import (progress and report). See Tools · Content.

In the API

POST /api/import/spreadsheet (uploads the file and returns the analysis), POST /api/import/spreadsheet/{id}/preview (the summary and the first 10 rows), POST /api/import/spreadsheet/{id}/start (confirms and queues it), GET /api/import/spreadsheet/{id} (progress and report), GET /api/import/spreadsheet (history) and DELETE /api/import/{importId} (cancels). Owner and admin only, with the X-CommunityId. See Import.