list_site_emailsfirst: each kind, whether it is customised, and whether it sends.get_site_email({ kind })returns the subject, preheader, the Liquid source (emails/<kind>.liquid, or the default), the objects it can print ({{ order.total }},{{ customer.name }},{{ gift.code }},{{ link.url }}) and its parts: keep the required ones (for a receipt, theorder.linesloop).update_site_emailsaves the subject, preheader and/or the full source, orreset: true. Thenpreview_site_email: an email with errors is not sent, the default goes out instead, and the preview is where the errors show. A saved email is live for the next customer (no publish).- Write email-safe markup:
div,p,h1-h3,a,imgwith Tailwind and palette classes. No forms, buttons, video, dialogs ordata-*runtime attributes (errors);hover:,focus:,dark:andgroup-*classes are ignored by mail clients (warnings). A link with abg-*class is sent as a button. - A custom design needs a plan with custom email designs; the subject and preheader save on every plan.