I know it's related to Booked plugin but I can't verify a purchase on their support page, so I'll ask here.
Is there a way our customers can cancel their own appointments without need to register themselves? Ideally by some link in their confirmation emails.
Or should I write a custom database query to delete appointment row knowing the ID of the appointment?
Guests can't cancel appointments because they're not linked to the profile page, which is the area to cancel appointments.
I don't think a custom database query will work because the email that's send out is not connected to an ID or something. If you would like to prevent false bookings from guests the best option is to switch from guest to registered bookings under Appointments -> Settings
Because the Booked plugin is bundled with our theme (and not purchased directly) you don't have access to their support area. You could try to ask this question on the comment section on their CodeCanyon item page but I don't think you'll get another answer because this is not possible by default, unfortunately.