Privacy Policy: Bulkora
Last updated: 30 October 2026
Metafoid (“Metafoid,” “we,” “us,” or “our”) operates the Shopify app Bulkora: Import Export & Edit (“Bulkora” or “the app”). This policy explains how we process information when merchants install and use Bulkora.
It covers Bulkora only. Browsing metafoid.com and our other services are covered by the Metafoid website privacy policy. If you do not agree with this policy, do not install or use Bulkora.
Who we are
Metafoid is a web development company registered in Pakistan, with its office at Office 30-D, Stadium, Quaid-e-Azam Sector F 1, New Mirpur City, 10250, Azad Jammu and Kashmir, Pakistan. Metafoid develops and operates Bulkora.
Roles under the GDPR
- The merchant (Shopify store owner and staff) is the data controller for the store's customer and order personal data.
- Metafoid acts as a data processor, on the merchant's instructions, when the merchant runs exports, imports, bulk edits, Logs or Revert, and when Shopify sends the mandatory compliance webhooks for that shop.
Where Shopify processes data as part of its platform, Shopify's own terms and privacy policy apply.
1. What data Bulkora accesses
Bulkora is an embedded Shopify admin app. It reads and writes store data only through the Shopify Admin API, after the merchant installs the app and grants these access scopes:
read_orders write_orders write_draft_orders read_products write_products read_inventory write_inventory read_customers write_customers read_publications write_publications read_online_store_navigation write_online_store_navigation read_metaobjects write_metaobjects read_metaobject_definitions read_content write_content read_online_store_pages write_online_store_pages
Bulkora does not request read_all_orders, so Shopify limits order access to roughly the last 60
days.
1.1 Store and catalog data
Depending on the tools the merchant uses, Bulkora may read or write:
- Orders and draft orders, including line items, variant SKU and options, and the financial and fulfillment fields the merchant selects
- Products and variants: title, description, vendor, type, tags, status, pricing, cost, SKU and barcode, tax, inventory, shipping and weight, HS code and origin, SEO, template, options, collections, shopping attributes, metafields, and channel, region, B2B and POS availability and pricing
- Customers: the profile fields the merchant selects, with optional order history on export
- Collections: title, description, SEO, template, sort order, metafields and sales channel publishing
- Metaobjects, pages, blog articles and URL redirects, on plans that include them
1.2 Protected customer data
When a job includes customer fields, Bulkora may process data that Shopify classifies as protected customer data: name, email, phone and address (billing, shipping and default). These fields can appear in job files and in Logs (run settings, per-row results, filenames and filter values) when they were part of the job.
1.3 Data we store ourselves
For each installed shop we store:
- The Shopify session and offline access token needed to call the Admin API
- Job Logs: job type, status, filters and settings, filename, counts, timestamps and per-row results, which can include customer emails, phone numbers, names, addresses and order IDs when those fields were part of the job
- Revert snapshots: the before-state of Product Edit and Collection Edit runs, so Revert can restore it
- Data request records created by Shopify's
customers/data_requestwebhook, so the merchant can download them in the app - The plan status reported by Shopify Billing. We never receive or store payment card numbers.
We do not use store or customer data for advertising, sale or unrelated analytics.
2. Why we process data
| Purpose | Examples | Legal basis (GDPR) |
|---|---|---|
| Provide the app's features | Export and import CSV or Excel, field pickers, filters, Product Edit, Collection Edit, Revert, Logs, re-run failed rows | Art. 6(1)(b), performance of the contract with the merchant, and processing on the merchant's instructions |
| Sign in to the embedded app | Session and offline access tokens | Art. 6(1)(b) |
| Billing through Shopify | Create or change app subscriptions with the Shopify Billing API | Art. 6(1)(b) |
| Mandatory privacy compliance | customers/data_request, customers/redact, shop/redact, app/uninstalled | Art. 6(1)(c), legal obligation and Shopify Partner requirements |
| Security and abuse prevention | TLS, secret rotation, incident response | Art. 6(1)(f), legitimate interest in a secure service |
| Support | Replying to emails sent to support@metafoid.com | Art. 6(1)(b) or 6(1)(f) |
Merchants remain responsible for their own legal basis toward their customers.
3. Sub-processors
| Sub-processor | Role | Region |
|---|---|---|
| Shopify | App platform, sign-in, Admin API, Billing API, compliance webhooks | Per Shopify's terms |
| Fly.io | Production app hosting | Paris, France |
| Neon | Production Postgres database for sessions, Logs and compliance records | Frankfurt, Germany (eu-central-1) |
We do not share store or customer data with advertising networks, data brokers or analytics products.
4. Retention
| Data | How long we keep it |
|---|---|
| Sessions and access tokens | Deleted as soon as the app is uninstalled |
| Job Logs | The latest 200 runs per job type per shop (older runs are deleted automatically). Kept after uninstall until Shopify's shop deletion request. |
| Revert snapshots | Stored inside the job Logs, with the same retention |
| Data request records | Until that customer is redacted or the shop's data is deleted |
| Support emails | Up to 24 months after the conversation ends, then deleted |
5. Security
- TLS (HTTPS) for the app and the Shopify embedded session
- Secrets kept in the hosting provider's secret store, never in source code
- HMAC verification on Shopify compliance webhooks
- Timing-safe checks on the scheduled cleanup job
- Access limited to the operator account
- A written Security Incident Response Policy
Metafoid holds no third-party security certifications such as SOC 2.
6. GDPR and CCPA webhooks
-
customers/data_request: we find the data we stored for that customer (by ID, email or phone) and make a JSON export available for the merchant to download in the app, so the merchant can answer the request. -
customers/redact: we redact the Log fields we can match to that customer (ID, email, phone, and related names and addresses), clear matching filter values, and clear the related data request records. This is best effort: data that cannot be matched to the customer cannot be redacted. -
shop/redact: Shopify usually sends this about 48 hours after uninstall. We then delete every session, Log and data request record for that shop. -
app/uninstalled: we delete the shop's sessions immediately. Logs and data request records stay untilshop/redact.
7. Deletion after uninstall
| Event | What happens | When |
|---|---|---|
| Merchant uninstalls | Sessions deleted | Immediately |
| After uninstall | All of the shop's data deleted: sessions, Logs and data request records | On shop/redact, usually about 48 hours later |
| Customer erasure request through Shopify | Matching Log and data request fields redacted | On customers/redact |
Want your data deleted sooner? Email support@metafoid.com with your shop domain after you uninstall, and we will delete all of your shop's data on request.
8. Where data is stored
The production app runs on Fly.io servers in Paris, and the production database is on Neon servers in Frankfurt. Shopify may process data in other regions under its own terms. If we add a provider or move data to another region, we will update this policy first.
9. Your rights
Customers of a merchant should contact that merchant (the controller) first to use their GDPR or CCPA rights: access, correction, erasure, restriction, objection and portability. Bulkora supports merchants by honoring Shopify's compliance webhooks and providing exports of what Bulkora stored.
Merchants can email support@metafoid.com to:
- Ask what Bulkora stores for their shop
- Ask for their data to be deleted after uninstall
- Report a security or privacy concern
If a personal data breach affects a merchant's data, we inform the merchant without undue delay and no later than 72 hours after we confirm it, as described in our Incident Response Policy.
10. Children's privacy
Bulkora is a business tool for merchants. It is not directed to children under 16 (or under 13 where that is the applicable age), and we do not knowingly collect children's data through it.
11. Selling and sharing
We do not sell personal data. We share store and customer data only with the sub-processors listed above, only to run Bulkora and meet legal and Shopify Partner obligations.
12. Billing
Paid plans are charged through the Shopify Billing API. Shopify processes the merchant's payment method; Bulkora never receives full card numbers.
13. Changes
We may update this policy. When we do, the “Last updated” date above changes, and material changes are shown on this page.
14. Contact
MetafoidBulkora privacy and support: support@metafoid.com
Registered office: Office 30-D, Stadium, Quaid-e-Azam Sector F 1, New Mirpur City, 10250, Azad Jammu and Kashmir, Pakistan
Website: https://metafoid.com