Publishing integrations

Connect Shopify to Rankli

Shopify stores can have several blogs. The connection carries the Admin API token and which blog to post into.

Create a custom app#

  1. In your store admin, open Settings → Apps and sales channels.
  2. Click Develop apps, then Create an app. Name it Rankli.
  3. Open Configuration → Admin API integration and click Configure.
  4. Grant write_content, the scope that covers blogs, articles and pages, and read_products, so we can read your catalog for product-led articles. We do not read orders or customers, and nothing else is asked for.
  5. Save, then open API credentials and click Install app.
  6. Reveal and copy the Admin API access token. It starts shpat_ and is shown once.

If Develop apps is greyed out, your staff account lacks the “Manage and install apps” permission. A store owner can grant it, or create the app for you.

Have a blog to post into#

A new Shopify store often has no blog at all. Create one under Online Store → Blog posts → Manage blogs → Add blog before connecting; a store with no blog fails the connection test with exactly that message.

Connect it#

  1. In Rankli, open Integrations → New integration → Shopify.
  2. Store URL: your-store.myshopify.com. The .myshopify.com address, not your custom domain.
  3. Admin API access token: the shpat_… value.
  4. Blog: we list the blogs on the store; pick one. Leave it empty and the first blog is used.
  5. Publish mode: published, or hidden for review.
  6. Save. We list the store’s blogs as the connection test, which also proves the scope.

What lands on your store#

FieldWhere it goes
TitleThe article title.
BodyThe article body as HTML.
SlugThe article handle.
Meta descriptionThe SEO description on the article.
Hero imageUploaded to Shopify and re-hosted on their CDN as the article image.
In-body imagesLeft at their original URLs, Shopify only re-hosts the featured image.
TagsFrom the article’s keyword cluster.
AuthorThe store name, unless the connection sets one.

Catalog sync and product-led articles#

The same token reads your products. The moment a Shopify integration is saved or tested we pull the store’s active products, title, handle, cheapest variant price, stock, image, type and tags, into a snapshot, and refresh it once a day. Nothing extra to configure: the Catalog panel on the integration shows the count, when it was last read, a sample of rows and a Sync now button.

With a catalog in place, Product-led articles (on by default) hands the writer the three products that fit each topic, matched on the keyword, the title and the section headings against product titles, types and tags, in-stock first, and asks for each to be mentioned once, naturally. After writing, the first mention of each product becomes a link to its product page, and those links are protected: the SEO check counts them as internal links, the editor cannot propose an edit that drops one, and the Internal links toggle leaves them alone.

Prices and stock come only from the snapshot. The writer is told so, and a check strips any price the snapshot does not contain before the draft is scored, a model’s memory of what something costs never reaches your blog.

Product scenes swaps one in-body illustration for the mentioned product placed in a setting chosen from its type, outdoor, kitchen, desk or outfit. With an image model configured the product photo is the seed for an image-to-image render; without one the photo sits in a drawn scene frame labelled as drawn. Both switches are on the Catalog panel and under Settings → Output.

What we readWhere it goes
Title, handle, product URLThe mention and its link.
Cheapest variant price, shop currencyQuoted exactly, as of the last sync. Never converted or rounded.
StockIn-stock products rank first; a sold-out one is named as sold out.
Featured imageThe product scene, and the thumbnail on the Catalog panel.
Type and tagsMatching a product to a topic, and choosing its scene.

A token created for publishing alone lacks read_products, and the sync says so: “Shopify refused to list products (HTTP 403), the custom app is missing the read_products scope.” Add the scope, save, reinstall the app, and sync again.

When it does not work#

401

The token was rotated, or the custom app was uninstalled. Reinstall and copy the new token.

403

The app is missing write_content. Add the scope, save, and reinstall the app, a scope change does not take effect until the app is reinstalled.

404

The store URL is wrong (a custom domain rather than the .myshopify.com one), or the blog was deleted.

Rate limited

Shopify’s Admin API is leaky-bucket rate limited. We back off and retry; a scheduled article is not lost because the store was busy.