# Shopify

## Shopify Integration

Publish your AI-generated content directly to Shopify as blog articles, static pages, or both. Connect your Shopify store and push content with one click.

***

### What You Can Do

* **One-click publish** articles to your Shopify blog
* **Create static pages** for landing pages and evergreen content
* **Publish as draft or live**: you control the default
* **Featured images** are included automatically
* **Auto-publish** articles as soon as they're generated
* **Bulk export** entire projects to Shopify at once
* **Choose content type**: blog article, page, or both simultaneously

***

### Prerequisites

Before connecting, you'll need:

1. A **Shopify store** with admin access
2. An app created in the **Shopify Dev Dashboard** (see setup below)
3. A **Cuppa account** on Power plan or higher

***

### Step 1: Create an App in the Shopify Dev Dashboard

As of January 2026, Shopify requires new apps to be created in the [Dev Dashboard](https://dev.shopify.com/dashboard) instead of the Shopify admin.

1. Go to [dev.shopify.com/dashboard](https://dev.shopify.com/dashboard) and sign in
2. Click **Create app**
3. Name it something like "Cuppa Publishing"
4. Under **Configuration**, create a new **App version**
5. Add the following **Admin API scopes**:
   * `write_content` (for blog articles and pages)
   * `read_content`
6. **Save** the version

#### Install the App on Your Store (Required)

This step is easy to miss, but the integration will not work without it.

7. In the Dev Dashboard, go to your app's **Overview** page
8. Click the **"Install app"** button (top right)
9. Select your store and confirm the installation
10. You should see **Installations: 1** (or more) on the Overview page

> **Important:** If the app is not installed, Shopify will reject all API requests with a 400 error. You must install the app before connecting in Cuppa.

#### Copy Your Credentials

11. Go to your app's **Settings** page in the Dev Dashboard
12. Copy the **Client ID** and **Client Secret**

> **Tip:** Unlike legacy custom apps, Dev Dashboard apps use OAuth with rotating tokens. Cuppa handles the token refresh automatically. You just need the Client ID and Client Secret.

***

### Step 2: Connect in Cuppa

1. Go to **Team Settings** > **Integrations**
2. Find **Shopify** and click **Connect**
3. Enter your:
   * **Store URL**: Your `mystore.myshopify.com` domain
   * **Client ID**: From your Dev Dashboard app
   * **Client Secret**: From your Dev Dashboard app
4. Click **Test Connection** to verify
5. Click **Load Blogs** to select which blog to publish to
6. Configure your defaults (see Step 3)
7. Click **Connect**

***

### Step 3: Configure Defaults

After connecting, set your preferences:

#### Content Type

| Option      | What It Does                                                   |
| ----------- | -------------------------------------------------------------- |
| **Article** | Creates blog articles (requires selecting a blog)              |
| **Page**    | Creates static pages                                           |
| **Both**    | Creates both an article and a page from the same Cuppa content |

#### Blog Selection

If publishing as articles, select which Shopify blog to publish to. Cuppa loads your available blogs automatically.

#### Publish Status

* **Draft**: Content saved as draft in Shopify (recommended to start)
* **Published**: Content goes live immediately

#### Auto-Publishing

* **ON**: Articles auto-publish to Shopify when generated
* **OFF**: Manual publishing only

***

### Publishing Content

#### Single Article

1. Open any article in Cuppa
2. Click **Send to** > **Shopify**
3. Content publishes with your configured defaults

#### From a Project

1. Open your project
2. Use the **Publish** options to send to Shopify
3. Choose which articles to publish

#### Bulk Export

1. Select multiple articles
2. Choose **Export to Shopify**
3. Articles are processed in the background (15 at a time with rate limiting)
4. Track progress in the bulk publishing status

***

### What Gets Published

| From Cuppa     | To Shopify Article             | To Shopify Page  |
| -------------- | ------------------------------ | ---------------- |
| Title          | Article title                  | Page title       |
| Content        | Article body (HTML)            | Page body (HTML) |
| Slug           | URL handle                     | URL handle       |
| Excerpt        | Article excerpt                | N/A              |
| Featured Image | Article image                  | N/A              |
| Author         | Article author (if configured) | N/A              |

***

### Rate Limiting

Shopify's GraphQL API uses cost-based throttling. Cuppa handles this automatically:

* Single publishes: instant
* Bulk exports: processed in chunks of 15 with 1.5-second delays
* Progress is tracked and visible during bulk operations

***

### Legacy Custom Apps

If you connected Shopify **before January 2026** using a static Admin API access token from a custom app created in the Shopify admin, your connection will continue to work. No action is needed.

If you need to reconnect or set up a new connection, use the Dev Dashboard flow described above. The legacy token option is still available in Cuppa under "Using a legacy custom app with a static token?" in the connection dialog.

> **Note:** Shopify no longer allows creating new legacy custom apps in the admin panel as of January 1, 2026.

***

### Troubleshooting

#### "Request failed with status code 400"

This almost always means the app is not installed on your store.

1. Go to your app in the [Dev Dashboard](https://dev.shopify.com/dashboard)
2. Check the **Overview** page for **Installations**
3. If it shows **0**, click **"Install app"** and select your store
4. Try connecting again in Cuppa

#### "Connection failed"

**Check your store URL:**

* Use your `.myshopify.com` domain (e.g., `mystore.myshopify.com`)
* Don't include `https://` or a trailing slash
* Don't use a custom domain

**Check your credentials (Dev Dashboard app):**

* Verify the Client ID and Client Secret are correct
* Make sure the app is installed on your store (see above)
* Confirm the app has `read_content` and `write_content` scopes

**Check your credentials (legacy custom app):**

* Copy the complete access token (it's only shown once when created)
* Make sure the custom app is still installed
* Verify the token hasn't been revoked

#### "Publishing failed"

* Verify your app has `write_content` scope
* Check that the selected blog still exists in Shopify
* Very long articles may hit Shopify's API limits
* Ensure featured images are publicly accessible URLs

#### Articles not appearing in Shopify

* Check **Blog posts** > **Drafts** (may be saved as draft)
* Verify the correct blog is selected in Cuppa settings
* Check **Online Store** > **Pages** if publishing as pages

#### Bulk export seems slow

* Shopify rate limits are handled automatically
* 15 articles per chunk with pauses between
* Large exports (100+ articles) may take several minutes
* Progress updates are shown during the export

***

### FAQ

**Can I publish to multiple Shopify stores?** Each Cuppa team connects to one Shopify store. If you manage multiple stores, set up separate teams.

**Does it update existing articles?** Currently creates new content. Delete in Shopify and republish to update.

**Can I use this with Shopify's blog SEO features?** Content publishes as standard blog articles/pages. Shopify's built-in SEO fields (title, description) use the content you've set in Cuppa.

**Does it work with Shopify themes?** Articles and pages publish as standard Shopify content. Your theme controls how they're displayed.

**What about product descriptions?** This integration is for blog articles and pages. Product content is not supported at this time.

**Can I schedule posts?** Posts publish with your configured status (draft or published). Use Shopify's built-in scheduling for timed releases.

**What's the difference between OAuth and legacy token auth?** Dev Dashboard apps (Jan 2026+) use OAuth with auto-rotating tokens that Cuppa refreshes automatically. Legacy custom apps use a static token that never expires but can no longer be created for new apps.

***

### Disconnecting

1. Go to **Team Settings** > **Integrations**
2. Click **Disconnect** on Shopify

Your existing content remains in Shopify. You can optionally delete the app from the Shopify Dev Dashboard.

***

### Related Docs

* WordPress Integration
* Ghost Integration
* Webflow Integration


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.cuppa.ai/integrations/shopify.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
