
nopCommerce
PorDiego Cervantes
Your store already knows what you sold. What it doesn't know is who to call tomorrow
Almost any e-commerce platform answers the question "how much did I sell last month?" well. You open the dashboard, see a figure, compare it with the previous month, and go about your day. The problem is that this question looks backward, and the decisions that drive revenue look forward: who am I speaking to this week, what product am I offering them, how much do I buy from the supplier, and when.
CustomerSalesAnalytics is a native nopCommerce module that we developed at Tecnofin precisely to close that gap. It does not add more reports. It takes the order history you already have —the same one that is already in your database— and turns it into three concrete answers: who is about to stop buying from you, what each customer should reorder from you, and what you need to buy from your suppliers before you run out of product.
Let's start with the part that is easiest to understand.
Three hundred units can be two months or five
Think of two items in your catalog. Both have 300 pieces in the warehouse. The first sells five a day; the second, two. The first lasts you 60 days and the second 150. They are the same quantity and they are two completely different situations.
Now add the variable that really hurts: if your supplier takes three months to restock you, the first item is already late. Even if you place the order today, you are going to spend thirty days without product. And this is not seen in any inventory report, because inventory reports count pieces, not days.
The module changes the unit of measure. Instead of showing you how much you have, it shows you how long it will last: the days of coverage, calculated with the real speed at which that item is selling. From there, it calculates the reorder point —the stock level at which it is time to order, which recalculates itself based on the rotation and lead time of each supplier— and the suggested quantity to buy, respecting the minimum order and the box multiple required by that particular supplier.
An example with real numbers from a party supply store: 4,800 balloons in the warehouse. Sounds like a lot. They sell 60 a day, so that's 80 days of coverage. The supplier takes 90. The system marks it as critical and suggests ordering 9,000 pieces, which is what is needed to cover the transit time and leave you with healthy inventory upon receipt. Without that calculation, that item looked perfectly fine.
There is one more detail, and it is the one that prevents surprises: the module compares the sales of the last 30 days against the full window and alerts you when an item is accelerating. A product that is selling faster than normal runs out sooner than its average suggests, and that is exactly the one that slips away when you put the order together.
From the list to the purchase order, without double-entry
Knowing what is missing is of little use if you then have to reconstruct it by hand in a spreadsheet. That is why the replenishment screen is not a report: it is a work list.
It shows only the items that have already reached their reorder point, with the quantity to order already calculated. You download the Excel and that file is your draft purchase order. As soon as you send it to the supplier, you select those rows and mark them as ordered: the system registers them as merchandise in transit, calculates the estimated arrival date with the lead time of each item, and those pieces stop appearing on the list.
That solves the most common and most expensive error in the purchasing process, which is ordering the same thing twice because the item kept appearing as missing. And when the merchandise arrives and you enter it into inventory, the module automatically deducts what was received from what was pending. There is no need to remember anything.
When we tested this on a real catalog of 653 items, we found twenty products at zero that were still selling. Twenty sales that were being lost at that moment, without anyone knowing.
Your customers also have a pattern, and it can be read
The other half of the module looks toward the customer, and works with the same logic: it does not ask the history how much they bought, it asks how often they buy.
Each customer receives a business status that updates on its own: new, active, at risk, inactive, or recovered. And "at risk" does not mean a fixed number of days, but something much more useful: it means that this customer is taking longer than they usually do. A customer who buys every fifteen days and hasn't appeared for thirty is a sign; one who buys every six months and has been gone for two, is not. A fixed threshold confuses the two cases; each account's own behavior does not.
On top of that works the recommendation engine. For each combination of customer and product, the module knows how many times they have bought it, how often, when the last time was, and how long they are taking compared to their own habit. With that, it puts together a prioritized list of what each customer should be buying right now. It is not a black box: it applies explicit business filters —a minimum of previous purchases, that the product is published and available— so that each suggestion can be defended in front of a salesperson who asks why.
For your commercial team that translates into something very simple: instead of an alphabetically ordered list of customers, a list of who to call today and with what product in hand.
The details that are noticed when using it every day
There are design decisions that do not stand out in a demo but change the experience when the module is used seriously.
All figures are net. Returns and refunds are already deducted, both in money and in units. If you are going to pay commissions or set goals on these numbers, it matters that they are not inflated.
A single calculation for each thing. Valid sale, frequency, recency, delay: each concept is defined once and used the same way across all screens. The number you see on the dashboard is the same one you see on the customer file and the same one that feeds the recommendations.
You can sort by any column with a click, and the order applies to the entire catalog, not just the page you are viewing. It sounds minor until you need the ten most urgent items out of seven hundred. It is worth saying: nopCommerce administrator listings do not come with this capability out of the box; it was something we had to build within the plugin.
Everything exports to Excel and CSV. Filters by category, manufacturer or supplier, date range, and comparisons against the same period of the previous year are on the analysis screens, so that the seasonality of your business is not lost in an annual average.
And if you decide to activate reactivation email campaigns, they work on the native nopCommerce infrastructure, with a rule that cannot be bypassed: nothing goes out without a person reviewing and confirming it.
How it fits into your store
The module is built one hundred percent as a plugin. It does not modify the nopCommerce core, which means you can update your platform without fear of something breaking. It respects multi-store operation, has granular permissions to separate who consults, who configures, who exports, and who sends emails, and is completely in Spanish.
The parameters are yours: inactivity days, risk threshold, the window with which sales speed is measured, lead time —general or specific to each supplier—, safety days, and target inventory. None are carved in stone, because every store's business has a different rhythm.
What changes in practice
The economic argument is direct. Getting a new customer costs several times more than getting an existing one to buy again, and your existing customer base is the asset you already paid for. At the same time, every stockout is a sale that goes to a competitor and, often, a customer who does not return to ask next time.
This module works on those two fronts with the same raw material: the history that is already in your store and that is currently telling you nothing.
If you operate a store in nopCommerce and recognize any of these problems —customers who go cold without anyone noticing, items that run out three months before they can be replenished, supplier orders that are put together by memory— it is worth looking at it with your data and not with a generic example.
Write to us at https://www.tecnofin.com/contact and we will gladly review your case and prepare a quote tailored to your catalog and your operation.
Tecnofin is your trusted partner in the e-commerce sector. We have a team of expert developers who provide personalized service to help you design a virtual store that meets the specific needs of your business. Don't hesitate to contact us to receive a quote for the ideal store for your company!





