Skip to content
SaaS Lift Apps Studio (Founder Project) · 2025 — Present

True ROAS AI

A Shopify app that joins store transaction data to Meta ad spend and reports the profit a campaign actually made — after COGS, shipping, fees, refunds and discounts.

profit metrics
6
profit metrics True ROAS, net profit, net ROAS, MER, CAC, margin
product modules
8
product modules dashboard to background sync
tracking health score
0–100
tracking health score from the UTM auditor
A 20-second walkthrough of the product, rendered with Remotion.

True ROAS AI is my own Shopify app, published under Lift Apps Studio. It answers one question that ad platforms are structurally unable to answer honestly: did this campaign make money?

Problem

Meta reports revenue, not profit. Its ROAS number excludes cost of goods, shipping, payment fees, refunds and discounts — every cost that decides whether a sale was worth making. It also over-attributes: the network claims credit for orders it didn’t drive, and when UTM parameters are missing or malformed, attribution degrades silently with no warning anywhere in the dashboard.

The result is a merchant scaling a 4× campaign that is quietly losing money on every order.

My role

I build and run the product end to end — Shopify OAuth and webhooks, the Meta Marketing API integration, the attribution and profit engines, the sync infrastructure, and the embedded Vue 3 interface merchants actually use.

Key decisions

Shopify is the source of truth, not the ad network. Every revenue figure is reconciled against Shopify orders and refunds before it reaches a chart. Attribution matches orders to campaigns through UTM parameters, fbclid, landing page and referrer, and each match carries a confidence score instead of pretending certainty.

The profit engine uses exact decimals. Configurable COGS, shipping, fee structures and fixed operating costs feed a calculation that has to survive a merchant checking it against their own accounting. Floating-point drift is not acceptable in a number someone budgets on.

Freshness is a queue problem. A PostgreSQL-backed job queue runs incremental syncs of catalog, costs, orders and refunds, so the dashboard is current without hammering either API.

The integration layer is provider-agnostic. Meta ships first; Google, TikTok, Pinterest, Snapchat, LinkedIn and Microsoft Ads plug into the same attribution and profit engines without touching their core.

Outcomes

  • Merchants see net profit, true ROAS, net ROAS, MER, CAC and margin side by side, with period comparisons and their best and worst campaigns called out.
  • A campaign Meta reports at 4.20× resolves to a true ROAS of 1.80× once costs are deducted — the gap between those two numbers is the entire product.
  • Campaign, product and order-level views all reconcile to the same figures, so a merchant can drill from “this campaign lost money” to the specific SKU and refund rate behind it.
  • Access stays read-only and least-privilege, with GDPR webhooks and encrypted credential storage.

Lessons

Trust is the feature. A profit number is only useful if a merchant will act on it, and they only act on it if it survives being checked against their own books. That pushed almost every decision toward conservatism — exact decimals, confidence scores instead of confident guesses, and loud alerts when the inputs are wrong.

True ROAS AI product page — the problem with platform-reported ROAS, the six profit metrics and the eight product modules Full page
The full product page: why platform ROAS misleads, and the six metrics that replace it.
True ROAS AI on mobile — hero comparing Meta-reported ROAS of 4.20x against a true ROAS of 1.80x
Mobile — the 4.20x vs 1.80x gap is the whole pitch.

Want results like these?

I take on a small number of projects at a time. Tell me about yours.