Discussing APIs and development related to customers, discounts, and order management.
TL;DR
As of API version 2020-07, we are updating the allocation methods available for explicit discounts. Currently explicit discounts are assigned an allocation method ofone
as they apply to one line. With this change the allocation methods will now includeeach
andacross
, withone
being deprecated.
Context
Discounts currently have 3 types of allocation methods: across all lines (across
), on each product (each
), or on one line (one
).
For example, imagine a checkout with two identical t-shirts, costing $10 each. Because they are the same product, they will be stored in a single line item, with a quantity of 2. Now, imagine we want to apply a $5 discount. This is how each value of allocation method would change the application of the discount:
one
.one
is the exact same as across, except it also signals that the discount is an explicit discount - was applied on an explicit line only.
What does the change look like?
Currently, explicit discounts are always represented by allocation method one
, and target_selection explicit
.
To know whether a discount targets a single line, target_selection
parameter should be used where a value of explicit
would be expected; instead of the allocation_method
parameter with a value of one
.
For discounts applied on a single line (explicit
), an allocation_method
value across
means that the discount had the intention of being applied across a line item. If the quantity of products on the line changes, the discount applied across the line will not change. While a value of each
means that the discount had the intention of being applied on each product of the line. Thus, should the quantity of the line change, the total discount amount applied on that line should as well.
To learn more visit the Shopify Help Center or the Community Blog.
Hi,
We don't use any discount allocation features in our app. Even we don't use any type of discount on our app.
Still why I am seeing This
"The allocationMethod field on DiscountApplication for explicit discounts will now either be each, or across. The option for one has been removed" on my App API health Check.
We don't find any discount feature in our app. We just collect the order in transfer to the CRM's. Our app is Skylio - CRM Connector.
See the below image.
Please provide some solution about tha.
Hi, this is an alert for a deprecation that "might" affect you. The change occurred on a return value which was included in the payload of one of the calls you made.
This message will go away when you update your calls to version 2020-07.
To learn more visit the Shopify Help Center or the Community Blog.
Hey @Jason_Tigas out of curiosity here - is there a way we can find the "exact" call that's being made from our application that you're giving us this notice about? Unless we're missing something - we can't seem to find the culprit that is making use of this value anywhere. We want to stay in compliance at all times / and up to speed on all changes being made but just need a little more help to find out what needs to be changed.
Thanks!
ShopSync
Sure will DM you!
To learn more visit the Shopify Help Center or the Community Blog.
Hi @Jason_Tigas! We seem to have exactly the same problem as @Skylitech described. All requests were upgraded to be 2020-07 or just don't specify the version, so the latest version is used. We have tried to reach out to partner support with no chance to get any detailed info - is there a chance we can get more info about what's causing the warning in our particular case?
Hi @ArchitechproOU,
Actually, please read the following about not specifying the version.
If your request doesn't include a version, then the API also defaults to the oldest supported stable version. However, we do not recommend relying on this behaviour for adopting deprecated changes. As you update your app, you should specify the API version with every request. By making your app version aware, you anchor your code to a specific set of features that are guaranteed to behave in the same way for the supported timeframe.
To learn more visit the Shopify Help Center or the Community Blog.
@Jason_Tigas thank you very much for the note! This should resolve the problem.
We are also getting this warning. We tried to upgrade all our API calls to 2021-01 but still getting this message. Is it possible for you to let us know which exact call is causing this issue?
Our App is Charge Me Later
Hi @Jason_Tigas We seem to have exactly the same problem as @shopsync described.
we upgraded almost all our code for new version 2021-01, so we are unable to find the culprit call.
so please let me know whether there is a way we can find the "exact" call that's being made from our application that you're giving us this notice about?
website: https://vaadi-herbals-india.myshopify.com/
pvt app: shopify_api_21
any help would be highly appreciated.
We checked our implementation and target_selection is not used anywhere.
API version is 2021-07, both client-side and in Webhook API version settings, but we're still seeing the warning for the "Order - Admin - REST" webhook as recently as 2021-07.
Is it possible to find the exact offending call from our application?
Hey @Jason_Tigas I have the same problem as ShopSync, we already changed the calls to version 2020-10 but we still get this error and we can not identify exactly where is the detail, could you help me?
Thanks!
App: Facturama
email: [email protected]
Hi Jason,
We updated our API call to 2021-01, but we still got the notice. Can you help ?
Hello Jason,
Could you kindly assist me in making it work. We are also not using any discount application still it is showing error on our app.
Our app is Easy Donation.
So, kindly let me know on it so that i can make the further changes and make it work. As the deadline given is 1st April so very less days are remaining to cover it up.
In Shopify when setting up a discount, how do you create a discount to be explicit? This discount should be applied to only one item. All the options I tried so far did not show the discount in the JSON as explicit.
"discount_applications": [
{ "type": "manual",
"value": "20.0",
"value_type": "percentage",
"allocation_method": "one",
"target_selection": "explicit",
"target_type": "line_item",
We're getting the same alert.
I suspect its because we're using shopify-api-node library.
shopify-api-node --> index.ts
```
type AllocationMethod = 'across' | 'each' | 'one';
Hello,
We are receiving this warning in our Ruby Shopify application (currently unlisted, plans to become listed shortly). I've upgraded the shopify gems we are dependent on to the newest versions:
gem 'shopify_api', '9.3.0'
gem 'shopify_app', '17.0.5'
And I additionally have set our ShopifyApp version to:
ShopifyApp.configure do |config|
config.api_version = "2020-07"
...
end
But we are still receiving this deprecation warning with respect to
'orders/updated' -> Admin • Webhook.
As far as I can tell, paths being used on the store end up being
{store_host_url}/admin/api/2020-07/{resource}
So we're really struggling tracing this down, as we appear to be fulfilling all of the requirements. Any help is appreciated.
Number one question I would like an answer to: how can I fully regenerate the schema? In trying to trace this down I saw that folks used to generate it by going to https://xxx.myshopify.com/admin/api/2020-04/graphql.json, but that appears to no longer work. Please let me know!
Can Shopify admin just update all my webhooks' versions instead of "delisting my app from the Shopify App Store and block installation of my apps" ?
Hey @Jason_Tigas
Our app didn't use that return value in our draft order API.
We just updated our API version to '2020-07' but we're still getting the message.
Can you help us determine where those attributes get trigger on our app?
Thanks!
Website On-Demand
We are receiving this error with API 2020-07.
LAST DETECTED (UTC)
Mar 25, 2021 at 09:19 AM
We have code that refers to the discount allocations, but nothing in use.
The only relevant code segments, from functions which aren't being called, include:
'type': 'manual',
'title': 'custom discount',
'description': discount_message,
'value': discount_value,
'value_type': 'fixed_amount',
'allocation_method': 'across',
'target_selection': 'all',
'target_type': 'line_item', ...
and
"price_rule" => array (
"title" => $code,
"target_type" => "line_item",
"target_selection" => "all",
"allocation_method" => "across",
"value_type" => "percentage",
"value" => -10.0, ...
What am I missing please?
I have an answer, for our private app at least,
In https://xxxxx.myshopify.com/admin/apps/private
select the private app name, and then scroll to the bottom, check if the Webhook API version is below 2020-07, and change it to 2020-07 if it's lower.
It was moaning about the unused webhook, not the API for us.
Hi, just wanted to say that this is a possibly breaking call, where there's no way for Shopify to know if your app is using the 'one' value.
So we won't be delisting any apps that continue to get this warning. It's just that our API health report currently has no way to denoting "possibly breaking" vs "actually breaking"
Apologies for the scare of delisting as I know some have tried tirelessly to find the offending calls.
To learn more visit the Shopify Help Center or the Community Blog.
Thanks for confirming that delisting won’t happen for this. Huge relief!
I'm not sure why they don't just say it. I certainly didn't know this setting existed in my partners.shopify.com login
1. Login to you Shopify Partners account https://partners.shopify.com/
2. On the left select All Apps, and then click <Your App Name>
3. Under the app title click App Setup
4. Scroll down to Event Subscriptions and change the drop down to 2020-07 or later.
Tada...... 🎊
+1. We also forgot to change Event Subscriptions dropdown value.
Why would they not indicate this dropdown exists anywhere on the api health message? So ridiculous.
Hello Jason:
Yesterday, with no previous message, we saw this alert on our partner dashboard: https://take.ms/NsIzY. It says that the fixing is overdue (when we have not received any alert previously).
We upgraded all our API calls to version 2020-07 or higher several months ago.
We are working hard to detect which part of the app is making that offending call but I have to say that we do not find where the problem is. Apart from this, the message is confusing because it says that the problem is on the Endpoint orders/create and the API change affected is the field allocationMethod of the DiscountApplication API, but the orders/create endpoint does not have any allocationMethod field and our App is not using the DiscountApplication API.
Besides this, the "View Change" link points to nowhere (https://take.ms/hzKuy). (Points to https://shopify.dev/changelog/removing-discount-allocation-method-one-3)
At this point, we do not know how to deal with this or where we can get further information.
Can you help us with this?
Thanks in advance!!
Ramon
Hi everyone - some context for why this change has suddenly popped up on your API Health Reports: we recently noticed that this possibly breaking change in 2020-07 ("Removing discount allocation method: one") had been under-reporting the number of possibly impacted apps and partners. At this point, 2020-07 had already been in effect as of April 1st. Last night, we added additional logging to start to record the additional apps and partners that may have been affected, which caused this change to suddenly pop up on your API Health Reports.
Given the lack of notice that has been given around this change, we have decided to extend the amount of time that our 2020-04 API version is available for until July 1st to give people time to check their apps and accommodate this change.
What this means for you:
We apologize for all the confusion this has caused!
To learn more visit the Shopify Help Center or the Community Blog.
Hi Big Van Studio1,
The reason you are seeing this now is explained in stephers response. As for why you are getting the warning for orders/create is because it returned an order with a discount that had method allocation set as 'one'. As for the link, thanks for pointing that out and it should be fixed now.
To learn more visit the Shopify Help Center or the Community Blog.
We've investigated a few of these reports about folks that 1) upgraded to newer API versions and 2) reported still seeing the notice and wanted to share our findings:
To learn more visit the Shopify Help Center or the Community Blog.
Me next!
When I checked on the 22nd my last detected date was the 19th, so I was in the clear!
Now it shows a detection on the 14th :-(.
I also am curious to confirm these types of alerts when it comes to webhooks. Example here: https://share.getcloudapp.com/wbuw9mdg
This webhook was initially created using an older API version and when the deadline approaches this alert will simply clear? There is no possible action to take right?
Hi @JAS_Technology - if you've already checked and have confirmed that you don't use the allocation method field in your Orders webhooks, you can either:
To learn more visit the Shopify Help Center or the Community Blog.
I'd like to confirm that this is the case with customers on our private app as well. All our customers got the original email back in January, but when we checked via the API deprecation endpoint, nothing was returned. We were told that we were fine and that the emails were sent because there was no way to be for certain that we were using the deprecated "one" value on the Shopify side.
Our customers got hit with the new email, but now when we check the endpoint we do have a deprecated endpoint response. Is this related to the new logging? When I checked our repo, I saw no signs of using allocationMethod: One. Are we in the clear again?
Thanks!
@Attentive_Dev Yes - could very well be related to the expanded logging we added a few weeks back, which expanded the number of apps and developers we were notifying by quite a bit. If you've already checked your implementation and confirmed that it doesn't use this allocation method field, you should be able to safely ignore the message.
To learn more visit the Shopify Help Center or the Community Blog.
We checked our implementation and target_selection is not used anywhere.
API version is 2020-10, both client-side and in Webhook API version settings, but we're still seeing the warning for "Order - Admin - REST" webhook as recently as 2021-05-18.
Is it possible to find the exact offending call from our application like it was mentioned previously or can we safely ignore the message?
@konradko I'll dm you the details of one of the calls.
To learn more visit the Shopify Help Center or the Community Blog.
Hi @stephers,
We've updated the webhooks in the application configuration to 2020-07
The app is not affected by this change, we don't use The allocationMethod field on DiscountApplication. We don't even use the DiscountApplication.
But we are still receiving the following message:
Is it possible to find the exact detected call from our application??
Thank you in advance.
Maybe this is your problem: https://community.shopify.com/c/Shopify-APIs-SDKs/Removing-discount-allocation-method-quot-one-quot/...
I'd retrieve the Webhook via the API and check the version property on it.
Hi PTQ, can you DM me your app id?
To learn more visit the Shopify Help Center or the Community Blog.
@Jason_Tigas Having this exact same issue as well. My app id is: 2954681 Thanks!
Hi,
Have you checked all your calls, especially the ones where you don't specify a version? For calls which don't specify a version it automatically defaults to the oldest available one, which is 2020-04 right now. However if you wait until July 1 when the next version comes out, the oldest version will be 2020-07 (or newer)
To learn more visit the Shopify Help Center or the Community Blog.
Hi
I am getting this same warning although we are not using this discount feature.
app id: 522563 can you check please?
We've previously addressed this and it popped back up the other day. I've triple checked that the event version setting is correctly specified in our app dashboard to the latest stable (2021-04) event version. It has been set that way for at least a month.
Do I need to explicitly upgrade the saved event version of every webhook our app has created on install in stores to remove this message?
Appreciate the help,
Isaac
Thank you for the extra information about this deprecation and the breakdown of specific cases.
Your information about how discounts are applied under each scenario was very helpful.
I've noticed that when retrieving line items with `ACROSS ALL`, the discount value is not reflected in the `totalDiscountSet` or `discountedUnitPriceSet` for the line item.
However, for items with `EACH ENTITLED` or `ACROSS EXPLICIT`, the discount value is reflected in the `totalDiscountSet` and `discountedUnitPriceSet` for the line item.
I am wondering what to expect for the following cases:
Should the discount allocation value be reflected in the `totalDiscountSet` and `discountedUnitPriceSet`?
Also wondering if all 6 combinations of AllocationMethod and TargetSelection are valid discount scenarios. Please let me know if there is relevant documentation for these details that I was unable to find.
Hi @mierenga ,
Yes this is a confusing part of the code, that ideally requires further investigation on our end to clean it up.
Only the line-level “logic” discount will be shown in the line item’s discount_allocations.
If it is a cart-level “logic” discount, then it won’t be in the line item’s discount_allocation.
To learn more visit the Shopify Help Center or the Community Blog.
Hi I read all 4 pages and did not find what im looking for 🙂
1. I use order/paid webhook which is affected by your fix.
2.I don't use the discount property which is returned there
3.I upgraded more than a month ago to 2020-07 but still see that today for example i got the old endpoint
4.is this means i need to delete the webhook for my customers which i registered the webhook before my change to 2020-07 and reregister?
5. is section 2 exclude me from action in section 4? (or exclude me from doing any thing?)
6. app name is minta video
Thanks guys
@kalitas Please update your webhooks to the latest version. You're currently on 2020-04
To learn more visit the Shopify Help Center or the Community Blog.
ok did it today.
I registered my client through tha api and not through this anyway
@kalitas Please update your webhooks to the latest version. You're currently on 2020-04
Another confusing part about all of this is no matter what version is set in the app setup page you show above, or what API version is set in the Shopify API client, the webhook's api_version property shows another value!