Dottore: store, B2B, warehouse and campaigns for a cosmeceutical brand, in one pair of hands
×9store revenue, 2018 → 2025


Results
A 1000% ROAS means PLN 10 in revenue for every PLN 1 spent on ads. I only give numbers I can confirm.
Client testimonial
Working with Piotr was a turning point for our brand online. He took full responsibility for our digital work, from technical matters to visual creative. Thanks to his commitment and versatility, we not only built a professional online image but, above all, grew our revenue in a real and dramatic way. He is a specialist who combines an artistic sense with hard sales analytics.
Seven areas, one person
Dottore Cosmeceutici is a Polish professional cosmetics brand that used to sell mainly through beauty salons, trade press and events. I joined the team in 2018 as a junior SEO specialist. Today, as ecommerce manager, I’m responsible for the whole online channel. Below, each area separately: where it started, what I did and what it brought.
Tracking first, budget second
monthlysales report from every channel for the management board
Before
- Decisions about promotions and campaigns were made on gut feeling.
- Campaigns didn’t get full sales data, so they optimized for clicks.
What I did
- Google Tag Manager and GA4 with full ecommerce tracking, from product view to purchase.
- Consent Mode v2 and a consent banner, so tracking complies with GDPR.
- Meta Conversions API and Google Ads conversions: campaigns see real sales.
- A monthly sales report for the management board.
From PrestaShop to WooCommerce, then a new store from scratch
2–3 mo.to build the new store in 2026
Before
- A PrestaShop store since 2013: slow, and every new feature meant another paid module.
- The mobile version lagged behind, even though most customers come from phones.
What I did
- 2024: after the board’s decision, I moved the store to WooCommerce with customers, order history, reviews and 301 redirects.
- 2026: a new store on dottore.beauty, together with a zone for salons.
- The Dottore Club loyalty program, with points shown on the product page.
- “Duet” bundles: a second product at a lower price, added in one click.
- Promotions with a countdown and the lowest price from the last 30 days.
- Search by skin need, ingredient and product line.



Salons order on their own instead of sending emails
60+new partner salons a month from online channels
Before
- Salon sign-ups and orders came in by email, went into spreadsheets and then to the sales reps.
- A salon couldn’t see its prices or materials without contacting a sales rep.
What I did
- A professional zone built only for Dottore.
- Salon registration with verification before prices are shown.
- Wholesale prices after login, while retail customers see regular prices in the same store.
- Partner materials: treatment protocols, training and graphics.
- A map of 155 salons with treatment filters, and an Academy with training courses.
- 1Salon registration
- 2Verification
- 3Wholesale prices after login
- 4Order
- 5Handled in OrderFLY


Losing the domain overnight and rebuilding from zero
3–4 mo.until Google traffic was back to its level before the loss
Before
- In 2025 the brand lost the dottore.pl domain overnight.
- Redirects were impossible, so links and Google rankings led nowhere.
What I did
- The store on a new domain, dottore.beauty.
- Updated links, the Google Business Profile and URLs in every campaign.
- New content and product descriptions for the phrases customers actually search for.
Not to scale: it shows the shape, not the values.
- Day 0The store on the new dottore.beauty domain
- First daysLinks, Google Business Profile, campaign URLs
- Following weeksNew content and product descriptions for search phrases
One stock level and shipping labels in one click
−40%packing time, 100% stock consistency
Before
- Sales reps sent orders by email, with no view of stock levels.
- Addresses for labels were retyped by hand, and picking mistakes happened.
- The store, Allegro (the largest Polish marketplace) and B2B showed different stock levels.
- Nobody knew who packed an order, or when.
What I did
- Order handling in OrderFLY, my B2B platform.
- Courier labels are created automatically.
- Picking paths guide the warehouse shelf by shelf.
- One stock level for the store, Allegro and B2B.
- Text and email updates to the customer with the status and parcel number.

Over 300 campaigns, from idea to creative
1000%ROAS at sales peaks, over 300 campaigns
Before
- Every marketing push was a one-off effort, with no steady rhythm and no sales data.
What I did
- Separate campaigns for retail customers (B2C) and for salons (B2B).
- Idea, copy, graphics and landing page in one pair of hands: creative changes take days, not weeks.
- Catalog remarketing with a product feed.
- A fixed calendar: Black Friday, Christmas, Mother’s Day, partner promotions. 6 campaigns a month on average.
Creatives from the Meta Ad Library, in Polish. I made all of them myself: idea, copy and graphics.






Messages that sell when nobody is watching
5message flows that run on their own
Before
- Salon sign-ups and repetitive messages were handled by hand.
What I did
- A newsletter with promotions and launches in MailerLite.
- Automatic abandoned-cart and post-purchase emails.
- Separate communication for salons.
- Salon sign-ups sent through Zapier straight to a sales rep, before the B2B zone existed.
From SEO to the whole of ecommerce
- 2013The store launches
A PrestaShop store, before I joined.
- 2018I join the team
As a junior SEO specialist.
- 2020Marketing and campaigns
I take over campaigns, creative and analytics.
- 2024PrestaShop → WooCommerce
Customers, orders, reviews and redirects migrated.
- 2025Domain lost
A new domain, dottore.beauty, and traffic rebuilt from zero.
- 2026, ongoingA new store with B2B
Professional zone, salon map and Academy. Today I’m the ecommerce manager.
What I learned
- Domain and accounts in the company’s name
Losing the domain showed that the domain, ad accounts and server access must belong to the company, with a backup of all logins. I make sure of this from day one of every project.
- Tracking before budget
A campaign only optimizes for sales once it gets sales data. Before I raise a budget, I check the tracking.
- One stock level
Syncing several stock sources always drifts apart. One source for every channel solved the problem for good.
- B2B is a separate process
A form that lands in a sales rep’s inbox doesn’t scale. A salon needs its own account, prices and materials, and the company needs one place for its orders.
Tools
- WooCommerce
- WordPress
- PrestaShop (until 2024)
- OrderFLY
- Allegro
- GA4 and GTM
- Consent Mode v2
- Meta Ads and Conversions API
- Google Ads and Merchant Center
- MailerLite
- Zapier
- Adobe CC