Dan Petrescu
Shopify e-commerce, 10+ stores

Shopify e-commerce, 10+ stores

What repeats across ten-plus Shopify stores — print on demand, beauty, gifts — and the three things that decided whether they made money.

10+

Shopify stores built and run

3

verticals: print on demand, beauty, gifts

30–50%

fewer refused COD deliveries with CODCheck

Context

Me and my team have built and operated more than ten Shopify stores across three very different verticals: print on demand, beauty, and gifting. Different products, different margins, different customers — and almost identical failure modes.

A store is not a design problem. Design is the part everyone spends money on and the part that changes results least. What decides whether a store makes money is operations: how an order becomes a shipped parcel, how a product variant gets created, and how much of the revenue never actually arrives.

Constraint

Every one of these stores had to run without a warehouse team and without an ops manager watching a dashboard. If a task needed a human to remember it daily, it broke within a month.

Margins set the second constraint. Print on demand runs thin, beauty carries returns, gifting is brutally seasonal. None of them could absorb the cost of a refused cash-on-delivery order, and in Romania COD is still how a large share of first-time buyers pay.

Decision

We rejected treating cash-on-delivery as a cost of doing business. Refused deliveries eat courier fees both directions plus the goods, and the standard fix — SMS or OTP confirmation — adds friction exactly where you are trying to remove it. We built CODCheck instead: a Shopify app that scores every order for fraud risk and hides the COD option from risky buyers while leaving everyone else untouched. Merchants running it see 30–50% fewer refused deliveries.

We rejected manual variant management. On print on demand a catalogue expands combinatorially — product times design times size times colour — and hand-built variants are where a store quietly stops growing. Variant generation, mockups and listing pushes got automated before a single euro went into ads.

We rejected scaling paid traffic before the operational floor was solid. It is the most tempting mistake in e-commerce: ads make revenue move this week, so they get funded first, and every downstream weakness gets multiplied. Fulfilment, returns handling, and COD risk were fixed first; traffic spend followed.

What shipped

Ten-plus live Shopify stores with custom themes, automated variant and listing pipelines, integrated fulfilment for print on demand suppliers, Romanian courier and COD flows, and CODCheck running fraud scoring at checkout.

On the gifting side that also meant retail alongside direct-to-consumer, because a seasonal product with a physical shelf does not behave like a pure DTC line and pretending otherwise costs a season.

Numbers

More than ten stores built and operated across print on demand, beauty and gifting. CODCheck cuts refused deliveries by 30–50% for merchants that run it, with a 0–100 risk score computed on every checkout and roughly five minutes of merchant setup.

What I'd do differently

I would measure contribution margin per order from day one on every store, not revenue. Revenue dashboards make a store with a returns problem look healthy for months.

I would also standardise the stack across stores earlier. We solved fulfilment, variants and COD risk separately in the first few builds before recognising them as the same three problems every time, and that repeated work is the main thing I would buy back.

Want this for your product?

Fixed-price scope in the first call. No discovery phase invoice.