Merchant Guide

ProfitEasy: Magento 2 Profit Tracking for Store Admins

ProfitEasy delivers Magento 2 profit tracking inside your admin - true order profit, customer lifetime value, and traffic source attribution in one place.

Overview

ProfitEasy brings Magento 2 profit tracking directly into your admin. Every time an order is placed, the module calculates the true profit by deducting your configured costs - product cost, shipping, monthly overheads, payment fees - from the order revenue. The result appears in the orders grid, on the admin dashboard, and on each customer's profile.

ProfitEasy admin overview - dashboard profit and AOV widgets visible

This module helps you:

  • See profit figures on every order without leaving the Magento admin
  • Track customer lifetime value and average order value per customer
  • Identify which traffic sources and campaigns are driving profitable orders
  • Detect which device types (desktop, mobile, tablet) your highest-value customers use
  • Surface product-level profit percentages in the catalog grid (Pro plan)

When to use this

Use ProfitEasy when you want to:

  • Stop guessing whether a promotional campaign actually made money
  • Know which customers are worth a loyalty offer based on their total spend
  • Attribute orders correctly to Google Ads, newsletters, social media, or direct traffic
  • Include profit margin data in inventory exports via StockEasy
  • Feed performance-ranked category sorting to SmartCategories (Pro plan)

Key capabilities

  • Order profit calculation - automatically deducts configured costs from revenue on every invoiced order
  • Customer CLV and AOV - per-customer lifetime value and average order value updated daily (Growth+ plans)
  • Traffic source attribution - matches orders to their original referral source using UTM parameters, social platform detection, and custom rules (Growth+ plans)
  • Device detection - records whether each order was placed from desktop, tablet, or mobile (Growth+ plans)
  • Dashboard widgets - profit and AOV tiles on the Magento admin dashboard
  • Product grid profit column - color-coded profit percentage column in the catalog product grid (Pro plan)
  • Product velocity attributes - sales velocity and profit velocity attributes used by SmartCategories for performance ranking (Pro plan)
  • StockEasy export integration - includes profit percentage in CSV and PDF exports (Pro plan)

Installation

ProfitEasy installs via Composer, then activates with a license key from your Moogento.com account. The whole flow takes about 5 minutes.

Step 1: Get your Composer keys from Moogento.com

  1. Sign in at https://www.moogento.com and open My Plugins in your account menu.
  2. Find ProfitEasy in the list of plugins you own.
  3. Generate (or reveal) the Composer access keys for that plugin - a public key and a private key.
  4. Add your install domain to the key. Each Composer key is tied to a specific domain - if you're installing on yourstore.com, add yourstore.com to the key's allowed domains. The Composer download will be rejected on any other domain.

If you run staging and production on different domains, add both - separate keys per environment are fine too.

Step 2: Install the module with Composer

From your Magento 2 root directory:

composer require moogento/module-profiteasy

When Composer asks for credentials, paste the public key as the username and the private key as the password. They'll be cached in ~/.composer/auth.json for future runs.

Step 3: Enable the module in Magento

php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:clean

If you run php bin/magento module:status Moogento_Profiteasy you should see it listed as enabled.

Step 4: Add your license key in the Moogento admin

  1. Still on https://www.moogento.com > My Plugins, copy the license key for ProfitEasy (separate from the Composer keys you used above).
  2. In your Magento admin, go to Stores > Configuration > Moogento > Licenses.
  3. Find the row for ProfitEasy and paste the license key.
  4. Click Save Config, then run php bin/magento cache:clean once.

The license validates within a few seconds. You should see the module's status flip to active. If it stays inactive, double-check the domain on the license matches where you've installed - domain mismatch is the most common cause.


Setup overview

Most setup happens in:

Stores > Configuration > Moogento > ProfitEasy

You'll mainly work with:

  • General - master switch, dashboard visibility toggles, default tax rate, free-shipping cost, source validity period
  • Cost rules - define what to deduct from revenue (product cost, shipping, monthly overheads, payment fees)
  • Sources - configure which referral sources map to which labels and icons
  • Product Grid Profit - enable the profit percentage column and set color-coded ranges (Pro plan)
  • StockEasy Integration - include profit percentage in StockEasy exports (Pro plan)

Common setups

Enable ProfitEasy and show profit on the dashboard

Turn the module on and confirm profit and AOV widgets are visible on the admin dashboard.

How to set it up

  1. Go to: Stores > Configuration > Moogento > ProfitEasy > General

    General config group

  2. Set:

    • Enable = Yes
    • Enable: Dashboard profit = Yes
    • Enable: Dashboard AOV = Yes (moogento_profiteasy/moo/show_dashboard_section_aov)
  3. Click Save Config, then run php bin/magento cache:clean.

Notes

  • Dashboard AOV requires a Growth or Pro license - the widget will not appear on a Seed plan even if this setting is Yes.
  • You can set each dashboard toggle as a user-role permission to hide profit data from specific admin accounts.

Set up cost rules so profit figures are accurate

ProfitEasy calculates profit by subtracting cost rules from each order's revenue. Until you configure at least a product cost rule, profit figures will equal revenue.

How to set it up

  1. Go to: Stores > Configuration > Moogento > ProfitEasy > Cost rules

    Cost rules config group

  2. In the cost rules table, click Add Cost and configure each row:

    • Name - a human-readable label (e.g. "Default shipping cost")
    • Type - Fixed amount, Percentage of order total, or Payment method fee
    • Taxed on this? - set to Default to apply the global tax rate you set in General, or enter a specific rate
  3. Set Default: Tax percent for cost rules (moogento_profiteasy/moo/default_tax) in the General group to your standard tax rate so "Default" rules deduct the right amount.

  4. Set Default: Shipping cost for Free Shipping (moogento_profiteasy/moo/free_shipping_cost) to your average fulfilment cost. This value is applied to all orders with a zero-price shipping rate. You can override it per order by editing Actual Shipping Cost on the order view, or in bulk via a ShipEasy CSV upload.

  5. Click Save Config.

Notes

  • A fresh install seeds common payment-method cost rows automatically - review these before going live.
  • Per-order shipping cost can always be adjusted after the order is placed; the cron recalculates profit every 10 minutes.

Configure traffic source attribution

Source rules tell ProfitEasy how to classify the referrer URL stored with each order. Accurate source rules make the referral column on the orders grid meaningful.

How to set it up

  1. Go to: Stores > Configuration > Moogento > ProfitEasy > Sources

    Sources config group

  2. In the sources table, add or edit rules:

    • Pattern - a URL pattern or UTM parameter value to match (e.g. google.com, utm_medium=email)
    • Icon - the icon shown in the orders grid for matching orders
    • Priority - higher-priority rules win when multiple rules match the same referrer
  3. Set Enable: Orders page source referrer = Yes (moogento_profiteasy/moo/show_orders_source_referrer) in the General group to display the referrer icon column on the Sales > Orders grid.

  4. Optionally set Enable: Orders page source device = Yes (moogento_profiteasy/moo/show_orders_source_device) to display the device icon column.

  5. Set Source: Validity period (moogento_profiteasy/moo/referer_expires) to the number of days a referral cookie remains valid (default: 31). After this window, a returning customer who types the domain directly is counted as Direct, not attributed to the original campaign.

  6. Click Save Config.

Notes

  • Source attribution requires a Growth or Pro license.
  • SmartCategories and SmartCart attribution is automatic - orders influenced by those modules appear under their respective source channels without manual rules.

Enable the product profit percentage column (Pro plan)

Add a color-coded profit percentage column to the catalog product grid so buyers and merchandisers can see margin at a glance.

How to set it up

  1. Go to: Stores > Configuration > Moogento > ProfitEasy > Product Grid Profit

    Product Grid Profit config group

  2. Set:

    • Enable Product Profit % Column (profiteasy/profiteasy_grid/enabled) = Yes
  3. In the Profit Percentage Color Segments table, configure one row per range:

    • Min (inclusive) and Max (exclusive) - profit percentage boundaries
    • Color - the background color applied to cells in that range
  4. Click Save Config.

Notes

  • This feature is enforced at runtime for Pro plan stores only. The column appears in the UI configuration on all plans, but the data only populates when the license is Pro.
  • Profit percentages are recalculated nightly by the UpdateProfitPercentQueue cron job (01:00 AM daily).

Features reference

Dashboard profit widgets

The admin dashboard gains two tiles when ProfitEasy is enabled:

  • Profit widget - shows total profit for the selected date range. Controlled by moogento_profiteasy/moo/show_dashboard_section_profit.
  • AOV widget - shows average order value for the period. Requires Growth or Pro plan. Controlled by moogento_profiteasy/moo/show_dashboard_section_aov.

Both widgets respect admin user-role permissions. To hide profit data from a particular admin account, restrict access at the role level rather than toggling these settings globally.


Customer profile analytics

On every customer's edit page in the admin, ProfitEasy adds an analytics tab showing:

  • CLV - cumulative revenue from that customer
  • AOV - average of their order totals
  • Order count - total number of orders
  • Account age - days since registration
  • Order age - days since their last order
  • Order age spread - range between first and last order dates
  • Initial and last device - whether they first ordered and last ordered on desktop, tablet, or mobile

Customer data is refreshed nightly by the UpdateCustomerData cron job (01:15 AM daily).

These fields require a Growth or Pro license.


Orders grid source and device columns

When Enable: Orders page source referrer is Yes, a referrer-source icon appears in Sales > Orders for each order. Hovering reveals the source label (e.g. "Google Ads", "Newsletter", "Direct").

When Enable: Orders page source device is Yes, a device icon (desktop/tablet/phone) appears alongside it.

Config path: moogento_profiteasy/moo/show_orders_source_referrer and moogento_profiteasy/moo/show_orders_source_device.

Both columns require a Growth or Pro license.


StockEasy Integration

When Include Profit % in StockEasy Exports (profiteasy/stockeasy_integration/include_profit_in_export) is Yes and the StockEasy module is installed, the moo_profiteasy_profit_percent attribute becomes available in the StockEasy column selector for CSV and PDF exports.

Config path: Stores > Configuration > Moogento > ProfitEasy > StockEasy Integration

Requires Pro plan.


Advanced configuration

Product velocity attributes (Pro plan)

ProfitEasy calculates two product attributes on every product:

  • profiteasy_sales_velocity - distinct orders per day over the last 30 days (bulk purchases count as one order, preventing inflated velocity from high-quantity line items)
  • profiteasy_profit_velocity - proportional profit per day over the same window, calculated as (row_total / subtotal) × order_profit for each line item

These attributes are updated nightly by the UpdateVelocities cron job (01:30 AM daily). SmartCategories reads them via ProfitEasyMetricsProviderInterface to power performance-based product ranking on category pages. Products with no sales in the lookback window are reset to 0 so stale values do not affect ranking.

Notes

  • Velocity calculations only run when both ProfitEasy is enabled and the store has a Pro license. The cron exits early otherwise.
  • The 30-day lookback window is not currently configurable from the admin.

Debug mode

Enable Debug Mode (profiteasy/general/debug_mode) in Stores > Configuration > Moogento > ProfitEasy > General to write detailed profit and referrer resolution logs to var/log/moogento_profiteasy.log.

Add ?moo_debug=1 to any storefront URL to trigger referrer tracking debug output in the log for that specific session.

Turn Debug Mode off on production once investigation is complete.


Tips & best practices

  • Configure your cost rules before you expect meaningful profit numbers - revenue minus zero costs equals revenue, not profit.
  • Set a realistic Default: Shipping cost for Free Shipping immediately after install. Orders with free shipping are common and will otherwise show inflated profit until you enter an actual fulfilment cost.
  • Shorten the Source: Validity period if you run frequent campaigns and want attribution to reset sooner. The default of 31 days means a customer who clicked a January Google Ad and returned in February is still attributed to that ad.
  • Use the orders grid device column to spot mobile conversion problems: if desktop orders dominate while mobile traffic is high, your mobile checkout may have friction.
  • Grant profit-viewing ACL access selectively. The dashboard and customer profile widgets can be hidden per user role - useful when finance data is restricted to certain team members.
  • After a bulk cost-rule change, wait for the next 10-minute cron cycle before comparing before/after profit figures on orders.

Troubleshooting

Profit figures are not appearing on orders

Profit values are blank or missing in the orders grid after enabling the module.

  • Cause: The profit calculation cron has not yet run, or order-processing queue consumers are stalled.
  • Check: Look at var/log/moogento_profiteasy.log for recent activity. Run php bin/magento cron:run manually to trigger an immediate calculation cycle. Verify that Magento queue consumers are running (bin/magento queue:consumers:list).
  • Resolution: Ensure Magento cron is configured and running (*/10 * * * * is the minimum frequency ProfitEasy needs). If queue consumers have stopped, restart them or add them to your server's process supervisor.

Customer CLV and AOV are not updating

The CLV and AOV values on customer profiles remain at zero or show stale data.

  • Cause: The nightly customer-data cron job is not running, or the orders have not been invoiced.
  • Check: Confirm UpdateCustomerData ran recently by searching var/log/moogento_profiteasy.log for [UpdateCustomerData. Also confirm the relevant orders have been invoiced - CLV only counts invoiced orders.
  • Resolution: Ensure cron is scheduled. CLV features require a Growth or Pro license - verify the license tier under Stores > Configuration > Moogento > Licenses.

Traffic source attribution is showing "Direct" for all orders

Every order is attributed to Direct traffic even when you can see UTM parameters in your analytics tool.

  • Cause: The referrer cookie is not being captured, the source rules do not match the incoming UTM values, or the Source: Validity period has expired before the customer completed the order.
  • Check: Add ?moo_debug=1 to a storefront URL and review var/log/moogento_profiteasy.log to see what referrer data was captured. Review the Sources config group to confirm matching rules are active and have the correct patterns.
  • Resolution: Adjust source rule patterns to match your actual UTM structure. Increase the validity period if customers typically take longer than 31 days from first click to purchase. Source attribution requires a Growth or Pro license.

Dashboard profit widgets are missing

The profit or AOV tiles do not appear on the admin dashboard after enabling them in config.

  • Cause: Cache not cleared after config change, or the admin user does not have the required ACL role permission.
  • Check: Run php bin/magento cache:clean. Then go to System > User Roles and confirm the admin user's role includes access to the ProfitEasy dashboard resources.
  • Resolution: Clear cache and, if the widgets still do not appear, check the license tier - the AOV widget requires Growth or Pro.

Product profit column shows no data in the catalog grid

The Enable Product Profit % Column is set to Yes but the column shows empty values.

  • Cause: The nightly UpdateProfitPercentQueue cron has not yet run, or the store is not on a Pro plan.
  • Check: Verify the license tier under Stores > Configuration > Moogento > Licenses. If the plan is Pro, check var/log/moogento_profiteasy.log for recent cron activity and run php bin/magento cron:run manually.
  • Resolution: Wait for the nightly cron at 01:00 AM, or trigger it manually. Upgrade to Pro if the store is currently on Seed or Growth.

FAQs

How do I set up Magento 2 profit tracking on my orders?

Install ProfitEasy, configure your cost rules under Stores > Configuration > Moogento > ProfitEasy > Cost rules, and the module will automatically calculate and display profit figures in the Sales > Orders grid and on each order view. See Common setups for step-by-step instructions.

Why are my profit numbers showing revenue instead of true profit?

ProfitEasy shows revenue minus configured costs - if no cost rules have been set up, the result equals revenue. Go to Stores > Configuration > Moogento > ProfitEasy > Cost rules and add rows for at least product cost, shipping, and any payment fees to get accurate profit figures.

How do I track which ads and campaigns are driving orders?

Enable source attribution by setting Enable: Orders page source referrer to Yes in the General config group, then configure matching rules in the Sources config group. ProfitEasy captures UTM parameters and referrer URLs at browse time and associates them with the resulting order. Growth or Pro license required.

Does ProfitEasy work with SmartCategories?

Yes - when both modules are active, ProfitEasy supplies sales velocity and profit velocity attributes that SmartCategories uses to rank products on category pages by recent performance. SmartCategories also passes attribution data back so that orders influenced by category boosts appear under the SmartCategories channel in ProfitEasy source reports. Pro plan required for velocity features.

Does ProfitEasy work with SmartCart?

Yes - when SmartCart is active, any order item carrying SmartCart attribution is automatically recorded under the smartcart source channel in ProfitEasy without any extra configuration.

Does ProfitEasy work with Pulse?

Yes - Pulse reads campaign attribution data from ProfitEasy via the OrderAttributionResolverInterface to aggregate campaign performance across order data in the Pulse dashboard.

Which license plan do I need for customer lifetime value?

CLV and AOV tracking require a Growth or Pro plan. The Seed plan includes basic profit calculation and dashboard widgets but not customer analytics. See Stores > Configuration > Moogento > Licenses to check or upgrade your plan.

Is ProfitEasy compatible with Hyvä, Luma, and Porto themes?

Yes - ProfitEasy is a pure admin-side module with no storefront templates. It is theme-agnostic and works with Hyvä, Luma, Porto, and any other Magento 2 frontend theme.

What happens if I disable ProfitEasy?

Disabling ProfitEasy (setting Enable to No) stops new profit calculations and hides the dashboard widgets and orders grid columns. Previously calculated profit data stored in the database is retained and will reappear if you re-enable the module.

How do I export profit data to a spreadsheet?

If you have StockEasy and a Pro license, enable Include Profit % in StockEasy Exports under Stores > Configuration > Moogento > ProfitEasy > StockEasy Integration - the profit percentage column then becomes available in StockEasy's CSV and PDF export builder.


  • Pulse - campaign analytics dashboard that reads ProfitEasy order attribution data
  • SmartCategories - performance-based category ranking powered by ProfitEasy velocity attributes
  • SmartCart - cart optimisation module whose attributed orders appear in ProfitEasy source reports
  • StockEasy - inventory export module; profit percentage column is available in exports when ProfitEasy Pro is active

Need help?

  • moo@moogento.com
  • Include:
    • Magento version
    • Module name
    • What you're trying to do

Was this helpful?

Need source? Raw markdown is available for AI agents, plain-text copying, and diffs.

Raw markdown