Troubleshooting
Start at RedeemID → Debug. It shows where each setting comes from, platform checks, the Shopify connection and its scopes, and a dry run of any user’s access. The Shopify Health block shows a short version of the same checks.
Sign-in fails or loops
- Shopify rejects the redirect. The callback, JavaScript origin and logout values in the Shopify client must match the ones RedeemID → Debug prints, exactly, including
httpsand the trailing slash. See Connect Shopify. - The callback page is missing, or 404s. Turn on pretty permalinks, then use Create the page in the Overview checklist.
- “Your sign-in link expired or was opened in a different browser.” The sign-in state lives in a short-lived cookie. A page cache that strips cookies, or serves a cached callback, breaks it. Bypass the cache for the
redeemid_oauth_stateandwordpress_logged_in_*cookies. - An administrator can’t sign in with Shopify. This is by design. Administrators use the WordPress login.
Webhooks are rejected
Rejected deliveries mean a signing mismatch. RedeemID verifies each delivery with the Admin app’s client secret, so:
- Register webhooks only with Register webhooks with Shopify on RedeemID → Webhooks. Webhooks created in Shopify’s Settings → Notifications are signed with a different key and always fail.
- Check that
REDEEMID_ADMIN_CLIENT_SECRETbelongs to the app the webhooks were registered through.
Webhooks arrive but wait
Deliveries are processed in the background by Action Scheduler or WP-Cron. If the Webhooks screen shows deliveries waiting more than 10 minutes, the queue isn’t running: check that WP-Cron fires, or run a real cron job against wp-cron.php. Dead-lettered deliveries can be retried from the same screen once it runs.
A member’s access doesn’t change
Access follows the tags Shopify last sent, however old. It changes only when Shopify sends new ones.
- On RedeemID → Customers, open the customer and compare their synced tags with Shopify’s.
- If they differ, the webhook didn’t land. Check Delivery health on RedeemID → Webhooks. Shopify removes a subscription after its deliveries fail for several hours, and RedeemID re-creates missing ones once a day; Register webhooks with Shopify does it at once.
- Resync the customer from their row, or let them use the Refresh Membership block. After an outage, Resync all customers re-reads everyone, paced to the store’s API budget.
Shopify Flow isn’t tagging
If the customer’s tags in Shopify are wrong, the problem is in Shopify, not WordPress. Check the workflow’s run history in Flow, and that its trigger matches how the product sells (a one-time order, or a subscription app’s own event). See Tagging customers with Shopify Flow.
If the tags in Shopify are right but a level still doesn’t match, look for a typo: the Overview checklist lists any level tag that no customer has, and Access → Test shows what a given tag set gets.
Plan cards show no price
Plan cards need a Storefront token (REDEEMID_STOREFRONT_PRIVATE_TOKEN or REDEEMID_PUBLIC_ACCESS_TOKEN), and the product must be published to the same Headless channel that issued the token.
A locked post still turns up in search
- Site search matches locked items on their public text only: title, excerpt and teaser. A rule change rebuilds that index in the background, and results are checked again until it finishes. To rebuild it at once, run
wp redeemid access recompute. - Search engines index locked items by default, showing what a locked visitor sees. To keep them out, tick Keep locked items out for the post type on Access → Content rules. They then get
noindexand leave the sitemaps. - Linked files, such as PDFs, keep public URLs. RedeemID gates content, not files.
Still stuck
Check RedeemID → App events for the calls RedeemID made to Shopify and their results, then ask on GitHub with what you found.