| I built a print-on-demand system that integrates into Shopify stores. To vent a little... * I can concur that their API is unreliable. About 1 in 5 of my CI runs fail with mysterious 500 errors. It's infuriating. * The support channels are a wasteland. Do not expect help. * The documentation is super thin. At first glance it looks decent - there's the objects, there's the fields those objects have. But it's missing all the details about how those fields are supposed to work. Example: A Fulfillment has a tracking_numbers array, but there doesn't seem to be any way to add multiple tracking numbers. The docs are silent, and questions about this in the support channels remain unanswered. For years. * There are two completely different APIs (graphql and REST), which do not have equal capabilities. If Shopify is planning on deprecating one of them, they should give us guidance. * The API is inconsistent. I count at least FIVE different representations of an Address structure, each slightly different for no apparent reason. Eg "country" vs "countryCode". This is the kind of thing that creeps into projects in dynamic languages when nobody's paying attention. * There's a lot of overengineered stuff. The Metadata API is really unpleasant compared to Stripe's simpler approach. * There's no way to set up common shipping scenarios like "$N for first item, $M for each additional". I could go on. But I will say this: It's better than Etsy's API. Though Etsy is finally working on it again, so maybe that will change. |
You can get variations in 2 digit country code vs 3 digit vs some other representation easily regardless of what language you're using