# Shopify Content Types Reference

> Article fields: blogId, title, handle, contentHtml, author { name }, tags, isPublished, publishDate, seo, image { src altText }

- Skill: `tools-only/shopify-content-types-reference` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tools-only/shopify-content-types-reference`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/shopify-content-types-reference/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-29
- Page: https://skillmd.com/skills/tools-only/shopify-content-types-reference

---

# Shopify Content Types Reference

## API-Managed Content

### Pages

| Operation | Method | Endpoint/Mutation |
|-----------|--------|-------------------|
| List | GraphQL | `{ pages(first: 50) { edges { node { id title } } } }` |
| Create | GraphQL | `pageCreate(page: { ... })` |
| Update | GraphQL | `pageUpdate(page: { id, ... })` |
| Delete | GraphQL | `pageDelete(id: "...")` |

Fields: `title`, `handle`, `body` (HTML), `isPublished`, `seo { title description }`, `templateSuffix`

### Blogs & Articles

| Operation | Method | Endpoint/Mutation |
|-----------|--------|-------------------|
| List blogs | GraphQL | `{ blogs(first: 10) { edges { node { id title } } } }` |
| List articles | GraphQL | `{ articles(first: 50) { edges { node { id title } } } }` |
| Create article | GraphQL | `articleCreate(article: { blogId, ... })` |
| Update article | GraphQL | `articleUpdate(article: { id, ... })` |
| Delete article | GraphQL | `articleDelete(id: "...")` |

Article fields: `blogId`, `title`, `handle`, `contentHtml`, `author { name }`, `tags`, `isPublished`, `publishDate`, `seo`, `image { src altText }`

### Redirects

| Operation | Method | Endpoint |
|-----------|--------|----------|
| List | REST | `GET /admin/api/2025-01/redirects.json` |
| Create | REST | `POST /admin/api/2025-01/redirects.json` |
| Update | REST | `PUT /admin/api/2025-01/redirects/{id}.json` |
| Delete | REST | `DELETE /admin/api/2025-01/redirects/{id}.json` |

Fields: `path` (from), `target` (to)

### Metaobjects

Custom structured content types (e.g. team members, FAQs, locations).

| Operation | Method |
|-----------|--------|
| Define type | `metaobjectDefinitionCreate` |
| Create entry | `metaobjectCreate` |
| Update entry | `metaobjectUpdate` |
| Query entries | `metaobjects(type: "custom_type")` |

## Browser-Only Operations

These have limited or no API support — use browser automation:

| Content | Admin URL | Notes |
|---------|-----------|-------|
| Navigation menus | `/admin/menus` | `menuUpdate` mutation exists but is limited |
| Theme editor | `/admin/themes/current/editor` | Visual layout, no API |
| Store policies | `/admin/settings/legal` | Privacy, terms, refund policies |
| Checkout customisation | `/admin/settings/checkout` | Checkout flow and fields |
| Notification templates | `/admin/settings/notifications` | Email/SMS templates |

## Content Best Practices

### Page Templates

Shopify themes can define custom page templates. Use `templateSuffix` to select one:

```json
{ "templateSuffix": "contact" }
```

This uses `page.contact.liquid` (or `.json` for Online Store 2.0 themes).

### Metaobject vs Metafield

| Use Case | Choose |
|----------|--------|
| Standalone content (FAQ page, team page) | Metaobject |
| Extra data on a product/page | Metafield |
| Repeatable structured entries | Metaobject |
| Single value on a resource | Metafield |

