Jack for Craft CMS

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.

Jack

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.

twig
{{ 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.

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.