[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-you-cannot-disable-a-product-on-one-website":3},{"name":4,"created_at":5,"published_at":6,"updated_at":7,"id":8,"uuid":9,"content":10,"slug":109,"full_slug":110,"sort_by_date":111,"position":112,"tag_list":113,"is_startpage":114,"parent_id":115,"meta_data":111,"group_id":116,"first_published_at":6,"release_id":111,"lang":117,"path":111,"alternates":118,"default_full_slug":111,"translated_slugs":111},"You cannot disable a product on one website","2026-09-03T12:59:29.668Z","2026-09-03T12:59:29.725Z","2026-09-03T12:59:29.739Z",216067152586910,"a8686b64-4407-4c98-aa8b-1dd4f9e8363c",{"_uid":11,"body":12,"title":4,"excerpt":106,"component":107,"publish_at":108},"7bb426bc-90b8-48f0-9e4d-ad2b349040ab",{"type":13,"content":14},"doc",[15,21,25,32,60,64,69,73,77,82,86,90],{"type":16,"content":17},"paragraph",[18],{"text":19,"type":20},"The request was ordinary: this product should be visible on one website and not the other. Same catalog, several storefronts, disable it on one of them.","text",{"type":16,"content":22},[23],{"text":24,"type":20},"It could not be stored. Not \"it was overwritten later\" or \"the import undid it\". There was nowhere to put the value.",{"type":26,"attrs":27,"content":29},"heading",{"level":28},2,[30],{"text":31,"type":20},"status had been made global",{"type":16,"content":33},[34,36,41,43,46,48,52,54,58],{"text":35,"type":20},"Stock Magento ships ",{"text":37,"type":20,"marks":38},"status",[39],{"type":40},"code",{"text":42,"type":20}," as website-scoped, which is what makes the usual answer work. On this install both ",{"text":37,"type":20,"marks":44},[45],{"type":40},{"text":47,"type":20}," and ",{"text":49,"type":20,"marks":50},"visibility",[51],{"type":40},{"text":53,"type":20}," had ",{"text":55,"type":20,"marks":56},"is_global = 1",[57],{"type":40},{"text":59,"type":20},". Nothing in the project code did that, so it was changed at some point years ago and nobody recorded why.",{"type":16,"content":61},[62],{"text":63,"type":20},"A global attribute stores one value on store 0. Setting a different value for store 3 has nowhere to live, so the admin appears to accept the change and the value is simply not persisted anywhere it can be read back.",{"type":26,"attrs":65,"content":66},{"level":28},[67],{"text":68,"type":20},"The import enforces it too",{"type":16,"content":70},[71],{"text":72,"type":20},"Reading the connector made it worse in an interesting way. Because status is global, the import takes a branch that reads only the unscoped column. And it calls a cleanup routine that deletes every status row with a non-zero store id for imported products. So even if you did get a store-scoped value in there, the next import would remove it deliberately.",{"type":16,"content":74},[75],{"text":76,"type":20},"On the install I checked, every one of the roughly 190,000 status rows sat on store 0 and there were zero store-scoped rows. Not \"few\". Zero. Which is at least consistent.",{"type":26,"attrs":78,"content":79},{"level":28},[80],{"text":81,"type":20},"What this changes about the estimate",{"type":16,"content":83},[84],{"text":85,"type":20},"This is the part worth generalising. The request sounded like a content task. Somebody toggles a switch on a product. It was actually a schema change: convert the attribute to website scope, verify the import does not fight it, and confirm nothing downstream assumes a single global value.",{"type":16,"content":87},[88],{"text":89,"type":20},"The saving grace was that there was nothing to migrate. With only store 0 rows in existence, changing the scope does not have to reconcile conflicting values, because none exist.",{"type":16,"content":91},[92,94,98,100,104],{"text":93,"type":20},"Before promising a per-website behaviour on any attribute, check ",{"text":95,"type":20,"marks":96},"is_global",[97],{"type":40},{"text":99,"type":20}," in ",{"text":101,"type":20,"marks":102},"catalog_eav_attribute",[103],{"type":40},{"text":105,"type":20},". It takes one query, and it is the difference between a config change and a data migration.","A request to hide a product on one of several websites turned out to be unstorable. status and visibility had been changed to global scope, and the import deletes store-scoped values anyway.","blog_post","2026-06-24 09:00","you-cannot-disable-a-product-on-one-website","blog\u002Fyou-cannot-disable-a-product-on-one-website",null,-60,[],false,215738016545577,"69f515d7-4020-4458-9dc0-512ba3d9864a","default",[]]