Working with Shopify’s WordPress plugin

Shopify publishes its own WordPress plugin for the Sell on WordPress sales channel (version 1.0.0 at the time of writing). This page explains how RedeemID divides the work with it, and the trade-offs that come with markup RedeemID doesn’t control. The plugin’s README on GitHub covers the settings and behaviour.

Who does what

RedeemID treats Shopify’s plugin as an optional companion storefront, not a competitor and not a dependency.

  • Shopify’s plugin owns the anonymous storefront when installed: product and collection blocks, /products/*, /collections/* and /cart, built on Storefront Web Components.
  • RedeemID owns identity and access: sign-in, account linking, the membership mirror, gates, webhooks and the path from purchase to membership.
  • RedeemID works the same without it. Plan cards and buy-now are RedeemID’s own purchase path and need no browser cart.

Because of this split, RedeemID ships no product grid, collection or cart blocks. A site that wants a catalog installs Shopify’s plugin. Instead of a cart of its own, RedeemID signs Shopify’s cart in for a signed-in customer (Commerce\CartBridge, POST /cart/identity), so checkout opens as that customer and the purchase unlocks content.

Trade-offs where Shopify’s plugin renders

Everything RedeemID renders follows the rules below. They are relaxed only for markup Shopify’s plugin produces, because RedeemID can’t change it.

RedeemID’s rule Shopify’s plugin Why it is acceptable
Commerce markup renders on the server Web Components render in the browser RedeemID’s own blocks (plan cards, gates) still render on the server, and a gate removes Shopify’s blocks for non-members before the page is sent
Purchases work without JavaScript and by keyboard The cart needs JavaScript; the 1.0.0 cart toggle can’t be reached by keyboard Buy-now on plan cards works without JavaScript. RedeemID gives the toggle a button role and a tab stop (Integrations\OfficialCartToggle)
No cart IDs in browser storage The cart ID lives in the browser’s localStorage The bridge sends it to the server only to attach the customer, and RedeemID stores no cart IDs

Guarantees

  • RedeemID never reads the Storefront token of Shopify’s plugin (shopify_api_key). It reads only shopify_store_url, to compare stores.
  • The customer access token goes from RedeemID’s server to Shopify and nowhere else.
  • If Shopify’s plugin is connected to a different store, Overview shows an error and the bridge stays off.
  • If Shopify changes the undocumented __shopify:cartId key, the bridge stops attaching and the cart keeps working as a guest cart. Debug shows the last attach and the last failure.

Known limits

  • With Shopify’s plugin 1.0.0, its /cart page falls back to a shortcode that doesn’t exist. Add a theme template for /cart if your theme needs one.
  • A visitor who adds to the cart and reaches checkout within a second or two may get there before the attach finishes, and check out as a guest.

RedeemID is still being built

RedeemID is a WordPress plugin that lets customers sign in with their Shopify account and opens your site to what that account holds. It is in early development, so parts of this site are unfinished and details will change.

It is coming soon. We are looking for sponsors and for the first stores and publishers to use it.

For more information, email vinny@vinnysgreen.com.

Get in touch