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
| Column | Notes |
|---|---|
| Handle | The blog's unique handle (e.g. news). Required — it's the identity used to match and create blogs. |
| Title | The blog's display title (e.g. News). Required by Shopify when creating a new blog. |
| Comment policy | How 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 suffix | Theme 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:
| Operation | On an existing blog | On a new handle |
|---|---|---|
| Upsert (default) | Updates it | Creates it (Title required) |
| Create | Fails the row | Creates it (Title required) |
| Update | Updates it | Fails the row |
| Merge | Updates it | Fails the row |
| Delete | Deletes it | Skips 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 report | What it means / what to do |
|---|---|
row requires a Handle | Every row needs the blog's handle. |
row would create a new blog but has no Title | Shopify requires a title to create a blog. |
… access scope / missing permission | The 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.