Fundusze Europejskie Województwo Łódzkie Unia Europejska
Home / About us
About us

Built inside a performance agency, on our own clients' budgets

It started in 2023 with an EU grant for an e-commerce loyalty programme. zest.agency, a performance agency running since 2015, kept developing it for its own client work and added the ad side next to the loyalty one.

zest.agency ZEST.AGENCY · 2015 LOYALZ · 2023 Loyalz
In my own words

Karol on where the tool came from

Karol Majewski speaking at the ecommerce.pl conference FOUNDER Karol MajewskiCEO Loyalz · zest.agency
ecommerce.pl conference · photo: Eventshooters
2023FIRST VERSION 3 yrsON OUR OWN ACCOUNTS

In 2023, we had the idea of diversifying the agency’s work with a tool that supported customer retention. An EU grant enabled us to build a complete product, which became the first version of Loyalz.

2023 — the first version

Loyalty only, and built on Web3

The first Loyalz did retention and nothing else, and it ran on Web3. In 2023 that sounded like the future. By 2024 it sounded like something you had to apologise for — our own FAQ was still answering questions about NFTs and gas fees while the merchants I was actually sitting with wanted points, cashback, and a voucher that worked at checkout. None of them wanted to learn what a crypto wallet was.

NFTs Gas fees Wallets
2024–2025 — an alternative built in parallel

The same mechanics, made simpler

For two years, we built an alternative version in parallel, without blockchain underneath. Points, cashback, benefits, levels, collections, quests — the mechanics people were actually asking for.

Points Cashback Benefits Levels Collections Quests
Starter Explorer Elevated Premier Icon THE LEVELS SHIPPED
2024–2026 — the other direction

Add customer acquisition to retention, and you have the full customer lifecycle.

The second part of the tool grew out of the agency’s daily work, not a roadmap. It started with something very simple: adding labels to ads so we could compare them in one place. Next, we added an ad ranking to see which ads were really driving an account’s performance and, more importantly, to show designers what to create. As AI developed, the next steps seemed obvious: adding ad generation and direct publishing to save specialists time.

STEP 01Analysis → STEP 02Production → STEP 03Management
Today

The first screen of every day

At zest.agency we rank client ads in Loyalz, set their pause rules there and send clients a live report link instead of a deck. Every brand gets the same panel, and the MCP server opens it to AI chat — 77 tools in all.

The agency

What zest.agency actually does

Four services — performance ads, analytics and CRO, creative and UGC, sites and stores — and the first three turned into Loyalz's ranking, Insights and creative analysis. Google Partner since 2019, Meta Business Partner since 2020, 4.9/5 on Clutch from 22 reviews. The agency's own line for the work is performance you can see in the P&L.

zest.agency zest.agencyPerformance agency

Performance ads

Search and paid social on Google, Meta, TikTok and LinkedIn — a Google Partner since 2019 and a Meta Business Partner since 2020. This is the practice that produced the ranking and the pause rules.

Google Meta TikTok LinkedIn

Analytics and CRO

GA4 and Tag Manager implementation, server-side tracking and consent handling, A/B testing wired to the system where the sale is actually recorded. This is the work that turned into Insights.

GA4 GTM Server-side A/B

Creative and UGC

UGC-style videos and ad graphics produced in series, each version labelled and ranked on store revenue once it runs. That is why labelling and comparing creatives was the first thing built on the acquisition side.

SERIAL OUTPUTranked on store revenue

Sites, stores and landing pages

Design and build for shops and campaign pages, with the tracking installed as part of the build rather than bolted on afterwards. A campaign is only as measurable as the page it lands on.

WooCommerce Landing pages
Google PartnerSINCE 2019
f Meta Business PartnerSINCE 2020
4.9 4.9/5 on ClutchFROM 22 REVIEWS
RULE 01 Measurement is verified before a budget is released.
RULE 02 The client owns every account, pixel and connection from the first day.

Two of the agency's working rules ended up as product decisions rather than slogans. The results the agency publishes are its own figures on its own site, which is the right way to read them.

02The origin

What’s the truth?

Four platforms, four ROAS figures, a spreadsheet, and a client asking why nothing adds up?

So we built a layer that brings every source into one format. Then a dashboard, because a report without a decision is just a prettier spreadsheet. Next, we added creative analysis, because “this ad works” is not enough to brief the next one. And as acquisition costs rose faster than margins, we’re rolling out the other half — the loyalty side — because the cheapest customer available to our clients was the one they already had.

Monday report, 2021 illustrative
MMeta Ads4,10× GGoogle Ads3,20× TTikTok Ads6,80× AAllegro Ads2,40×
SUM NEVER MATCHED THE INVOICE
What the store actually tookOne fraction, from store revenue 2,90×

The sum of platform ROAS never matched the invoice. This artefact is the whole justification for decision 03 below.

What stayed in the product

Four product decisions and the incident behind each

None of these came from a workshop. Every one of them exists because something went wrong on an account we were accountable for, in front of a client who was entitled to an answer.

01 The incident

One definition of “best ad”, everywhere

A client read the weekly report, then opened the dashboard, and found the two praising different creatives on the same account in the same week. Both were correct. The report ranked on one window and one conversion definition, the dashboard on another, and nobody had ever written down which was the real one — because until somebody put them side by side, nobody had to.

The fix was not a better report. It was deciding, once, what the sentence “this is the best ad” means, and making every surface read that one definition: the ranking, the assistant, the weekly report, the pause rules. A number that changes depending on which screen you are looking at is not a measurement, it is an opinion with a decimal point.

RULE One definition, computed once, quoted everywhere.
02 The incident

A spend gate on every pause rule

An early automation did exactly what it was told. A new campaign had a poor first afternoon, the rule saw a cost per acquisition above target, and it paused the campaign on day one — before the platform had left the learning phase, on a sample too small to mean anything. The rule was right about the arithmetic and wrong about the world.

Now no rule can fire on an ad without delivery history behind it. Every automation carries a spend threshold as well as a performance one, and the threshold is a precondition rather than a setting somebody remembers to fill in. An automation that can act on noise will eventually act on noise, and it will do it at the worst possible moment.

SPEND GATE RULE MAY FIRE
RULE No rule fires until the ad has spent enough to have an opinion.
03 The incident

Blended ROAS computed from store revenue

The Monday report above is this one. Four platforms, four returns, each one confidently claiming the same order. Add them up and the total revenue exceeds what the shop actually took, sometimes by a third. Every platform counts a conversion it can see, and several of them can see the same one.

So the basis of the calculation changed. Revenue comes from the shop, not from the pixel, and platform figures are treated as claims to be reconciled against it rather than as the number. It makes the reported result lower and it makes it true, and only one of those two properties survives a conversation with a finance director.

RULE The shop is the source of revenue; the platform is a witness.
04 The incident

A log on every automated action

“Who paused my ad?” is a question an agency gets asked, and the honest answer that week was that we were not sure — a rule had fired, or somebody had clicked, and there was no record that distinguished the two. Trust does not survive many of those.

Every automated action now writes a line: what changed, what triggered it, which account, and when. It is unglamorous and it is the feature that makes handing automation to a client possible at all, because the price of letting software touch a live budget is being able to say afterwards exactly what it did.

09:14 rule cpa_guard paused ad 1202149… 11:02 user k.majewski raised budget +15%
RULE Anything that can change a campaign leaves a name and a timestamp.
Loyalz & Zest team

The same people build it and use it

Loyalz is built by the team that runs client campaigns at zest.agency. Anything new goes onto real accounts with real budgets here first, so the problems turn up on our side before they reach yours.

Paweł Strzelecki
Paweł StrzeleckiTest it till you make it.
Tymoteusz Krężel
Tymoteusz KrężelMeasure it to manage it.
Aga Sujka
Aga SujkaContent is queen.
Beata Dośpiał
Beata DośpiałStart with why.
Bartłomiej Madej
Bartłomiej MadejTest, optimize, succeed.
Bartosz Bełtowski
Bartosz BełtowskiThe best marketing is invisible.

Check ad revenue with your own data — a 20-minute demo

Twenty minutes, live, on your data. We compute your fraction while you watch.

Book a demo — check ROAS in 20 min →
Loyalz
Loyalz · built inside zest.agency © 2026