Issue: Order fails to sync in Salesforce

This issue may be caused by any of the following:

  1. The payment provider gateway (e.g. Braintree) did not generate a success response or generated a failure response. The payment is received by the payment provider but this is not communicated to the website or MYOBA/Salesforce, therefore there is no record of the transaction in Salesforce.
  2. The customer had duplicate contact records which were incorrectly merged. In this case, the order will not exist in Salesforce or the website.
  3. The product ordered has a 'malformed' record. In this case, the order will not exist in Salesforce or the website.

1. Gateway issue

The issue is identified by Finance when they do a reconciliation of the daily transaction list from the payment provider with the payments in MYOB/Salesforce and cannot locate a payment in MYOBA/Salesforce which matches that in payment provider’s daily transaction list.

To rectify this issue, you will need to build the order as an opportunity in Salesforce. See Manually build order in Salesforce.

2. Check for incorrectly merged contact record

2.1. Check if there is a Salesforce contact record associated with the order

In the "Salesforce Checkout Error on live" email, copy the cross-reference ID (Note: '003' at the beginning of the ID indicates it is a contact record).

Paste the cross-reference ID into Salesforce URL field as shown below and press [Enter].

  • If a contact record exists it will be displayed. In this case, the issue was not caused by incorrect merging. Troubleshoot for other possible causes.
  • If the contact record does not exist in SalesForce, this indicates incorrect merging. Continue to step 2.

2.2. Identify the email address linked to the order on the website

In the website, click on the Manage menu and select Commerce > Orders. The Orders page is displayed.

In the Orders page, search for the order using the order ID in the ‘SalesForce Checkout Error on live’ email.

Click the View button to open the order.

Check the Customer name and the Contact email in the CUSTOMER INFORMATION section on the right-hand side of the page.

Copy the Contact email

2.3. Check if the Salesforce contact record linked to the order was merged

In Salesforce, search for the contact record using the email address you copied from the website in step 2.

Open the contact record in Salesforce and scroll down to the Contact History section.

Click View All if required.

Check for a Contact Merged record.

If the record was merged, copy the ID in the URL of the contact record. 

2.4. Clean up the user’s account in the website.

You must ensure that the website account has the same Contact ID and Username as the Salesforce contact record that is linked to the order.

In the website, search for the user’s account using the email address from the Salesforce contact record.

Access the user's profile and check the Contact ID.

If the Contact ID in the user's profile in the website does not match that in Salesforce, click the Edit profile to open the account.

Scroll down to the Contact ID field and paste in the contact ID you copied from SalesForce into this field.

Before you save, ensure that the Username field is correct. This should display the customer’s email followed by an underscore and their Contact ID.

Click Save.

2.5. Manually build the order in Salesforce

3. Malformed product was purchased, e.g. the product code in the website can’t be found in Salesforce

3.1. Compare and check the Product ID, Pricebook ID or Pricebook Entry ID in both Salesforce and the website:

  • Product ID. Look at product’s common name in Salesforce. Try to match the product code between Salesforce and website.
  • Pricebook ID: Check that the product is in the correct pricebook (Hint: It must be in default Pricebook for state).
  • Pricebook Entry ID: This links the pricebook and the product.

3.2. Correct the Product ID, Pricebook ID or Pricebook Entry ID, as required

3.3. Manually build the order as an opportunity in Salesforce

3.4. Unpublish the product on the website until issue is resolved.