Privacy Policy
Last updated: October 30, 2026
This policy explains how Regionly (the "App") handles data when a Shopify merchant installs it. The App is operated by DH Soft (디에이치소프트), based in the Republic of Korea ("we").
Who is responsible
DH Soft (디에이치소프트)
40, Sinbanpo-ro 45-gil, Seocho-gu, Seoul (Jamwon-dong), Republic of Korea
서울특별시 서초구 신반포로45길 40(잠원동)
Contact: regionly.support@gmail.com
For merchants, we act as a processor of the store's customer data. The merchant is the controller of the data of their store visitors and customers.
Data we process
| Data | Why | How long |
|---|---|---|
| Shop domain, app settings (countries, messages, rules), Shopify access token | To run the App for the merchant | Until the App is uninstalled |
| Storefront visitor IP address and country (from our hosting provider's IP geolocation), user agent | To decide whether a visit is allowed. Processed in memory for each page view and not stored | Not stored |
| A keyed hash (HMAC-SHA256) of the IP address of a visitor that sends many requests in a short time | Rate limiting to protect the service | Up to 60 seconds |
| A keyed hash (HMAC-SHA256) of the IP address of a visitor that claims to be a search engine or ad crawler, with the verification result | To confirm the crawler is genuine so it is not blocked | Up to 24 hours |
| Block log for blocked visits only: a salted SHA-256 hash of the IP address (the IP itself is not stored), country, the first 200 characters of the user agent, the page path, time and reason | To show the merchant what was blocked (including visits a Log only rule would have blocked) | 7 days |
| New orders (Pro, only when "Flag risky orders" is on): email, phone, shipping and billing country code, client IP | Compared in memory with the merchant's rules. The client IP is hashed the same way to check the block log. None of these fields are stored | Not stored |
| The shop's billing country (read from Shopify when the merchant opens the App) | To warn the merchant when their settings block their own country | Not stored |
| In the storefront visitor's browser: the check result in session storage (that tab only) and, after a block, an expiry time in local storage | To avoid checking every page again, and to keep the page hidden for a recently blocked browser until the next check finishes. Nothing in this storage is sent to us | Session storage: until the tab is closed. Local storage: 24 hours |
| Flagged orders: order ID, order number (for example #1001) and reason codes | To list orders for the merchant to review | 7 days |
| Access log: time, shop, the merchant staff user ID (or "system" for webhooks), the action and how many records were involved. No customer data values are logged | To record who viewed the block log or flagged orders and when privacy webhooks were processed | 90 days |
We do not store customers' names, street addresses, email addresses, phone numbers or payment details. Rules the merchant enters (for example a blocked email address or domain, a phone prefix or an allowed IP address) are stored as app settings. We do not use cookies or tracking on your storefront (only the browser storage described above), and we do not sell, rent or share data for advertising. Shopify's Data access section lists store owner details because apps can read basic shop information; the App reads only the shop's ID and billing country, and Shopify sign-in records the App keeps hold no staff names or email addresses.
Deletion and Shopify privacy webhooks
- When the App is uninstalled, the shop's settings, block log, flagged orders and access tokens are deleted. The access log (no customer data values) is kept for 90 days as a security record.
customers/redact: flagged-order records for the listed orders are deleted.shop/redact: all remaining data for the shop is deleted.customers/data_request: we store no customer profile. Flagged-order records contain only order IDs, order numbers and reason codes, which the merchant can see in the App.
Because the App runs as a theme app embed, no theme code is changed and nothing is left in the theme after you uninstall.
Automated decisions
The App applies rules that the merchant sets; it makes no decisions of its own. Blocked visitors and customers see a message that tells them to contact the store, so they can ask the merchant for a human review. The App never cancels orders: flagged orders only get a review tag and, if the merchant turned it on, a fulfillment hold.
Service providers (sub-processors)
| Provider | Purpose | Location |
|---|---|---|
| Shopify | Platform, app installation, billing | Canada / global |
| Vercel | App hosting and IP geolocation | United States (global edge network) |
| Neon | Database | United States (East) |
| Upstash | Short-lived cache, rate limiting and a queue that holds new block log entries until they are saved to the database | United States |
Data may be processed outside your country, including in the United States. Transfers out of the EEA, the UK and Switzerland rely on our sub-processors' data processing agreements, which include the EU Standard Contractual Clauses.
Security
- All connections are encrypted in transit: HTTPS to the App, TLS to the database (Neon) and to the cache (Upstash).
- Stored personal data is kept in our database (Neon), which is encrypted at rest (AES-256), and its backups are encrypted by the provider. The cache (Upstash) holds only short-lived data and no raw IP addresses: keyed hashes of IP addresses (HMAC-SHA256, at most 24 hours), the public IP ranges of crawlers, Tor and cloud networks, shop settings, and new block log entries (in the same form as the block log above) for up to about 15 minutes until they are saved to the database.
- We collect the minimum data, store visitor IPs only as a salted hash and delete records after the periods above.
- Production secrets are kept only in the hosting provider's environment settings, never in source code.
- One administrator has access to production systems, using unique passwords from a password manager and two-step verification on every account.
- Access to personal-data views and privacy webhooks is logged for 90 days.
- We follow a written incident response process and notify affected merchants and Shopify within 72 hours of becoming aware of an incident.
Your rights
Store visitors and customers should contact the merchant first, who can make requests through Shopify. Merchants can contact us to access, correct or delete their data. We respond within 30 days.
Our Data Processing Terms are part of the Terms of Service.
Changes
We will update this page when our data practices change and show the date at the top.