publish where your site already lives
Connect Shopify to PilotDeck
Install the PilotDeck app on your Shopify store, pick a blog and send a test article. About five minutes, no token to copy or paste.
What connecting Shopify does#
PilotDeck researches, drafts and queues content for review. A CMS connection is the last hop: once you approve a draft, PilotDeck sends it to your store for you. The example below uses a PilotDeck site named pilotdeck-testwebsite.
Nothing to paste
You enter your store domain and approve the PilotDeck app on Shopify's own install screen. PilotDeck receives its access from Shopify, so you never copy a token.
Articles in your blog
Each approved draft becomes a blog article in the blog you pick, with its SEO title, description, tags and featured image.
Drafts first
The default publish mode is Draft only. Articles arrive hidden, so nothing goes live until you publish it in Shopify.
Before you start#
| You need | Details |
|---|---|
| A Shopify store | Any store works, including a free development store from a Shopify Partners account. You need your store's permanent address, which is your store name followed by .myshopify.com. |
| Permission to install apps | A Shopify login that is allowed to install apps on the store. |
| At least one blog | Articles are created inside an existing blog. A new store usually ships with a default blog called "News". If you deleted it, create a blog under Online Store > Blog posts first. |
| A PilotDeck login | Permission to change integrations for the site. Without it the connect controls are unavailable. |
Overview#
- 1Open Settings > Integrations in PilotDeck and pick ShopifyYou
- 2Enter your store domain and click Authenticate with ShopifyYou
- 3Review the permissions and install the app on Shopify's screenYou
- 4Return to PilotDeck. It saves the connection and lists your blogsPilotDeck
- 5Choose a blog, optionally add a category, and confirmYou
- 6Send a test draft and check it in ShopifyVerify
In PilotDeck, make sure the correct site is selected in the top-left site switcher (here, pilotdeck-testwebsite). Go to Settings > Integrations and find the CMS Connection card, then choose Shopify.
The panel reads Connect Shopify. Type your store address into Store domain, for example your-store.myshopify.com. The field is required.
Click Authenticate with Shopify. Your browser leaves PilotDeck and opens Shopify.
myshopify.com address, not a custom domain. If you type only the store name, PilotDeck adds .myshopify.com for you, and it ignores a leading https:// or any trailing path.If you are not signed in, Shopify first shows its own login page. Sign in with the account that can install apps on the store.
Shopify shows its install screen for the PilotDeck app, listing what it needs access to: store owner and blog contributor data (read) and Online Store content (read and write). Review it and click Install.
Shopify then sends you back to PilotDeck. PilotDeck checks the signature on that return, saves the connection for pilotdeck-testwebsite and starts it in Draft only mode.
Back in PilotDeck, a Finish setup card appears. PilotDeck lists up to 50 blogs from your store.
- Open the Choose a blog list and select the blog that should receive articles.
- Optionally fill in Category. Shopify articles have tags rather than categories, so PilotDeck adds this value to each article's tags.
- Click Confirm.
The CMS Connection card now shows your store domain with an active badge, the publish mode selector, Send test draft, Send test live and Disconnect.
Click Send test draft. PilotDeck creates a sample article in your chosen blog and reports "Test draft created." In Shopify, open Content > Blog posts and find it. Its visibility is Hidden.
Publish modes and what gets created#
| Mode | What happens | When to use it |
|---|---|---|
| Draft only (default) | Articles are created in the blog as hidden. You make them visible in Shopify when ready. | While you learn the flow, or when someone reviews on the Shopify side. |
| Publish live | Articles are created visible and appear on your store blog. | Once you trust the output and your review step happens in PilotDeck. |
Change the mode from the selector on the connected card. PilotDeck asks you to confirm every switch, because the two modes behave differently once content has been sent.
Each article carries these fields:
- Title, body, handle (the URL slug) and summary from the draft's meta description.
- Tags, including your optional category.
- Featured image, when the draft has one. If Shopify rejects the image, the article is still created without it.
- SEO title and description, stored in Shopify's standard page title and description fields.
- FAQ and article structured data (JSON-LD) written into the article body, plus an author name and an author box when the draft has an author. The author name defaults to "PilotDeck" when none is set.
If the handle is already taken in that blog, PilotDeck retries with a numeric suffix, up to a few times, instead of failing.
For administrators: register the Shopify app#
Only the person who runs the PilotDeck server does this, once. Everyone else uses the steps above. PilotDeck connects through a Shopify app that you register in the Shopify Dev Dashboard, and the server needs that app's client ID and secret.
- Create a Shopify Partners account and an organisation, or use one you already have. Shopify may ask you to verify your email address first.
- In the Dev Dashboard open Stores > Create store, choose Dev, name it, pick a plan and tick Generate test data. A development store is free and is the safest place to try the connection.
- Open Apps > Create app. Set the name, add your PilotDeck API's callback address under Allowed redirection URL(s), and set Scopes to
write_content,read_content. Click Create app, then Release. - Open the app's Settings page. Under Credentials, copy the Client ID and the Client secret.
- Set
SHOPIFY_OAUTH_CLIENT_ID,SHOPIFY_OAUTH_CLIENT_SECRETandSHOPIFY_SCOPES(the two scopes above) in the PilotDeck server environment, together with the redirect base the callback uses, then restart the server.
/api/connectors/oauth/shopify/callback.Disconnecting#
On the connected card click Disconnect and confirm. Approved content stops publishing to your store right away. This cannot be undone, but you can reconnect by repeating steps 1 to 4. To fully remove access, also uninstall the PilotDeck app in your Shopify admin under Settings > Apps and sales channels.
Troubleshooting#
I see "OAuth isn't configured on this server"
The Shopify install is not enabled on the PilotDeck server you are using, so PilotDeck falls back to showing store domain and access token fields instead. Contact your PilotDeck administrator rather than creating a token yourself.
"Connection was cancelled. Please try again."
You clicked Cancel on Shopify's install screen, so nothing was saved. Click Authenticate with Shopify again and approve the install.
I am sent back with a failure message
PilotDeck rejects a return whose signature does not check out ("Shopify HMAC verification failed"), or one where Shopify gave no access token. Start again from step 2 and complete the install in one go without refreshing the return page.
"No blog found in this store"
The store has no blog. Create one under Online Store > Blog posts, then send the test draft again. If you want a specific blog, reconnect and choose it in Choose a blog.
The blog list is empty during Finish setup
Your store returned no blogs. Create a blog in Shopify and reconnect.
Test draft fails with an authorization error
Shopify rejected the saved access, often because the app was uninstalled or its permissions changed. Disconnect, then connect again and approve the install.
The card shows needs reauth
The PilotDeck app was removed from the store. Install it again with Authenticate with Shopify. The connection keeps your earlier blog choice.
The article address shows a password page
That is a development store. Its public pages are password protected, so the link is not openly reachable. The article still exists in your Shopify admin.
The article has no featured image
Shopify can refuse an image it cannot fetch. PilotDeck then creates the article without the image rather than blocking the publish. Add the image in Shopify.