Add docs/storefront-api.md
This commit is contained in:
parent
cc6c9fd5f2
commit
c897d31b87
1 changed files with 84 additions and 0 deletions
84
docs/storefront-api.md
Normal file
84
docs/storefront-api.md
Normal file
|
|
@ -0,0 +1,84 @@
|
||||||
|
# Storefront API Sync
|
||||||
|
|
||||||
|
The NotShop bundle uses the Shopify Storefront API to pull your product catalog during migration. It is **public and read-only** — no admin credentials required, cannot modify your Shopify store.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 1: Create a Storefront API token
|
||||||
|
|
||||||
|
1. Log into Shopify Admin
|
||||||
|
2. Go to **Settings → Apps and sales channels → Develop apps**
|
||||||
|
3. Create or select a headless app
|
||||||
|
4. Under **Configuration → Storefront API access**, enable:
|
||||||
|
- `unauthenticated_read_product_listings`
|
||||||
|
- `unauthenticated_read_product_inventory`
|
||||||
|
- `unauthenticated_read_collection_listings`
|
||||||
|
- `unauthenticated_read_customers`
|
||||||
|
- `unauthenticated_read_checkouts`
|
||||||
|
5. Save → Install app → Copy the **Storefront API access token**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 2: Add to your environment
|
||||||
|
|
||||||
|
In `.env` (or Replit Secrets):
|
||||||
|
|
||||||
|
```
|
||||||
|
SHOPIFY_STOREFRONT_TOKEN=your_access_token_here
|
||||||
|
SHOPIFY_STORE_DOMAIN=yourstore.myshopify.com
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 3: Run the catalog import
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm run catalog:import
|
||||||
|
```
|
||||||
|
|
||||||
|
### What gets imported
|
||||||
|
|
||||||
|
| Data | Stored as |
|
||||||
|
|---|---|
|
||||||
|
| Products | `products` table |
|
||||||
|
| Variants | `product_variants` table |
|
||||||
|
| Collections | `collections` table |
|
||||||
|
| Product images | `image_url` column (CDN URL reference) |
|
||||||
|
| Inventory | `in_stock` boolean |
|
||||||
|
|
||||||
|
### What is NOT imported
|
||||||
|
|
||||||
|
- Customer purchase history
|
||||||
|
- Order history (export from Shopify Admin as CSV before cancellation)
|
||||||
|
- Draft orders
|
||||||
|
- Cost prices
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Step 4: Keep catalog in sync during migration
|
||||||
|
|
||||||
|
Re-run `npm run catalog:import` anytime. For real-time sync, register a Shopify webhook:
|
||||||
|
|
||||||
|
- Topic: `products/update`
|
||||||
|
- URL: `https://yourstore.com/webhooks/shopify/product-updated`
|
||||||
|
|
||||||
|
Handler: `server/webhook-bridge.ts`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API endpoint
|
||||||
|
|
||||||
|
```
|
||||||
|
POST https://{SHOPIFY_STORE_DOMAIN}/api/2024-01/graphql.json
|
||||||
|
X-Shopify-Storefront-Access-Token: {SHOPIFY_STOREFRONT_TOKEN}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
**"Unauthorized"** — Check the token is set correctly and the app is installed.
|
||||||
|
|
||||||
|
**Empty product list** — Ensure products are published to the Online Store channel in Shopify Admin.
|
||||||
|
|
||||||
|
**Images stop loading after cancellation** — Shopify CDN URLs expire after account closure. Migrate images to Bunny.net or Vultr Object Storage before cancelling. Script: `npm run migrate:images`.
|
||||||
Loading…
Add table
Reference in a new issue