@Parcel_IntelligI am curious as I review this thread, and you make numerous mentions of "Free Shipping > $100 in cart" as a thing.
That has not been accurately possible since forever as you get no information in the payload about pricing discounts. How have you handled that over the years? A customer spends $100 in the cart but uses a $30 off coupon, most merchants deny free shipping as it is bonus on top of a bonus. So you'd be handing out free shipping all the time, since most shops use discounts of some sort.
I am curious. Has that been a hell item for you, or you just inform your merchant clients to suck it up?
Yes discounts is a big problem, we have a way to look this up via abandoned carts/draft orders but its not very accurate, merchants are notified of this and they will need to put up with it because it's this or nothing. Some things we can workaround for PLUS merchants via scripts, but discounts is not one of them either.
When a customer is in checkout, it is not an abandoned cart, so that makes no sense? And when a customer is in checkout, that has zero to do with Draft Orders. So you lost me there.
I agree that Plus makes things much easier, but not for interfacing to an external rate generator for shipping. Again, I am not sure what you mean by workarounds there.
One of the first things I learned about Plus and our Carrier Services, is that when you want to tell the customer WHY the rates they are seeing are stupid, you cannot. So they see stupid rates. Whereas if they corrected their checkout, due to our messaging telling them what they did wrong, they might get better rates. But alas, we can not go there.
actually not quite correct. as soon as a customer inputs their shipping address an abandoned cart is created or updated, except in some random situations where shopify doesn't do this (hence inaccurate) - most commonly if a customer has a long running session.
draft orders are for other apps which create orders via draft, but some wholesale apps don't do this properly either, i.e. they create a draft order but with no customer or shipping info and back populate this once the order is created, which again means we can't find any data.
i would say this method works 50% of the time, it really depends on customer behaviour and checkout workflows, some merchants have been using this feature for a number of years and is happy with it, others not so much, in which case they will need to exclude discounts in their rules.
with PLUS there is scope to display custom error messages, we do this for several PLUS merchants, however this requires a great deal of customisation on their checkout.
Ok. So an abandoned checkout exists, with or without good data. In your brief time trying to generate a rate and return it, you now subject yourself to making an API call, and fishing for an abandoned cart entry that matches the info you're given in the payload. Wow. OK... I guess address matching is all you get there. And the discounts applied to the cart? I would be amazed if they provided that, but OK.
As for Draft Orders, again, how is fishing that pool of data fast, efficient, useful or even accurate? And why would you even be there? Carrier Services are not even hooked up to that.
As for the SCOPES you mention in messaging, I will have to look into that. Clearly, that is not something I really care about, but if it improves messaging between external Apps and checkout details, it is neat. Usually, checkout is oblivious to what we do.
efficient? absolutely not! but the only way to pull any meaningful customer data from Shopify.
if a customer users a wholesale app then it will most likely be a draft order instead of abandoned cart, in which case we will need to go looking there for additional data, not really relevant for discounts but useful for other customer data.
@Parcel_IntelligJust a quick question. A CCS App in a full on multi-location, multi-origin store will get one request with all the items in an order, provided there is inventory stocking each item at each location. If there is an item not stocked at a location, you can expect a request for that location and that item where it is stocked. So you just return all your requests, and Shopify takes care to ensure the customer sees a correct CCS rate?
All this talk of people hashing and mapping, and storing N requests seems like "a garbage can fire, do not go"... but I am not sure? Is it really simple enough like the good old days? Get a request, figure it out, send a rate... done?
Not sure I follow. For simplicity, a cart has 3 items, with the store having 3 locations. In this cart, 1 item in stock at each location. So you are saying you get three requests? And when you respond with a rate for each one, 3 responses, what does Shopify show? The sum of those 3?
That is what interests me I guess. This concept of what happens at the Shopify end of things.