The situation
A customer wants to revoke. They find the form on a legal page, fill it in and type the order number from memory - or not at all.
Revocation has to be possible, and it should be traceable. Both get easier when the form sits where the order is already known.
A customer wants to revoke. They find the form on a legal page, fill it in and type the order number from memory - or not at all.
Shopware ships a revocation form as the third type of its form element. It sits on a page, its fields live in the template, and it knows nothing about the order in question.
Order number and order date are already there, because the form hangs on the order.
Through an order assignment the form appears in the customer account on every order. The submission then carries the order number as its context - nobody types it, nobody mistypes it.
A multiple choice instead of a free-text field. That way the export says which line item was revoked, rather than a sentence somebody has to read.
The consent type is meant for exactly this and can be made mandatory. The text beside it is a label like any other, and so it is translatable.
This is a form, not legal advice. Which text belongs on a revocation form and what else is required is something to settle with somebody qualified - this page does not.
Order assignment, in the customer account on the order list and the order detail. The form on the legal page stays alongside it - for everyone who is not signed in.
Context "order" with the number, plus line items, reason and date as columns of their own. That turns the history into a list you can sort by date.