What ok, partial, failed, and hmac_failed mean, where to see them, and how to fix each one.
If new Shopify orders aren't showing up as conversions, the cause is almost always webhook health. nod. tracks whether your store's order webhooks are registered and verifying, and shows the result as a banner on the Data Sources page. This article covers what each state means and how to fix it.
Open Settings → Data Sources. If your Shopify connection needs attention, an alert bar appears above the sources grid with a title, a plain-language explanation, and a reconnect link. A healthy store shows no alert — instead, the Shopify card carries a green "Webhooks active" badge.
There's a fifth internal state, unknown, for when nod. couldn't reach your store during a health check (a timeout, rate limit, or brief network blip). It isn't a verdict, so nod. leaves your last-known health alone rather than flipping a healthy store to red over a transient hiccup.
The banner reads "Some Shopify order webhooks are missing" and names which ones (order created, order paid, order updated, refund created, order cancelled). Until those are registered, the corresponding events won't reach nod., so some conversions may be delayed.
Fix: usually nothing — nod. re-checks and re-registers missing topics automatically in the background, on a roughly 30-minute cycle. If it's been a while and the banner hasn't cleared, reconnect Shopify from the Data Sources page to retry immediately.
The banner reads "Shopify order webhooks are not registered." No order topics are active, so new orders won't flow in and conversions stay blank.
Fix: the same background self-healing applies here — nod. keeps retrying registration automatically. If it persists, reconnect Shopify to force re-registration.
This is the state that needs the most attention, because self-healing can't fix it.
What it means: order webhooks are arriving, but their signatures don't check out, so nod. rejects them before they become conversions. This can only happen on a store still connected under the old custom-app token flow, where Shopify signs each delivery with that custom app's own secret. If nod. doesn't hold that exact secret, every order webhook is rejected. Stores installed from the App Store can't reach this state — their deliveries are signed with nod.'s own app secret.
Why the background reconcile doesn't fix it: the automatic self-healing job that runs every 30 minutes only re-registers webhook topics that are missing. In hmac_failed, the topics are already registered — the problem is the signature, not the registration — so the reconcile job deliberately skips these connections rather than misreading "registered" as "healthy."
Fix: move the store onto the App Store install.
That re-registers the order webhooks under nod.'s own app, so Shopify signs future deliveries with a secret nod. holds. There is no API secret to copy any more — the custom-app token flow it belonged to has been retired.
Once a correctly signed delivery arrives, nod. clears the flag back to ok on its own — no separate confirmation step needed.
For partial and failed, some or all new orders don't reach nod. until webhooks register — expect a gap in recent conversions. For hmac_failed, every order webhook is rejected, so no new orders become conversions at all until the secret is fixed. In every case, the underlying orders aren't lost from Shopify — but the gap doesn't fill itself in. Once webhooks are healthy again, new deliveries resume normally; orders placed during the gap are not automatically re-imported. To recover them, reconnect Shopify, which re-runs the order backfill and picks up any orders from that window. See the Shopify connection guide for what the initial backfill covers.
If a banner won't clear after reconnecting with the correct secret, check the data checklist for other reasons numbers might look off before reaching out to support.