This guide will help ensure that Osano is correctly integrated into your Shopify store and addresses common configuration and runtime issues related to consent gathering. It assumes you have completed the Installing Osano on Shopify steps.
Before investigating anything else, run this check. It tells you whether Osano and Shopify are talking to each other.
Open your storefront home page and set an ‘Accept All’ consent preference in the Osano banner.
Go to checkout.
Change your consent preferences at checkout and save.
Go back to your storefront home page.
Open developer tools and run this in the console:
window.Shopify.customerPrivacy.currentVisitorConsent();What you should see returned:
{marketing: 'yes', analytics: 'yes', preferences: 'yes', sale_of_data: 'yes'}Value | Meaning |
|---|---|
| Consent granted |
| Consent declined |
| Not yet chosen |
How to read the result:
Result | What it means | Go to |
|---|---|---|
Values match what you set | Consent is passing correctly | The problem is elsewhere. Check the specific symptom below. |
| The Customer Privacy API never loaded | Consent is not passing |
All values empty after setting preferences | Osano is not writing consent to Shopify | Consent is not passing |
Values are present but mapped to the wrong categories | Category mapping issue | Wrong categories |
Storefront values do not reflect what you set at checkout | Checkout install issue | Checkout problems |
Shopify's own cookie banner is still active. Automated privacy settings are on by default for new stores, and Shopify shows its banner in regions it decides require one. Osano's banner shows as well, so visitors see both.
Steps:
Go to Settings > Customer privacy, then click Cookie banner.
In the Regions and content section, turn Use automated settings off.
Click More actions. The menu now offers Remove cookie banner.
Click Remove cookie banner, then click Remove in the confirmation dialog. Shopify's own warning describes this exact scenario: "Make sure that you've set up an app to show a cookie banner in the regions that require it."
Confirm the Regions list covers every region you do business in, using Edit or More actions > Set custom banner regions.
Verify: load the storefront from an affected region, using a VPN or Shopify's preview, and confirm only the Osano banner appears.
Note: Do not click "Set up banner." The Visibility section offers this button and it recreates Shopify's banner and reintroduces the problem. If you still see a Regions and content section and a banner preview with Colors and Position controls, the Shopify banner exists. If you see Visibility and Regions sections, it has been removed.
The Customer Privacy API check above returned undefined, or values stayed empty after setting preferences.
Work through these in order.
1. Is osano.js loading, and loading first?
In developer tools, open the Network tab and reload. Look for the osano.js request.
Not present: the script is not in theme.liquid. See Install Step 2.
Present but loading after other scripts: it is not first in <head>. Move it above every other <script>. Anything that loads ahead of Osano cannot be blocked before it runs.
2. Is the snippet present in the theme?
In the theme code editor, open Layout > theme.liquid and search for:
{% render 'osano-shopify' %}It must appear immediately before the closing </body> tag.
Missing: add it. See Install Steps.
Present but in the wrong place: move it to just before </body>.
3. Does the snippet file exist and is it complete?
Open Snippets > osano-shopify. Confirm the full contents are present, including the closing of the try/catch and the window.Osano.cm.ready("shopify") call.
4. Is the theme the one actually published?
Confirm the edits were made to the published theme and not a draft or a duplicate. Go to Online Store > Themes and check which theme is live.
Confirm consent is passing first, using the check at the top of this guide. If it is passing and tags still are not firing:
1. Check whether the tag is Shopify-controlled or installed by you.
Shopify Pixels and Shopify-controlled scripts respond to the Customer Privacy API. If consent is confirmed passing and the relevant category was granted, and these are still not firing, the cause is likely on Shopify's side. Rule out check 3 below first.
Tags you’ve added, through GTM or directly in the theme, are governed by Osano's own classification and blocking. Check how they are classified in the Osano configuration.
2. Check Google Consent Mode.
If you use Google tags, Google Consent Mode may be required for events added through Shopify custom pixels to fire. Google's "additional consent required" triggers can gate subsequent tags even when consent has been granted.
3. Check classification in your Osano CMP configuration.
A tag classified into a category the visitor declined will correctly stay blocked. Confirm the classification matches what you expect.
This is expected behavior, not a fault.
_shopify_y, _shopify_s, and _landing_page always load because of Shopify framework restrictions. They sit outside Osano's control, and Shopify determines their persistence and session length.
If you need these documented for a compliance review, review Shopify's Cookie Policy.
1. Is the configuration set to Permissive or Strict mode?
Osano displays the banner based on compliance mode configured in Osano. Confirm the compliance mode is Permissive or Strict. Banners will not show when in Discovery/Listener mode.
2. Has this visitor already consented?
Consent persists. Clear site data for the domain and reload to test as a new visitor.
3. Is osano.js loading?
See "Consent is not passing," check 1.
4. Are you looking at the published theme in Shopify?
See "Consent is not passing," check 4.
Checkout is a separate install from the storefront, with its own failure modes. If the storefront works and checkout does not, start here.
Go to Settings > Checkout.
In Configurations, click Edit next to the configuration.
Open the Apps sidebar and check the Added tab for Osano CMP (Checkout).
If it is not listed, add it. See Install Step 5b.
Shopify supports multiple checkout configurations, including drafts and per-market configurations on Advanced and Plus plans. The Osano block must be added to each configuration separately.
The failure pattern is distinctive: consent works when you test it, but fails for customers in a different market, or it worked until a draft configuration was published, or it broke after someone duplicated a configuration.
Check every configuration listed under Settings > Checkout, not just the one you are testing.
In the block settings, confirm:
Account ID matches the {customer_id} from the merchant's osano.js URL, the first string of numbers
Configuration ID matches the {configuration_id}, the second string of numbers
Transposing these is easy and produces a block that loads but does not function.
Shopify restricts apps on the information, shipping, and payment pages of checkout to Shopify Plus. If the store is not on Plus and the block was placed on one of those pages, it will not render. Confirm your Shopify plan and where the block was placed.
If the merchant uses a custom or headless storefront, the Customer Privacy API must be installed on that storefront directly. Without it, Osano cannot pass consent across both the storefront and checkout, because they are different surfaces.
See Shopify's custom storefront installation guidance.
Also confirm the checkout domain shares a root domain with the storefront. Per Shopify's guidance for custom storefronts, consent cookies cannot be read across different root domains. A storefront at example.com with checkout at checkout.example.com works; a storefront at example.com with checkout at somethingelse.com will not honor consent given on the storefront.
This applies to custom and headless storefronts specifically. Standard Shopify storefronts do not have this problem.
If you have followed these steps and still encounter issues, feel free to contact Osano Support or Shopify Plus Support to further investigate configuration issues.