Properties vs customAttributes: can someone help me understand the difference?

I can read properties via a Shopify Script.

And I can set customAttributes via the JS Buy SDK.

But I can’t figure out how to get the script to read the customAttributes or how to get the JS Buy SDK to write properties.

Can someone point me in the right direction?

I answered my own question. Setting values with customAttributes via JS Buy allows you to read them as properties in the shopify scripts API.

JS Buy SDK:

{
    variantId: item.variantId,
    quantity: item.quantity,
    customAttributes: [
        {
            key: 'foo',
            value: 'bar'
         }
    ]
}

Scripts API:

line_item.properties.each do |key,val|
    if (key === 'foo') then
        puts val #do something with your val
    end
end
3 Likes

In case of confusion cart.attributes and checkout.attributes are not accessible in shopifycheckoutscripts.

https://help.shopify.com/en/manual/apps/apps-by-shopify/script-editor/limitations#cart-checkout-attributes

The above “customAttributes” of the JSbuy sdk is poorly named and is on par with Line Item Properties on products

https://github.com/Shopify/js-buy-sdk/blob/master/README.md#adding-line-items

1 Like

REST API → For line_items it’s properties. For draftOder or order it’s note_attributes.

GRAPHQL API → CustomAttributes in both cases

LIQUID / email template: properties for the line items and attributes for the note_attributes.

1 Like