Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bundles created with the Shopify App (Summer 2023) can't be added to cart #125

Closed
jpvalery opened this issue Jul 29, 2023 · 11 comments
Closed
Labels
enhancement New feature or request

Comments

@jpvalery
Copy link

Hey,

I've installed Shopify newest app for bundles (https://apps.shopify.com/shopify-bundles) and found that the quantities are not coming over properly.

For instance, I have a bundle with 8 units available, yet it shows as "Out of stock" with Hull.

I'm happy to open a PR and work on a fix but I could use some support in identifying the root cause of this.

At the moment, I'm guessing the course of action would be

  • Add additional logging to /api/shopify/product-update to get the full request from Shopify
  • Identify how/if the quantity of the bundles are being sent over
  • If they are, write logic to /api/shopify/product-update so that it's properly added
  • If they aren't... No clue yet.
@jpvalery
Copy link
Author

Update:
Tried instead to GET the URL from /api/shopify/product-inventory (aka https://${process.env.NEXT_PUBLIC_SHOPIFY_STORE_ID}.myshopify.com/admin/api/2022-10/products/${id}.json) to see if there was any difference between a bundle and a single product.

I couldn't spot any. 🤨

It seems that it's now showing the right quantity and inStock.

@ndimatteo ndimatteo added the enhancement New feature or request label Jul 30, 2023
@ndimatteo
Copy link
Owner

hey there @jpvalery, the new Shopify bundles feature hasn't been tested with this setup yet. I imagine there's a lot more going on under-the-hood with it that's net new for HULL.

Also, considering the current version of HULL still uses the Shopify Buy SDK and a custom Sanity sync setup, there are likely some incompatibilities with the new Shopify bundles release.

I have plans to update HULL in the coming months to use a more modern flow (using Shopify's hydrogen-react and the sanity-connect plugin) which will likely have better support for the new Shopify Bundles.

Until then, feel free to continue looking into a fix and issue a PR if you find a solution! 🤘

@jpvalery jpvalery changed the title Bundles created with the Shopify App (Summer 2023) have inaccurate stock (shows as out of stock) Bundles created with the Shopify App (Summer 2023) can't be added to cart Oct 30, 2023
@jpvalery
Copy link
Author

Updating this as I'm seeing now that they can't be added to cart. I couldn't spot any difference when I logged newCheckout to the console. Trying to figure this out and will update the issue with my findings

@jpvalery
Copy link
Author

After some trial-and-erroring, I found that the checkoutCreate doesn't work with the variantId returned by the bundle:

CleanShot 2023-10-29 at 23 57 33

Continuing from there, I found that the productId doesn't return any data when used in a query:

CleanShot 2023-10-30 at 00 07 16

I'm fairly confident that the root cause of the issue is here. Because we can't get the product data, we can't add it to the cart (with the storefont API—the admin API does return the proper data).

Continuing further, I tried listing all products (hoping that I'd see something in the product object for the bundle that would put on the solution's path) and realized that they're not showing up there:
CleanShot 2023-10-30 at 00 19 07

Opened a ticket with Shopify to see if they have any idea—once I know how to properly find and add the bundles to the cart, the PR should be fairly easy.

@jpvalery
Copy link
Author

Continuing my investigation, I found that adding the scope unauthenticated_read_bundles to the Storefront API permissions for the custom app made them appear in the query ✅

Still not able to add them to the cart (like this unanswered thread in their forum https://community.shopify.com/c/hydrogen-headless-and-storefront/how-to-add-product-in-cart-using-node-and-graphql-apis/m-p/2021952).

I have updated my ticket and opened a forum post to try and find what's missing here 🤔

@jpvalery
Copy link
Author

Seems that another person facing the same issue got us a potential solution.

doing checkout.addLineItems doesn't work; but creating a cart does:

mutation {
  cartCreate(input: { 
    lines: [
      {
        merchandiseId: "variantId",
        quantity: 1
      }
    ]
  }) {
    cart {
      id
      checkoutUrl
    }
    userErrors {
      field
      message
    }
  }
}

@ndimatteo would you happen to know if this is doable with the shopify-buy package? Their doc isn't exactly clear and I'm checking in the off chance you would know.

Otherwise seems there's this option:
CleanShot 2023-10-31 at 00 06 16@2x

  • the aforementioned graphql

Lines to update:

HULL/lib/context.js

Lines 303 to 307 in 699c570

// Add it to the Shopify checkout cart
const newCheckout = await shopifyClient.checkout.addLineItems(
checkout.id,
newItem
)

@jpvalery
Copy link
Author

jpvalery commented Oct 31, 2023

Apparently Cart can't be handled by the JS SDK
Shopify/js-buy-sdk#907 (comment)

And the Shopify support team on the ticket told me they wouldn't help with this.

So GraphQL queries seem the only option...

I'm thinking that adding a cart object to initialContext and then leveraging graphQL queries for add/remove/update might be the best way to go.

Unsure if that should be a PR seen the massive change that would represent?

If it should, I'm more than happy to partner on that migration—I have a good grasp on the queries/mutations needed to create cart, add/remove items; I could benefit from some guidance on how to integrate that with the current context/setup.

@ndimatteo
Copy link
Owner

Hey there @jpvalery! Appreciate you digging into this to see what the options are for a solve.

As suspected, it sounds like the buy SDK is just not up-to-par with some of the newer features of Shopify.

Happy to review a PR, but I think a lot of this will be addressed with the next release planned (hydrogen-react, sanity-connect, etc).

@jpvalery
Copy link
Author

jpvalery commented Oct 31, 2023

Of course @ndimatteo! Least I could do!

I'm going to try and get this migrated over GraphQL queries with the following caveats:

  1. I might need some of your wisdom/experience with the whole context.js
  2. It might not be as elegant or efficient as the rest of your code

jpvalery added a commit to jpvalery/HULL that referenced this issue Nov 3, 2023
@jpvalery
Copy link
Author

jpvalery commented Nov 3, 2023

Fixed in #129 by jpvalery@1425889

@jpvalery jpvalery closed this as completed Nov 3, 2023
@Hahlh
Copy link

Hahlh commented Nov 6, 2023

Just wanted to say thank you @jpvalery for outlining your journey so thoroughly here.
We are currently looking into creating bundle features for clients as well and found this issue very useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants