Importing Blogs

The Blogs import creates and updates your store's blogs — the containers (e.g. "News", "Buying Guides"), not the individual posts — from a CSV/Excel file, a Google Sheet, or directly from another connected store. To import the posts themselves, see Importing Blog Posts. Blogs are matched by handle, so running the same file twice updates the same blogs instead of erroring on duplicates.

For the wizard itself — uploading, mapping, dry runs, schedules — see Importing into EcomSolo.

Columns

ColumnNotes
HandleThe blog's unique handle (e.g. news). Required — it's the identity used to match and create blogs.
TitleThe blog's display title (e.g. News). Required by Shopify when creating a new blog.
Comment policyHow comments are handled: MODERATED (held for approval), CLOSED (no comments), or AUTO_PUBLISHED (published immediately). Friendly values like moderate, no/off, and yes/on are understood too.
Template suffixTheme template suffix (e.g. featured); leave blank for the default template.

Common export headers map automatically: Blog Handle → Handle, Blog Title / Name → Title, and Commentable / Comments → Comment policy.

How blogs are matched

Every row is matched to an existing blog by handle in the target store. What happens on a match depends on the operation you pick for the run:

OperationOn an existing blogOn a new handle
Upsert (default)Updates itCreates it (Title required)
CreateFails the rowCreates it (Title required)
UpdateUpdates itFails the row
MergeUpdates itFails the row
DeleteDeletes itSkips the row

The dry run shows the create / update / delete split before anything is written. If a blog exists on Shopify but hasn't synced into EcomSolo yet, the import still recognizes the collision and updates it rather than failing.

Deleting blogs

Choose the Delete operation to remove blogs. A delete file needs only the Handle of each blog to remove. Deleting a blog on Shopify also removes its posts, so this is destructive — deletes are permission-gated (content write access) and irreversible, and the dry run shows the count first. A handle that no longer exists is quietly skipped, so re-running the same delete file is safe (idempotent).

Importing from another store

On the wizard's Source step, pick From another store to copy blogs from a connected store — no file needed. Title, comment policy, and template come across, matched by handle. This copies the blog containers; run Blog Posts afterwards to bring their articles across. Combined with a schedule this becomes a recurring one-way blog sync.

Results and freshness

Blogs you create or update take effect in Shopify immediately, and EcomSolo's Blogs dashboard refreshes within seconds of the run.

Sample file

A ready-to-run example ships as blogs-sample.csv:

Handle,Title,Comment policy,Template suffix
wow-news,Wow News,MODERATED,
wow-guides,Wow Buying Guides,CLOSED,
wow-community,Wow Community,AUTO_PUBLISHED,featured

Dry run: will create 3 (or update for handles that already exist).

Troubleshooting

Error in the reportWhat it means / what to do
row requires a HandleEvery row needs the blog's handle.
row would create a new blog but has no TitleShopify requires a title to create a blog.
… access scope / missing permissionThe store isn't connected with content write access — reconnect it from its settings, then re-run.

FAQ

Will re-importing create duplicates? No — rows match by handle, and the default Upsert operation updates in place.

Does this import blog posts too? No — this importer manages the blog containers. Posts are a separate importer: Blog Posts.

Can I delete blogs? Yes — run the file with the Delete operation and a column of handles. Deleting a blog also removes its posts, so it's permission-gated and irreversible; missing handles are skipped. See Deleting blogs.