> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seosorted.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopify

> Publish articles to a blog on your Shopify store.

The Shopify connector posts articles to one blog in your store — the "News" blog every store
starts with, or any blog you've created since.

<Info>
  We request the content scopes (`write_content`, `read_content`). We can create and read blog
  articles. We cannot see orders, customers, or payment data.
</Info>

## Before you start

* You need to be **store owner** or staff with permission to install apps.
* The store needs an **active plan**. Shopify refuses app installs on paused, frozen, or
  cancelled stores — you'll be redirected to the reactivation page instead of the permission
  screen.
* Your store needs at least one blog: **Shopify admin → Content → Blog posts → Manage blogs**.
* Have your **permanent domain** handy — the `something.myshopify.com` one, not your custom
  domain.

## Step 1 — Enter your store domain

**Project Settings → Integrations → Shopify → Connect**.

<Frame caption="Shopify asks for your permanent .myshopify.com domain">
  <img src="https://mintcdn.com/seosorted-dc17c331/vEMg5kPU9zyxc5bn/images/connectors/shopify-connect-modal.png?fit=max&auto=format&n=vEMg5kPU9zyxc5bn&q=85&s=c9b92c457455eaba43e8787e9a7302ef" alt="Connect Shopify dialog with a Shop Domain field" width="1440" height="900" data-path="images/connectors/shopify-connect-modal.png" />
</Frame>

<ParamField path="Shop Domain" type="string" required>
  Your permanent domain, e.g. `seosorted-demo.myshopify.com`. Just the store handle
  (`seosorted-demo`) also works — we complete it for you. A full admin URL is fine too; we trim
  it.
</ParamField>

<Warning>
  Your **custom** domain (`shop.seosorted.ai`) is rejected with *"Enter your permanent Shopify
  domain…"*. Shopify's OAuth only accepts the `.myshopify.com` host. Find yours in **Shopify admin
  → Settings → Domains**, under "Shopify-managed domains" — or just look at the URL while you're
  in the admin.
</Warning>

## Step 2 — Approve the install

Click **Connect** and Shopify shows its permission screen.

<Frame caption="Shopify's install screen — content access only">
  <img src="https://mintcdn.com/seosorted-dc17c331/vEMg5kPU9zyxc5bn/images/connectors/shopify-install.png?fit=max&auto=format&n=vEMg5kPU9zyxc5bn&q=85&s=c306341b4edcc4c39bfb76cb4ad01f7c" alt="Shopify Install app screen for seosorted requesting access to staff data and store data" width="3456" height="1984" data-path="images/connectors/shopify-install.png" />
</Frame>

Approve, and you're returned to the Integrations tab.

## Step 3 — Pick a blog

The card shows **Setup required — pick a blog**.

<Frame caption="Connected, one step left">
  <img src="https://mintcdn.com/seosorted-dc17c331/vEMg5kPU9zyxc5bn/images/connectors/shopify-connected-setup-required.png?fit=max&auto=format&n=vEMg5kPU9zyxc5bn&q=85&s=2e7cae725e4b09843087a74ef50907ea" alt="Shopify card showing Connected with Setup required — pick a blog and a Finish setup button" width="3456" height="1984" data-path="images/connectors/shopify-connected-setup-required.png" />
</Frame>

Click **Finish setup**, choose the blog to publish into, and save. Stores usually have one
("News"); pick the one your theme actually renders.

<Frame caption="Choosing the destination blog">
  <img src="https://mintcdn.com/seosorted-dc17c331/vEMg5kPU9zyxc5bn/images/connectors/shopify-blog-picker.png?fit=max&auto=format&n=vEMg5kPU9zyxc5bn&q=85&s=265e1ecfd33cfc91dd9e5917c36ca169" alt="Configure Shopify dialog with a Publish to blog dropdown set to News" width="3456" height="1984" data-path="images/connectors/shopify-blog-picker.png" />
</Frame>

## Step 4 — Publish

Open an article, click **Publish**, choose **Shopify**, then **Publish now**.

<Frame caption="Published, with a link to the storefront article">
  <img src="https://mintcdn.com/seosorted-dc17c331/vEMg5kPU9zyxc5bn/images/connectors/shopify-publish-success.png?fit=max&auto=format&n=vEMg5kPU9zyxc5bn&q=85&s=70232e64036c3c7b429c8c932d0e6693" alt="Publish dialog showing Published with a myshopify.com blogs URL" width="3456" height="1984" data-path="images/connectors/shopify-publish-success.png" />
</Frame>

The article appears in **Shopify admin → Content → Blog posts**, visible and dated.

<Frame caption="The article in the Shopify admin">
  <img src="https://mintcdn.com/seosorted-dc17c331/vEMg5kPU9zyxc5bn/images/connectors/shopify-article-in-admin.png?fit=max&auto=format&n=vEMg5kPU9zyxc5bn&q=85&s=5e80b0e1a8b38a07464c9beb566f2f65" alt="Shopify Blog posts list showing Publishing Automation Checklist, visible, in the News blog" width="3456" height="1984" data-path="images/connectors/shopify-article-in-admin.png" />
</Frame>

Articles are created **published** (visible immediately) with:

| Article field                          | Lands in Shopify as     |
| -------------------------------------- | ----------------------- |
| Title                                  | Article title           |
| Body                                   | Article content (HTML)  |
| Meta description                       | Article excerpt/summary |
| Author persona, or your workspace name | Article author          |

<Note>
  The success dialog links to the `myshopify.com` URL, which redirects to your custom domain. On a
  development store — or any store with password protection on — that link asks for the storefront
  password before it renders.
</Note>

## Common problems

<AccordionGroup>
  <Accordion title="“Enter your permanent Shopify domain…”">
    You entered a custom domain or something that isn't a store handle. Use
    `yourstore.myshopify.com`.
  </Accordion>

  <Accordion title="Clicking Connect lands on a Shopify billing or “reactivate your store” page">
    The store's plan is paused, frozen or cancelled. Shopify redirects app installs to
    reactivation until billing is active again. Reactivate the store, then connect.
  </Accordion>

  <Accordion title="Shopify says the app can't be installed">
    Your staff account lacks app-install permission. Ask the store owner to run the connection,
    or have them grant you the permission.
  </Accordion>

  <Accordion title="No blogs to choose from">
    The store has no blog yet. Create one in **Shopify admin → Content → Blog posts → Manage
    blogs**, then reopen the setup dialog.
  </Accordion>
</AccordionGroup>
