Profit analytics for D2C brands on Shopify

Meta counts the orders that come back. Vihax doesn't.

Meta and Google count every returned order as a conversion, so a brand optimising on platform ROAS is bidding toward the orders that come back, and neither platform says so. Vihax measures profit on the orders that were delivered, and tells Meta and Google which ones they were.

Reads Shopify, never edits it Never touches your budgets or bids Built for COD and RTO
2,460 orders · last 30 days Sample store
Prepaid COD Came back (RTO)
Meta reports
4.1×
ROAS, counting all 2,460 orders
True POAS
1.44×
Profit on delivered orders ÷ ad spend
Net sales₹22,94,000
− Refunds and RTO revenue₹5,04,000
− COGS and fulfilment₹8,68,000
CM2 ÷ ad spend ₹6,40,000₹9,22,000
What the ad platform says
4.1×

Meta ROAS

Revenue on every order Meta claimed, including the 526 that were refused or returned.

What most profit tools say
1.96×

Standard POAS

Margin after product cost, still on revenue that included returned orders.

What you kept
1.44×

True POAS

Returned and refunded orders removed first, then product cost and fulfilment. Divided by ad spend.

Sample store, 30 days. Every figure on this page reconciles to the same ledger.

Profit after RTO

Every rupee from gross revenue to net profit, per order.

Vihax builds one ledger from your Shopify orders, product costs, shipping rates and ad spend. Returned and refunded revenue comes off before margin is counted, so a product that sells and comes back stops looking like a win.

Where ₹24,80,000 actually went

Sample store · 30 days

Income statement

Sample store
Gross revenue₹24,80,000
Discounts−₹1,86,000
Net sales₹22,94,000
Refunds−₹42,000
RTO revenue loss · 526 orders−₹4,62,000
Net sales after confirmed returns₹17,90,000
COGS−₹5,37,000
CM1₹12,53,000
Shipping, pick and pack, payment fees, RTO fees−₹3,31,000
CM2₹9,22,000
Ad spend · Meta ₹4,10,000 · Google ₹2,30,000−₹6,40,000
Fixed costs−₹1,50,000
Net profit₹1,32,000

COD against prepaid

Sample store
COD · 62%
31.2%
Prepaid · 38%
5.3%

Return rate on settled parcels. A COD order here is 5.9 times more likely to come back.

On Overview
  • 22 KPI tiles against the previous period with a definition on every one
  • The largest cost this period, named, with its change
  • A money-flow Sankey from gross revenue to net profit
  • Shopify, Meta and Google side by side, by last paid touch
  • True POAS with standard POAS beneath it so the gap is visible
RTO intelligence

Find the returns before you pay to ship them.

Return rates by pincode, product, courier, order value, channel and payment method. Measured only on parcels that have settled, with the settling window stated on the page.

  • True cost of returns shipping both ways, pick and pack, RTO fees, stock at risk
  • State, city and pincode drill-down with the worst pincodes named first
  • A call on every product: stop COD, watch, or fine
  • Act before dispatch in-transit orders carrying measured risk signals
  • Customers who keep refusing, and returns booked after one attempt
  • How long before you know: settling time at the median, p75, p90 and p99

Return rate by where it ships

Sample store
Metro
14.1%
Large city
20.8%
Elsewhere
29.6%
Where to act first: 38 pincodes carry 31% of all returns on 9% of orders.

Returns by product

Sample store
ProductOrdersRTOBreak-even RTOCall
Onion Hair Serum41241.0%33%stop COD
Saffron Night Cream26833.2%36%watch
Ubtan Face Pack35524.5%39%fine
Bhringraj Hair Oil52417.9%42%fine
Kumkumadi Face Oil61011.8%47%fine

Break-even RTO is the return rate at which the product stops making money after returns.

Own pixel, server-side join

From the ad click to the courier's doorstep, on one order.

A first-party pixel records the visit, the product views and the checkout click, including checkouts that leave your domain. On the server every order is joined back to its visits by visitor, cart, click id and hashed contact, then followed until the courier settles it.

Ad click

Meta or Google click id captured

Visit

Consent read before anything is kept

Checkout

Survives off-site checkout

Order

Joined back to every visit

Courier

Delivered or returned, per shipment

Ad platforms

Told what the order was worth

Order #4417 was delivered Delivered

₹1,249 net sales − ₹390 COGS − ₹294 fulfilment = ₹565 profit
Vihax_PurchaseMeta · value ₹565
Delivered_PurchaseMeta · on courier confirmation
RestatementGoogle · value set to ₹565

Order #4418 came back RTO

Refused at the door. Shipped both ways, no revenue.
Delivered_PurchaseMeta · never sent
RetractionGoogle · conversion withdrawn
Send logReason recorded per order

Sample orders. The value sent is the order's own ledger profit as if delivered. No predicted return rate is folded into it.

Meta Conversions API

Conversions valued at profit

A per-order send log, the reason for every order not sent, and a match score across customer keys.

Google Ads

Uploads that get corrected

Retracted when an order is returned, restated to real profit when it is delivered.

Attribution

Seven models on delivered profit

Last click to data-driven, with every touch path and the campaigns inside it.

Install

One switch in the theme editor

The pixel installs as a Shopify app embed. No theme code is edited.

Profitable audiences

Your best customers, sent to Meta and Google every morning.

Three customer lists built from delivered orders only, refreshed daily for lookalikes and exclusions. Returned and cancelled orders never enter a list.

Sample store · customers per list
Prepaid buyers
840

Customers who paid online and received the order. The lowest return rate in the store.

Meta · Googlerefreshed 05:15
High-value orders
483

The top quarter of delivered orders by value, so lookalikes start from bigger baskets.

Meta · Googlerefreshed 05:15
High-profit buyers
471

The top quarter by ledger profit per order, after product cost and fulfilment.

Meta · Googlerefreshed 05:15

Nothing is sent until the store owner confirms. Contact details are hashed before they leave Vihax, shoppers who declined marketing through Shopify's consent banner are left out, and a list under the platform minimum of 100 is held back.

Products, stock and campaigns

Which products to push, which to restock, which ads to cut.

Where each product sits

Sample store

Stock and spend at risk

Sample store
Onion Hair Serum6 days of cover · Meta still spending ₹4,100 a day
Pause or restock
Aloe Vera Gel11 days of cover · reorder 900 units by Friday
Reorder
Kumkumadi Face Oil43 days of cover at the current sell rate
Covered
Bundle signal: Bhringraj Hair Oil + Onion Hair Serum bought together on 118 orders, returned less often as a pair than apart.

Which campaigns to scale and which to cut

Sample store · last paid touch
CampaignSpendPlatform ROASRTOTrue POASCall
Meta · Broad, COD offer₹1,46,0005.2×38%0.62×Cut
Google · Brand search₹58,0007.9×12%3.05×Scale
Meta · Prepaid lookalike 2%₹1,12,0003.6×9%2.31×Scale
Google · Performance Max₹1,21,0004.4×24%1.08×Wait
Meta · Retargeting 7 days₹64,0006.1×19%—Check tracking

The campaign with the second-highest platform ROAS loses money once its returns settle. The last row reads "—" because too few of its orders joined to a click to judge it.

Creative Performance

Hook and hold rate per ad

Against your own median, with fatigue read from the daily click-through trend.

Unit Economics

Your ad-spend ceiling

MER against a break-even floor from your own settled numbers, and the most you can pay for a customer.

Customers

Repeat, LTV and payback

New against returning, first to second order paths, LTV to CAC and payback in orders.

Period Comparison

Week, month, quarter, year

RTO, revenue, marketing and profit, with periods still settling drawn hatched.

Alerts, digest and Alpha

Hear about it before it costs you.

Nineteen rules watch your figures against your own 14-day baseline, with volume floors so a quiet day does not raise an alarm. Every alert names the page to open.

  • Always on: a channel stopped spending, the pixel went silent, orders stopped reaching Meta or Google, a token is about to expire
  • Optional: POAS drop, RTO spike, spend with no conversions, COD mix up, parcels stuck in transit
  • A morning digest and a Monday recap by email
  • Alpha answers questions from the figures Vihax computed, and nothing else

Orders stopped reaching Meta

No purchase has been sent for 3 hours. Your usual gap is under 20 minutes.

Tracking · open Pixel & Events

COD return rate is up

34.8% on parcels settled this week against a usual 29.1%.

Returns · open Delivery & RTO

Ads running on low stock

Onion Hair Serum has 6 days of cover and two active Meta campaigns.

Stock · open Products
Why did profit fall last week?
Most of the fall came from returns on COD orders, which rose while ad spend held steady.
RTO revenue loss₹1,24,000 → ₹1,51,000
Ad spend₹1,58,000 → ₹1,61,000
CM2₹2,41,000 → ₹2,12,000
Sample conversation
Numbers you can take to a board

When Vihax doesn't know, it says so.

A figure that cannot be computed shows a dash and the reason. Never a zero, never an estimate dressed as a measurement.

True POAS
1.44×
Standard POAS 1.96×
Net profit
—
Google Ads has not reported for this range
COGS coverage
97.2%
of gross revenue has a unit cost
Numbers Check

Every figure, reconciled nightly

A figure shown on two pages is recomputed on each page's path and marked agree or disagree.

COGS Gaps

Missing costs, named

Every sold variant with no unit cost, and the margin it would overstate. Below 95% coverage, margin reads unavailable.

Consent

Shopify's consent, enforced twice

Read in the browser and again on the server. Email and phone are stored only as hashes and removed after 90 days.

Your ad accounts

Vihax never changes your spend

No budget, bid, pause or targeting change, ever. Vihax recommends; you decide in Meta and Google.

Setup

Your first ledger the same day.

1

Connect Shopify

Read-only access to orders, products and costs. Vihax never edits your store.

2

Confirm your costs

Unit costs come from Shopify. Add shipping, packing and payment rates once.

3

Switch on the pixel

One app embed in the theme editor. Visits start joining to orders.

4

Connect Meta and Google

Spend, campaigns and conversions. Optional, and each works on its own.

Pricing

One product. The price follows your ad spend.

Every plan includes every feature. Choose the band your monthly ad spend sits in; if it moves, we talk.

Starter

₹4,999 / month
Ad spend under ₹1,00,000 a month
Connect your store

Growth

₹12,999 / month
Ad spend ₹1,00,000 to ₹5,00,000 a month
Connect your store

Scale

₹29,999 / month
Ad spend above ₹5,00,000 a month
Talk to us
Profit after RTO on every order
True POAS and standard POAS
RTO by pincode, product, courier
First-party pixel and server-side join
Profit-valued conversions to Meta and Google
Daily audiences for Meta and Google
Products, stock cover and bundles
Seven attribution models
Alerts, digest and Alpha

Prices exclude 18% GST.

About
Built by someone who paid the RTO bill himself.

Vihax is built by Vivek Bisla, who runs performance marketing for D2C brands and owns one, Dhanura Ayurveda, where every refused parcel comes out of his own account. The pattern was the same on every account: Meta and Google were optimised for orders, and finance found out weeks later which orders were real. Vihax is that argument turned into a product.

VIHAX Marketing Solutions · Faridabad, Haryana, India · vivek@vihax.com

See what your orders kept.

Connect Shopify and read your own profit after returns, on your own orders, today.

Connect your store → Book a walkthrough