Data Processing Agreement
Last updated: 2026-06-09 Version: 1.7
This is Ordinary’s launch-version Data Processing Agreement. It reflects GDPR Article 28 minimum requirements and industry-standard SaaS practice. External legal counsel review is planned when revenue supports it. If you’re a merchant with a specific legal requirement not covered here, contact privacy@tryordinary.com and we’ll address it inline.
This Agreement governs Ordinary’s processing of Personal Data on behalf of its merchant customers (“Controller”) who use the Ordinary application (“Processor” or “Ordinary”). It is effective from the date the Controller accepts Ordinary’s Terms of Service and remains in force for the duration of the Controller’s use of the Ordinary Service.
1. Definitions
- Controller: the Shopify merchant (organisation and/or individual) that uses Ordinary to analyse its store’s data.
- Processor: Ordinary (the service, operated by Rendr Inc).
- Personal Data: any information relating to an identified or identifiable natural person, as defined by GDPR Art. 4(1), CCPA, and equivalent regulations.
- Data Subject: the person to whom the Personal Data relates — typically a customer who purchased from the Controller’s Shopify store.
- Sub-Processor: a third party engaged by Ordinary to process Personal
Data on behalf of the Controller. The canonical list is maintained at
/sub-processors and in
docs/SUB_PROCESSORS.mdin this repository. - Service: the Ordinary application at app.tryordinary.com, including its pixel, APIs, reports, and integrations.
2. Roles and Scope
2.1 Controller / Processor relationship
The Controller determines the purposes and means of processing Personal Data (what analytics to collect, which integrations to enable, whether to forward events to ad platforms). Ordinary acts as a Processor, processing Personal Data solely to provide the Service on the Controller’s documented instructions.
Where Ordinary forwards hashed customer identifiers to a third-party ad platform (Meta Conversions API) at the Controller’s instruction, Ordinary acts as a Processor in this activity too. Meta is a separate Controller or joint Controller of the data it receives, per its own terms. Ordinary’s role is limited to hashing and forwarding on the Controller’s behalf. Ordinary’s Google Ads integration reads Google’s reporting APIs and, at the Controller’s instruction, creates draft (non-serving) ad creative assets in the Controller’s own Google Ads account; Ordinary does NOT forward customer identifiers or conversion data to Google, and does not manage campaigns, budgets, bids, audiences, or live ad serving. Ordinary’s Klaviyo integration is also read-only ingest of Klaviyo’s reporting APIs; Ordinary does NOT send campaigns, edit flows, modify lists, or upload subscribers to Klaviyo.
2.2 Documented instructions
The Controller’s instructions to the Processor are documented in:
- This DPA
- The Terms of Service at /terms
- The settings the Controller configures in the Ordinary dashboard (integrations enabled/disabled, ad accounts connected, pixel installed on the Controller’s store)
- Written communications between the Controller and Ordinary
If the Controller issues instructions outside this scope, Ordinary will notify the Controller and may decline to execute them until they are formalised.
3. Nature, Purpose, and Duration of Processing
3.1 Nature and purpose
Ordinary processes Personal Data to provide cross-channel attribution and customer-journey analytics to the Controller. Specifically:
- Recording customer browsing behaviour on the Controller’s storefront (via the Shopify Web Pixel installed by the Controller)
- Syncing order data from the Controller’s Shopify store (via OAuth)
- Joining browsing events with orders to attribute revenue to marketing channels, pages, products
- Optionally forwarding hashed customer identifiers and order values to Meta (via the Conversions API) to improve the Controller’s campaign measurement. Ordinary’s Google Ads integration reads reporting data and, at the Controller’s instruction, creates draft ad creative assets in the Controller’s own account — no customer identifiers or events are forwarded TO Google.
3.2 Duration
Processing continues for the duration of the Controller’s use of the Service. Data is retained per Section 8 (“Return or Deletion of Data”) on termination.
4. Types of Personal Data and Categories of Data Subjects
4.1 Categories of Data Subjects
- End customers of the Controller’s Shopify store — people who visited or purchased from the Controller’s storefront
- Authorised users of the Controller’s Ordinary account — typically the Controller’s employees who log in to the Ordinary dashboard
4.2 Categories of Personal Data processed
This section describes the categories of Personal Data Ordinary processes on the Controller’s behalf. It is a category-level description, not a field-level inventory — the specific data points captured within each category evolve as the Service evolves.
4.2.1 Storefront activity (end customers of the Controller’s storefront)
Through the Shopify Web Pixel installed by the Controller, Ordinary captures storefront browsing and checkout interactions on the Controller’s behalf — for example pages and products viewed, search and cart activity, and progress through the checkout. Until the buyer enters identifying details at checkout, this activity is associated only with a pseudonymous visitor identifier.
The categories of Personal Data captured through this surface are:
- Browsing and interaction data — the storefront pages and products a visitor engages with, their search and cart activity, the marketing parameters and ad-click identifiers present on the URLs they arrive through (used for marketing attribution), and a returning-visitor signal.
- Device and approximate-location data — browser and device characteristics, and a coarse, city-level approximate location. The approximate location is derived from the network request at Ordinary’s ingest endpoint; the raw IP address is used only to derive the approximate location and is not stored against the event.
- Contact details at checkout — the email address and phone number a buyer enters at checkout, billing and shipping locality (e.g. country, region, postal code, city), and email/SMS marketing-consent flags. This data is retained even where a checkout is abandoned and never becomes an order.
- Cart and order commerce data — cart and order values, line items, discounts, currency, and any merchant-configured cart attributes, together with the resulting order and customer identifiers once a purchase completes.
A limited amount of attribution data (such as the marketing parameters a visitor first arrived through) may be held in the visitor’s own browser storage to support attribution across sessions. Where the buyer declines analytics consent through Shopify’s consent controls, this falls back to storage that is discarded when the browsing session ends.
4.2.2 Commerce data synced from Shopify
Once an order is placed, and on subsequent updates, Ordinary syncs commerce data from the Controller’s Shopify store via the Shopify Admin API. The categories of Personal Data this involves are:
- Order and commerce data — orders, line items, totals, currency, timestamps, fulfilment and financial status, and refunds.
- Customer record data — the customer’s name, email, phone, addresses, and order history as held in the Controller’s Shopify store.
(Product-catalogue and shop-settings data are also synced but do not relate to an identifiable natural person.)
The customer’s email address and phone number reach Ordinary both through checkout (§ 4.2.1) and through this Admin-API sync. Raw email and phone are stored within the Controller’s own data partition and are never sent to any third party in raw form.
Connected advertising and marketplace reporting data (read-only ingest)
When the Controller connects a Meta, Amazon, or Google Ads account to Ordinary, Ordinary ingests read-only reporting data via the respective platform’s API. For advertising accounts this is ad-performance data — performance metrics, ad creative content, targeting summaries, and configuration history for the Controller’s own campaigns. For a connected Amazon Seller account, Ordinary additionally ingests the Controller’s own Amazon selling-operations data — sales and traffic metrics, financial data (settlements, fees, refunds, and adjustments), inventory levels, and order records (product, quantity, and price only). In all cases this is the Controller’s own marketing- and business-operations data from the Controller’s own accounts; it does not include Personal Data of the Controller’s end customers / shoppers — in particular, the Amazon order records Ordinary ingests do not include end-buyer names, email addresses, or shipping addresses.
For Klaviyo this ingest is read-only in both directions: Ordinary reads reporting data and does not send campaigns, edit flows, modify lists, or upload subscribers. For Google Ads, Ordinary reads reporting data and, at the Controller’s instruction, creates draft (non-serving) ad creative assets in the Controller’s own account; it does not create, edit, or manage campaigns, audiences, budgets, or bids, does not serve or pause live ads, and does not upload conversions, customer-match audiences, or customer identifiers. Where a storefront order carries an ad-platform click identifier in its URL, Ordinary may match the order to the corresponding campaign so the Controller can compare platform-reported conversions against orders its storefront recorded.
Per Google Ads API Terms § 7(B), to the extent any Google Ads data constitutes personal data under the GDPR, Ordinary processes it consistent with the Controller’s obligations under the Google Ads Controller-Controller Data Protection Terms (https://privacy.google.com/businesses/controllerterms) and / or Google Ads Data Processing Terms (https://privacy.google.com/businesses/processorterms), as applicable to the Controller’s Google Ads program account.
4.2.3 Hashed customer identifiers (only when forwarded to ad platforms)
When the Controller has connected the Meta integration, Ordinary forwards
hashed (irreversible, SHA-256) customer identifiers derived from contact
and name details — together with order values — to the Meta Conversions API,
on the Controller’s instruction, to improve the Controller’s campaign
measurement. No identifier is forwarded in raw form. Ordinary does not
forward customer identifiers to Google Ads, Amazon, or Klaviyo. None of
these receive end-customer Personal Data from Ordinary — the Google Ads
integration’s only write is creating draft ad creative assets at the
Controller’s instruction (no customer data; see § 4.2.2), and Amazon and
Klaviyo are read-only ingest only. The current
Sub-Processor list is maintained at /sub-processors.
4.2.4 Authorised users of the Controller’s Ordinary account
For the Controller’s own staff who log in to the Ordinary dashboard, Ordinary processes account and authentication data:
- Email and name (from Ordinary’s authentication provider)
- Role assignments within the Controller’s organisation
- Standard authentication logging (including IP address and browser/device information for sign-in events)
Where the Controller installs Ordinary from the Shopify App Store, Ordinary uses the shop owner’s name and email supplied by Shopify during the OAuth handshake to create the initial authorised-user account. No password is collected at install. If an account already exists for that email, the new organisation membership is attached to it rather than creating a duplicate.
4.2.4a Acceptance records for Ordinary’s Terms and Privacy Policy
When an authorised user accepts the Ordinary Terms of Service or Privacy Policy, Ordinary records which document and version was accepted, when, and the browser information for the acceptance, so it can demonstrate consent if later asked by the Controller, a data subject, or a regulator. Consistent with Ordinary’s region-aware posture (§ 4.2.5), the IP address of the acceptance is retained only for visitors outside the stricter-regulation regions. These records are retained for the lifetime of the authorised user’s account plus a defensible audit window thereafter.
4.2.5 Attribution, identity linkage, and region-aware posture
To provide attribution analytics, Ordinary associates a visitor’s sessions with one another and with the orders they place, so the Controller can see which marketing channels and touchpoints led to a purchase. Within the same browser, this association relies on a pseudonymous identifier that is not derived from Personal Data and is treated as pseudonymous under GDPR Art. 4(1) until and unless it is linked to identifying data.
Region-aware posture. For visitors in stricter-regulation regions — the European Economic Area, the United Kingdom, Switzerland, and Brazil — Ordinary applies a more conservative identity-linkage posture: it does not perform the cross-session, email-based linkage it may perform for visitors elsewhere, so a single buyer using multiple devices may appear to the Controller as multiple distinct visitors. Visit-to-order attribution within the same browser is preserved in all regions; only the broader cross-device, identity-based linkage is suppressed for stricter-region visitors. This posture is the default and is applied at the point the data is collected.
For visitors elsewhere (including the US, Canada, Australia, New Zealand, and the rest of the world), Ordinary performs the broader identity linkage as part of the attribution feature, on the Controller’s documented instruction and in reliance on the Controller’s own privacy disclosures. This linkage takes place within the Controller’s own first-party systems and does not constitute a “sale” or “share” of personal information under CCPA / CPRA.
A Controller in a stricter-regulation region that wishes to enable the broader linkage for its own buyers may request this in writing, provided its privacy policy and consent practices cover the linkage; the default remains the more conservative posture.
4.2.6 Server-derived attribution for some orders
For a small proportion of purchases — for example where a shopper’s browser blocks analytics from running — Ordinary may not capture storefront activity directly. For those orders, Ordinary may derive a limited attribution view from the order data the Controller already shares with Ordinary and from Shopify’s own customer-journey information for the order. These derived records introduce no new categories of Personal Data beyond the order data itself, do not reconstruct pre-purchase browsing, and follow the same region-aware posture described in § 4.2.5. Where genuine storefront data and a derived view both exist for an order, Ordinary’s reports use the genuine data.
4.2.7 Historical analytics baseline (pre-install backfill)
When a Controller installs Ordinary, Ordinary retrieves a one-time historical analytics baseline from Shopify covering the period before installation, so the Controller’s dashboards have historical context. This baseline consists of aggregate traffic and source data only — it contains no individual-shopper identifiers and no end-customer Personal Data, and is included here only for completeness of the Shopify → Ordinary data flow.
4.3 What Ordinary does NOT process
- Payment card details — Ordinary never receives these; payment processing
for Ordinary’s own subscription fees is handled by a third-party payment
processor (see
/sub-processors) - Customer passwords — authentication is delegated to Ordinary’s authentication provider
- Precise geolocation — Ordinary holds only the coarse, approximate geography described in § 4.2.1
- Health, biometric, or other special-category data (GDPR Art. 9) — not supported
5. Security Measures
Ordinary implements appropriate technical and organisational measures to protect Personal Data against unauthorised or unlawful processing and against accidental loss, destruction, or damage. These measures are reviewed periodically as the Service evolves.
5.1 Technical measures
- Transport encryption — TLS 1.2+ for all data in transit between Controller’s storefront, Ordinary, and sub-processors
- Encryption at rest — database disk encryption (Neon/AWS) + encrypted secret storage for OAuth tokens (AES-256)
- Access control — staff access to production data requires authenticated login (Clerk) plus a privileged platform administrator role. All access is audit-logged
- Multi-tenant isolation — every database record is scoped to the organisation it belongs to, and that scope is enforced consistently through a single centralised access-control check on API requests
- Hashed PII for ad-platform forwarding — any contact or name details forwarded to Meta (the only platform Ordinary forwards to; see § 4.2.3) are irreversibly hashed server-side before they leave Ordinary
- Audit logging — every privileged action (role change, data deletion, integration connection, etc.) is logged with actor + timestamp + before/after state
- Regular dependency updates + automated security scans in CI
- Principle of least privilege on all third-party OAuth scopes
5.2 Organisational measures
- Staff with production access undergo reasonable background checks and sign confidentiality agreements
- Data-access changes (granting or revoking privileged administrator access) are logged
- Security findings identified by internal or external testing are tracked in an administrator-only security dashboard
5.3 Breach notification
Ordinary will notify the Controller without undue delay, and in any event within 72 hours of Ordinary becoming aware of a Personal Data breach affecting the Controller’s data. Notification will include:
- Nature of the breach, categories and approximate number of data subjects and records concerned
- Contact point for further information
- Likely consequences of the breach
- Measures taken or proposed to address the breach
Notification will be sent to the administrative contact on file for the Controller’s account. Controllers are responsible for maintaining a valid administrative email in their Ordinary account settings.
6. Sub-Processors
6.1 General authorisation
The Controller authorises Ordinary to engage Sub-Processors to process
Personal Data, subject to the conditions in this section. The current list
of Sub-Processors is maintained at
/sub-processors and in
docs/SUB_PROCESSORS.md in this repository.
6.2 Notification of new Sub-Processors
Ordinary will update the Sub-Processor list at least 30 days before engaging a new Sub-Processor for a new category of processing. Controllers may object to the new Sub-Processor in writing within that 30-day window. If the objection is reasonable and cannot be resolved, the Controller may terminate the Service without penalty as its sole remedy.
6.3 Ordinary’s obligations
Ordinary will impose on each Sub-Processor data-protection obligations no less protective than those in this DPA. Ordinary remains liable to the Controller for the performance of its Sub-Processors.
7. Data Subject Rights
7.1 How data-subject requests reach Ordinary
End-customer data-subject requests (access, deletion, correction, portability) are managed primarily through the Controller’s own Shopify admin, which issues the standard Shopify GDPR webhooks. Ordinary receives:
customers/data_request— Ordinary compiles the Personal Data it holds for that customer (their customer record, order history, and recorded storefront activity) and provides it to the Controller’s administrators within 30 dayscustomers/redact— Ordinary anonymises the customer’s Personal Data so the records no longer identify the individual, which also ends any future ad-platform forwarding for that customershop/redact— on Shopify uninstall, Ordinary anonymises the Controller’s data organisation-wide
Controllers can also contact Ordinary at privacy@tryordinary.com to initiate the same requests directly.
7.2 Response timeline
Ordinary will respond to data-subject requests initiated by the Controller within 30 days, consistent with GDPR Art. 12(3). For technical requests requiring a larger dataset (e.g. a full customer-journey export spanning years), the timeline may extend to 60 days with prior notice.
7.3 Controller’s responsibility
The Controller is responsible for:
- Responding to the data subject directly
- Validating the identity of data subjects before requests are forwarded to Ordinary
- Maintaining its own privacy policy and consent practices
Ordinary will not respond directly to end-customer data-subject requests for Controller data except in emergencies or as required by law, in which case Ordinary will notify the Controller before or concurrently with the response.
8. Return or Deletion of Data on Termination
8.1 On termination of the Service
Within 90 days of termination of the Controller’s Service:
- All Personal Data in Ordinary’s production database is deleted; deleting the Controller’s organisation account cascades to remove the associated records across Ordinary’s data stores
- Backups containing the Controller’s data are overwritten per the standard backup-rotation cycle (Ordinary’s primary database provider, Neon, retains Point-in-Time Recovery for 30 days)
- Operational audit logs are retained for approximately 30 days. Billing and financial records are retained as required by tax and accounting law (typically up to 7 years), in minimised form.
8.2 Early export
At any time before termination, the Controller can export its data via:
- The built-in CSV export on each report page
- The Shopify
customers/data_requestpathway for customer-scoped data - A formal export request to support@tryordinary.com for org-wide data bundles
8.3 Data that cannot be fully deleted
Where hashed identifiers have been forwarded to Meta or other ad-platform Sub-Processors before the deletion request, Ordinary cannot delete the data from those platforms — the Controller must use the ad platform’s own data-deletion flow, which Ordinary will assist with on request. (Google Ads is not in this list because Ordinary forwards no customer identifiers to Google in the first place — the integration reads reporting data and at most creates draft ad creative assets, which contain no customer Personal Data.)
9. Cross-Border Transfers
Ordinary’s primary infrastructure is hosted in the US (Vercel, Neon on AWS) with EU-region options available for specific components where required. For data transfers from the EEA / UK / Switzerland to the US, Ordinary relies on the EU-US Data Privacy Framework where the Sub-Processor is certified, and on Standard Contractual Clauses (2021 SCCs, module 2 or 3) otherwise.
Controllers subject to EU/UK/Swiss data-protection law may request a signed copy of the SCCs via privacy@tryordinary.com.
10. Audit Rights
The Controller or a mutually agreed independent auditor may audit Ordinary’s compliance with this DPA once per calendar year, at the Controller’s expense and with at least 30 days’ written notice. Ordinary may satisfy audit requests by providing:
- Copies of recent third-party audit reports (SOC 2, ISO 27001, etc.), when obtained
- Completed security questionnaires (SIG Lite, CAIQ)
- This DPA, Sub-Processor list, and the security measures documented in Section 5
On-premises audits are available for Controllers with legitimate compelling reasons, subject to scheduling and reasonable confidentiality protections.
11. Liability
Liability under this DPA is governed by the Limitation of Liability section of Ordinary’s Terms of Service. The Controller and Ordinary each remain liable for their own compliance failures. Ordinary is not liable for data-subject requests unanswered because the Controller did not forward them from Shopify or otherwise communicate them.
12. Governing Law
This DPA is governed by the same law as Ordinary’s Terms of Service (Delaware, USA). For Controllers subject to EU/UK data-protection law, the GDPR and UK GDPR apply to the processing of Personal Data under this DPA, and the SCCs referenced in Section 9 apply to cross-border transfers.
13. Contact
For any matter relating to this DPA:
- General / privacy: privacy@tryordinary.com
- Security / breach reports: security@tryordinary.com
- DPA-specific questions / signed SCC requests: privacy@tryordinary.com
Ordinary commits to responding within 5 business days.