Skip to main content

Hello everyone,

We are encountering an issue with the Shopify connector for Acumatica24R1 regarding the synchronization of Business Customers (B2B). Both Company and Customer entities are active and both in bi-direction.

Here’s the scenario:

  1. A business customer categorized as an organization is set up in Acumatica, with several contacts and locations.
  2. When this business customer was synced to Shopify, a Company was created using the same name as the business customer in Acumatica.
  3. All contacts were synced in Shopify as Customers associated with the newly created Company.
  4. The locations were also synced successfully, which looks good.
  5. During the next sync (in the aforementioned bi-directional direction), several new records were synced under the Customer entity.
  6. Upon reviewing the synced customer records, we discovered that the connector had created new Acumatica Customers, categorized as Individuals—one for each contact of the existing Business Customer (Company).
  7. This resulted in the duplication of accounts, with one being a contact of the Business Customer and the other account representing an Individual customer.

I also noticed that Shopify allows Company customers to place personal orders. I conducted a test with the following results:

  • Order1: The Company customer placed an order for the Company, selecting the Company location.
  • Order2: The same Company customer placed an order for himself using the personal order option.

After syncing, here are the results:

  • Order1: Synced as an order in Acumatica with the Business Customer (Company) as the Sales Order Customer and the customer contact as the Sales Order Contact.
  • Order2: Synced as an order in Acumatica where the Sales Order Customer is the duplicated record of the contact defined in Acumatica as another Customer (Individual).

Is this the expected behavior of the Shopify connector? Is there a way to avoid the re-creation of records that are contacts of another Business customer? Any insights you could share would be greatly appreciated!

Thank you!

 

@jib87 , hi there. Yes, it is expected. Because Shopify allows customers to place both, personal and company orders. So, we have 2 issues here:

  1. Duplicate customers created in Acumatica (for individual customers + contacts of a company customer).
  2. Customers in Shopify can place non-B2B / non-company orders.

This is how you can overcome the issues:

  1. For duplicate customers, do not sync customer record on its own. Have it selected, of course, but don’t set up an automated schedule. When a new order is created in Shopify, the connector will update the customer first, and then import the orders. So, if a customer doesn’t place an individual order, no individual customer will be created in Acumatica.
  2. For non-company orders in Shopify, you can use this option in the settings to prevent customers from logging in as individuals:

 

Let me know if you need more details or have issues with the provided suggestions.

Thanks!


Appreciate the response @Yuri Karpenko 

For no.2, we will go with the option you suggested, so I think that’s a good approach.

For no. 1, sorry, but we have to set automated schedule for both Customer and Company entities. I hope there is a way if we can filter-out those records (that is, the records of Shopify customers came from Contacts, that will become Individual Acumatica customer if synced) from the legitimate individual Shopify customers who created their account in Shopify..


@Yuri Karpenko @jib87  Do you guys think Acumatica Shopify Connector should only import the Customers(Company Contacts) for which there are Orders created in Shopify? For the rest, the connector should not import even if the Customer entity is active? 


@jib87 , in that case, I recommend setting up a Flow in Shopify that will automatically tag customers that are assigned to a company, with a tag (say, ‘b2b’). And then use the import filtering condition in the Customer mapping like this:

 

@KarthikGajendran , I don’t think it makes sense to make it universal, because we do have clients who let their customers place B2B and non-B2B orders…


@Yuri Karpenko  My proposal is to import the Customers of category Individual (Company Contacts) only when they place order. 

Example: If the Company has two contacts in Shopify, then in Acumatica we would have one Customer of category Organization, two company contacts and two Customers of category Individual by default.

Instead

I am proposing to create one Customer of category Organization and that's it. If these Customer places a personal order, then we will import into Acumatica as Individual customer, otherwise we will not import it. There will only be the contact of the Customer of category Organization in Acumatica. 


@KarthikGajendran , how would we achieve this, other than by _not_ having an automatic import of customer record? (which was my initial suggestion to the OP, but they didn’t like it).


Hello @KarthikGajendran !

Regarding your question:
Do you guys think Acumatica Shopify Connector should only import the Customers(Company Contacts) for which there are Orders created in Shopify? For the rest, the connector should not import even if the Customer entity is active? 

Here’s the desired behavior whether we are doing a manual or scheduled automated syncing

  • The connector should be able to import/create a contact in Acumatica if a new customer is added in Shopify and assigned to the same company.
  • The connector should be able to create a customer (individual) in Acumatica if a new non-B2B customer is created in Shopify.
  • The connector can import/create a new customer (individual) in Acumatica that is a contact of another business customer (organization) only if the Shopify customer (under a company) places a personal order

@Yuri Karpenko ‘s suggestion about mapping will work most of the time, but will not apply for point 2.

Additionally, turning off the automated sync for customers makes sense, and I believe that will be the best approach for now (I’ll mark it as the best answer). Our only concern is that it requires manual syncing when:

 

  • A new individual customer is created in Acumatica (or when there are updates to their details).
  • A new customer is created in Shopify (whether B2B or non-B2B); we need to wait for a sales order placed by them or perform a manual sync (given that real-time sync/auto sync for Import Sales order is active)
  • There are updates to customer details in Shopify (whether B2B or non-B2B); we need to wait for a sales order placed by them or perform a manual sync for the updates to reflect in Acumatica (given that real-time sync/auto sync for Import Sales order is active)

In the coming weeks or months, these customer updates will accumulate under the Prepare screen, making manual syncing more challenging.
 

There’s no perfect solution for now for sure. However, I completely agree with @KarthikGajendran  proposal if we have that something work:
“I am proposing to create one Customer of category Organization and that's it. If these Customer places a personal order, then we will import into Acumatica as Individual customer, otherwise we will not import it. There will only be the contact of the Customer of category Organization in Acumatica. “

Thank you again both for spending your time looking in this!


@jib87  Thank you. We have created a change request internally and will plan for future.

Currently, we are working with RESTApi which has some limitations but with GraphQL which we will be supporting soon, we will be able to identity if the Company Contact has any personal orders created and we can use that value to import or filter it. 

But the individual customers(consumers) will be always imported either they have orders or not. 


I’m excited to hear about that! Looking forward to seeing these changes 


Reply