The Marketing & profit report works out what’s left of a month’s sales after the cost of goods, payment fees, shipping and your ad spend, and what it costs you to win a new customer. It also shows where your online orders came from, so you can see which channels and ad platforms bring in the sales.
You will learn #
- How to open the report and enter your ad spend
- What the profit, CAC, ROAS and LTV : CAC figures tell you
- How to compare your channels and ad platforms in Revenue by source
- Where each order’s source comes from
- What to do when almost every order shows as Direct
- How to get your ads counted under Paid ads
Before you begin #
- Turn on Experimental features. The report sits under Experimental, because its channel figures lean on where each order came from, which is a rough guide rather than an exact count. In Settings → Experimental & license, turn on Enable experimental features and click Save settings.
- Give Tendlio your costs. Profit needs cost prices on your products, or an average margin under Settings → Costs & profit. Without either, the report asks you to add them before it shows any profit.
- Check that WooCommerce Analytics is on. The New customers count, and the CAC worked out from it, come from WooCommerce Analytics. Without it, the card says “needs WooCommerce Analytics”.
Open the report #
- In your WordPress admin, open Tendlio → Reports.
- Click Marketing & profit. It’s with the other reports while Experimental features are on.
The report opens on the current month. Use the arrows on either side of the month to move to another one. You can go back about two years.
Enter your costs #
- Next to Total ad spend for month, type everything you spent that month to bring buyers in, across all platforms, and click Save. Tendlio saves ad spend month by month, so enter it for each month you want to read.
- In Settings → Costs & profit, under Other costs (net profit), set Transaction fee (your payment processor’s cut, as a percentage) and Avg shipping cost / order (what an order costs you to ship, which WooCommerce doesn’t record). Click Save settings.
Read the profit and the cards #
The figure at the top of the report is the month’s profit:
- Until you’ve entered the month’s ad spend, the report calls the figure Profit before ad spend, and the line under it says the ad spend hasn’t been taken off. Once you enter it, the report calls it Net profit.
- The line under the figure also names the average margin behind the profit and the date of the analysis that measured it. The profit breakdown explains that margin.
- EST. next to the figure means some of your products have no cost price, so for those products the profit uses the average margin you set in Settings → Costs & profit. Hover over the mark to see how many products that covers.
- View profit breakdown takes you to the lines behind the figure.
The cards under it:
- Revenue shows the month’s sales without tax, with shipping included and refunds taken off, and the number of orders.
- New customers counts the orders WooCommerce marked as a customer’s first purchase.
- CAC is your ad spend divided by your new customers: what it costs to win one buyer.
- ROAS is your revenue divided by your ad spend. 4× means four in revenue for every one you spent.
- LTV : CAC compares what a new customer from this month brings you in profit over their first 12 months with what it cost to win them. For a month less than a year old, those 12 months aren’t over yet, so the ratio can still rise.
Once the month has ad spend and an LTV : CAC, the line under the cards says what that ratio means. At 3× or more, a customer is worth at least three times what you pay to win them. Under 1×, you’re paying more to win customers than they’ve been worth so far. In between, the line suggests aiming for 3× or higher.
Read the profit breakdown #
The Profit breakdown table shows the steps from revenue to profit: Revenue, minus Cost of goods, gives Gross profit. Then Tendlio takes off Transaction fees, Shipping cost and Ad spend.
Tendlio works out Gross profit by applying your store’s average margin, with bigger sellers counting more, to the part of the month’s revenue that came from products. The shipping your customers paid counts in full, because what shipping costs you comes off further down, as Shipping cost.
Tendlio measures that average margin at each analysis, across the products that sell: a product with a cost price brings its own margin, and a product without one brings the average margin you set in Settings. The line under the table gives the date of that analysis. When most of your selling products have no cost price, the line also says that the margin is mostly your own estimate.
When you haven’t entered the month’s ad spend, the Ad spend row shows a dash instead of a zero, because Tendlio doesn’t know the amount yet.
Compare your channels #
Revenue by source shows where this month’s online orders came from: Direct, Organic search, Paid ads, Social, Email, Referral, Manual / admin, Other campaigns or Unknown. A channel gets a row when it has orders that month. Each row shows the channel’s orders, revenue, average order value and share of the month’s revenue, and its new customers when WooCommerce Analytics is on.
Paid ads by platform, under that table, splits the Paid ads row by the platform the ads ran on. Google and Meta always have a row. TikTok, Microsoft, Pinterest and Other paid get one once they have orders or spend that month, and until then you find them under More platforms.
- Under Paid ads by platform, enter what each ad platform cost you this month. The Paid ads row in Revenue by source adds them up.
- In the Ad spend column of Revenue by source, enter what you spent on any other channel you pay for, such as Social or Email. Leave Direct and Organic search empty.
- Click Save ad spend.
The CAC and ROAS columns then fill in for those channels and platforms. The spend you enter here is separate from the monthly total at the top, and the profit uses the total.
Where each order’s source comes from #
When a shopper lands on your store, Tendlio notes where they came from: the site that sent them, the tags on the link, and which ad network’s click id the link carried, never the id itself. It keeps that note for up to 90 days and writes it on the order they place, so a shopper who clicks your ad on Monday and comes back on Thursday by typing your address still counts under the ad.
Orders without that note use what WooCommerce recorded: orders from before Tendlio started noting sources, and orders created in wp-admin or taken by phone. When a month’s rows come from WooCommerce’s record, for example a month from before Tendlio started, a note above the table says so. Neither Tendlio nor WooCommerce notes a shopper who declines marketing cookies, so their order shows as Unknown.
Tendlio notes sources while Measure views, clicks, add-to-carts and purchases, for your widgets and for every product is on under Settings → Storefront, which it is unless you turned it off. While Experimental features are on, your WooCommerce Orders list also gets a Source (Tendlio) column that uses the same words as the table, for example “Paid ads · Google”.
The table credits the last link a shopper came through, and it covers online orders only. Direct means the visit arrived with no referrer, not that someone typed your address. Viber, WhatsApp, Messenger, the Instagram app, bookmarks and mail apps send none, so your organic and paid channels can be bigger than the table shows.
If almost every order shows as Direct #
A speed plugin that holds scripts back until the shopper clicks or scrolls stops both WooCommerce and Tendlio from seeing where a visit came from. A shopper who lands from Google and goes straight to a product has left that first page before the script runs, so the tracker records the order as Direct.
Tendlio checks your home page for WooCommerce’s scripts and its own, once a week, and every day while it finds the problem. While Experimental features are on and Tendlio finds scripts held back, it puts the card “A speed setting is hiding where your orders come from” on your to-do list, and names the plugin when it can tell which one it is. Help → System status shows the same check under Order sources.
To fix it, add these to the scripts your speed plugin must not delay: sourcebuster, order-attribution, wc_order_attribution and tendlio. The first three are WooCommerce’s and tendlio is Tendlio’s, and the card names only the ones your store holds back. Where to find that list:
- FlyingPress: Delay JavaScript. Add them to its exclusions, or, if it delays only a list of specific scripts, take them off that list.
- WP Rocket: File Optimization → Delay JavaScript Execution → Excluded JavaScript Files.
- Perfmatters: JavaScript → Excluded from Delay.
- LiteSpeed Cache: Page Optimization → Tuning → JS Deferred/Delayed Excludes, and Guest Mode JS Excludes too if Guest Mode is on.
Clear the plugin’s cache after saving. Orders placed from then on show where they came from, and orders already placed keep the source they have. Tendlio checks your home page again the next day, and the card goes away once the scripts run on time.
Get your ads counted under Paid ads #
-
Google Ads: with auto-tagging on, which is Google’s default, every ad link carries a click id, and the order counts under Paid ads, on the Google row. Tendlio also recognizes the ids Google puts on some iPhone clicks, which WooCommerce’s own tracking misses. To see which campaign an order came from, set this as your tracking template in Google Ads:
{lpurl}?utm_source=google&utm_medium=cpc&utm_campaign={campaignid}{lpurl}has to come first, or Google escapes your landing page address. A template set on the account covers every ad, and a template on a single campaign overrides it. The campaign then shows as its id in the Order attribution box that WooCommerce puts on each order. -
Facebook and Instagram: Meta adds the same click id to its ads and to links people share, so Tendlio can’t tell an ad from a shared post by the click id alone. A visit from an untagged link counts under Social, and a note under Paid ads by platform counts those orders. In Ads Manager, add these URL parameters to your ads:
utm_source=facebook&utm_medium=paid_social&utm_campaign={{campaign.name}}. -
TikTok: add these URL parameters to your ads:
utm_source=tiktok&utm_medium=paid_social&utm_campaign=__CAMPAIGN_NAME__.
A link tagged utm_medium=paid_social or utm_medium=cpc counts as Paid ads. Tagging doesn’t change orders already placed: earlier months stay as they are, and the month you start tagging in is a mix.
While Experimental features are on, two more cards on your to-do list watch for this. The card Some of your ad orders can’t be told apart from other orders can appear when several of this month’s orders came through Facebook or Instagram links without a tag, or when you entered spend for an ad platform and none of that month’s orders came through its ads. The card Most of your orders show as Direct can appear when most of last month’s orders arrived with no referrer. Both open this report on the month they’re about, with the Learn more under Revenue by source open.
Why the report works this way #
One total for the whole store #
The ad spend at the top is one monthly total, so CAC and ROAS cover all your channels together, and the new customers include the ones who found you without an ad. Read those two as a rough check on the whole store, not as figures for one channel.
Net profit is the firmer number #
The profit comes from your own sales and costs. The channel figures depend on the last link each shopper came through, and they miss shoppers who decline tracking, so use them to rank your channels, and move budget by that ranking. A small gap between two channels doesn’t prove that one works better.
New customers can differ from the Customers report #
Here, Tendlio counts a new customer for each order WooCommerce marked as someone’s first purchase, on a status you count as a sale. The cohort table in the Customers report counts people instead, from their first order that counted as a sale, so its CAC for the same month can come out lower.
Additional resources #
- How to give Tendlio your product costs: cost prices and the average margin the profit uses.
- What’s in Reports
- What your to-do list can catch: the cards about order sources, and the others.
- Which orders count as a sale
Frequently asked questions #
Does Tendlio connect to my Google Ads or Meta account? #
No. You enter your ad spend yourself, and the channel figures come from where each shopper came from, as Tendlio or WooCommerce recorded it on the order.
Why does Google Ads report more conversions than the Paid ads row? #
Your ad platform counts conversions its own way, and the table reads the source Tendlio or WooCommerce recorded on each order. Each is right about what it can see. If the Google row under Paid ads by platform is far below what Google Ads reports, check your speed plugin first.
Why is the profit marked EST.? #
Some of your products have no cost price, so for those products the profit uses the average margin you set. Add real costs and the mark goes away.
Why is LTV : CAC still rising for last month? #
It compares the profit a new customer brings in their first 12 months, and for a month less than a year old, those 12 months aren't over yet.