Subprocessor Register

Subprocessors

Last updated 12 May 2026

Everyone who touches your data, and why

This register is the complete list. We publish changes here thirty days before they take effect, and you can object in writing.

ProviderPurposeRegionIn use since
Aurora CloudApplication hosting and database storageLondon, United KingdomMarch 2023
Halden MailTransactional email and appointment remindersDublin, IrelandMarch 2023
Northline PaymentsCard processing and settlementFrankfurt, GermanyAugust 2023
Verity LogsError monitoring and audit log retentionLondon, United KingdomJanuary 2024
Marrow SupportSupport ticketing, member data on request onlyDublin, IrelandJune 2025
Deep green gradient backdrop

Where your records live

Primary region

Application data

London, United Kingdom

Primary

Encrypted backups

Dublin, Ireland

Secondary

Audit log archive

London, United Kingdom

7 years
0records replicated outside the region you choose

Be told before anything changes

Subscribe and we will email you thirty days ahead of any addition to this register, including the reason for it and how to object.

About this block

Subprocessor RegisterPRO

A legal section publishing every subprocessor as a scrollable hairline table with purpose, region, and start date, closing on an image tile that floats a live data residency card beside a subscribe-to-changes panel.

Legal54: Subprocessor Register

A legal section publishing every subprocessor as a scrollable hairline table with purpose, region and start date, closing on an image tile that floats a live data residency card beside a subscribe-to-changes panel.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/legal54?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/legal54?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/legal54.tsx, the location8 residency piece it floats on the tile (installed to components/beste/piece/location8.tsx), and the badge23 and button21 components it uses for the eyebrow and the action.

Quick start

The installed file exports legal54Demo alongside the block: the exact props behind the preview above. Spread it to get a working register in one line.

tsx
import { Legal54, legal54Demo } from "@/components/beste/block/legal54";

export default function SubprocessorsPage() {
  return <Legal54 {...legal54Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Legal54 } from "@/components/beste/block/legal54";
import { Location8 } from "@/components/beste/piece/location8";

export default function SubprocessorsPage() {
  return (
    <Legal54
      badge={{ label: "Subprocessors" }}
      heading="Everyone who touches your data, and why"
      description="We publish changes here thirty days before they take effect."
      updatedLabel="Last updated 12 May 2026"
      columns={["Provider", "Purpose", "Region", "In use since"]}
      rows={[
        {
          name: "Aurora Cloud",
          purpose: "Application hosting and database storage",
          region: "London, United Kingdom",
          since: "March 2023",
        },
        {
          name: "Northline Payments",
          purpose: "Card processing and settlement",
          region: "Frankfurt, Germany",
          since: "August 2023",
        },
      ]}
      media={
        <Location8
          title="Where your records live"
          region="Primary region"
          sites={[{ name: "Application data", meta: "London, UK", value: "Primary" }]}
          total="0"
          totalLabel="records replicated outside the region you choose"
        />
      }
      image={{ src: "/backdrops/green.jpg", alt: "Deep green gradient backdrop" }}
      noticeTitle="Be told before anything changes"
      noticeBody="Subscribe and we will email you thirty days ahead of any addition."
      button={{ label: "Subscribe to changes", href: "/subprocessors/subscribe" }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow at the top left, rendered through Badge23
headingstringSection heading in the left column of the header
descriptionstringSupporting paragraph, right-aligned from md up
updatedLabelstringLast-updated line, opposite the eyebrow
columnsstring[][]Table column headings
rowsSubprocessor[][]The register itself
mediaReactNodeLive asset on the tile, location8 in the demo
image{ src: string; alt: string }Backdrop behind the media tile
noticeTitlestringHeading in the subscribe panel
noticeBodystringParagraph in the subscribe panel
button{ label: string; href: string }Subscribe action
classNamestringExtra classes for the outer section
ts
type ActionLink = {
  label: string;
  href: string;
};

type Subprocessor = {
  name: string;
  purpose: string;
  region: string;
  since: string;
};

Behavior notes

  • This is a real table rather than a grid of divs, which is right for a register: it prints correctly, it can be copied into a spreadsheet, and screen readers announce the column headers with each cell.
  • The provider name is a th with scope="row", so each row is announced with its provider rather than as four loose cells. It carries an explicit font-medium, since a th inherits bold from the browser default and Tailwind's Preflight does not reset it.
  • The table has min-w-[44rem] inside an overflow-x-auto wrapper, so it scrolls horizontally on small screens rather than compressing four columns into an unreadable width.
  • Rows use align-top, so a long purpose does not push the provider name down its cell.
  • updatedLabel sits opposite the eyebrow at the top rather than in the body, which is the convention this set uses for legal pages: the date is metadata about the document, not part of it.
  • The closing row pairs the residency tile with the subscribe panel at equal width, so neither reads as the primary action.
  • Nothing here is interactive. The subscribe action is a link, so the actual list signup lives at whatever destination you point to.

More Legal blocks

View all Legal
PRO

legal35

Intellectual Property Notice

Displays trademark, patent, and copyright ownership information with registration details and usage restrictions. Suitable for product pages and legal sections.

PRO

legal57

Cookie Preference Centre

An interactive cookie notice with four hairline categories on live switches, a locked required group, save and reject-all actions, and a scrollable table naming every cookie, its purpose, and its retention.

FREE

legal55

Plain Words Terms Table

A legal section that sets each binding clause against a plain-language reading of it on hairline rows, keyed by clause references, with a precedence disclaimer under the last row.

PRO

legal5

Data Processing Agreement Card

Shows DPA details with controller/processor parties, dates, and processing purposes. Perfect for displaying B2B data processing contracts with status badges.

PRO

legal52

Policy Document With Table Of Contents

A readable policy page with a last-updated line, a sticky hairline table of contents that scrolls smoothly to each anchored section, prose sections with accent-bulleted lists, and a soft contact panel at the end.

PRO

legal50

Tabbed Platform Policies

Multi-section policy card using tabs to switch between data use, security, cookies, and user rights content. Compact way to present multiple policies.