Compliance and legal pages management (AGB, Terms & Conditions, Privacy Policy, Impressum) for Medusa v2 with an interactive Admin Dashboard UI, public Store APIs, and multilingual support.
A lightweight, production-ready Medusa v2 plugin for managing compliance and legal disclosure pages (AGB / Terms & Conditions, Datenschutzerklärung / Privacy Policy, and Impressum / Legal Notice) directly inside the Medusa Admin panel.
In your Medusa v2 backend project root:
Or with yarn / pnpm:
Simply register the plugin in your :
That's it! In Medusa v2, registering the plugin automatically:
Run the database migration to create the table and indexes:
npx medusa db:migrateThe plugin provides public endpoints for web storefronts and mobile apps:
GET /store/legal-pages?locale=enResponse (200 OK):
GET /store/legal-pages/:slug?locale=deExample:
Response (200 OK):
Contributions and feedback are always welcome! Feel free to open an issue or submit a pull request.
Distributed under the MIT License. See LICENSE for more information.
npm install medusa-plugin-legal-pages1yarn add medusa-plugin-legal-pages2# or3pnpm add medusa-plugin-legal-pages1import { defineConfig } from "@medusajs/framework/utils"2
3module.exports = defineConfig({4 projectConfig: {5 // ... your project config6 },7 plugins: [8 {9 resolve: "medusa-plugin-legal-pages",10 options: {},11 },12 ],13})1{2 "legal_pages": [3 {4 "id": "leg_01J8ABC...",5 "slug": "terms",6 "title": "Terms and Conditions (GTC)",7 "locale": "en",8 "version": "1.0",9 "updated_at": "2026-09-26T20:00:00.000Z"10 },11 {12 "id": "leg_01J8DEF...",13 "slug": "privacy-policy",14 "title": "Privacy Policy (GDPR)",15 "locale": "en",16 "version": "1.0",17 "updated_at": "2026-09-26T20:00:00.000Z"18 }19 ]20}1{2 "legal_page": {3 "id": "leg_01J8ABC...",4 "slug": "agb",5 "title": "Allgemeine Geschäftsbedingungen",6 "content": "# Allgemeine Geschäftsbedingungen\n\n### § 1 Geltungsbereich...",7 "locale": "de",8 "is_published": true,9 "version": "1.0",10 "updated_at": "2026-09-26T20:00:00.000Z"11 }12}1// services/legal.ts2const MEDUSA_BACKEND_URL = "https://api.yourstore.com"3
4export const fetchLegalPage = async (slug: string, locale: string = "de") => {5 const res = await fetch(`${MEDUSA_BACKEND_URL}/store/legal-pages/${slug}?locale=${locale}`, {6 headers: {7 "x-publishable-api-key": process.env.EXPO_PUBLIC_MEDUSA_PUBLISHABLE_KEY!,8 "Accept": "application/json",9 },10 })11 if (!res.ok) return null12 const data = await res.json()13 return data.legal_page14}