Skip to main content

Hi, 

 

How do I map Ship Via to the correct carrier in Shopify, i.e. I ship something with Estes trucking, I want Shopify to recognize the carrier. 

@Jeff96 , you have to create a substitution list for carriers and apply it to the Shipping Carriers field on the Shopify Stores > Order Settings > Substitution Lists section. Map them as you see fit.

Here’s the list of available values in Shopify.


@Jeff96 , you have to create a substitution list for carriers and apply it to the Shipping Carriers field on the Shopify Stores > Order Settings > Substitution Lists section. Map them as you see fit.

Here’s the list of available values in Shopify.

I assumed so, but it’s not working for me.

Is this the correct setup?

 


@Jeff96 , you don’t need that custom mapping on the Entities screen. But you need to add that substitution list here:

 


 

@Jeff96 , you don’t need that custom mapping on the Entities screen. But you need to add that substitution list here:

 

Still doesn’t work, doesn’t bring over the carrier. Here is a screenshot of the substitution list and how Shopify wants it. 

 


@Jeff96 you are right, Shopify accepts “Old Dominion” as a valid value, so in this case we should use it a “Substitution Value” and the “Original Value” is the Ship Via used in ERP.

As example:
This is not a real sale, dummy data was used.
 

 


@Jeff96 you are right, Shopify accepts “Old Dominion” as a valid value, so in this case we should use it a “Substitution Value” and the “Original Value” is the Ship Via used in ERP.

Thank you! Should be noted that no table and field name should be selected when doing this, since it will only allow ALL CAPS which Shopify doesn’t accept. 

Do you also know how to map “other” carriers and send over a tracking link when sending them?


@Jeff96 Sorry, I’m not sure if I understood, but I can explain the whole logic to you:

By default the ShipVia is used as Tracking company, but user can override the value either by mapping (higher priority) or substitution list. However, if we don't provide a tracking company, for example using “” in Substitution list or mapping, then Shopify will infer base on the tracking number format to which company this must belong to.

  1. if we provide an invalid tracking company, but the tracking pattern matches with some other company, then Shopify will infer the tracking company. In the example below it was used "CanpaR" as the tracking company and a Fedex pattern "794616650708". As result a Fedex link was generated. Also, note that the company name is ommited.

    If we provide a valid tracking company and an invalid tracking format, then a link will be generated, but the name of the tracking company will be omitted in display page, this is a Shopify behavior. In the example below it was used "Canpar" as the tracking company.
     

     

  2. if we provide an invalid tracking company and the tracking number doesn't matches with any valid companies, then no link will be generated. In the example below it was used
    "CanpaR" as the tracking company.

Does this answer your question?


@Jeff96 Sorry, I’m not sure if I understood, but I can explain the whole logic to you:

By default the ShipVia is used as Tracking company, but user can override the value either by mapping (higher priority) or substitution list. However, if we don't provide a tracking company, for example using “” in Substitution list or mapping, then Shopify will infer base on the tracking number format to which company this must belong to.

  1. if we provide an invalid tracking company, but the tracking pattern matches with some other company, then Shopify will infer the tracking company. In the example below it was used "CanpaR" as the tracking company and a Fedex pattern "794616650708". As result a Fedex link was generated. Also, note that the company name is ommited.

    If we provide a valid tracking company and an invalid tracking format, then a link will be generated, but the name of the tracking company will be omitted in display page, this is a Shopify behavior. In the example below it was used "Canpar" as the tracking company.
     

     

  2. if we provide an invalid tracking company and the tracking number doesn't matches with any valid companies, then no link will be generated. In the example below it was used
    "CanpaR" as the tracking company.

Does this answer your question?

Shopify allows other companies not listed in the API docs, but requires to send the tracking link to those carriers. Is there a way to do it from Acumatica?


@Jeff96, Got it, thanks.
Yes, there is a way, you can map using entities screens, but I would suggest to add a custom field in shipment to save the tracking number value so you could map it to the shipment. But this might not work for shipment for multiple tracking numbers or multiple order, so some logic should be implemented here using customization.
 

 


@gabrielpaz86 - do we know if this would work with Shipstation?  With “SHIPSTATTION” as the Ship Via it seems to remove the tracking URL functionality as default functionality.

if I follow your instructions above and enter the SPCCARRIERS Screen as noted above, with Double Quotes “”:

substitution list

 

It still doesn’t pull the URL: 

Packages Screen in ACU

 

Shopify Order

 


Hi @kkeating24, it is expected to work, but we are currently investigating a potential bug related to it. I will provide updates if we find anything.


Hi @kkeating24, it is expected to work, but we are currently investigating a potential bug related to it. I will provide updates if we find anything.

Thanks @gabrielpaz86  - it is definitely not working for me, with this setup in 24R1


Hi, @kkeating24!

After investigating, we found that this issue wasn’t related to an Acumatica or connector bug. Instead, the problem was due to certain ShipStation customizations that weren’t adding the tracking number row to the shipment.

Additionally, in cases where Shopify tries to infer the shipping company but doesn't have a substitution list, mapping in the Entities screen, or a valid ShipVia code to identify the company, FedEx tracking URLs are not being auto-generated. This happens because Shopify cannot identify FedEx just from the tracking number anymore.

Our recommendation is to map FedEx shipments using one of the following methods: through the Entities screen, a substitution list, or using ShipVia.


@gabrielpaz86 Thank you for this. 

I don’t think the ship via or the substitution list will work though:

  1. The order has the “shipstation” ship via, as that is the only way to get shipstation to pick up the order for processing.  So I can’t use another ship via.
  2. If tried to map “Shipstation” to “FEDEX” in the substitution list, it didn’t work.  Plus - won’t it think all of the tracking numbers are fedex in this scenario?   You can’t add more than one value for “Shipstation” in the substitution list. 
  3. For the entity mapping - I am not sure what sort of logic would be required here, but I was hoping I could pull the “shipstation info” fields but they are not avail:

 

 

What would be the best way to handle this?

Cheers,


@kkeating24, I understand.

Even if the second solution doesn’t work, could you please try entering 'FedEx' instead of 'FEDEX' in the substitution list? This should resolve the substitution list issue.

 

As for the 'ShipStation info,' you'll likely need help from the ShipStation customization owner. Since this is a customization, I’m not sure if these fields are available for mapping. However, depending on the customization code, it is possible that if you manually input the path for the object—similar to other mappings— the mapping works.

Once you have the field value, you could implement logic like this: =Switch( Field = 'UPS', 'UPS', 'FEDEX', 'FedEx', ...)

Alternatively, the customization owner could directly add this mapping to the code by overloading the 'SPShipmentProcessor.GetCarrierName(string)' method.


@gabrielpaz86 - Thanks for the replies here!  The case correction to ‘FedEx’ worked, but obviously now it only creates fedex URL’s for any carrier ShipStation decides on using. example -  we are getting UPS tracking number with FEDEX URL. 

I notice that Shipstation does populate the following fields with the carrier information on the Packages tab:

 

Do you happen to know how I would use that in the entity mapping field?

 

I have tried a few different examples:

SOPackageDetailEx.CustomRefNbr1

BCPackageDetailEx.CustomRefNbr1

SOPackageDetailEx_SOPackageDetail.CustomRefNbr1

BCPackageDetailEx_SOPackageDetail.CustomRefNbr1

SOPackages.CustomRefNbr1

BCPackages.CustomRefNbr1

etc… 

And I get a similar error every time: 

 


Reply