Terms of Service
Version of 8 September 2026
These terms govern the use of the Shopify app OnceOnly. They are deliberately short and say what you get, what it costs, and what OnceOnly expressly cannot do.
§ 1 Provider and scope
OnceOnly is provided by David Diallo, trading as “Diallo Media”, Schwachhauser Heerstraße 18, 28209 Bremen, Germany (VAT ID DE366538188) (“we”).
These terms apply to merchants who install OnceOnly in their Shopify store (“you”). OnceOnly is intended solely for businesses. Consumers are excluded from use.
Your own differing terms apply only if we agree to them expressly and in writing.
§ 2 What OnceOnly does
OnceOnly detects buyers who redeem a discount code you have marked as protected even though they have already ordered from you. Depending on your setting, the code is declined in the cart, or the order goes through and is tagged in Shopify.
OnceOnly also calculates how much discount went to repeat buyers over the past 12 months. That audit is free, permanently.
§ 3 Formation of the contract
The contract is formed when you install OnceOnly in your store from the Shopify App Store. By installing it you accept these terms and the data processing agreement.
If you subscribe to a paid plan, you additionally confirm this in Shopify's approval dialog.
§ 4 Plans and prices
All prices are stated in USD, plus any applicable VAT. Shopify bills app subscriptions in this currency regardless of the currency your store sells in.
Every paid plan comes with two billing periods: per 30 days or per year. The scope is the same either way; you pick the period when you subscribe and can switch it later in the app.
A new paid subscription starts with a 14-day trial. Shopify charges nothing during that time; if you cancel before it ends, there is no cost to you. The trial applies once per store, not once per plan — switching plans later does not start a second one.
| Plan | Price per 30 days | Price per year | Scope |
|---|---|---|---|
| Audit | free | free | no volume limit |
| Protect | 49 USD | 468 USD | up to 2,000 orders per month |
| Protect Plus | 149 USD | 1428 USD | no volume limit |
§ 5 Billing through Shopify
We do not invoice you and we do not collect any money. Billing runs entirely through Shopify: the amount appears on your Shopify invoice, and Shopify collects it under its own terms.
Two consequences you should know: we never see your payment details, and questions about payment methods, invoicing or refunds are answered primarily by Shopify.
A plan's volume limit (for example Protect up to 2,000 orders per month) is a feature of that plan; which limit applies to which plan is set out in the table in § 4. What is counted are the orders of the last 30 days.
If you exceed it persistently, we suspend the check at checkout — not the app. No buyer is turned away because of it: protected codes are accepted again, the protection merely rests. The audit, the figures, the tagged orders and all of your settings remain available unchanged. We flag it in the app as soon as you approach the limit.
Once you move to the next plan up, or your order volume drops back below the limit, protection resumes by itself. There is nothing to apply for and no switch to flip.
§ 6 What OnceOnly expressly does not guarantee
This is the most important section of these terms. An abuse-detection app that promised complete detection would be promising something impossible. So we say up front where the limits are.
- No complete detection. Anyone who clears their cookies and orders from a new device with new details cannot be recognised as a repeat buyer. OnceOnly reduces abuse; it does not end it.
- The warm-up phase lets unchecked orders through. Until five orders with a valid check have gone through, carts that could not be checked are let through. A detected repeat is declined from the very first minute regardless.
- In the “Enforce” level, genuine first-time buyers can be hit — but only for as long as your store does not yet know a single discount buyer. Through “Buy it now” on the product page, the Shop app or a custom storefront, Shopify passes on no cart attributes, so such orders count as unchecked. As soon as OnceOnly knows the first discount buyer, they go through and are checked on the delivery address alone. You choose the level.
- Wallet payments do not display the message. Shop Pay, Apple Pay and Google Pay block correctly, but the payment sheet does not show our text. That is confirmed platform behaviour, not a fault in our app.
- The audit figures are a lower bound, not a promise of savings. They cover at most 12 months; anyone whose first order predates that is missing from the calculation.
- No legal advice. Whether you may turn a particular buyer away is a question of your contract law, not of our app.
§ 7 Availability
We aim for high availability but do not guarantee any particular uptime. Maintenance, incidents at our providers, changes to Shopify's interfaces and force majeure may cause interruptions.
An outage on our side never blocks a checkout. If the check is missing, orders go through rather than being declined. The only exception is the “Enforce” level you choose yourself in a store that does not yet know a single discount buyer — there, unchecked orders are declined.
§ 8 Your obligations
- You decide yourself which discount codes are protected. Every other code is left untouched.
- You are responsible for ensuring that using OnceOnly in your store is lawful, in particular towards your customers.
- You need your own privacy notice and, where required, consent from your visitors. OnceOnly sets a visitor number and reads device characteristics; the latter require consent. The data processing agreement and the privacy notice describe exactly what is processed.
- You keep your Shopify admin credentials confidential.
- You do not use OnceOnly to disadvantage people for reasons unrelated to the repeated use of a discount code.
§ 9 Term and termination
The contract runs for an indefinite period. You terminate it by uninstalling the app — at any time, with no notice period and without giving reasons.
A billing period already running is settled by Shopify under its terms; there is no pro-rata refund.
We may terminate with 30 days' notice, or without notice in the event of a serious breach of § 8.
After uninstallation we delete all of your shop's data in full as soon as Shopify notifies us. Details are in the data processing agreement.
§ 10 No right of withdrawal
OnceOnly is intended solely for businesses. A consumer right of withdrawal therefore does not apply.
§ 11 Liability
We are liable without limitation for intent and gross negligence, for injury to life, body or health, and under the German Product Liability Act.
For ordinary negligence we are liable only for breach of a material contractual obligation — an obligation whose fulfilment makes proper performance of the contract possible in the first place and on whose observance you may regularly rely. In that case liability is limited to the foreseeable damage typical for this type of contract, and at most to the fees paid in the last twelve months.
In particular, a discount granted despite OnceOnly is not recoverable, nor is profit lost from a purchase that did not go ahead because of a decline. Both follow directly from § 6.
We are not liable for outages at Shopify or at our providers.
§ 12 Data protection
For your customers' data you are the controller and we are your processor. The data processing agreement applies and becomes part of the contract on installation.
How we handle the data is set out in the privacy notice. Both documents are linked below.
§ 13 Changes to these terms
We may change these terms where there is an objective reason to do so, such as a change in the law or in the scope of the service. We will notify you 30 days in advance.
If you do not object and continue to use the app, the new version is deemed accepted. If you object, you may uninstall the app; the contract then ends when the change takes effect.
§ 14 Final provisions
German law applies, excluding the UN Convention on Contracts for the International Sale of Goods.
The exclusive place of jurisdiction for all disputes is our registered seat, provided you are a merchant, a legal entity under public law or a special fund under public law.
Should any provision be invalid, the remainder of the contract stays in force.
We are neither willing nor obliged to take part in dispute resolution proceedings before a consumer arbitration body.
Contact
Send questions about these terms to: hey@diallomedia.de