Sample File
This sample file shows the basics columns that you need to set in order to import blog posts to Shopify.
Download sample Blog Posts Import File.
General
ID
Description | Example Value |
Shopify's unique article identifier |
|
If present, the ID will be used to group multiple rows together into a single article. When importing, the ID will be used to see if the article already exists on the store. If there's no ID match the app will attempt to find an existing article using the Handle.
Handle
Description | Example Value |
URL-friendly article identifier |
|
The handle is the URL-friendly version of the article title used in the article's URL. The handle is used for grouping multiple rows together into a single article and finding an existing article on the store if the ID is not present.
Command
Description | Example Value |
Action to perform: MERGE, DELETE, NEW |
|
MERGE: Update existing article or create if not found
DELETE: Remove the article from the store (will skip if article doesn't exist)
NEW: Create a new article (will skip if article already exists)
Title
Description | Example Value |
Article title |
|
The main title of the article that will be displayed to readers.
Author
Description | Example Value |
Article author name |
|
The name of the person who wrote the article. This appears in the article's metadata.
Body HTML
Description | Example Value |
Article content |
|
The main content of the article in HTML format.
Summary HTML
Description | Example Value |
Article excerpt or summary in HTML |
|
A summary of the article, which can include HTML markup. The summary is used by the online store theme to display the article on other pages, such as the home page or the main blog page. In Shopify this field is labeled "Excerpt".
Tags
Description | Example Value |
Comma-separated article tags |
|
Tags help categorize and organize articles, making them easier to find and filter.
Tags Command
Description | Example Value |
Tag action: MERGE, REPLACE, DELETE |
|
MERGE: Add the specified tags to existing tags
REPLACE: Replace all existing tags with specified tags
DELETE: Remove the specified tags from the article
Created At
Description | Example Value |
Article creation date/time |
|
The timestamp when the article was originally created in Shopify.
Updated At
Description | Example Value |
Last modification date/time |
|
The timestamp when the article was last modified or updated.
Published
Description | Example Value |
If the article is published to the blog |
|
TRUE: Article is published and visible to customers
FALSE: Article is unpublished and hidden from customers
Published At
Description | Example Value |
Publication date/time |
|
If 'Published At' is in the future, the article will be scheduled for publication at that time.
ISO-formatted timestamps (eg, 2025-06-01T10:00:00Z) are also supported. If no timezone is specified, the store's timezone will be used.
Template Suffix
Description | Example Value |
Template suffix for article |
|
Allows you to use a custom template for displaying this specific article.
Image Src
Description | Example Value |
Article image URL |
The URL of the featured image that represents the article.
When updating a blog post, only include the image URL if you want to change the image, otherwise delete the column from your spreadsheet before doing the import. Each time you change the image Shopify will delete the existing image and add the new one. This can lead to the loss of the image if you try and update the same blog post several times with the same image URL.
Image Width
Description | Example Value |
Image width (pixels) - Export only |
|
The width of the article's featured image in pixels. This field is export-only and cannot be imported.
Image Height
Description | Example Value |
Image height (pixels) - Export only |
|
The height of the article's featured image in pixels. This field is export-only and cannot be imported.
Image Alt Text
Description | Example Value |
Image alternative text |
|
Alternative text for accessibility and SEO.
Blogs
Blog: ID
Description | Example Value |
Parent blog identifier |
|
The unique identifier of the blog that contains this article.
Blog: Handle
Description | Example Value |
Parent blog handle |
|
The URL handle of the blog where this article belongs.
Blog: Title
Description | Example Value |
Parent blog title |
|
The title of the blog that contains this article.
Blog: Commentable
Description | Example Value |
Comment policy: TRUE, FALSE, moderated |
|
TRUE: Comments are enabled and published immediately
FALSE: Comments are disabled
moderated: Comments require approval before publishing
Blog: Template Suffix
Description | Example Value |
Blog template suffix |
|
Alternative template suffix used for the parent blog.
Comments
Comment fields are export-only. Shopify does not support creating or updating comments through its API, so comment data in an import file will be ignored. Comments can only be created by visitors on the storefront.
Row
Description | Example Value |
Row number for multi-row data |
|
Used when an article spans multiple rows (e.g., when including comments).
Top Row
Description | Example Value |
Main article row: TRUE, FALSE |
|
TRUE: This is the primary row for the article
FALSE: This is a secondary row (e.g., for comments or additional data)
Comment: ID
Description | Example Value |
Comment identifier - Export only |
|
The unique identifier for a specific comment on the article. Export only.
Comment: Author
Description | Example Value |
Comment author - Export only |
|
The name of the person who posted the comment. Export only.
Comment: Body HTML
Description | Example Value |
Comment content - Export only |
|
The content of the comment in HTML format. Export only.
Comment: Status
Description | Example Value |
Comment status - Export only |
|
The current status of the comment. Export only.
pending - Comment has this status briefly after posting before Shopify assigns a final status
unapproved - Comment is waiting for manual approval (when blog comments are set to moderated)
published - Comment is approved and visible on the website
spam - Comment is marked as spam and hidden from the website
removed - Comment has been deleted from the website
Comment: IP
Description | Example Value |
Commenter's IP address - Export only |
|
The IP address of the comment author at the time of posting. Export only.
Comment: Browser
Description | Example Value |
Commenter's browser user agent - Export only |
|
The browser user agent of the website visitor at the time of posting the comment. This can be used to determine the browser, version, and operating system of the commenter. Export only.
Comment: Created At
Description | Example Value |
Comment creation date - Export only |
|
The date and time when the comment was first created. Export only.
Comment: Updated At
Description | Example Value |
Comment last updated date - Export only |
|
The date and time when the comment was last updated. Export only.
Comment: Published At
Description | Example Value |
Comment publication date - Export only |
|
The date and time when the comment was published and made visible to the public. Export only.
Metafields and SEO
Metafields can be imported and exported with articles to store custom metadata, SEO information, and additional attributes.
For detailed information about working with metafields, see our Metafields guide.
If no SEO title or description is provided, Shopify automatically generates them from the article's title and content.
Blog Metafields
You can also import and export metafields for the parent blog alongside articles. This works similarly to how variant metafields work for products.
Exporting Blog Metafields
When exporting blog posts, select the Blog Metafields category to include metafields defined on each article's parent blog.
Importing Blog Metafields
To set blog metafields when importing articles, use columns with the Blog Metafield: prefix:
Blog Metafield: namespace.key [type]
For example:
Blog Metafield: custom.featured_color [single_line_text_field]Blog Metafield: global.description_tag [single_line_text_field]
When importing multiple articles that belong to the same blog, blog metafields only need to be set on one row. Blank values in subsequent rows for the same blog will not delete metafields that were set earlier in the import.
Export Filters
You can use these filters to limit which articles are exported:
author: Filter by article authorblog_title: Filter by blog titlecreated_at: Filter by creation dateupdated_at: Filter by last updated datetag: Filter by article tagsid: Filter by article ID
