Kumi Commerce — Kumi Bundle Builder for Shopify
Effective date: 2026-10-12
Last updated: 2026-10-19
These Terms are a contract between Kumi Commerce, a sole proprietorship based in Tokyo, Japan ("we", "us"), and the business that installs our app ("you", the "Merchant").
Part A covers the service. Part B is a Data Processing Agreement and governs how we handle personal data on your behalf. Both parts apply from the moment you install the App. If you do not accept them, uninstall the App.
| Term | Meaning |
|---|---|
| App | The Shopify app "Kumi Bundle Builder", including its admin interface, its theme app block, its Cart Transform function and the backend serving them. |
| Store | Your Shopify store, identified by its *.myshopify.com domain. |
| Merchant Content | Everything you configure or supply through the App: bundle definitions, titles, product selections, discount settings. |
| Shopify | Shopify Inc. and its affiliates, the platform the App runs on. |
| Attributed Revenue | The amount the App calculates as having been earned through bundles created with the App, as described in section 6.2. Our pricing tiers are based on it. |
These apply throughout, and especially in Part B.
| Term | Meaning |
|---|---|
| Personal data | Any information relating to an identified or identifiable natural person. Order identifiers and order amounts are personal data for the purposes of these Terms, even without a name attached, because they can be linked to a person by you and by Shopify. |
| Processing | Any operation on personal data: receiving, reading, storing, using, transmitting, erasing. |
| Controller | The party that determines the purposes and means of processing. For data reaching us through your Store, that is you. |
| Processor | A party processing personal data on a Controller's behalf and on its instructions. For data reaching us through your Store, that is us. |
| Sub-processor | A third party we engage to process personal data as part of operating the App. |
| Customer | A person who shops on your Store. |
| Data subject | The individual a piece of personal data relates to. |
| Data Protection Law | Every law on personal data that applies to a party's processing under these Terms, including the EU General Data Protection Regulation (GDPR), the UK GDPR, the California Consumer Privacy Act as amended by the CPRA (CCPA), and Japan's Act on the Protection of Personal Information (APPI). |
| Personal data breach | A breach of security leading to accidental or unlawful destruction, loss, alteration, unauthorised disclosure of, or access to personal data. |
| Standard Contractual Clauses (SCCs) | The clauses approved by the European Commission on 4 June 2021 for transfers of personal data to third countries. |
| Protected customer data | Shopify's term for customer and order data an app may access only with Shopify's approval. |
The App lets you build "build your own bundle" offers: a Customer picks a set number of products from a selection you define, and the bundle price is adjusted at checkout by a Shopify Cart Transform function.
To do this, the App requests six Shopify access scopes:
| Scope | What we use it for |
|---|---|
write_products | To create and read the parent product that represents a bundle, and to read the products you allow in it. |
read_orders | To measure Attributed Revenue (section 6.2). This is the only reason. |
write_cart_transforms | To register the Cart Transform function and store bundle rules where only our app can read them. Shopify requires this scope for the API calls involved. |
read_themes | A read-only check of whether your published theme can hold an app block. We never write to a theme. |
read_publications | To find your Online Store sales channel. |
write_publications | To publish the bundle's parent product to that channel. Shopify only applies bundle pricing when the parent product is published, so this is required for the bundle to work at all. We publish nothing else, and we never unpublish any of your own products. |
We do not request access to Shopify's protected customer fields — name, email, phone or address. See the Privacy Policy, section 4.3, for the complete list of what we read from an order.
You must have an active Shopify store and the authority to install apps on it. Your access to the App depends on your Shopify account; if your Shopify store is closed or suspended, the App stops working.
You are responsible for everything done through your Store's access to the App, and for keeping your own Shopify credentials secure.
Charges for the App are handled by Shopify Managed Pricing. Shopify presents the plans, takes your approval, and bills you through your Shopify invoice. We never see or handle your payment card details.
You agree that:
Bundle discounts are applied by a Shopify Cart Transform function that re-evaluates the whole cart at checkout. If a cart does not meet a bundle's conditions, no discount is applied. This is deliberate: it means a Customer who changes their cart after building a bundle cannot keep a discount they no longer qualify for.
Where you configure a fixed bundle total, the discount is applied as a percentage derived from that total, because Shopify's merge operation supports percentages only. Rounding differences of a minor currency unit can therefore occur, and are expected behaviour.
Because your price tier depends on this number, here is exactly how it is produced.
api.frankfurter.app. If a rate cannot be obtained, the order stays unconverted and is reported as unconverted rather than as zero.Attributed Revenue is our own measurement for pricing. It is not an accounting figure, not a statement of your profit, and may differ from Shopify's own analytics. Where an order is refunded, cancelled or partially returned after it was recorded, the recorded amount is not automatically reduced; tell us and we will correct the tier.
We aim to keep the App available, but we do not promise a service level, an uptime percentage or a response time. We are a small operation and we will not commit to numbers we cannot guarantee.
Support is by email at support@kumicommerce.com. We will try to respond within two business days (Japan time).
If the App's backend is unavailable, bundles you have already published keep working at checkout, because the discount rules live in Shopify. What stops working is the admin interface and the recording of new order attributions. Order webhooks that we fail to process are retried by Shopify for up to 48 hours, and our processing is designed so a retry is safe.
We own the App and everything in it. These Terms grant you a non-exclusive, non-transferable right to use it on your Store while you are properly subscribed, and nothing more.
You own your Merchant Content. You grant us the limited right to process it to operate the App for you. We may describe the App's use in aggregate and anonymous form (for example, "stores using the App created N bundles"), and we will not identify your Store or publish your figures without your permission.
Feedback you send us may be used to improve the App, without obligation or payment to you.
The App is provided "as is" and "as available". To the extent permitted by law, we disclaim all implied warranties, including merchantability, fitness for a particular purpose and non-infringement.
We do not warrant that the App will be uninterrupted or error-free, that every bundle configuration will behave as you expect in every theme, or that Attributed Revenue will match any other system's figures.
We are not responsible for Shopify's platform, for changes Shopify makes to its APIs, or for your theme and any other app installed on your Store.
To the maximum extent permitted by law:
Nothing in this section limits liability that cannot be limited by law, including liability for fraud or wilful misconduct, or either party's liability for administrative fines imposed on it directly under Data Protection Law for its own breach.
You will defend and indemnify us against third-party claims arising from your Merchant Content, your products, your pricing and discount decisions, your breach of these Terms, or your failure to meet your own obligations under Data Protection Law.
You may terminate at any time by uninstalling the App.
We may suspend or terminate your access if you materially breach these Terms, if your use threatens the security or stability of our systems or another Merchant's data, if required by Shopify or by law, or if you fail to pay. Except where the breach is serious or urgent, we will tell you and give you a reasonable chance to fix it first.
We may discontinue the App. If we do, we will give installed Merchants at least 60 days' notice by email, and we will not charge for a period that the App is not available.
On termination, data is deleted as described in Part B, section B.8.
We may change these Terms. For changes that materially affect you — including any change to Part B — we will notify installed Merchants by email at the address Shopify provides for the Store at least 30 days before the change takes effect. Continuing to use the App after that date accepts the change. If you do not accept it, uninstall the App before it takes effect.
We will not make a change to Part B that lowers the protection given to personal data without your agreement.
This Part is the agreement about personal data processing required by Article 28 GDPR and by equivalent provisions of other Data Protection Law. It takes effect when you install the App and ends when all personal data has been deleted under section B.8.
The terms defined in section 1.2 apply here.
This Part applies to personal data we process on your behalf because the App is installed on your Store. That is the data described in sections 4.2 to 4.5 of the Privacy Policy.
It does not cover data for which we are the Controller in our own right — the record that your Store installed the App, which plan it is on, and our billing records (Privacy Policy section 4.1). We process that under section 4.1 of the Privacy Policy and the legal bases set out there, not on your instructions.
You are the Controller. We are the Processor. Under the CCPA, you are the business and we are a service provider.
You are responsible for:
We are responsible for:
Your instructions. Your documented instructions consist of these Terms, the Privacy Policy, the settings you choose in the App, and any further written instruction you send to support@kumicommerce.com that we accept. We will tell you if, in our opinion, an instruction would breach Data Protection Law, and we may suspend performance of it until it is resolved. If an instruction requires work materially beyond providing the App, we may charge a reasonable fee, agreed in advance.
Independent controller obligations. Neither party relies on the other to meet its own obligations as a controller under Data Protection Law.
This section is the record required by Article 28(3) GDPR.
| Subject matter | Providing the App: storing and serving your bundle configuration, and measuring Attributed Revenue so that you are billed on the correct tier. |
| Duration | From installation until deletion under section B.8. |
| Nature of the processing | Receiving webhooks from Shopify; reading a defined subset of order fields; making one Admin GraphQL request per attributed order to learn which line items belong to a bundle; storing, retrieving, aggregating and converting currency amounts; storing configuration; erasing on instruction. |
| Purpose | (a) Operating the bundle feature. (b) Calculating the revenue earned through the App, for pricing. (c) Keeping the operational records needed to avoid double-counting and to diagnose failures. No other purpose. |
| Categories of data subject | Your Customers who place an order containing a bundle line. (Your staff are not a category here: the App uses offline access tokens and does not record staff identities.) |
| Types of personal data — order data | Order identifier; order timestamp; order currency code; per line item, the line item ID, variant ID, quantity, unit price and discount allocations; for a refund, the refunded line item IDs and subtotals. We also make one Admin GraphQL request per attributed order, reading only the order's line item IDs and the bundle variant each belongs to; it returns no customer fields. Stored: order identifier, attributed amount, currency, USD-converted amount, attribution reason, order timestamp, and the line item and bundle variant IDs the revenue was attributed to. |
| Types of personal data — privacy requests | Shopify shop ID; Shopify customer ID; data-request ID; the number of orders named in the request. Email addresses and phone numbers present in Shopify's payload are removed before storage. |
| Types of personal data — not processed | Customer name, email address, phone number, shipping or billing address, IP address, payment or card details, or any other Shopify protected customer field. We have not requested access to any of them. |
| Other data (not personal data) | Your product and variant identifiers, product titles and image URLs, and your bundle configuration. |
| Special category data | None. You must not use the App in a way that routes special category data (Article 9 GDPR) or criminal-offence data to us. The App has no field for it. |
| Automated decision-making | None affecting a data subject. Attributed Revenue is a billing calculation about your business. |
We will:
a. Process only on instructions. Process personal data only as described in section B.3 and on your instructions, and not for our own purposes. We will not sell personal data, share it for cross-context behavioural advertising, retain or use it outside our direct business relationship with you, or combine it with data from another source — except where a law applying to us requires otherwise, in which case we will tell you unless prohibited from doing so.
b. Keep it confidential. Limit access to personnel who need it to provide the App. Today that is one person, the owner of Kumi Commerce, who is bound by confidentiality.
c. Secure it. Maintain appropriate technical and organisational measures having regard to the risk, including: TLS for all data in transit; encryption of the production database at rest; HMAC verification of every Shopify webhook before its contents are read; access control limiting database access to the App's backend and the administrator; per-Store authorisation checks on every write so that one Store cannot reach another Store's data; removal of access tokens from diagnostics; and removal of email addresses and phone numbers from privacy-request payloads before storage. The measures in force are described in section 10 of the Privacy Policy, which forms part of this Agreement. We may change a measure but will not reduce the overall level of security.
d. Engage Sub-processors properly. Only engage a Sub-processor under a written contract imposing data protection obligations no less protective than this Part, and remain liable for its performance. The current list is in section B.6. We will give you at least 30 days' notice by email before adding or replacing one. If you reasonably object on data protection grounds within that period, we will work with you to find a solution; if we cannot, you may terminate by uninstalling the App and we will refund the unused portion of any period already billed.
e. Help you answer data subjects. Promptly tell you if a data subject contacts us directly, and not respond to them ourselves except to direct them to you. Shopify's customers/data_request and customers/redact webhooks are handled automatically as described in section 11 of the Privacy Policy. Because we hold no Customer name, email, phone or address, there is normally nothing for us to disclose or erase about an individual.
f. Help you with your own obligations. Give you reasonable assistance, with the information available to us, for data protection impact assessments, consultations with a supervisory authority, and breach notifications.
g. Report breaches. Notify you of a personal data breach affecting your data without undue delay and in any event within 48 hours of becoming aware of it, with the information we have at the time, and keep you updated as we learn more. We will not notify your Customers on your behalf unless you ask us to in writing.
h. Allow verification. On reasonable written request, and no more than once a year unless Data Protection Law or a breach requires otherwise, give you the information reasonably needed to confirm our compliance with this Part. Because the App's backend is single-tenant to us and holds other Merchants' data, we satisfy audit rights by providing written answers and documentation rather than site access.
i. Delete or return. On termination, delete personal data as described in section B.8.
You will:
| Sub-processor | Role | Data it processes | Location |
|---|---|---|---|
| Frankfurter (European Central Bank reference rates) | Supplies the exchange rate used to convert an order amount to USD | A three-letter currency code and a date. No personal data, no Store identifier, no order identifier, no amount. | EU |
| Render Services, Inc. (hosting and managed PostgreSQL) | Runs the App's backend and stores the data in section B.3 | All data in section B.3 | Frankfurt, Germany (EEA) |
Our hosting and database provider is Render Services, Inc., and the App runs in Render's Frankfurt, Germany region. Because that region is inside the EEA, no transfer outside the EEA arises from our choice of hosting.
Shopify is not a Sub-processor of ours: it is the platform you contract with directly and the source of the data, and your relationship with it is governed by its own terms.
Not in use. Our codebase contains disabled, unreachable integrations for AI-assisted support drafting (Anthropic) and error monitoring (Sentry). Neither is called by the App and neither has credentials configured. No Merchant or Customer data has been sent to either. We will add them to this table, with notice under section B.4(d), before enabling either one.
We are established in Japan and process your data there, together with our hosting provider Render in Frankfurt, Germany, as named in section B.6.
| Trigger | What we do |
|---|---|
| You uninstall the App | We delete your Store's sessions, including the Shopify access token, immediately. We retain your bundle configuration so a reinstall does not lose your work. |
48 hours after uninstall, when Shopify sends shop/redact | We delete all data for your Store: bundle definitions and components, attributed orders, monthly revenue totals, billing events, usage counters, privacy-request records, the Store record, and any remaining sessions. |
| You ask us in writing to delete sooner | We delete the data in section B.3 within 30 days and confirm in writing. |
customers/redact for an individual Customer | We record the request and confirm there is no Customer name, email, phone or address held. Attributed order amounts are not deleted individually, because they are the basis of your own billing; they are deleted at shop/redact. |
What survives, and why. Webhook receipt records (a webhook ID, a topic, timestamps and any error summary) are retained with their link to your Store removed, so that a late retry of a webhook already processed is not processed again. They contain no Store domain, order data or Customer data. Server logs are retained for our hosting provider's retention period, and invoices and accounting records for as long as Japanese tax law requires; these relate to your business, not to your Customers.
Where a law applying to us requires us to keep personal data longer, we will keep only what that law requires, continue to protect it under this Part, and tell you unless prohibited.
For personal information subject to the CCPA, you are the business and we are a service provider. We will:
You may take reasonable and appropriate steps to confirm that our use of personal information is consistent with your obligations, through the process in section B.4(h).
This Part lasts as long as we process personal data on your behalf, and the obligations that by their nature survive — confidentiality, deletion, transfers — continue afterwards.
The limitation of liability in section 10 of Part A applies to this Part, taken together with Part A as a single cap, except for liability that Data Protection Law does not permit to be limited.
If this Part conflicts with another part of these Terms or with the Privacy Policy on the subject of personal data processing, this Part prevails.
support@kumicommerce.com
Kumi Commerce, Tokyo, Japan — https://kumicommerce.com