Discussing APIs and development related to customers, discounts, and order management.
What I want to achieve
I want to provide all-inclusive pricing to my customers.
My business claim is: "No matter where in the world you are, always have Shipping & Duties included and always pay the same price for our product"
Let's say my product is listed at €450 on my product page and a customer from Singapore adds it to cart. At check-out, they would see:
So far so good. Now I must ship my product to the customer. My store is based in the EU and over 85% of our orders come from outside of it, so I deal with customs a lot.
When I ship this product to a country where I have to pay duties, I don't want to be charged those duties on the entire €450. That price is not just the product price; it is composed of the item price + a shipping & duties contribution. I should declare an item value of total price - shipping & duties contribution. In this case, the item price is €340, the shipping & duties contribution to Singapore being €110.
I want to declare and be charged duties on €340, not €450.
This is all feasible manually, of course. But at our scale that's not an option. We use Easyship to turn our Shopify orders into Shipments and bulk-print our labels. And here problems arise..
The problem
My orders are auto-synced to my shipping solution, and my shipping solution doesn't allow me to edit line_item pricing in bulkier via an automation/workflow (This appears to be true for all Easyship competitors I have tried..).
So my order would arrive into Easyship as €450, and dozens of other orders like it, and I would not be able to bulk-adjust the item prices to prepare them for shipping and customs. I would thus be charged too much on duties.
Solutions I've considered
1. Update orderdata in Shopify
Create a workflow, triggered when a new order is created, that:
This workflow be achieved as a UI bulk action, nor can it be done in Flow, but can be done via the Shopify API directly or an app like Arigato.
2. Create custom Shipping solution
Leave the data as-is in Shopify, but switch from Easyship to something custom-built. That feels a bit overkill when such good software already exists, but I also know that different players in this space expose an API and it may be simpler than I think to build something that suits our workflows.
My ask from you
How would you do this?
Also (but secondary): do you see any solution that would keep my shopify back-end clean, with shipping, taxes and all neatly stored in the right column to still benefit from my analytics?
I have budget available as this is a huge conversion lever for us.
Back when we could operate this manually, we converted 48% more people at check-out than we do with the same total, but the added step of selecting a shipping option (!!!)
I am specifically looking for help from people like @HunkyBill , who have built custom connectors for shipping/customs or have worked on a similar use-case, but all perspectives are welcome.
One of the cool things about Shopify is the fact that you can create Draft Orders. So that means you could intercept the Cart before it moves to checkout. You would add product to the Draft Order and price it as per the Customer needs, before passing that back to the Customer for them to turn it into a real order, in Checkout, where existing Shipping interactions take place. Perhaps that works for you.
Or you can take advantage of Cart Transform functions maybe? I dunno. Those seem more in line with bundles than changing the price of things, but there may be a way.
Once in Checkout I think you're screwed as Shopify currently offers little in the way of interaction with custom pricing, duties or shipping. The usual suspects of some show/hide stuff.
I have done extensive custom duties and taxes by using custom carrier solutions, but that probably won't work for you as your interactions with EasyShip will blot out anything you do custom with rates and duties.
I barely scratch the surface here. I am sure a more seasoned pro with this issue exists, and they'll let you know what the least path of resistance is.