Blog Sections Open

Debugging Shopkeeper Orders That Never Reach the Mailer

How to troubleshoot a Shopkeeper checkout when the cart renders correctly but the order form never sends complete order data.

A classic Evolution CMS commerce problem looks like this: Shopkeeper shows the cart correctly, the customer fills in the order form, but the final message arrives incomplete or does not arrive at all. In older builds the integration between Shopkeeper and eForm is flexible, but that also means there are several places where the flow can break.

A typical setup

[!Shopkeeper?
&cartType=`full`
&cartTpl=`shopCart1`
&priceTV=`price`
&orderFormPage=`7`
&flyToCart=`helper`
&changePrice=`1`
&noJavaScript=`1`!]

[!eForm?
&formid=`shopOrderForm`
&tpl=`shopOrderForm`
&report=`shopOrderReport`
&eFormOnBeforeMailSent=`populateOrderData`
&eFormOnMailSent=`sendOrderToManager`
&vericode=`1`
&gotoid=`729`
&subject=`Order`!]

What to check first

  • Confirm that the order page and cart page URLs match the actual checkout flow.
  • Verify that the form field names used in the template match what your callbacks expect.
  • Check whether the populateOrderData and sendOrderToManager callbacks are loaded and return true.
  • Look for validation failures that prevent the mail step even though the page appears to submit.
  • Test with vericode disabled briefly to rule out captcha-related failures.

Common failure points

The most common breakage is a mismatch between the cart template, the order form, and the report template. Shopkeeper may hold the basket correctly, but if the eForm report does not receive or format those values, the final email looks empty.

Another frequent issue is assuming that a cart placeholder automatically becomes an eForm field. In reality you usually need an explicit callback or report template that injects the cart data into the outgoing message.

A practical debugging sequence

  1. Send a plain eForm test without Shopkeeper data.
  2. Print the cart placeholders on the order page to confirm the basket exists there.
  3. Temporarily log or dump the data passed into the mail callbacks.
  4. Reduce the report template to a minimal version and add fields back one by one.

Best long-term pattern

Treat Shopkeeper cart rendering and eForm mail delivery as two separate systems that share a contract. Once the names, callbacks, and report fields are explicit, the checkout flow becomes much easier to maintain and debug.

Newer post

Auto-Filling TV Values from Parent or Page Context in Evolution CMS

How to populate a TV automatically from the current page title, parent resource, or other surrounding context instead of asking editors to type the same value repeatedly.

Older post

Uploading Images Through eForm in Evolution CMS

A practical way to accept image uploads in eForm, move the file to a permanent location, and create a new Evolution CMS resource from the submitted data.