Promora
A promotion that sells a lot can still lose money. Promora shows the margin, COGS and markup of each campaign before the month closes.
- Role
- Product, business rules and code
- Built for
- E-commerce and marketing teams
- Integrations
- Shopify · Firebase
- Status
- In production
Screenshots use a fictional store and campaigns. The operation's real numbers stay out of the portfolio.
High revenue doesn't mean profit.
Discounts, platform fees and shipping quietly eat the margin. With campaigns spread across influencers, media, retention and paid traffic, nobody knew which ones paid the bills and which only moved cash.
Every campaign with its own margin.
Promora matches Shopify orders with each campaign's products and calculates the real result: list vs. sale price, cost of goods, fees and shipping. The team plans on the calendar and shares a public link with anyone who doesn't need to log in.
Overview
Revenue, COGS, net profit and margin for the period, with trend and comparison.
Calendar
Monthly or by channel, with a public link and PDF export for the team.
Campaigns
Status, period, revenue and margin side by side, with alerts for anything off target.
Margin
Trend, cumulative profit and insights: the best product, the worst and what to adjust.
E-commerce math, done right.
Real contribution margin
Fees and shipping go into each unit's cost. Markup and COGS are calculated per product, per campaign and per period.
Winning campaigns, with reasons
Ranked by margin, ROI and conversion. The leader comes with the why, such as a lean discount or the period's highest revenue.
UTM attribution
Shopify orders are attributed to a campaign by last-click UTM and by the selected SKUs, variants included.
Public link for the team
A shareable calendar with its own updates feed and a monthly PDF ready to send on WhatsApp.
Fast without losing data
Local order cache with expiry, plus manual sync when the team needs fresh numbers.
The dashboard fits in the team's pocket.
Bottom navigation, stacked KPIs and side-scrolling tables: check a campaign's margin between meetings.



- React 18
- Tailwind CSS
- Lucide
- Shopify Admin API
- Firebase · Auth, Firestore
- Serverless functions
- jsPDF
- Vercel