FAQ
Questions, answered without the brochure
Everything below describes the product as it runs today. Where a feature is limited, the limit is in the answer rather than in a footnote. If your question is not here, ask it on a demo call and it will be.
0 answers match
Nothing here answers that one — which is useful to know. Ask it directly and the answer goes on this page.
What Loyalz is
What is Loyalz?
Loyalz measures what an ad costs you and what the customer it brought turns out to be worth — in one place. Ad spend from Meta, Google, TikTok, LinkedIn and Allegro lands in the same table as settled orders from your store, so your blended return is computed from what the shop took rather than from what four platforms each claim.
The other half runs the loyalty program — points, cashback, benefits, quests and levels. One record per customer, joining what the ad cost to what that customer went on to be worth. More on each half: Acquisition and Retention.
Is Loyalz an analytics tool or a loyalty program?
Both, and they're sold as one loop. Measurement — every connector, the dashboards, the assistant, the MCP server — is in all three plans. Creative ranking starts in the middle plan; the loyalty program sits in the top one, alongside the measurement half rather than instead of it.
So you can run Loyalz as measurement alone and never switch the program on. You can't buy the loyalty half on its own, because half the loop can't answer what a customer is worth. See what's in each plan.
How is this different from Databox or Looker Studio?
Those draw charts from data you send them. Loyalz brings the data with it: ten sources connect from the panel over their own login or an API key, and the numbers behind your dashboards sit in one table inside Loyalz rather than being fetched from each platform every time a chart loads.
Two things follow. Your store's settled revenue is the reference the ad platforms get reconciled against, not the other way around. And Loyalz also carries what a customer was worth after the first order, which a charting tool has no opinion about.
How is this different from Meta's and Google's own reporting?
They report on themselves. Each platform sees only the clicks it served, several of them claim the same order, and their attribution windows differ — which is how four platform dashboards produce four ROAS figures whose sum never matches the invoice.
Loyalz divides what your store settled by what every connected channel spent. The shop is the source of revenue; the platform is a witness. It doesn't settle the attribution argument — it makes the disagreement visible, and publishes the cases where even that fails.
How is this different from Smile.io or LoyaltyLion?
Those run a loyalty program with no acquisition context, and the evidence they offer is a members-versus-non-members comparison. That comparison can't answer the question: your best customers join first, so members outperform in every dataset ever published.
Loyalz runs the program and puts customer value next to what that customer cost to acquire. It does not prove your program works — it gives you the randomized design that can, and the arithmetic that says whether your store is big enough to run it. The design rules and the sample sizes are published.
Wasn't Loyalz a blockchain product?
The 2023 version was; today's isn't. The first Loyalz did retention only and ran on Web3, and by 2024 the merchants we were sitting with wanted points, cashback and a voucher that worked at checkout instead. We spent two years rebuilding the same mechanics without blockchain underneath, then added the ad-measurement half.
What ships today is points, cashback, benefits, quests and levels. Wording from the old version still shows up on a few older screens we haven't finished cleaning up. The full history is on our about page.
Who is Loyalz for?
Stores and teams that buy more than one ad channel and have a store or CRM worth reconciling against. Three shapes, in practice:
- E-commerce owners who want one number for the whole shop instead of four dashboards that disagree.
- In-house performance marketers who want ad spend and store revenue on one screen, and creative ranked against a threshold they set rather than a black-box score.
- Agencies running several client accounts under one login, arranged separately from the listed plans.
B2B works too: lead-generation and CRM dashboard templates ship alongside the e-commerce ones.
Who is Loyalz not for?
A store that isn't spending on ads and has no plans to. The value scales with the number of channels you buy and the size of the budget — on one channel, that platform's own dashboard is enough.
Also not for a store too small to measure what it wants to measure. If your order volume can't detect the effect you care about, the honest answer is that you can't measure it — and running the test anyway produces a number that looks like an answer and is noise.
How much ad spend do I need before this is worth it?
Roughly 5,000 EUR a month across every platform together. Below that the interesting numbers haven't accumulated yet — the gap between what the platforms claim and what the store settled sits inside the noise, and we'd rather say so now than on the call.
More than one channel is the other rough threshold, since the whole point is reconciling sources that disagree. If you're not spending yet, say so on the demo form and we'll send you the measurement setup instead of booking a call.
Does Loyalz work outside Poland, and outside the EU?
Yes. Every board reports in your own currency, converted from each source's own currency at reference rates we refresh daily, and the ad, analytics and store connectors are global. Two are Poland-specific: Allegro Ads and Sellasist.
Two limits worth knowing first. The panel has no language switch — it's English, while this site is English and Polish. And our infrastructure sits in the EU except for part of the production database, which is in the United States; the privacy notice spells that out rather than rounding it up.
Who builds Loyalz, and do you use it yourselves?
Loyalz is built inside zest.agency, a performance agency running since 2015; the product started in 2023. Every rule in it exists because something went wrong on a client account first — a report and a dashboard naming different winning creatives in the same week, an automation that paused a campaign before it had spent enough to have an opinion.
Yes, we run on it. The agency uses Loyalz on client accounts, and this site records its own inbound touchpoint paths with the same first-party method the plugin uses in your store.
What does Loyalz cost?
Three plans, per month, net of VAT: Fish €29, Shark €199, Whale €399. Pay twelve months up front and each drops 20% — €23.20, €159.20 and €319.20. VAT goes on the invoice according to your company's country and tax status.
Fish is the measurement half: every source in one metric layer, with dashboards on top. Shark adds creative ranked on store revenue. Whale adds the loyalty program. No seat limits, no cap on connected sources. See what's in each plan.
Is there a free trial, and how do I sign up?
No trial. You can create the account yourself — sign in with Google or a code sent to your e-mail, then tell us the company, the store and the ad-spend band — but the plan is granted by us, so the account alone opens nothing. The way in is booking the twenty minutes.
Instead of a trial you get twenty minutes on your own data. We connect one ad account and one month of orders and compute the gap between what the platforms claim and what the shop took, while you watch. If the gap is small, you don't need us.
How long before I see numbers?
Connecting starts a backfill of about six months of history for the ad platforms, WooCommerce and Sellasist. A small account fills in minutes; a large one takes longer. After that a nightly job re-fetches the last few days so late conversions land — so it isn't a live feed, and nothing older than that window is re-read unless you ask.
Two exceptions. Shopify has no automatic backfill, so we run the history import for you. Same for your customer-level history, the part Mission Control needs — we import that when you connect.
Which store platforms does Loyalz work with, and what does each give?
Three: WooCommerce, Shopify and Sellasist — and they don't give you the same thing.
- WooCommerce — the full set: orders, revenue, touchpoint paths, and, on the loyalty plan, discount codes written back into the store. Revenue is the order total as Woo states it, shipping and tax included, and there's no returns figure.
- Shopify — revenue, orders, returns and refund value, read-only. No touchpoint paths.
- Sellasist — revenue, orders and returns, read-only, Polish market. Connecting a new store is work on our side, not a setting you flip.
What can Loyalz not measure?
Four limits that don't go away. The Acquisition page publishes the first two as hard floors.
- Consent refusals. A visitor who declined marketing cookies is not recoverable — by us or by anyone.
- Cross-device paths. A phone visit and a desktop purchase are two visitors to any cookie-based method, ours included.
- Guest checkouts. Orders with no usable customer identity sit outside the customer metrics, counted and reported separately.
- Cost per new customer, by channel. There's no per-channel figure today. CAC is blended.
It also doesn't fix attribution. It makes the disagreement visible and gives you the store as the reference — a smaller claim than the category makes.
Do I have to work with zest.agency to use Loyalz?
No. Loyalz is sold as a product on the listed plans, and nothing in it requires an agency in the account. The agency built it and runs on it, which is why most of the rules in it exist — that's the origin, not a condition.
Agency access is the separate arrangement: one login with a client switcher, a shared AI budget and one invoice. It isn't priced on the pricing page. Tell us how many clients you run and we'll send a quote.
Why does the panel say "Impact CAC" and "Impact CLV"?
Same two halves, older labels. Impact CAC is Acquisition — Meta and TikTok ads, Ad Ranking, Ad Paths, Creative Studio. Impact CLV is Retention — rewards, quests, leaderboards, levels.
The site uses the plain words because that's what a first-time reader understands; the panel still carries the names we gave the two halves internally. If a menu item doesn't match what you read here, this is the pair, and we haven't renamed it in the panel yet.
Getting started
Can I sign up myself, or do I have to book a demo?
Sign up yourself. Open the panel, choose Sign in with Loyalz / Register, and you're in with Google or with a code we email you. A short form asks for your company, your store address and your monthly ad budget — that's the whole registration.
There's no free trial and no free tier. Signing up gets you an account and the billing pages; the measurement and loyalty pages open once a plan is active. See the plans, or book a demo if you'd rather be walked through it.
How do I log in?
Two ways. Continue with Google, or type your email address and enter the 10-digit code we send — both land in the same account, and neither needs a password. Team members who were invited and set a password can still use the email and password form on the same screen.
The code is good for 15 minutes, and you can ask for up to five an hour per address. A signed-in session lasts about a day before you sign in again.
What do I connect first?
One source of spend and one source of revenue. Everything lives on the Integrations page, and each tile says what it needs.
- Meta, Google Ads or TikTok — connect by OAuth, then pick the ad account
- WooCommerce, Shopify or Sellasist — paste API credentials from your store
- GA4 — connect by OAuth, then pick the property
- HubSpot — closed-won deal revenue, for B2B
- Allegro — advertising costs only, no orders and no revenue
Spend without revenue beside it is half a ratio, so connect the store early.
How long does connecting take, and do I need a developer?
No developer needed, and each connection is a few minutes of clicking.
Meta, Google Ads, TikTok and GA4 go through OAuth: approve the permissions, then pick which ad account or property to sync. That pick is what starts the import — it's the step people miss when they say nothing appeared.
WooCommerce takes a REST key from Settings → Advanced → REST API; paste the store URL, key and secret. Loyalz tests the credentials before saving them, so a wrong key fails there and then rather than quietly.
Do I have to install or change anything on my store?
Not for ad measurement. Ad platforms connect by OAuth and stores by API credentials — nothing goes near your theme, your checkout or your page speed.
The WordPress plugin is only for the other half: the loyalty widget, the first-party touchpoint path, and funnel events like add-to-cart and begin-checkout. It's a zip we send you and a WordPress admin installs — WooCommerce only, WordPress 6.1 or newer, not on the WordPress plugin directory, and it doesn't self-update. The storefront widget stays hidden until you reveal it.
When do the first numbers appear, and how often do they refresh?
Minutes, for most connections. The import starts the moment you finish connecting, so your dashboards fill with history instead of starting empty. A very large Meta account takes longer than that.
After the first load everything re-syncs overnight, and the ad dashboards are pre-rendered each morning so they open instantly. The last three days can still move: Meta, Google and TikTok keep re-attributing conversions after the click, and Loyalz overwrites those days with the platform's current answer rather than freezing the first one it saw.
What if I only run one ad channel?
One channel is enough to start. Connect it and your store, and you can put that channel's spend next to what your shop actually took — not just the revenue the ad platform claims for itself.
The limit is worth saying out loud: with one channel there's nothing to weigh it against. The metric layer earns its keep when a second and a third channel compete for the same budget. See what Acquisition measures.
Is there a demo account or sample data I can try first?
No self-serve sandbox. There's a demo account with a full synthetic dataset — ad accounts, creatives, store revenue — and we can walk you through it on a call, but it isn't a switch you can flip inside your own account.
Your own account starts empty and fills from your real connections. If you want to see the product working before you connect anything, book a demo.
Do I get dashboards out of the box, or do I build them myself?
Twelve ready-made boards ship with the product and you clone one in a click — Paid Performance, Ecommerce Performance, Lead Generation for B2B, Meta Ads, Google Ads, TikTok Ads, Profitability (POAS) and Closed Loop for CRM among them. From there you edit the widgets and write your own calculated metrics.
One thing to expect: every template is offered whether or not the source behind it is connected, so a board for a platform you haven't connected opens empty.
I signed up and every page asks for a subscription. Is something broken?
No — that's the plan gate. Until a plan is active, the account, billing, team and plugin-credential pages open and everything else asks you to subscribe.
Pick Fish, Shark or Whale on the Subscription page, or ask us to set one up — every store carries its own plan, including the ones an agency runs. The panel opens when Stripe confirms the payment, and the page keeps checking for about 30 minutes if that confirmation lags. Plans and prices.
I'm on Shopify. What do I get, and what do I miss?
Shopify brings in revenue, orders, returns and refund value every day, plus order lines carrying the cost per item you keep in Shopify — so real costs feed profit and POAS with no separate cost file. One difference from the other connectors: Shopify gets no automatic history import. We run your backfill for you when you connect.
The WordPress plugin is WooCommerce-only. That puts the touchpoint path, funnel events, per-ad profit attribution and the whole Retention half out of reach on Shopify today.
Which plan do I need for the thing I came for?
Match the plan to the job you came for:
- Fish — Insights dashboards, every connector, Mission Control and the MCP server.
- Shark — adds Ad Ranking and the touchpoint path.
- Whale — adds the loyalty half: points, cashback, rewards, quests.
Prices are on Pricing. Creative Studio is the exception: the plan doesn't switch it on, we do, and it's still with pilot accounts.
Can I invite my team, or give my agency access?
Yes to both. Invite colleagues by email in Settings, under Team manager: pick Admin, User or Analyst, with no seat limit. Admins manage the team, Users can add people below their own level, Analysts can't create loyalty content or manage the team.
For an agency, they hand you an 8-digit code and the store owner pastes it in the same place — only the owner can. Unlink your previous agency first; until you do, its people keep their access.
My shop isn't WooCommerce, Shopify or Sellasist. Can I still use Loyalz?
Not for order data, no. There's no connector for BaseLinker, PrestaShop, Magento, IdoSell, Shoper, Wix, BigCommerce or Squarespace, and nothing that receives orders by webhook from them.
Two routes stay open. Connect GA4 and Loyalz reads sessions, conversions and purchase revenue from there. Or push your orders to the Loyalz API with the Access Token from your panel — there's no public documentation for it, so we'd set that up with you.
Anything past that is a conversation, not a toggle. Book a demo and bring your stack.
I connected Meta but my dashboard is still empty.
Two usual causes. First: the ad account was never picked. Signing in with Meta on its own starts nothing — choosing which ad account to read is what fires the first sync, and it's in Settings under Integrations.
Second: you switched ad accounts. The dashboard snapshot is stamped with the account it came from and is refused when it no longer matches, so the page stays blank until the next fetch fills it.
Do I have to reconnect anything later?
Meta and TikTok, yes. Their access tokens expire, so the panel prints an expiry date next to each connection and offers Connect again once it passes. Where the platform doesn't tell us how long a token lasts, we assume 90 days.
Google Ads and GA4 refresh themselves — connect once and leave them alone. Reconnecting is a few clicks, and the history you've already imported stays where it is.
Can I run a second store or brand from the same login?
Yes, but not on your own — ask us and we'll create the second brand. There's no button for it in the panel. Once it exists, both show up in the account switcher and you move between them without signing in again.
One limit worth knowing: the brand you're viewing is one setting on your login, not one per tab. Switch in one tab and every other tab or device follows, so you can't watch two brands side by side.
Measuring acquisition
Why doesn't your ROAS match the number in Meta?
Because it's built from different evidence. Meta divides its own modeled purchase value by its own spend, and so does Google — when both claim the same order, their totals add up to more sales than you made. Loyalz can instead set the revenue your shop actually recorded against the total spend of every platform you've connected, so the numerator is money that arrived rather than two platforms claiming the same order.
The trade-off is coverage. Loyalz sees less than Meta does, and it says so instead of modeling the gap. More on how acquisition is measured.
Where do these numbers actually come from?
From one table inside Loyalz. Every connector writes daily rows into it, and one row is one metric, for one entity, on one day — spend for that ad, on that date. Every Insights widget, custom formula and share link reads that table instead of calling Meta or Google.
Two things follow. Boards load fast and keep working when a platform's API has a bad day. And the numbers are as fresh as the last sync, never live — the grain is daily, so there's no hour-of-day anywhere in Insights.
Does Loyalz replace GA4?
No. GA4 is one of the sources you connect, not something Loyalz stands in for. What it replaces is the spreadsheet where you reconcile GA4 against your ad platforms and your shop.
From GA4 it reads three things daily — sessions, conversions and revenue — plus the split by source and medium. No audiences, no explorations, no arbitrary events. And where Loyalz counts visitors of its own, it counts shoppers who took an action, not sessions, so it isn't a web-analytics tool either.
What is a touchpoint path?
It's the ordered list of every way a shopper arrived at your shop before one order — the Instagram ad three weeks ago, the Google search a week later, the newsletter link the night before. Loyalz records each arrival on your own domain, keeps them in order, and attaches the sequence to the order.
Two limits to hold onto. A path keeps the most recent 20 touches, and the cookie holding it expires 90 days after the last visit. And it's cleared at checkout, so the next order starts a fresh path — this measures the journey to each purchase, not a lifetime of exposure.
When does it start collecting? From the day the plugin goes live on your store, and only for visitors who accept marketing cookies. There is no backfill. Ad connectors import 180 days of history the moment you connect them; touchpoints and funnel events start at zero and build forward, so the earlier the plugin is installed, the more path you have to look at.
By default the plugin reads your CookieYes banner. You can point it at a different consent cookie instead, or tell it to always collect if your shop handles consent elsewhere — how that works.
The touchpoint path needs the Shark plan and a WooCommerce store.
How do you capture that without a pixel?
Your own shop does it. The Loyalz WordPress plugin runs server-side on ordinary page loads and writes each arrival into two first-party cookies on your own domain: one holds the journey so far, the other a random 32-character visitor id. Both are set by your server, are HttpOnly, and last 90 days.
Nothing is recorded until your consent banner signals marketing consent — no touchpoint, no visitor id, no event. Out of the box the plugin reads CookieYes; you can point it at a cookie your own banner sets instead.
First-party capture runs in the WooCommerce plugin only — there's no Shopify or tag-manager version on production today.
Why is so much of my revenue "Direct"?
Direct means Loyalz captured no marketing source for that order. It's a coverage number as much as a channel: it absorbs consent refusals, journeys that started on another device, expired cookies, browsers that stripped the referrer, orders placed before you switched tracking on, and genuinely direct visits. All of them look identical.
Read a large Direct share as a measurement gap, not a channel win. The written AI read on the page is instructed to say exactly that rather than dress it up.
Do you count ads people saw but never clicked?
No. A touchpoint exists only when a browser actually loaded a page of your shop, so an impression that was seen and not clicked is invisible here. There's no view-through window and no modeled uplift.
Cross-device gets the same answer. The identifiers are per browser, so Instagram on a phone and then a purchase on a laptop is two separate journeys, and the laptop one usually reads as Direct. That's the price of counting only what your own server saw — and it's why the platforms will always report more conversions than Loyalz does.
Which attribution model do you use?
Five, and you see all five at once: first touch, last touch, linear, position-based (40% to the first, 40% to the last, 20% split across the middle) and time-decay on a seven-day half-life. A channel that earns more under last touch than first touch is closing; the reverse is opening.
None of it is incrementality. Attribution shows the role a channel played on paths that converted, not what it caused. To learn what a channel actually added you need a holdout test, which Loyalz doesn't run. Ad Paths is part of the Shark plan.
How do you calculate CAC, and over what window?
Total ad spend in the period you selected, across every connected ad platform and converted to your store currency, divided by new customers in that period. A customer counts as new when their first-ever order — checked against your whole order history, not just the window — falls inside it. Guest checkouts with no usable identity are left out of the count and reported separately, so you can see what was excluded.
It's blended: one number across everything you've connected. There's no CAC per channel or per campaign in the product. Why that number belongs next to customer value.
Is your CLV a prediction?
No — it's a measurement, and a backward-looking one. It's the gross revenue (VAT included) your identified customers actually generated over the 24 months ending with the period you're viewing, divided by the distinct customers who ordered in that time. Because that window is anchored to the period you pick, the number moves when you change the period.
Beside it sit the CLV:CAC multiple and profit per customer, which is the plain subtraction. What you don't get: there's no cohort retention curve and no CAC payback report in the product. We've written about payback, but it isn't a screen.
What is POAS, and what does it need from me?
POAS is profit on ad spend: the gross profit a campaign produced divided by what it cost. Break-even is 1.0. On a 25% margin, a 4.0 ROAS — the number most agencies report as a good month — is exactly 1.0 POAS, which is zero profit. The longer version.
It needs cost data the ad platforms can't see, so you fill in one form: gross margin, payment fee, shipping and packaging per order, and optionally a return rate, an agency fee and a monthly tooling budget. Until you do, Loyalz computes no profit at all.
Is POAS estimated or real?
Estimated until your per-product costs are on file, and the product labels which. The estimate is printed on the cost settings page itself: gross profit = revenue × margin − revenue × payment fee − orders × (shipping + packaging). Every profit widget carries an "est." badge while you're on that basis.
A coverage bar shows how much of your last 90 days of order revenue has a real unit cost on file; at 80% the badge clears in your panel. Read it as exactly that — costs on file, not a promise that every past order was recomputed from them.
How fresh is this, and can you backfill my history?
Ad-platform numbers refresh on an overnight sync that re-reads the last few days, so late-attributed conversions get corrected in place rather than duplicated. Shop and CRM revenue refresh on the same overnight cycle — not hourly, not live. The path and attribution views are computed from the database each time you open them, so there’s nothing to wait for there.
Connecting an ad platform backfills about 180 days of spend on its own; deeper history, and order history from some shop connectors, is a load we run for you on request. Paths can’t be backfilled. They start the day tracking goes live on your shop.
What can I actually connect?
Twelve sources. Five ad platforms — Meta, Google Ads, TikTok, LinkedIn and Allegro — plus GA4, three store connectors (WooCommerce, Shopify and Sellasist), HubSpot for CRM revenue, the Loyalz WooCommerce plugin, and a Google Sheet of registered phone calls for B2B accounts, which we wire up for you.
Allegro brings spend only. Missing: Search Console, Bing, Pinterest, Snapchat, X, Amazon — and any email platform. Klaviyo or Mailchimp traffic shows up as an Email channel on the touchpoint path when your links are tagged, but the sends themselves aren't read. What each source brings.
How do I have to tag my ad URLs?
Put the ad's own id in utm_content. In Meta that's utm_content={{ad.id}}, set at ad level — that one parameter is what lets Loyalz tell you which creative was on a converting path rather than which campaign.
Keep the value short. Anything over 64 characters is rejected, and the order it belongs to loses its whole path — it shows up as Direct, with no error anywhere. Use the ad id, not a descriptive slug; utm_source and utm_campaign have 255 characters to play with.
Without ad-level tagging the channel and attribution views still work. The per-ad tables stay empty.
What does Ad Paths need before it shows anything?
Five things:
- A Shark plan — Ad Paths is gated there.
- WooCommerce with the Loyalz plugin connected. It's the only first-party capture there is, so no Shopify version and no tag-manager version.
- A consent banner the plugin can read. It ships pointed at CookieYes; on any other banner you name the cookie yourself, or nothing is recorded at all.
- Orders through the normal checkout. Manual, imported and subscription-renewal orders carry no path.
- Ad URLs tagged to ad level, for the per-ad tables.
And time. Paths start the day tracking goes live, so a shop that switched it on last week is still mostly Direct.
Does POAS account for returns?
Not by default. Base POAS is gross profit divided by spend, and refunds don't reduce it — a returned order still counts in full.
Put a return rate into your cost settings and you get a second metric, POAS after returns: (gross profit − returns) ÷ spend. It applies your estimated rate evenly across orders rather than matching individual refunds, so read it as a haircut on the estimate, not a refund ledger. Both sit side by side on any board. POAS vs ROAS.
Can I export the numbers?
CSV, straight from the chart. Line, bar, pie, table and funnel widgets each carry a download button; KPI tiles don't, and it disappears on a phone-width board. The Meta and TikTok label summaries export from the panel as well.
What doesn't exist: no CSV on Ad Paths, no PDF anywhere, and no scheduled email or Slack delivery. If someone needs the numbers regularly, send them a live report link instead of a file.
Why doesn't the channel table match my revenue?
Because it's participation-based. If a path touched Meta, Email and Organic, all three are credited with that order and its full value — so the Revenue and Orders columns both add up to more than the table's own total.
It answers which channels were involved, not who gets the credit. For a split that adds up, switch to the attribution view: each order's value is divided once across the channels on its path, under whichever of the five models you pick.
Neither view ties back to your store revenue. Both count only the orders the Loyalz plugin reports, and anything from before tracking went live sits in Direct.
What if my ad accounts bill in different currencies?
Everything is converted into your store's reporting currency before it's added up — spend, revenue and every profit metric. The rate is the ECB daily rate for the period you're looking at, taken from a stored rate table rather than a live lookup.
Two things to know. Counts — clicks, impressions, sessions — are never multiplied; only money is. And the campaign picker ranks campaigns by raw spend before conversion, so on a mixed-currency account its busiest-first ordering is approximate.
How far back can you load my history?
As far back as each platform will serve, and they differ:
- Meta — about 37 months.
- Google Ads — 730 days.
- TikTok, LinkedIn and GA4 — 365 days.
- Store orders — up to five years from WooCommerce and Shopify, two from Sellasist.
Connecting a source loads the last 180 days on its own; deeper than that is a manual run we do for you, and Shopify's first load is manual either way. Touchpoint paths can't be backfilled at all.
Ad platforms and data sources
Which ad platforms and data sources can I connect today?
Six advertising and analytics sources connect today:
- Meta Ads — spend, impressions, link clicks, purchases and purchase value, per ad per day
- Google Ads — campaigns, search ads, Performance Max asset groups, products, keywords, landing pages
- TikTok Ads — the same per-ad grain
- LinkedIn Ads — campaign performance, B2B accounts
- Allegro Ads — advertising costs only, Poland
- GA4 — sessions, conversions, revenue
Your store and CRM — WooCommerce, Shopify, Sellasist, HubSpot — and the Loyalz plugin's own first-party orders feed the same daily table: eleven sources in all. That shared table is what makes a blended number possible. See how the measurement works.
What does Loyalz read from my Meta ad account, and what can it change?
It reads your account structure — campaigns, ad sets, ads — and daily per-ad performance: spend, impressions, link clicks, conversion actions, conversion value and ROAS, plus the creative itself.
On an existing ad the only field it can change is the status. Where we switch the controls on for your account, you can pause or resume a single ad and publish an approved Creative Studio ad into an ad set you pick — always created paused, so it cannot spend until you turn it on in Ads Manager.
Budgets, bids, schedules, targeting, campaigns and ad sets are never touched, and nothing pauses an ad unless a person clicks.
Which Meta permissions do you ask for, and has Meta approved them?
Five. ads_read for performance data, ads_management to pause or resume an ad, and pages_show_list, pages_read_engagement and pages_manage_ads because an ad runs as your Facebook Page.
Meta has granted advanced access to ads_read, so connecting an ad account and reading your numbers works for any brand. The other four sit at standard access. We have not filed them for review yet, and we won't publish a date.
Pausing and publishing are switched on per account by our team, not by default.
What does Google Ads bring, and is Google's ROAS the same as mine?
Google Ads brings daily campaign spend, impressions, clicks, conversions and conversion value, plus five drill-downs: search ads, Performance Max asset groups, products, keywords and landing pages.
Google's ROAS is not your ROAS. Google reports every conversion action in one blended number, and its conversion value counts all of them — newsletter signups and phone calls included. Loyalz counts only the actions Google categorizes as a purchase as sales, so if that category is not set in your Google Ads account, Google purchases read zero until you set it.
What does connecting GA4 add?
GA4 adds sessions, conversions and revenue for the property you pick, split by source/medium and by paid campaign. That is the whole metric set — no audiences, no explorations, no arbitrary events.
Tag your Meta ad URLs with utm_content={{ad.id}} and each ad card also carries GA4's own view of that ad: users, engaged sessions, session duration, transactions and revenue. Without the tag those columns stay empty, and they run on a window ending today, so they will not match the Meta columns day for day.
Do you connect Google Search Console, Bing Ads, Pinterest or Klaviyo?
No to all four. There is no Search Console connector, so no keyword rankings and no organic positions anywhere in Loyalz. There are no Bing, Pinterest, Snapchat, X or Amazon Ads connectors either, and no email-platform connector — Klaviyo, Mailchimp and the rest included.
What you do get is traffic: visits from those places are classified as a channel in the touchpoint path your Loyalz plugin records, when your links are tagged and the visitor accepted marketing cookies. Microsoft click IDs are recognized. That is traffic, not spend, clicks or impressions.
What does TikTok Ads bring?
TikTok Ads brings spend, impressions, clicks, purchases, purchase value, lead-form submissions and video plays — per ad, per day, with campaign and ad group names. Ad groups are stored under the same dimension as Meta ad sets, so one ranking can hold both platforms.
Reporting only: there is no pausing and no publishing for TikTok. And a video play on TikTok means a play started while Meta counts three seconds, so the two view counts describe the same idea and are not comparable.
Is LinkedIn Ads available?
Yes, on accounts set to B2B. It brings daily campaign spend, impressions, clicks, website conversions, lead-form leads and video views, plus a ready-made LinkedIn board. The ads dashboard hides the LinkedIn tab on ecommerce accounts, because a lead channel makes no sense there.
Three limits worth saying out loud. LinkedIn gives this integration no revenue, so its ads rank on cost per lead and never on ROAS. Creative previews are off because LinkedIn refuses the permission — you see the creative name, the call to action and the serving state. And LinkedIn rarely issues a renewable authorization, so expect to reconnect about every 60 days.
Can I bring in numbers no ad platform has — a spreadsheet, or our own system?
Two narrow routes, both set up by us. If your team counts something by hand — registered phone calls per service is the case this was built for — we can read that Google Sheet so cost per real call sits beside cost per reported conversion. It needs one fixed layout and link sharing, and the values are month totals, so read them over whole months.
Second, we can call a REST endpoint you expose and turn your own confirmed sales into cost-per-sale columns on your ad cards. There is no general "connect anything" builder — tell us what you have.
What happens when a platform revises its numbers, or a sync runs twice?
Nothing double-counts. Each number is stored as one row per source, entity, metric and day, so a second sync of the same day overwrites the first instead of adding to it.
That is also how corrections land: every run re-reads the last three days, so late attribution and platform restatements replace the earlier figure in place. Meta keeps attributing conversions for hours after the click, which is why today's ROAS moves all day — and why nothing here is real time.
Why does a large account take a while to load its history?
Because every platform caps what it will hand over at once. Connecting an ad platform starts a background backfill of roughly 180 days; deeper history is a run we do for you.
Meta history comes in 90-day windows that split themselves in half when Graph refuses the size, TikTok accepts 30 days at a time, LinkedIn 180. Meta also applies per-account rate limits, so a big account with years of history takes hours rather than minutes. If a run comes back short, ask us to re-run that window — the rows overwrite in place.
What happens if a connection expires, or I disconnect a source?
Google Ads renews its own authorization before it expires. Meta and TikTok show an expiry date in Settings → Integrations and re-offer the connect button once it passes; LinkedIn usually needs a manual reconnect. Your history stays put while a connection is down.
One honest limit: the panel does not flag a connection that has quietly lapsed — it still reads "connected". If a channel's numbers stop moving, tell us.
Disconnecting Meta deletes every Meta-derived row — metrics, creatives, pause and publishing history — and switching ad accounts means disconnecting first, so talk to us before you do. Other sources keep their history; data deletion lists every route.
Can I split results by placement, age, gender or device?
No. Loyalz reads each platform at one grain — ad by day on Meta and TikTok, campaign by day on LinkedIn — and never asks for a breakdown, so there is no placement, age, gender, device, region or Facebook-versus-Instagram split anywhere in the product.
Google is the exception in shape, not in kind. It drills into search ads, Performance Max asset groups, products, keywords and landing pages — still spend and results, not audiences. For a placement or demographic read, stay in Ads Manager.
Can I choose the attribution window — 7-day click, 1-day view?
No. Loyalz never sends an attribution setting to Meta, Google, TikTok or LinkedIn, so every conversion number is whatever that ad account's own default returns.
Change the window in Ads Manager and Loyalz follows it on the next sync. The upside of having no second dial is that there is no third version of the truth — the basis is the one your team already set. If you need two windows side by side, that is Ads Manager's job.
Does Loyalz write anything to my Google Ads account?
Yes — two actions, both reversible, and both on agency accounts rather than every account. You can exclude a single product from a Shopping or Performance Max listing group, and you can pause a keyword while adding it as an exact-match negative, so the same search stops costing money through a broad match you left running.
Every action is logged with enough state to undo it from the panel. Nothing else is written: budgets, bids, campaigns and ad copy are read-only, and no rule pauses anything in Google for you.
How often does the data refresh?
Ad platforms refresh overnight, on a rolling three-day window so a late conversion still lands. Your shop and CRM refresh on the same overnight cycle — not live, not hourly.
Which screen you are on matters too. The Google tab reads Loyalz’s own database and prints the date the data runs to instead of implying live. The Meta, TikTok and LinkedIn tabs call the platform live for anything beyond the last two weeks, painting first from the overnight snapshot for Last 7 days, Last 14 days, This month and Last month. Pick a longer window and you wait for the platform.
Do I need to connect my shop, or is ad data enough?
Ad data alone gives you what each platform says about itself. Blended ROAS and POAS divide real revenue by total ad spend, so they need your store or CRM connected too — WooCommerce, Shopify or Sellasist.
Without one, every store-revenue metric reads zero rather than estimating. One naming trap worth knowing: the ready-made Blended ROAS reads CRM revenue, so on WooCommerce or Shopify use Store ROAS instead — same idea, your shop's revenue over total ad spend.
Can I connect two ad accounts, or several brands?
No — one ad account per platform and one GA4 property per Loyalz account. The panel keeps a single connection per platform, so a second Meta or Google account means a second account in Loyalz.
That is also how multi-brand works: each brand gets its own account, its own connections and its own dashboards, and agencies switch between client accounts from one login. Tell us how many brands you run and we set the structure up with you.
Will I know if a sync only half-works?
Not reliably, and that is worth saying out loud. Each account and each source syncs independently, so one broken connection never stops the others — but a run that fetched half its pages writes what it got and still shows the source as connected.
So the failure mode is a number that looks low, not an error message. If a channel's figures stop moving or a day looks thin against your own reporting, tell us and we re-run that window.
What currency do the blended numbers use?
Your reporting currency. Each ad account keeps its own, and Loyalz converts with the European Central Bank daily rate for the period, so a euro account and a złoty account can sit inside one blended number.
Two limits. When a rate for that pair is missing, the figure is left unconverted, with nothing on the dashboard to flag it. And a WooCommerce store that sells in several currencies at once adds them together without converting, so tell us if that is you and we set it up with you.
Can I connect Shopify, and does it backfill like the others?
Yes. In Shopify's Dev Dashboard create an app with the read_orders scope, install it on your store, then paste its client ID and secret plus your myshopify.com domain into Integrations in Settings. Loyalz then pulls daily revenue, orders, returns and the value of those returns.
It does not backfill on connect, unlike the other sources — ask us and we run the import for you. One limit on that import: refunds against orders placed before the window are not picked up, so the earliest days understate returns.
Creative: ranking, analysis, Studio
Which ads does Ad Ranking call winners?
Ad Ranking sorts individual ads — not campaigns — into Winners, Iterate and Losers against a threshold you set. Choose the metric (ROAS, CTR, CPL, CPM or engagement rate), the value you consider good, and a minimum spend. Winners clear the threshold, Iterate sits within 20% of it, Losers fall further than that.
It isn't a black-box score and it isn't AI. Change the threshold and the verdicts change — you decide what good looks like at your margin. Ad Ranking sits in Acquisition and needs the Shark plan.
What about an ad that just launched?
It stays out of the ranking until it has spent enough. Only ads above the minimum spend you set get a verdict — 100 by default, in your ad account's currency — so a day-old ad with two clicks can't land in Losers by accident.
On cost-per-conversion metrics like CPL or CPS, an ad that cleared your spend floor with zero conversions counts as a Loser: it spent and returned nothing. Meta also keeps attributing conversions for hours after a click, so a young ad's ROAS is the number most likely to move. A verdict is a prompt to look, not proof the creative is finished.
Does Loyalz say why an ad wins?
It tags what the creative actually says. Claude reads each ad's copy and its preview image and returns a fixed set of tags — hook, offer, CTA, tone, visual style, audience, claims and emotions — so "what do our winners have in common" is answerable on content, not only on numbers.
Tagging covers the best and worst three ads, ranked by ROAS — by cost per lead if you sell B2B. Their hooks appear on Mission Control's best-and-worst list and in the written read above it; the AI assistant gets the whole tag set. Creative is read for Meta and Google ads; TikTok has per-ad numbers but no tagging.
Do you analyze video ads?
Not frame by frame. A video ad is read from its preview frame plus the copy — enough to tag the hook and the offer, not enough to tell you what happens at second six.
The numbers go deeper than the tags. Open any video ad's detail view and you get hook rate (3-second plays divided by impressions — did the opening stop the scroll) and hold rate (ThruPlays divided by 3-second plays — how many stayed past the hook).
Both follow Meta's own definition of a view, so don't compare them with TikTok's.
Can I pause a losing ad from Loyalz?
Not on your own, yet. Pausing writes to your live Meta ad account, so it stays switched off until we enable it for your account, and it is always available on accounts our team runs. Meta has also not granted Loyalz general access to its ad-write permissions, so today this is a managed feature — ask us to turn it on.
Once it's on, you can pause a single ad or everything the current ranking flags. This control only ever switches an ad on or off — never budgets, targeting, schedules, or campaign and ad set status.
Can I use Creative Studio today?
Only if we've switched it on for you. Creative Studio runs as an invite-only pilot: the Shark or Whale plan is the floor, and then we enable it account by account. Until we do, the page says "Studio is in pilot" and nothing generates.
So Shark is necessary, not sufficient. Ask on a demo call and we'll tell you where the pilot queue stands.
What does Creative Studio generate?
Static ad images, video ads of 8 to 48 seconds in 16:9 or 9:16, and the ad copy for static creatives. One brief returns exactly five concepts — each a short strategy memo with an angle, a hook pattern and a layout — and you render up to four image variants of the concepts you pick.
The copy (primary text, headline, description) is written from the finished picture, not from the brief, because image models redraw and reinterpret on-image text. Video gets no copy written for it, and Studio does not build carousels.
Can I see the prompt before I pay?
Yes, on static runs. Before a single image is bought, Studio shows you the exact prompt it will send and the exact reference images riding with it, and both are editable. Looking and editing cost nothing; approving is the step that spends credits.
Video works differently today. A video run goes from concepts straight into a paid storyboard round, so there is no prompt preview — you can edit the shot list and the animation prompt, but you are editing after the credits are reserved.
What does a run cost, and how long does it take?
Everything is priced in credits, and we set your balance when we switch Studio on. Five concepts cost 45, one image 8 to 48 by model, three copy variants 10. Video is billed per second of output — 7 to 126 credits a second — so an eight-second spot runs 56 to 1,008. Longer videos render as 8-second segments, and every keyframe round adds another 45 plus its frames: a 48-second spot is six segments, not one.
Timing: concepts in a minute or two, images in under a minute each, video renders in tens of minutes. A step that fails is refunded. These are design points, not a service-level promise.
Can Studio publish the ad into Meta?
Only on accounts we manage today. Publishing creates an ad in your live Meta account, so it needs write permissions Meta has not granted Loyalz in general — ask us to turn it on.
When it runs, every ad Loyalz creates is paused — it enters Meta's review and spends nothing until a person switches it on. Meta's creative enhancements are opted out, so the image and words you approved are what runs.
Publishing covers static creatives — a finished video you upload to Ads Manager yourself. The target ad set must already hold at least one ad: the only place Loyalz can read which Facebook Page the ad runs as.
Where do my finished creatives live?
In Loyalz storage, under your account, and you can take them out whenever you like — single files, or a ZIP of everything you have selected, videos included. Editing a creative saves a new version; the original stays where it was.
One caveat: the file URLs are unguessable but not password-protected, so treat a copied link as public. The panel itself is account-scoped — another merchant's asset is a 404, not a peek.
The "generated with AI" stamp is manual. You apply it when you want it; Loyalz does not decide whether you need it.
Does Ad Ranking work on TikTok and Google too?
Meta and TikTok each get their own Ad Ranking page, with the same three buckets and a threshold you set. Google is treated differently: its ads show up on the Google tab of Mission Control as top and flop performers, not as a ranked verdict.
There is no single blended list across platforms. That is on purpose — a ROAS threshold that means "winner" on Meta rarely means the same thing on TikTok, and a Performance Max asset group is not an ad in the same sense. Compare platforms in Insights instead, where every source lands in one metric layer.
Can I set a rule that pauses losing ads automatically?
No. Pausing on a schedule is not something you can switch on — you set the threshold, Loyalz flags the losers, and a person presses the button.
What you do get is one press for the whole cut. The bulk pause button counts every ad the current ranking flags, not only the ones scrolled into view, and skips ads that are already paused. Pausing itself has to be enabled for your account first, so ask us before you plan around it.
How fresh are the numbers behind a verdict?
Month-to-date paints from an overnight snapshot and then refreshes live in the background. Every other period — last 7 days, last month, a custom range — waits for a live call to Meta, so it is slower and always current.
Today's numbers move. Meta keeps attributing conversions for hours after the click, so an ad that looks like a loser at noon can clear your threshold by evening. Read a verdict as a reason to look, and read it against store revenue rather than clicks.
Can I send an Ad Ranking view to someone without an account?
Yes. Create a share link and the cut freezes into it — the metric, the threshold, the minimum spend, the bucket and the period all travel in the link, so the recipient opens exactly what you were looking at rather than a default view.
Links are revocable and revoking takes effect on the next request. Anyone holding the link can open it: there is no password and no sign-in, so treat a shared link as public and rotate it when the engagement ends.
Who processes my brand files and briefs?
Two vendors. Anthropic's Claude does the text and vision work — the five concepts, the image prompts, the ad copy, and reading the graphic on a winning ad. Anthropic does not train on API inputs or outputs.
kie.ai routes every image and video model behind Studio, so Loyalz sends nothing to those model vendors directly. Your reference files stay in Loyalz storage and are handed over as links to it — links that work for anyone who has them.
The recipient list is in the privacy policy.
Can I start from an ad that is already winning?
Yes, on Meta. Press "New creatives" on a winner in Ad Ranking and Studio carries three things into the brief: the ad's copy, its tags — hook, offer, CTA, tone — and a fresh read of the graphic itself, including the text burned onto the image that your post copy does not contain.
You toggle the copy and the graphic in or out before generating. TikTok winners do not work this way. The button shows up on the TikTok ranking too, but the lookup is Meta-only and comes back empty.
Do edits and re-renders cost credits again?
Yes. There are no free revisions — every edit is a fresh paid render at the model's per-image price, 8 or 12 credits depending on which you pick. The original is not overwritten: the edit is saved as a new version beside it.
Asking for a whole concept again costs more than the pictures, because the 45-credit concept fee is charged a second time — two variants at 36 credits each comes to 117. A render that fails is refunded, but the concept fee on a run you abandon is not.
What is a credit actually worth?
Credits are Studio's unit of account, and we set your balance when we switch Studio on for you. Every action has a fixed price — 45 for a set of concepts, 8 to 48 for one image, 10 for three ad-copy variants — so you can cost a run out before you approve it. Video is priced per second, from 7 to 126, so a long spot costs many times a static.
Topping up is not self-serve yet. Ask on a demo call and we'll put a price on credits alongside your plan.
Can Studio publish to TikTok, Google or LinkedIn?
No. Meta is the only platform Loyalz can push an ad into, and there it publishes static creatives only — a film goes into Ads Manager by hand, the same as every other platform's ads.
Publishing also needs write permissions on the Meta account, which today means accounts our team manages. Downloading has no such limit: single files, or a ZIP of everything you selected, videos included.
Do I have to label an ad as AI-generated?
That is your call, not ours. The EU AI Act is what usually prompts the question, and Loyalz deliberately does not decide whether it applies to you — the label is a manual action you apply when you want it, and it costs nothing.
What Studio does is composite the stamp onto the picture: your own wording up to 60 characters, white, black or any hex color, bottom-left or bottom-right, horizontal or vertical, four sizes. It saves as a new version, so the unlabeled original stays. Static images only — on a video you add it yourself.
The loyalty programme
What can I actually build with the loyalty side?
You build quests. A quest is a container for one or more tasks — things you ask a customer to do — and finishing one pays out any combination of experience points, coins in a name you choose, and a reward pulled from a pool you load yourself.
Points climb experience levels and rank people on leaderboards. Coins become a discount at your checkout. The loyalty half is part of the Whale plan, which also includes everything in the plans below it — see Retention and Pricing.
Which tasks can I ask customers to do?
Four, each checked automatically — there's no approve-by-hand screen.
- Register — completes when the customer signs in to the programme from your store.
- Buy — completes when your store reports a paid order.
- Spend — checks that order first, then their total spend inside the quest's dates.
- Anything else on your store — a newsletter sign-up, a booking, a quiz: drop a one-line snippet on the page that means "done". It counts only for customers who are signed in and have already joined that quest.
Social tasks are not available. Instagram, TikTok and X are switched off in the task list, and nothing marks a Facebook comment complete.
What's the difference between points and coins?
Points are a score; coins are money. Points climb levels and rank people on leaderboards — a customer can't spend them, and they never expire.
Coins are a balance carrying whatever name you give it, and a customer turns them into a discount at your WooCommerce checkout, capped by a maximum share of the cart you set. Two limits: redemption needs your cashback settings switched on, even for coins earned from quests, and it works in euro, złoty or dollars only.
How do levels and leaderboards work?
Levels are thresholds. A level has a name, a badge, the total points needed, and optionally a minimum that has to come from purchases; reach it and the coins or reward attached pay out once. Levels never demote, and once created they can only be edited, not deleted.
A leaderboard scores points over a date window, across every quest or only the ones you pick, with prize bands by position. The public ranking shows position and points — not names.
How does a reward reach the customer?
Instantly and digitally. Points and coins land on their balance. A reward is pulled from the pool you loaded, shows up in the widget in your store and on their Loyalz account page, and arrives as an e-mail with a link — usually a discount code they use at your checkout.
The pool is fixed at the size you set. When it runs dry, a customer who finishes that quest gets nothing for that part of the reward, quietly — no error, no e-mail, no alert to you. Watch the remaining stock.
Do I have to make the discount codes myself?
No — Loyalz can create them inside WooCommerce for you. Give it a WooCommerce REST key pair with read and write access, and it generates codes, creates them as real single-use coupons in your store, and attaches them to the rewards in a collection. Up to 500 per run, and running it again only tops up rewards that still have no code.
It covers percentage and fixed-amount discounts. For anything else, upload a CSV of codes you made yourself.
When can a customer spend what they've earned?
Right away, unless you hold it back. Your general settings carry a delay in days: coins earned from a purchase are created at once but sit as "pending" and can't be spent until that many days pass, which is how you cover your returns window. Leave it empty and everything is spendable immediately.
A reward held back the same way doesn't appear in the widget at all until it's released. Points and coins never expire; a reward offer can carry an end date, which does.
Can I run a refer-a-friend programme?
No, not one that pays the referrer automatically — don't plan a launch around it.
What works is simpler: hand a customer a single-use discount code as a reward and let them pass it on. The code works at your checkout like any other coupon. Crediting the person who shared it is a manual call on your side for now — if referrals are the reason you're looking at Loyalz, say so on the demo.
What does my customer see, and how do they sign in?
Two places. In your store, a floating widget shows their level and points, the points needed for the next one, the quests open to them with a join button, the rewards they hold, and their coin balance with a redeem button. They also get a page at marketplace.loyalz.io with your quests and leaderboards.
Signing in is Google or a numeric code e-mailed to them — no password, no form to fill in. Everything is responsive web in English and Polish; there's no app to install, and a few newer screens still read English for a Polish visitor.
Can I put my own branding on it?
Partly, and it's worth knowing where the line falls. In your store the widget carries your name and logo, a launcher icon you upload, your own intro text for signed-out visitors, and your own name for the coins. The cashback messages in cart and checkout stay off until you switch them on, and they carry Loyalz's logo.
Your public page lives at marketplace.loyalz.io/your-brand, where you control the cover image, logo, name, description and slug — the header, footer and page title are Loyalz's. There's no custom domain and no color theme.
What data do you hold on my customers?
An e-mail address, an internal ID, a language preference, and what they've done in your programme: points, coin balance, level, which quests they joined and which rewards they hold. Loyalz never asks a member for a name, a phone number or a password.
Deletion is handled on request, not with a button in the member area — a member writes to you or to Loyalz. The e-mail address can't be changed there either, because it's how they sign in, so that goes through support too. See Privacy and Data deletion.
How do I know the programme pays for itself?
You get a members-versus-everyone-else split, not a return figure. Performance reports sales value, orders, average basket value and revenue per customer for shoppers in your programme and for the rest of your store, over any date range. Per quest you get joins, unique joins and completions; per reward collection, how many rewards went out each day and how many people hold one.
Nothing here proves the programme caused the difference. There's no per-customer export and no task-by-task drop-off. New versus returning customers and 24-month customer value sit in Acquisition.
What do I need in place before launch?
A WooCommerce store. The widget, the checkout redemption and the order reporting all ship in the Loyalz WordPress plugin, and there's no version for other platforms. Then:
- WordPress 6.1 or newer, the plugin installed and paired with your API token and app ID, and the widget switched on — it arrives hidden.
- The same currency in your store and in Loyalz; the widget stops if they differ.
- Your cashback settings saved once, even if you only hand out rewards.
- One reward collection, holding enough codes for the volume you expect.
No ad account needed. Publish a quest, then press "Update Collections" in WordPress — the shop works from a cached copy.
How much does the loyalty programme cost?
€399 a month, net of VAT. Loyalty sits in the Whale plan — quests, points, coins, experience levels, leaderboards, reward collections and a public page for your brand all come with it.
Pay twelve months up front and it's €319.20 a month. Whale includes everything in the plans below it, so the ad-measurement side comes with it too. There's no free trial and no free tier. Pricing has the full comparison, and a demo is how you start.
How do customers earn coins on an ordinary order?
Cashback. Set a rate in Settings → Cashback and every qualifying order pays coins in proportion to what the customer spent, with no quest involved. You can give it a start and an end date.
Three limits. The buyer has to be a signed-in member — guests earn nothing. An order that used a reward code or spent coins earns no cashback. And the Cashback settings have to be saved once before the widget works at all, even if you leave cashback switched off.
What happens if a customer returns or cancels an order?
Nothing is taken back. A refund is reported to Insights, but the coins and the rewards that order earned stay on the customer's balance. A cancelled order isn't reversed on either side — it still counts as a sale.
So set the reward delay in Settings → General. Coins from a purchase are created straight away but sit as pending, unspendable, until the days you set have passed. There's no delay out of the box. Size it to your returns window — it's the only protection you get.
Can I change a quest after it's live?
Partly. You can edit the name, description, dates and rewards of a published quest, hide it from your shop, and delete it — anything a customer already earned stays with them.
Three things you can't do: add a task to a quest that's already published, put it back into draft, or safely remove a task from the middle of a multi-task quest. If the shape of the quest turns out wrong, hide it and publish a replacement rather than reworking it.
Do quest start and end dates work exactly as I set them?
Not exactly. Check all four of these before you schedule anything around a launch hour.
- Dates run on a fixed UTC+2 clock. There's no per-brand time zone, so convert yours first.
- An end date takes the quest off your brand page but not out of the shop widget. Hide the quest yourself when it finishes.
- A quest with no end date never reaches your brand page at all.
- Draft quests are listed on your brand page. Draft is not private — build in a hidden published quest instead, or accept that it's visible.
When do leaderboard prizes actually get paid?
Not the moment the end date passes. The ranking itself is live — it's recomputed every time somebody opens the board — but paying out the prize bands is a separate settlement step, so tell your customers "shortly after it closes", never a specific hour.
Two practical rules. Agree the timing with us before you announce a leaderboard, and put more rewards in the prize pool than you expect winners — settlement stops when a pool runs dry.
What happens to a running programme if I move off the Whale plan?
It keeps running, which is the trap. Leaving Whale locks the panel screens — quests, experience levels, leaderboards, reward collections, cashback settings — but it doesn't switch the programme off. Published quests stay in your shop, customers keep joining them, and rewards keep paying out.
Wind the programme down before you downgrade, not after. Hide or delete your live quests and turn cashback off while you can still reach those screens. Changing plan isn't self-serve either, so talk to us first.
Can I import my members and their balances from another loyalty tool?
No. There's no bulk import — not for members, not for point balances, not for coin balances. Everybody starts at zero on their first sign-in, and the only file you can upload into the loyalty side is a CSV of discount codes for a reward collection.
Plan the launch around that. Set your experience levels so the first few orders move somebody up quickly, and send your best existing customers a welcome code from your own e-mail tool on day one. If you're migrating a big programme, raise it on the demo — it changes the design.
I published a quest and it isn't showing in my shop. Why?
Your shop is working from a cached copy. The plugin keeps your quests, levels, coin name and reward collections in WordPress so it never has to call us while a page renders, and that copy only refreshes when somebody presses "Update Collections" in the Loyalz menu. There's no timer and no webhook.
Press it after every structural change — a new quest, a new level, a renamed coin, a new reward collection. Your customers' own balances and rewards don't need it; those refresh when they sign in and at checkout.
Can other brands on the platform see my customers?
No. Members, orders, points, coin balances and reward history are stored against your brand, and every query resolves the brand from the signed-in account first. No other brand can browse, search or export your customer list.
Two things reach wider, and you should know about both. The account area your customers use on the marketplace lists every brand that has set up experience levels, with each level's threshold and reward, so your level design is readable by members of other brands. And a shop holding a plugin key can check whether an e-mail address belongs to a Loyalz member anywhere on the platform — not which brand it belongs to.
Your store and your own data
Which store platforms does Loyalz connect to?
Three: WooCommerce, Shopify and Sellasist. WooCommerce connects two ways — the Loyalz WordPress plugin, or read-only REST keys with nothing installed on your store. Shopify and Sellasist are server-side, read-only connections that pull orders, revenue and returns.
Allegro brings in advertising costs only, and HubSpot brings closed-won deal revenue for B2B. There's no connector for BaseLinker, PrestaShop, Magento, IdoSell, Shoper, Wix or BigCommerce — none of them appears anywhere in the product today. A Sellasist connection needs a setup step from us before your order statuses map correctly.
What does the plugin change on my store?
By default, almost nothing your shoppers can see. A fresh install adds a Loyalz menu in wp-admin and one database table, and ships with the widget and every cashback message hidden — your storefront looks exactly as it did.
Silently, it reports each completed order with line items, SKUs, tax, shipping, payment method and unit cost when a Cost-of-Goods plugin holds it, and keeps the visitor's marketing path in two first-party cookies once your banner allows it.
Switch the loyalty side on and shoppers get a corner widget plus discount lines at checkout.
What does the plugin need, and will it slow my store down?
WordPress 6.1 or newer, WooCommerce 6 or newer, PHP 7.3 or newer, the cURL extension, outbound HTTPS to our API, and a working WP-Cron — that last one is what sends your orders. It doesn't yet declare HPOS compatibility, so WooCommerce lists it as incompatible and won't let you turn HPOS on while it's active.
On speed: calls to us give up after 10 seconds, funnel events don't block the page, and the order report is handed to WordPress's scheduler so a slow reply can't hold up your payment gateway. Ordinary visitors get no WooCommerce session, so your page cache keeps serving them.
What happens if Loyalz is unreachable?
Your shop keeps selling. Checkout isn't blocked, orders complete normally, and the cashback lines fall back to the last rate we sent. Every call out to us gives up after 10 seconds.
The honest limit: the order report is attempted once, on a background job, with no automatic retry. An order placed during an outage can be missed entirely. Connect the read-only REST keys as well and the order sync picks the revenue back up — the ad it came from, and any cashback for it, are gone either way.
Do refunds and returns show up in my numbers?
It depends how your store is connected. With the WooCommerce plugin, a refund — full or partial — is reported with its amount and corrects profit and customer economics. The revenue line still counts the original order, since that comes from the purchase report.
Shopify and Sellasist bring returns and return value across as metrics of their own. The read-only WooCommerce connection brings neither — it reads paid orders only, so a refund either leaves the order counted at full value or makes it vanish from that day, and nothing is recorded as a return.
Refunds correct reporting. They don't withdraw points or cashback already awarded.
I sell in more than one currency. Does that work?
Not on its own — tell us first. Loyalz reports one brand in one currency. If your store currency and your Loyalz currency differ, the WooCommerce plugin stops with a red warning and the loyalty widget won't render.
Marketplace orders that arrive in another currency through Sellasist — Allegro CZ or HU, say — are converted to your reporting currency at the European Central Bank rate for the order's date. A shop that itself checks out in several currencies is a case we set up with you.
Can I connect two stores to one account?
One store per platform, per brand. Run three shops and you get three brands, each with its own connection and — for WooCommerce — its own plugin install and its own access token. A second WooCommerce or Shopify connection on the same brand doesn't add a store; only the newest one syncs.
One Sellasist account can feed two brands, split by sales channel. Each brand signs in separately unless we approve an agency account for you — then one login switches between them. A custom metric can sum across accounts you can reach, so a group total is possible without merging anything.
My store isn't on any of those. Can I still use Loyalz?
Partly. Connect your ad accounts and GA4 and the whole spend side of Insights works. But without one of those three order sources there's no store revenue in Loyalz, so no ROAS on real sales, no cost per new customer and no customer economics.
There's no CSV upload, no bring-your-own-API connector and no tag-manager route that stands in for a store connection. For B2B we can call a REST endpoint you expose and turn sale and qualified-lead confirmations into columns on your ad cards — that one we set up with you.
Is there an API, and can I get my data out?
Yes to an API, no to webhooks. Your store can push orders, refunds and funnel events to the same REST API the WooCommerce plugin uses, authenticated with one access token per brand from the panel. Nothing is pushed back to you, and there's no SDK, no sandbox and no OpenAPI schema.
For getting data out: every chart, table and funnel card has a CSV download, though the single-number KPI cards don't, and the MCP endpoint lets an AI client query your metric layer directly. There's no PDF export and no scheduled email report.
Can I run the loyalty program on Shopify or Sellasist?
No. The loyalty half — the storefront widget, points, cashback and discounts applied at checkout — ships only in the WooCommerce plugin. There's no Shopify app and no Sellasist widget.
Connect Shopify or Sellasist and you get the measurement half: revenue, orders, returns, store ROAS, POAS and customer economics. Your shoppers see nothing and your checkout doesn't change.
If Retention is the reason you're looking at Loyalz and your store isn't on WooCommerce, say so early — it changes what we can deliver.
Where do I get the plugin, and how do I update it?
From us, not from wordpress.org. You get a zip at onboarding, install it under Plugins → Add New → Upload Plugin, then paste the access token and App ID from Settings → Plugins in the panel.
Updates work the same way: we send a new zip, you upload it over the existing install. There's no auto-update and no update notice in wp-admin, so a store can sit on an old build for months without anyone noticing. Ask us which build is current rather than assuming you're on it.
How much of my history do I get when I connect?
180 days, automatically. Connecting WooCommerce, Sellasist, Allegro or HubSpot starts a background import of the last 180 days, so your revenue and orders charts fill within minutes — longer on a big account.
Shopify gets no automatic import. We run that one by hand when you connect, and anything deeper than 180 days too.
Customer-level history works differently. New versus returning, CLV, cost per new customer and real-cost profit are built from order-level data, which starts as a rolling week until we backfill it for you — ask for it at onboarding.
Does Loyalz write anything back to my store?
One thing, and only when you ask for it: discount codes in WooCommerce. That's what the Write half of the REST key is for — Read alone is enough if you only want revenue in Insights. One run creates up to 500 single-use codes.
Everything else is read-only. Shopify, Sellasist, Allegro and HubSpot connect with read scopes, and nothing in Loyalz edits an order, changes a price, touches a product or writes to a customer record.
What happens to my data if I disconnect a store?
Disconnecting deletes the credentials and keeps the numbers. One click in Settings → Integrations removes the API key or token for that source, and the history already synced into Insights stays — your charts don't grow a hole where the connection was.
Deleting the data itself is a separate request. The routes are on the data deletion page.
On the WordPress side, deactivating the plugin leaves its settings and its one database table in your install, and nothing is sent to us when you uninstall it.
Why don't the numbers match my WooCommerce reports?
They won't line up to the cent, and three differences explain most of the gap. Store revenue is the gross order total, shipping and tax included; only completed, processing and on-hold orders count; and days are bucketed in your shop's timezone.
Orders reported by the plugin carry the date the report reached us, not the date the order was placed, so an order at 23:58 can land on the next day.
A bigger gap than that is worth a look — send us the date range and we'll trace it.
How often does my store data refresh?
Overnight, on a rolling window that re-reads the last few days rather than only yesterday — so a status change or a late refund overwrites the old figure instead of leaving it stale. It is not hourly and not live.
One limit worth knowing: the panel shows a source as connected but does not show sync health. If a number stops moving, tell us rather than waiting for a warning.
Can I rotate the plugin access token?
Not yourself — there's no rotate button in the panel today. Treat the token like a password: it authenticates as your brand against the store API, so keep it in your WordPress install and out of e-mail, screenshots and shared docs.
Need a new one, or think somebody has seen the current one? Write to us the same day and we'll handle it by hand.
I have 3,000 SKUs. How do I get unit costs in?
Import a CSV — or let the connection do it. Sellasist and Shopify send a unit cost with every order line, and the WooCommerce plugin sends one if you run a cost-of-goods plugin.
Otherwise the cost page takes 5,000 rows per upload: sku, cost, and an optional valid-from date. A Sellasist or ProfitMetrics export works as it is. The table on screen lists only your top 300 SKUs by 90-day revenue, so use it to spot-check, not to fill 3,000 rows.
Date your costs — a row with no valid-from counts from today forward, and older orders keep using your default margin.
Does the plugin work with the block cart and checkout?
Mostly. The cashback notices, the discount line and order reporting all work on the block cart and checkout.
One gap is worth knowing before you switch: on the block checkout the plugin doesn't carry the signed-in Loyalz identity onto the order, so the purchase is matched on the billing e-mail instead. A member who joined with one address and types another at checkout may not be credited for that order.
On the classic checkout the identity carries across.
AI and agents
Is there an AI assistant in the panel?
Yes — a chat assistant sits behind the floating button in the bottom-right corner of the panel. Ask it about spend, clicks, orders, revenue, ROAS, CPC or CPL over any window up to a year, broken down by channel, campaign or ad set and compared week over week or year over year.
It also ranks individual ads, reads what your winning creatives say, and traces the touchpoint paths customers take before they buy. It answers in the language you write in. It's marked Beta.
Where does the assistant get its numbers?
From the same query engine that draws your dashboard widgets. The assistant has four read-only tools and no direct access to the database, so it can only read what a widget could read, always scoped to your account.
It can still misread what a number means — it's a language model, not an auditor. It's told never to invent a figure, to name the date range and channel behind every one, and to say plainly when a range is empty. Rebuild any answer as a widget to check it.
Can the assistant change my campaigns or spend money?
No. All four of its tools are read paths — it reads and explains, it never acts. It can't change a budget, pause an ad, publish anything or edit a setting.
Nor can anything else in Loyalz move your money. The terms list every write Loyalz may make into a connected ad account, and setting, raising, lowering or reallocating budgets and bids is explicitly not among them — see the brand terms.
What is the Agents API, and how do I connect my AI client?
The Agents API is an MCP server: it lets your own AI assistant read your Loyalz account and build dashboards in it. Find it under Settings → Agents API. Create a named API token, copy the server URL beside it, and paste both into your client's MCP configuration.
Any MCP client that can reach a remote SSE endpoint with a bearer token connects; the example the panel itself names is an n8n agent. It's included from the Fish plan up. More on the idea in AI agents and MCP.
What can an agent do once it's connected?
Read your measurement data and build with it. Eleven tools cover the measurement side: discover which metrics and channels actually have data, run any aggregation a widget can run — up to 366 days per query — create dashboards, add KPI, line, bar, pie and table widgets, and define calculated metrics from a formula.
Whatever it builds appears in your panel straight away. It has no access to your ad accounts: it can't spend, move budget, or create, pause or publish an ad. Deleting a dashboard stays panel-only.
Are my conversations with the assistant stored?
No. The assistant is stateless: your browser sends the conversation back with each question, and nothing is written to a transcript on our side. Reload the page and the thread is gone.
What we do keep is how much each question used, so the Usage page adds up. The written summaries and the creative tags behind the lines beside your top and underperforming ads are stored too — cached, so we reuse them rather than pay to write them again.
Can I turn the AI features off?
Partly — and here's the honest split. The assistant and the Agents API are opt-in: don't open the chat, don't create a token, and no model is called on your behalf.
Three things run on their own: the written summary on your ads dashboard, the creative tagging that feeds it, and the written read on your touchpoint paths (Shark and up). There's no switch for those in the panel — ask us and we turn them off for your account. Every number, dashboard and report works without them.
How do I revoke an agent's access, and is there a log?
Delete the token in Settings → Agents API and any client holding it is refused at its next connection. Each token belongs to exactly one account, and every tool filters on that account — reads are scoped to it and writes re-check ownership before touching anything.
The limits, out loud: tokens don't expire, they carry no per-tool scopes, and the full value stays readable in the panel. Treat one like a password, make one per integration, and delete the ones you stop using. Changes an agent makes to dashboards, widgets and calculated metrics are logged against your account, readable over the API — there's no screen for it yet.
What does Ask AI cost, and do I need credits?
No credits — the assistant is part of your subscription, and it never touches Creative Studio's credit balance. The Agents API costs nothing on our side either; your own assistant's subscription pays for the thinking.
What there is instead: a monthly usage ceiling per account. Reach it and the assistant stops before spending anything more, then resets at the start of the next month. The Usage page, linked from the assistant itself, shows where you stand. Questions your agency asks on your account never count against your ceiling.
What can't the assistant answer?
Anything outside your ad and store measurement. The assistant has four read tools: the metric layer, per-ad ranking with the creative copy attached, ad-path attribution, and a catalog of which metrics you actually have data for. That is the whole surface.
It can't see invoices, support history, your product catalog or your loyalty program. Ask what your best ad spent last week and it reads your own rows. Ask what you owe us and it has nothing to read.
Which channels do the per-ad breakdowns cover?
Not every channel, and the gaps change how you read an answer:
- Per-ad ranking — Meta, TikTok, Google Search and Performance Max.
- Creative copy and thumbnails — Meta and Google. TikTok syncs ad performance but no creative, so the assistant can rank a TikTok ad and not tell you what it says.
- Ad set and ad group breakdown — Meta and TikTok.
Every connected source reports at channel level. The breakdowns above go deeper only where the platform hands us the rows.
What does the assistant need to answer touchpoint-path questions?
The Loyalz WooCommerce plugin, installed on your store. The touchpoint path is built from first-party visits captured on your own site, so with no plugin there is nothing for the assistant to read.
It also records only visitors who accepted tracking consent. That makes every path answer directional — it shows which channels open journeys and which close them, never proof that one caused the sale. Orders that land as Direct with no captured touchpoint are a coverage gap, not a channel win.
Can an agent read my customers' personal data?
The measurement tools can't — they return aggregates only, never a name or an address. The Agents API also carries older loyalty-program tools, and two of those do: purchase history returns customer names and email addresses, and the points ledger returns names.
An API token has full access to the one account it belongs to. There is no read-only mode and no per-tool permission, so connect a client you would trust with that, and delete the token when you are done.
How many questions can I ask, and how fast?
Ten a minute, per user. One conversation holds 40 messages, each up to 8,000 characters — past that, start a new one.
Each question gets up to six tool steps before the assistant answers with what it found, so a very broad question ("compare every channel, every month, this year against last") can come back partial. Narrow questions are faster and better. Two people on the same account each get their own ten a minute.
Does Loyalz ever change my ads automatically?
No. Nothing pauses, starts or re-budgets an ad in your account unless a person does it.
An auto-pause engine exists — it pauses one Meta ad once it has spent past a floor and its ROAS or cost per lead crosses a guard — but only Loyalz agency staff can create those rules, on the Shark plan. Manual pausing from the panel stays off by default and is opened per account on request. Ad budgets are read-only everywhere.
Where do the AI-written summaries appear, and how fresh are they?
Two places. Mission Control carries a written read of the period, written separately per platform and per preset — last 7 days, last 14 days, this month, last month. Pick a custom date range and you get the numbers with no text, deliberately: better silence than last week's story printed over your dates.
Ad Paths carries a written read of your touchpoint paths, on the Shark plan. Both refresh automatically, at most once a day. Ads below the spend floor are dropped, and when every ad is below it the card says the budget was too dispersed to judge creatives.
Plans, prices, invoices
What do the three plans cost?
Fish is €29 a month, Shark €199 and Whale €399, all net of VAT. Each plan contains the one below it, so Whale includes everything in Shark and Fish.
The subscription doesn't move with your ad spend, your order count or how many customers you have. Generation in Creative Studio is billed separately, in credits, and Shark and Whale include a monthly allowance. Compare the three on the pricing page; the Polish version lists the same plans in złoty.
What's the difference between the plans?
Modules, credits and storage. No seat limits, no cap on connected sources, no ceiling on benefits.
- Fish — ten connectors across ads, analytics, store and CRM, one metric layer, dashboards, calculated metrics, the assistant in the panel and an MCP server for your own AI client.
- Shark — adds creative ranked on store revenue, AI analysis of Meta and Google creatives, first-party ad paths, and Creative Studio with 3,000 credits and 5 GB, which we switch on for your account.
- Whale — adds the loyalty half: points, cashback, benefits, collections, quests, levels and RFM segmentation, with 8,000 credits and 15 GB.
Is yearly billing cheaper?
Yes — 20% off, taken twelve months up front. That works out at €23.20 a month for Fish, €159.20 for Shark and €319.20 for Whale, again net of VAT.
The discount is exactly a fifth, not an approximate one, and it's the only difference between the two options. Pay monthly if you'd rather stay light on the commitment.
How do I buy a plan, and is there a setup fee?
There's no setup fee and no checkout on this website. Every plan button here books a demo; the plan is agreed on that call and switched on for your account.
Nothing in the price list adds an onboarding, implementation or activation charge. What you pay on top of the subscription is generation — credits for Creative Studio, which we also switch on by hand once your plan starts. Measurement runs as soon as your accounts are connected.
What are credits, and which plans include them?
Credits pay for generation in Creative Studio — images, video, storyboards and ad-text variants — and for extra storage if you add any. One credit is one US cent at list price, and every generation is priced in the panel before you run it, not after.
Shark includes 3,000 credits a month and Whale 8,000. Fish includes none, because Creative Studio starts at Shark. Measurement, dashboards and ad-path data never consume credits.
What does one creative actually cost in credits?
A run of four images costs 189 credits: 45 for the model calls that write the concepts and the image prompts, plus 36 an image on the default model. At 3,000 credits a month that's about fifteen runs — and more finished images than that, because the 45 is charged once per run however many images the run makes.
Images run from 8 credits for a 1K draft up to 48 at 4K. Three ad-text variants for one image cost 10. Video is billed by the second, from 7, and a longer cut renders in 8-second segments, so the seconds mount up quickly.
Do unused credits roll over?
Yes. The balance is a running ledger — each month's allowance is added to what you already have, and nothing expires it.
They aren't money, though. Credits can't be transferred, refunded or paid out, and an unused balance isn't settled if you stop paying. The terms for brands set that out in full.
Can I change plan mid-cycle?
Yes, at any point. Moving up, you pay the difference for the rest of the period and the new features open straight away; moving down takes effect at the next renewal, so you keep what you've already paid for until then.
Nothing is rebuilt on the way up. The plans are nested — Whale contains Shark, Shark contains Fish — so your dashboards, connections and history carry across untouched.
I run an agency — do I pay for every client?
Yes. Every brand is its own account with its own plan, and the panel reads the plan of whichever client you have open — one login, no signing out between clients.
Agency access isn't sold from the pricing page: it's quoted for the number of accounts, seats and credits you actually need. The product itself doesn't meter seats — nothing in it counts employees or client assignments. Tell us how many accounts you run.
Are prices net of VAT, and when do I get an invoice?
Every price is net. VAT is added at the rate in force on the day the invoice is issued, according to your company's country and tax status.
An invoice follows within 14 days of payment — that rule and the rest of the payment terms are in the terms for brands. There's no invoice archive inside the panel today; ask us and we'll resend one.
How do I cancel, and what happens to my data?
Tell us, and the plan runs to the end of the period you've already paid for. Cancellation isn't mid-period, part-periods aren't refunded, and an unused credit balance isn't settled in money.
What happens next depends on what you ask for. Let the subscription lapse and the paid features close while your data is kept for three months — long enough to come back by paying, or to ask for deletion. Send a notice of termination instead and we delete the account. The terms set out both.
What else costs money on top of the subscription?
Two meters can run alongside it, both usage rather than fees. If you're in the Creative Studio pilot — invite-only today, Shark and above — generation (images, video, storyboards, ad-text variants) is paid in credits, and we set your monthly allowance when we switch the pilot on for your account.
The assistant is metered separately, on the AI usage your questions consume, and the panel shows that month by month on a screen of its own. Nothing else moves: no setup fee, no seat price, nothing tied to your ad spend or order count.
Is there a limit on how much I can ask the assistant?
Yes. Each account has a monthly ceiling on assistant usage, set generously by default, and it clears at the start of the next month. Reach it and the assistant says so instead of answering. We can raise the ceiling for an account that genuinely works that hard.
There's also a short limit of ten questions a minute, which is there to stop a runaway script rather than a person. AI creative analysis and the written ad-path read draw on the same monthly ceiling.
How do I actually pay — card, transfer, or invoice?
By bank transfer, against an invoice. There's no card checkout on this website — every plan button books a call, the plan is agreed there, and we invoice you.
The date that counts is the day the money reaches our account, not the day you send it. That's what starts your subscription period, and what a late payment moves. The terms for brands carry the payment rules in full, including the fourteen days we have to issue the invoice.
Can I buy just the loyalty half, or just the measurement half?
Measurement on its own, yes — that's Fish. The loyalty half on its own, no: it sits in Whale, on top of measurement and advertising, because the plans are nested rather than modular.
The reason is arithmetic, not packaging. Retention answers what a customer is worth over time, and that number is built from the same orders and identities Acquisition uses to judge what you paid to get them. Half the loop can't produce it.
What happens when I run out of credits?
Generation stops, and nothing else does. The panel tells you the balance and what the run needed, and refuses to start it. Dashboards, connectors, reports, ad paths and the loyalty programme carry on exactly as before — none of them spend credits.
One honest edge: a step priced only after the model answers has no balance check in front of it, so you finish the phase you're in and get stopped at the next one. A balance can end a little below zero that way.
Can prices or credit prices change, and how would I be told?
Yes, both can, and we announce it on this site. A change to the price list isn't an amendment to your contract, and neither is a change to what a generation model costs in credits.
What a change doesn't do is reprice a period you've already paid for, and credits already in your balance keep their number. Before your period ends we email you the amount for the next one, so a change reaches you before you commit to it. The terms set out both rules.
Do you give discounts, and will you take a promo code?
The standing discount is yearly billing — 20% off, twelve months up front. Beyond that, discounts exist but aren't published: portfolio and multi-brand terms get quoted on the call rather than listed on the pricing page.
If you've been given a code, say so before we raise the invoice and we'll apply it there. Nothing on this website takes a code at checkout, because nothing on this website is a checkout.
What does Whale's priority support actually mean?
It means your messages go to the front of the queue. It is not a contracted response time — no plan carries a published response-time guarantee, and the terms for brands don't set one, so read priority as a commitment about order rather than about hours.
Support is by email on every plan. If a response time is something you need in writing, raise it on the call and we'll put it in your contract, rather than leave it standing as a row on a pricing table.
Does a second store or brand need its own plan?
Yes. A plan belongs to one brand account, so two brands are two accounts and two subscriptions — and two of everything the plan carries, because credits and storage don't pool across accounts.
One person doesn't need a second login. Invite the same address from each account and a switcher appears in the top bar, showing whichever brand's plan you have open. If you run several brands, tell us how many and we'll quote the set rather than the list price.
When does my period start, and how does renewal work?
It starts when the plan is switched on for your account and runs for the term you bought. The panel shows the end date under Valid until, beside whether the plan is monthly or yearly.
Renewal is a payment, not an automatic charge. We email you before the period ends with the amount for the next one; pay before the end date and the new period picks up the day after, pay after it and the period runs from the day the money arrives. Paying late moves your dates rather than shortening them.
For agencies
Can one Loyalz login run all my clients?
Yes. Ask for an agency account under Settings → Agency account in the panel. A person at Loyalz approves it by hand, so there's no instant switch-on and no turnaround time we'll promise you.
Once it's approved, every client brand connected to you shows up in a switcher at the top of the panel, and you move between them in one click. Nothing in the product caps how many clients you hold.
Agency access isn't sold from the pricing page — it's arranged directly.
How does a client connect their store to my agency?
They paste your code. Settings → Agency account gives you an 8-digit agency code; your client opens their own panel, goes to Team manager → Managers and pastes it there. Only the person who owns the store account can do this — not one of their employees, even an Admin one.
They can disconnect you from that same screen whenever they want, and that removes your access and every one of your staff's assignments in one step. A store is linked to one agency at a time.
Can I have two clients open at once, or see all of them in one view?
No, on both counts. Loyalz keeps one open account per login, so switching client in one tab moves every other tab — and every device you're signed in on — to the same client.
Every dashboard, ranking and report is scoped to a single brand. There's no portfolio screen, no cross-client totals, no league table.
If you need two clients in front of you at once, use two logins — the open account is stored per person, not per browser — or open a live report link for one of them.
How do I give each person on my team access to the right clients?
From your own agency account, not from inside the client's. Settings → Team manager → Add employee, then open the Clients control on that person's row and tick the clients they should reach. The tick list replaces whatever they had, so it's also how you take access away.
Anyone you make an Admin reaches every client automatically, and no plan caps how many people you add. Be clear on what the ticks control: which client accounts a person can open, not what they can do inside one.
Can I send a client a live report without giving them a Loyalz login?
Yes — that's what a live report link does. Mission Control, any Insights dashboard, the Ad Ranking screens and the label summaries each have a Share button that publishes that view as a public, read-only page. Your client opens it with no account, picks the period they want, and sees nothing else from the panel.
Know exactly what you're sending: an unguessable URL with no password, no expiry and no sign-in. Revoke it and it dies immediately. One link stays live per view, and anyone with access to that brand can see or revoke it.
Can Loyalz email my client a monthly report, or export one as a PDF?
Neither exists today — no scheduled email, no PDF. What you send instead is a live report link, which keeps showing current numbers to whoever bookmarks it; several Insights dashboards can ride behind one link as a set your client pages through.
For the meeting itself, Present opens an Insights dashboard full-screen with no panel furniture around it. It needs your login, so it's for your screen, not theirs.
For a deck, download a chart or table widget's rows as CSV. There's no whole-dashboard export.
Can I white-label the reports with my own logo and domain?
No. Loyalz has no white-labeling, and there's nothing to configure toward it. A shared report shows the Loyalz mark at the top, your client's brand name beneath it and a "Powered by Loyalz" footer; Present carries the same header.
Report links always sit on the Loyalz panel's own domain. No custom domain, no color or logo override — not yours, and not your client's. Team and agency invitation emails come from Loyalz too.
If that rules us out for how you package reporting, say so on the demo call.
What happens to the account and the ad connections if we part ways?
They stay with your client. The brand account is theirs under the terms for brands, and your access is a link the owner cuts from Team manager → Managers — which removes you and every one of your staff in the same step.
Ad-platform connections sit on the brand account, not on yours, so unlinking doesn't touch them. One catch: a Meta or Google connection is authorized with one person's own login — if that's someone on your team, have the client reconnect it under theirs.
If a client is moving between agencies, have them disconnect you before pasting a new code — overwriting the link alone leaves your assigned staff with access.
How does billing work for an agency, and who pays for the AI?
Per brand, not per agency. Each client account carries its own plan, and the panel reads the plan of whichever client you have open — so you never sign out to see the right one.
Agency access isn't on the price list. Tell us how many accounts and seats you run and we'll quote it — including whether you or your client pays.
Your own team's use of the assistant inside a client account is recorded as internal, never billed to that client.
How fresh are the numbers on a shared report?
It depends on the view you shared. An Insights dashboard re-runs its query every time your client opens it, so it is as current as the metric layer — both ad numbers and shop revenue refresh overnight, not live. Ad Ranking and the label summaries sit behind a 10-minute cache.
Mission Control is the exception. A shared Mission Control page serves a stored snapshot instead of calling Meta and TikTok, so anonymous readers can’t burn your client’s API quota — and the page doesn’t print how old that snapshot is.
Can I reuse a dashboard I built for one client on another?
No. A dashboard belongs to one brand, and nothing copies a board from one client into another — to run the same reporting across five clients, you build it five times.
The shared starting point is the template library: 12 dashboard templates ship with Insights, and using one copies it into that account, so later changes we make to a template never touch a board you already built.
You can't publish a template of your own. Only Loyalz authors them.
Can I put my agency fee into the numbers?
Yes. The Costs page in Insights takes a percentage of ad spend, a fixed monthly retainer, or both — they add up, which is the usual hybrid arrangement. Fill in your client's gross margin on the same page first, or nothing computes.
The fee feeds a separate metric, POAS incl. agency & tools. Headline POAS stays media-only so a campaign stays comparable to other campaigns and to benchmarks.
One limit: the retainer only shows up in blended totals. Filter down to one channel and it drops out.
Can my client see what my team does in their account?
No. Loyalz keeps no activity history and no audit log — nothing records that you changed a dashboard, paused an ad or opened a report, for you or for them.
They can't see your people individually either. Their Team manager page lists their own employees and shows that an agency is connected, with your email and agency code, but not which of your staff are assigned to them.
If a client needs a change log, say so before they sign.
Can I connect two ad accounts for one client?
No. One ad account per platform per brand, enforced in the database — a client running two Meta ad accounts needs two Loyalz brands, and you switch between them like any other client.
Changing which account is connected means disconnecting and reconnecting, and that clears the cached ad data so nothing from the old account survives in a report.
There's no roll-up across brands, so a client split this way reports twice.
What can my team do that the client's own staff can't?
Three things, all tied to the agency account type:
- Exclude a product from a Shopping or Performance Max campaign, and block a keyword in Google Ads — every action logged and reversible from the same screen.
- Pause an ad in the client's Meta account. For a non-agency merchant that control is off unless Loyalz enables it on the account.
- Ask the AI assistant as much as you like — agency questions aren't capped, and aren't billed to the client.
Pausing also needs the client's Meta connection to carry write permission, so check it before you rely on it.
Can I work from my phone?
Read on it, yes; work on it, no. Dashboards, Present and shared report pages have a phone layout that stacks the widgets into one column.
Two things go away at that width. The client switcher is hidden below 640 pixels, so you can't change account on a phone, and the CSV download disappears from board widgets along with layout editing.
Open a live report link on the phone and keep the panel for a laptop.
Can I create a new client's account for them?
You can't create it yourself — there's no "add a brand" button in the panel. Your client signs in at panel.loyalz.io, answers a short form (company name, store address, monthly ad spend), then pastes your 8-digit agency code under Team manager → Managers.
If they'd rather not touch it, ask us and we'll create the brand and link it to your agency.
Either way a new account carries no plan, so most of the panel stays locked until one is in place.
Do you run a partner, reseller or referral program?
No — there's no referral link, no reseller margin and no partner tier, and nothing to sign up for.
What exists is the agency account: your clients under one login, a switcher between them, and live report links you send out. Who pays for what, you or your client, is agreed case by case rather than set in the product.
If you want a formal arrangement, raise it on the demo call and tell us how many clients you run.
Data, privacy and security
Who is the data controller — you or us?
You are, for your customers' data. Loyalz is the processor: we hold it on your instruction and do nothing else with it. ZEST sp. z o.o. is the controller only for this website, the demo form, and the accounts of the people who sign in to your panel.
You don't need to negotiate a separate DPA. The Article 28 agreement is Schedule 1 to the Terms for Brands, published rather than held back for a procurement call — including breach notification within 24 hours of detection and a return-or-delete choice when you leave.
Where is our data stored?
In the EU, with exceptions we name rather than hide. The backend runs on a Hetzner server in Germany; the panel, the marketplace and this site run on Vercel in the EU, loyalz.io in Frankfurt.
Some processors sit outside the EEA — the AI providers among them — under the European Commission's Standard Contractual Clauses.
The Recipients table in the privacy notice is the authoritative list: every processor, what it does, where it sits. Read that rather than this summary if residency gates your decision.
What personal data about our shoppers ends up in Loyalz?
On the measurement side, less than you would expect. An order arrives, we turn the buyer's identifier into a salted one-way fingerprint and keep that, never the address, and the order payload we store holds no personal data.
No IP address is stored anywhere in the product. Referring and landing URLs are cut down to host and path, so someone else's personal data in a query string never reaches us.
The loyalty programme is different by nature: a participant signs in with an e-mail and rewards go to one. The plugin's newsletter-signup event also carries the address you collected.
Is our data encrypted?
In transit, everywhere — TLS on every surface. At rest, the credentials for your connected accounts are encrypted with Fernet and the key can be rotated: Meta, Google Ads, GA4, TikTok, Shopify, Sellasist, HubSpot, LinkedIn.
The limit, said out loud: not everything at rest is encrypted. Some older machine-to-machine keys, the WordPress plugin key among them, are stored as plain text, and narrowing them is on our list.
Your advertising tokens never reach the browser either way — the panel resolves them server to server.
Who at Loyalz can see our data, and do you log access?
Support staff, and only when you ask. The DPA limits access to your request, tied to a ticket, for a limited time — or where security or the law requires it. Everyone with access is under a confidentiality obligation.
On logging, the honest answer is narrower than you may want. Every write we make into your ad accounts is logged with the object id, the reason, the result and a timestamp, and you can ask us for that log. There is no self-serve activity log in the panel, and we do not record every read of your data.
Who are your sub-processors, and what happens if you add one?
They are named one by one in the Recipients table of the privacy notice — what each does and where it sits, not a category like "hosting providers".
If we want to add one, you get an e-mail at least 30 days before it starts, and 30 days to object. If you object you can end the agreement in whole or in part, with a proportionate refund and at least 30 days to export your data — and we cannot terminate merely because you objected. We stay fully liable for what our sub-processors do.
Do we need cookie consent for the tracking to work?
Yes, and the plugin enforces it for you. By default nothing is recorded — no touchpoint, no visitor id, no event — until your consent platform signals marketing consent. It reads CookieYes server-side out of the box, it can watch any cookie your own banner sets, and if you handle consent elsewhere you can set it to always collect and own that decision.
The two cookies are first-party on your domain, HttpOnly, SameSite=Lax and 90 days. Consent Mode v2 governs your Google tags, not us: we never send your customers' data back to Meta or Google. More on that.
How long do you keep our data?
For the term of the agreement, and then you choose: we return it or we delete it. You get 30 days to decide and to export, silence counts as deletion, and backups age out on their own cycle within 90 days.
Two specifics. In Creative Studio — an invite-only pilot today — drafts you never approved and uploads no render ever used go after 60 days; approved creatives and your brand library are never touched.
And there are no per-table retention settings in the panel today. If a particular data set needs a shorter window, say so before you sign and we will write it into the agreement.
A customer asks us to delete their data. What happens?
You decide and we act on it, because you are the controller. Send the instruction and we carry the deletion out. If the person writes to us first, we tell you within 24 hours and hold off answering until we have your position.
Two things to know. There is no self-service delete button in the participant app, so requests reach us through you or through the routes on our data deletion page. And the measurement layer holds a one-way fingerprint rather than an address, so the record to remove is usually the loyalty one.
How do we delete everything you hold from Meta?
Click Disconnect in Settings → Integrations. It does more than drop the token: it deletes the data we derived from that connection — daily metrics, creatives and their analyses, winner analyses, performance summaries, publishing history, pause rules and the actions they took, cached snapshots and the stored credentials.
Your Google Ads, TikTok and store connections are untouched; each has its own disconnect. Because Disconnect deletes rather than pauses, do not use it to switch ad accounts. Prefer it handled off the panel? Write to privacy@loyalz.io — the routes and the 30-day commitment are on the data deletion page.
How do we close the account and take our data with us?
Tell us and a person closes it. There is no self-serve delete button for a brand account, and no one-click export of everything either.
What you can do yourself: download an Insights widget's numbers as CSV, and from the Fish plan up point your own tools at your account through the MCP server. A full export is handled by us — the DPA gives you 30 days to ask for it before deletion.
Are you ISO 27001 or SOC 2 certified?
No, and we will not imply otherwise on a procurement form.
What we offer instead is contractual and specific. § 7 of the published DPA lists the measures; breach notification is 24 hours from detection; you have audit rights — information and documents within 14 days, an inspection on 14 days' notice under an NDA. Where SOC 2 Type II or ISO 27001 reports come up, that is what we require of our sub-processors, not something we hold. It is all in the Terms for Brands.
Do you guarantee uptime?
No. There is no SLA, no availability percentage and no service credits — the Terms supply the service on an "as is" basis, and there is no public status page either.
The production database is backed up nightly. We publish no RPO or RTO and run no certified restore drill, so if your security review needs more than "nightly", ask and we will answer your specific question.
One limit we do commit to in writing: data pulled from an ad platform can lag by more than 24 hours, and where the numbers differ, the platform's own panel wins.
What do you send to AI models, and do they train on our data?
Aggregated figures and ad creatives, never raw customer records. The assistant, the weekly summary and the creative analysis run on Anthropic Claude: the assistant reads through the same query engine the dashboards use, scoped to your account, and the creative analysis sends an ad's copy and its preview image.
Anthropic does not train on API inputs or outputs.
Creative Studio is the exception worth naming. Prompts, product descriptions and reference images go to kie.ai, which routes them to the image or video model you picked — we don't claim the same no-training commitment for those downstream providers.
Do you sell our data, or pool it across customers for benchmarks?
No, and no. We don't sell your data, and there is no benchmark data set — nothing in the product aggregates one shop's numbers into another's, because nothing was built to do it.
It is a published commitment rather than a habit: the privacy notice states we never use one shop's data to serve another. Your account is read by you, by the people you invite, by anyone holding a live report link you created, and by the processors named in the privacy notice.
How is our data separated from other Loyalz customers'?
Logically, not physically. One system, one schema, and every record carries the account it belongs to; every query path resolves that account from the signed-in user's own permissions before it reads anything. Your staff see your accounts, agency staff see the clients they're assigned to.
That is what logical separation means, and it is what § 7 of the DPA commits to. We don't run a separate database per customer, and we won't tell your security team we do.
How do people sign in — password, SSO, two-factor?
Normally without a password. You sign in with Google, or with a 10-digit code we e-mail you — valid 15 minutes, five attempts, rate-limited. Accounts created that way have no password set, though the login page also takes e-mail and password for accounts that do.
Two things we don't have, said plainly: no SAML or SSO, and no two-factor authentication. Ignore the two-factor switch still visible in Settings — it is a leftover that cannot turn anything on.
How safe is a live report link?
Treat it like a password written into a URL. A live report link is an unguessable address that needs no login, so anyone you send it to can open it — and anyone they forward it to can open it too.
It never expires on its own. It stays live until you revoke it in the panel, so revoke it when an engagement ends. The pages carry noindex and no-referrer headers, so the address doesn't leak to search engines or to the third parties loading your ad images.
Who can see files we upload to Creative Studio?
Anyone who has the address. Files you upload and files Studio generates sit in our object storage under a random, unguessable URL and are reachable by that URL — the privacy notice says exactly this.
So treat a Studio URL like a live report link: it is unguessable, not access-controlled. Reference images are handed to the image and video models as addresses of that kind, which is how generation works at all.
What can Loyalz change inside our ad account, and can we switch that off?
Four things, and only these — § 7c of the Terms for Brands lists them exhaustively: pause or resume a Meta ad; create a Meta ad, always paused; exclude a product from a Google campaign; pause a keyword and add it as an exact-match negative.
Never budgets, bids, targeting, schedules, objectives, deletions — and never switching an ad on. This is a contractual ceiling, not a feature every account has today: ad pausing is off by default, and Meta's review of that permission is still pending, so it is not generally available account-wide yet. TikTok and LinkedIn are read-only, and so is the assistant.
The Google authorization is technically read-and-write and permits more than that list. The contract is what limits us, and we say so in the Terms rather than let you find it.
Who do we contact about privacy, and do you have a DPO?
privacy@loyalz.io for deletion requests, karol.majewski@loyalz.io for everything else about privacy. Both reach a person.
We have not appointed a Data Protection Officer, and we won't imply one on a questionnaire. If you want to raise how we handle data with a regulator, the supervisory authority is the President of the Personal Data Protection Office, ul. Stawki 2, Warsaw.
We sell supplements or medical devices. Does that change anything?
Yes — tell us before you connect the account. § 2.4 of the DPA obliges you to flag health products, medicines, supplements and medical devices, because product-level purchase data and likeness material can reveal health information about a named person.
Two consequences follow. We apply additional Article 32 measures on our side, and we may decline automated creative analysis for that account. On your side, that kind of processing usually calls for a data protection impact assessment.
What do you store about our team members?
Name, e-mail, role and permissions, sign-in credentials, access history — and two things people don't expect. We store the questions your team asks the AI assistant, and a usage register that meters what the account spends on AI.
The second is why the first exists: AI usage is metered and billed, so the calls have to be accounted for. Row 6 of Schedule 1 to the DPA lists it rather than burying it — read it there if the detail matters to you.
Do you profile people?
Yes, and the DPA says so rather than leaving you to infer it. Under Art. 4(4) the profiling covers customer economics on a pseudonymised identifier — new versus returning, lifetime value, acquisition cost — attribution of an order to a specific ad, the cross-session path a visitor took before buying, and experience levels and leaderboards in the loyalty programme.
You set the purposes and the rules, because you are the controller. We help you give effect to a person's right to object under Art. 21(2).
Do you ever see our customers' payment details?
No. Your own subscription is paid on Stripe's hosted checkout page, the card stays in Stripe's customer portal, and our backend holds no Stripe API key at all.
From your store we import the payment method name — card, transfer, cash on delivery — because it is useful in margin reporting. Never a card number, and never anything that could be used to charge one.
Still missing an answer?
Bring one ad account and one month of orders. Twenty minutes, live, on your own data — including the part where the answer is that Loyalz is not for you.
Book a demo