Shopify blogs vs Online Store pages — what Specter syncs
Shopify lumps a lot of things under the word “content,” and store owners get tripped up by the difference more often than they should. Before you sync anything, it’s worth being precise about what Specter actually pulls down, what it pushes back, and what is deliberately not in scope.
Short version: Specter syncs the article content of your store blog, plus (where your account exposes them through the Admin API) your Online Store pages. It does not touch products, collections, themes, or Liquid. That scope is intentional and it doesn’t change.
The two text surfaces in Shopify, and how they relate
Inside admin.shopify.com → Online Store, Shopify gives you two genuinely different content surfaces. They look similar in the sidebar, which is part of the confusion.
1. Blogs (containers) and Articles (the posts).
Shopify’s blog system is two-layer. A blog is a container — most stores have one called “News” by default. You can have many blogs (“News,” “Recipes,” “Buyer Guides”). An article is the post — the thing with a title, a body, an author, tags, and a feature image. Every article belongs to exactly one blog. The URL pattern is yourstore.com/blogs/<blog-handle>/<article-handle>.
Articles are what most people mean when they say “Shopify blog post.” (We say “articles” on this site because that’s the actual Shopify object name. If you’ve been calling them posts, you’re talking about the same thing.)
2. Online Store pages.
Pages are the static pages of your storefront: About, FAQ, Shipping Policy, Returns, Contact. They’re not in any blog. They have their own URL pattern (yourstore.com/pages/<handle>) and their own little editor in the admin. They don’t have tags, they don’t have authors, and they don’t show up in your blog feed.
Both surfaces use the same rich-text editor in the admin and store their bodies as HTML.
What Specter syncs as first-class
Articles are fully supported. Specter pulls every article from every blog on your store down as a .md file. Frontmatter preserves title, handle, blog assignment, author, tags, summary, SEO title, SEO description, status (draft / published / scheduled), scheduled-at and published-at timestamps, and the feature image URL. Edits push back through the Shopify Admin API. This is the round-trip Specter is built for and the one we test against on every release.
Blogs are supported as containers. When you change blog: in an article’s frontmatter from news to recipes, Specter moves the article between blogs on the next sync. Creating a new blog is a one-line config in the article’s frontmatter the first time you put an article in it.
Online Store pages: depends on what your account exposes. Pages are part of the same Admin API surface, but exactly how they’re exposed varies a little between Shopify accounts. Where your account exposes pages through the API, Specter rounds them through as .md files alongside articles, in a separate subfolder so you don’t confuse the two. Frontmatter for pages is slimmer — no blog assignment, no tags, no author — and the body uses the same HTML-to-markdown conversion as articles. If your account doesn’t expose pages through the API, Specter will show that on the first sync and skip them cleanly.
What’s deliberately out of scope
Specter’s OAuth scope is articles and blogs. None of this is in the scope, none of it is visible to Specter, and none of it is on the near-term roadmap:
- Products and product descriptions. Different scope, different rich-text surface, different governance — and a job people genuinely want done with much more care than a blog post. Possibly on the long-term roadmap behind a separate scope; not today.
- Collections. Same story as products.
- Orders, customers, inventory, payouts. Not in scope and not coming. Specter is a content tool. Your commerce data is in a separate part of Shopify Specter never asks for.
- Themes and theme settings. Theme editor content is its own surface.
- Liquid templates. The
.liquidfiles in your theme contain markup, settings, and partial layouts that Shopify renders against your article and page content. Specter never reads or writes Liquid — your theme is your theme. - Shopify Markets, Functions, metaobjects, metafields. Not in scope.
That list isn’t an apology. It’s the reason store owners feel comfortable installing Specter on a working production store: there’s no way for it to touch the parts of Shopify that earn revenue, even by accident.
If product descriptions are the thing you really need automated, Specter is not the tool for that job. We’re upfront about it — see the Shopify app permissions guide for what the OAuth scope actually requests and what Shopify shows you on the approval screen.
Where this matters in practice
Three places store owners hit this distinction:
Setting up the folder. When you first connect your Shopify store, Specter creates a folder structure where articles are grouped by blog (/news/, /recipes/) and pages, if exposed, live in their own /pages/ subfolder. That layout matches how Shopify thinks, so it’ll feel right after about ten minutes.
Bulk SEO sweeps. If you run a bulk SEO pass with AI, point the prompt at the article folders. Pages have different intent — they don’t need keyword-front-loaded titles — so it’s usually worth treating them as a separate pass.
Rich-text round-tripping. Articles and pages both go through Shopify’s HTML rich-text editor in the admin. Specter converts that to markdown on the way down and back to HTML on the way up. The mechanics, including what survives cleanly and what comes through as opaque blocks, are covered in Shopify rich text vs markdown.
The mental model
Two text surfaces in Shopify: articles (in blogs) and Online Store pages. Specter handles articles fully and pages where Shopify exposes them. Everything else in Shopify — products, orders, themes, Liquid — is on the other side of a permissions wall Specter never asks to cross. That’s the whole scope, and that’s all of it.