A cancellation message that arrives after the parcel has shipped is a headache for both sides. I would rather catch it early, with the order number and the reason in one place.
Before it is open
Decide your cut-off, for example before dispatch, and write it in the form description. Link the form from your order messages, because the form itself sends no email to buyers.
While it is open
Customers give the order number, whether they want the whole order or part of it, the reason, and whether it has shipped as far as they know. One question asks if a change would solve it, such as a new address. A customer's AI might ask "What is your order number?" Then "Do you want to cancel everything or part of it?" Then "Would a change solve it instead?" It shows the answers and sends only after a yes. See agent-fillable forms.
After it closes
Sort the CSV by shipped status and act first on orders that have not left. This is a form, not legal advice. Check your cancellation rules with a professional. The form decides nothing.
People often cancel a pre-order before it ships. When a customer leaves a plan for good, an exit survey tells you why. Made-to-order sellers can compare a cookie order form. More ideas are in forms for Ecommerce and Shopify stores.
Questions
Does the form cancel the order by itself?
No. It sends you the request. You check the order status in your shop and cancel or refund there yourself.
How do I handle orders that already shipped?
Sort the CSV by the shipped answer. For those rows, reply with your return steps instead of a cancellation, and say so in the form description.
What can I learn from the reasons?
Count the reason column. Many mistakes point to a confusing checkout. Many late-delivery reasons point to delivery times that are unclear at checkout.