Legal texts for Craft CMS 5
Answer two questions. Jack writes the policy.
Nobody should write a privacy policy. Tell Jack who you are and what your site uses, and it assembles the imprint, privacy policy, cookie policy and terms from a reviewed clause library, in German and English. When a fact changes, Jack tells you which document stopped being true.
Features
A document is a projection of facts, so it can be checked, compared and kept current.
The facts, once
About sixty facts about the business: legal name, address, register entry, VAT ID, data protection officer, hosting. Entered once, used by every document in every language, with per-site overrides that hold only what differs.
Processors as data
The inventory lists the services your site hands data to. Each one in the registry is described in full: provider, address, purpose, data, legal basis, transfer mechanism and cookies. The privacy policy's service sections are rendered from it, all in one voice.
Told when it stops being true
A document is compared with a fresh compilation of itself. A reworded clause, a new payment provider and a changed address all show up the same way, and Pro names the paragraphs that moved.
Nothing goes live by accident
Compiling is automatic. Publishing is deliberate. Visitors only ever see a published version, so a half-typed address never appears on a live imprint, and every version is kept so you can say what the policy said on any day.
Finds what you forgot
Pro's detector reads your templates, installed plugins and environment, and reports services that are on the site but missing from the privacy policy, with the file and line as evidence.
- Google Fonts loaded from Google's servers is flagged by name
- The report never prints an environment value
Current as the law moves
The clause library ships inside the plugin and is dated. § 5 DDG, not TMG. TDDDG, not TTDSG. No dead link to the EU dispute platform, which closed in July 2025. A composer update is how a site's texts get better.
One tag in the footer
Every document has its own page by default. To put one inside your own templates, ask for it by type or handle; the footer address and the imprint read the same facts, so they cannot disagree.
{{ craft.jack.render('privacy', { toc: true, headingLevel: 2 }) }}
<footer>
{{ craft.jack.profile()['company.name'] }}
<a href="{{ craft.jack.url('imprint') }}">Impressum</a>
<a href="{{ craft.jack.url('privacy') }}">Datenschutz</a>
</footer>
{# In CI: fails the build over a policy that stopped being true #}
{# php craft jack/documents/check --strict #}
Frequently Asked Questions
The questions worth answering before you install it.
Lite is free and covers the two documents German law requires: an imprint and a privacy policy, in one language, from the whole clause library and processor registry. Pro is $99, then $79 a year for updates. It adds the cookie policy, terms, withdrawal instructions and the other document types, every site and language, rewriting clauses, the detector, version history and the console commands.
No. Jack produces drafts from facts you supply, using boilerplate that is conventional rather than bespoke. Somebody accountable should read a document before it is published, and a business with unusual processing needs a lawyer, not a generator.
German and English throughout, written for Germany, Austria and the EU, with a California notice for sites that serve the US. German is the primary text; the English is a translation of the same clauses, not a different policy.
Nothing on the site changes. Editions gate creating and editing; published documents keep rendering. A privacy policy that disappears over a billing problem is worse than anything it could prevent.
Craft CMS 5.3+ and PHP 8.2+.
Fill in the profile. Publish the imprint.
Install Jack, work through the profile, add the services your site uses, and publish. The audit will tell you what is still missing.