Today I want to talk about the Model Release Form at halle.online/model-release — a legally sound consent system for photography that I built for my own portfolio and am now expanding into a standalone product for German and EU photographers.
The problem
Anyone photographing people in Germany who wants to publish those images needs documented consent under § 22 KunstUrhG (German Copyright Act). GDPR adds Article 7: consent must be freely given, informed, unambiguous, and revocable. Plus the standard data protection notice under Article 13.
What most photographers actually use:
- Paper forms — get lost, hard to search, the subject rarely gets a copy
- Generic SaaS — English-only, US-law-oriented, don’t cover the German specifics
- PDF templates from the internet — usually outdated (pre-GDPR), often legally unsound
- Custom Word documents — no audit trail of who signed what when
I needed something for my portfolio that was legally clean, digitally signable, automatically documented, and available in three languages (Halle has an international student scene — many of my model requests come in English or Spanish).
Nothing existed that covered all four requirements. So I built it.
What it does
Personal data, contact, date of birth (for minor-specific provisions), photoshoot context (date, location, type).
Individually selectable: portfolio, social media, commercial use, advertising. Each option is optional — the model decides.
Worldwide, DACH region (DE/AT/CH), Germany only — choose progressively.
Indefinite, 10 years, 5 years, or revocable at any time — explicitly set per model.
For people under 18, a second block for parental consent appears automatically — no consent without it.
Drawing with finger/mouse on canvas OR plain-text name entry as legally compliant electronic signature (eIDAS Level 1).
After submission, the model immediately receives a PDF copy by email (via Brevo). Plus confirmation to me. No login, no delivery questions.
Explicitly mentioned in the PDF and confirmation text: "This consent can be revoked at any time." Plus contact address for revocation.
Compliance anchors
The form is not “probably legally OK” — it’s explicitly built against German and EU regulations:
Name, date, signature, context. Meets the evidentiary requirements per BGH (Federal Court of Justice) precedent (BGH I ZR 75/05).
Persons of public interest, accompaniment, gatherings — the form does NOT claim these KUG exceptions; it instead obtains explicit consent (the safer path).
(a) freely given: model can decline each item separately. (b) informed: purpose, recipients, retention named in the form. (c) unambiguous: active confirmation by click + signature, no pre-check. (d) revocable: explicitly stated + contact.
Controller (Arnold Wender, Halle.Online), purpose (portfolio + possibly commercial), legal basis (Art. 6 (1) (a) GDPR), retention period, recipients (Brevo as data processor), data subject rights — all listed, not just linked.
Under 16, consent only with parental authorization (German-specific — stricter than the EU default of 13). The form detects the date of birth and unlocks the corresponding block automatically.
Level 1 (simple electronic signature) is sufficient for KUG consent. The canvas drawing or plain-text entry meets that.
Tech stack
The implementation is intentionally minimalist — no React, no backend, all in Astro with a few targeted vanilla-JS islands:
What runs under the hood
- Astro 6 as framework
The whole halle.online site runs on Astro 6.1 + TypeScript strict. The form is a single .astro file (ModelReleaseForm.astro) plus three form molecules (FormFieldset, FormCheckbox, FormRadioGroup).
- Trilingual i18n
src/i18n/model-release.ts holds all strings for DE/EN/ES. The slug path stays the same (/model-release/), but fields, labels, buttons, and confirmation PDF differ by browser locale.
- Vanilla JS for signature
Canvas element + pointer events for drawing, fallback to plain-text entry. No external library. ~80 lines including touch support for tablet/phone.
- Brevo for email delivery
POST → /api/model-release collects form data, generates the PDF (jspdf), sends it as an attachment via Brevo Transactional API to the model + a copy to me. Idempotent: same email within 60s does not get sent twice.
- Success page rendered separately
src/pages/model-release/erfolg.astro shows confirmation + email arrival hint + revocation notes after submission. No SPA navigation — clean server-render with a unique URL for browser history.
- GDPR logging minimal
No input is stored longer than necessary. PDF delivery complete → data is not buffered further on the frontend. Brevo logs (for data processing) are documented in the data processing agreement.
Effort and what’s next
The form has been live on halle.online since April 27, 2026. I’ve used it for three photo sessions since. Every model received the PDF within seconds, every revocation notice was included, no edge case has come up.
While using it, I kept thinking: “All photographers should need this.”
Especially one: my brother Wolf Wender, photographer and post-producer based in Mexico City. Wolf is at another level — his portfolio includes the Rolling Stones Mexico 2016 campaign, work with Wisin, and a long list of commercial and editorial gigs that don’t fit in a single sentence. Every time he photographs someone he needs exactly what I need: documented consent, in the model’s language, with a copy for him and for the model, no paperwork lost.
His current site runs on WordPress (built years ago by Werbeagentur Wender Media). The plan: migrate it to Astro in the coming months — and when that happens, I’ll gift him this component integrated into his new site. Until then it’s on the list. But knowing this tool will serve someone who travels the world between shoots and takes his craft seriously validates the decision to build it right from the start.
Roadmap to a standalone system
Other photographers can embed the form via `<script>` or iframe into their own WordPress / Shopify / Squarespace site. Logo + colors customizable. PDF arrives with their logo, address, domain in the sender.
Standalone domain, login, dashboard with all signed releases. Search by model name, date, shoot. Export as bulk PDF or CSV.
Every consent has an immutable audit trail (IP, timestamp, browser fingerprint). Court-defensible in case of dispute.
Studios with multiple photographers can centrally manage releases — who used which models when and how, with permission system.
Why no existing tool fits
I researched before building. What’s out there:
- EasyRelease — US-based, KUG not covered, no German
- Releases.app — generic, no GDPR specifics
- PhotoForm by Mylio — photo workflow tool with releases as a side feature, no German legal focus
- Generic form builders (Typeform, Tally, Jotform) — don’t build a KUG-compliant form without significant manual setup
What doesn’t exist: a legally compliant, German-centric, multilingual, photographer-specific system.
That’s exactly the gap I’m filling.
How you can use it
In the meantime: the form on halle.online is live, free for models, and you can study it as a working example.
Links: