Connect your Shopify blog to LazySEO
LazySEO publishes to a blog in your Shopify store (Online Store blog posts) through the Shopify Admin REST API (version 2026-07). It needs your store address, the ID of the blog, and a permanent Admin API access token with content permissions.
Last reviewed October 1, 2026.
Before you start
- A Shopify store with the Online Store sales channel and at least one blog (Shopify creates one called "News" by default).
- A permanent Admin API access token (it starts with
shpat_) from a custom app in your store, with thewrite_contentandread_contentscopes. - Check which kind of app you have before you start. Custom apps created in the Shopify admin (Settings → Apps and sales channels → Develop apps) before January 1, 2026 keep working and have a permanent token: that is what this integration uses. Since that date Shopify only lets you create new apps in its Dev Dashboard, and those get access tokens that expire after 24 hours, which LazySEO cannot renew yet. If you only have (or can only create) a Dev Dashboard app, email support@lazyseo.io and we will help you find another way to publish to your store.
Step by step
1Get an Admin API access token (existing custom app)
- In Shopify admin, go to Settings → Apps and sales channels → Develop apps and open your custom app.
- Under Configuration, edit the Admin API integration scopes and tick
write_contentandread_content(these cover blogs and articles). Save. Shopify may ask you to install or update the app to apply the new scopes. - Open API credentials and copy the Admin API access token (starts with
shpat_). Shopify reveals it only once; if it was already revealed and you no longer have it, you need to uninstall and reinstall the app to get a new one.
2Find your Blog ID
- In Shopify admin, go to Content → Blog posts (older admin: Online Store → Blog posts) and click Manage blogs.
- Open the blog you want LazySEO to publish to.
- Look at the browser address bar: the number after
/blogs/is the Blog ID, for example/blogs/84726351921.
3Open the integration form in LazySEO
- Open your project in LazySEO.
- In the left sidebar, under Settings, click Integrations.
- Click Add Integration.
- In the window that says "Choose the type of integration you want to add.", click Shopify.
4Save the integration
Fill in the fields as described in the table below, leave Enabled switched on (disabled integrations are skipped during publish) and click Add integration.
Fill in the LazySEO form
Labels below match the Shopify form in LazySEO. Fields marked required must be filled in before you can save.
- Namerequired
Any name that helps you recognise this connection. Only shown inside LazySEO.
Example:
Shopify blog- Store URLrequired
Your store's myshopify.com address, starting with https://. Not your custom domain: the Admin API is served on the myshopify.com address. LazySEO looks up your primary domain itself for the article links.
Example:
https://your-store.myshopify.com- Admin API Access Tokenrequired
The token from your custom app, starting with shpat_.
Example:
shpat_0123456789abcdef...- Blog IDrequired
The numeric ID of the blog from the address bar.
Example:
84726351921- Enabled
Leave on. When it is off, LazySEO skips this integration when publishing.
Test the connection
- Right after you save, the window shows Test the connection: click Run quick test. You can test again at any time from the integration card with Test.
- Quick test ("Check endpoint is reachable") reads the blog with your access token, so it checks the Store URL, the token and the Blog ID together. A wrong Blog ID fails with "Blog … was not found in this store". Nothing is created.
- On the card's Test menu, Full test ("Send a test blog post (draft)") sends a real test article titled "[TEST] LazySEO Test Article" with the slug
lazyseo-test-article. In Shopify it is created as a hidden (unpublished) blog post. Delete it from Blog posts once you have checked it. - If a test fails, LazySEO shows the reason it got from your platform (for example a rejected key or a missing permission). Check it against the troubleshooting section below, click Edit on the card to fix the field, and test again.
What gets published
| What | How LazySEO handles it |
|---|---|
| Title | The article title. |
| Content | The full article body as HTML. LazySEO converts the article's Markdown to HTML (headings, lists, links, tables, code), sends articles you edited in the LazySEO editor as the HTML you saved, and drops a first heading that only repeats the title, because Shopify shows the title itself. |
| Handle | The article slug is used as the post handle (the end of the URL). |
| Visibility | Visible (published). The Full test creates a hidden post. |
| Excerpt | The meta description is saved as the post excerpt (summary). |
| Image | The article banner, sent as an image URL for Shopify to import. |
| Tags | The article topics, as comma-separated tags. |
| Post URL | LazySEO records the public link: your store's primary domain + /blogs/ + the blog handle + / + the article handle, for example https://www.example.com/blogs/news/how-to-brew-coffee. If that lookup fails, the article is still published, just without a recorded link. No link is recorded for the hidden Full test post. |
| Updates | If the same article is published again to the same integration, LazySEO updates the existing post instead of creating a second one. If you deleted the post in Shopify in the meantime, the update fails with HTTP 404 instead of creating a new post (see troubleshooting). |
| Unpublishing | Unpublishing an article inside LazySEO does not remove it from your site. Delete or unpublish the post in your platform if you need it gone. |
Troubleshooting
HTTP 401 ("Shopify rejected the access token").
The Admin API Access Token is wrong, or the app was uninstalled. Copy the token again (or reinstall the app to get a new one).
HTTP 403 ("The Shopify app lacks permission").
The app is missing the write_content scope. Add write_content and read_content to the app's Admin API scopes and update the app.
HTTP 404 ("Blog … was not found in this store" or "could not find the blog or article").
Check Blog ID (only the number) and Store URL (your .myshopify.com address, with https://).
Publishing an article again fails with HTTP 404, although the test passes.
The post was deleted in Shopify after LazySEO first published it. LazySEO tries to update that post and Shopify can't find it; for Shopify it does not yet create a new post automatically. Email support@lazyseo.io with the article's name and we will help.
The connection worked yesterday and fails today with HTTP 401.
You probably used a token from a Dev Dashboard app; those expire after 24 hours. Use a custom app created in the store admin, or email support@lazyseo.io.
Frequently asked questions
Can I create a new custom app to get a token?
Not from the Shopify admin: since January 1, 2026, new apps are created in Shopify's Dev Dashboard, and their access tokens expire after 24 hours. Custom apps created in the admin before then keep working with a permanent token, and you can still change their scopes. If you don't have one, email support@lazyseo.io.
Which Shopify API version does LazySEO use?
The Admin REST API version 2026-07, which Shopify supports until July 2027.
Still stuck?
Email support@lazyseo.io with the error message from LazySEO and we'll help you connect.