Email notifications
Every transactional email a marketplace sends (order confirmation, welcome email, password reset…) is a notification. Each notification has a subject and an HTML body written in Liquid, which the marketplace can rewrite in the back office. The filters of the storefront work in emails too: see Liquid filters.
Edit a notification
Section titled “Edit a notification”-
Open Settings → Notifications (
/admin/settings/notifications). The page lists the notifications by category (Orders, Users, Reviews…), each with its e-mail status. -
Click a notification. The editor opens at
/admin/settings/email_templates/<handle>/edit, for example/admin/settings/email_templates/order_new_customer/edit. -
Edit Email subject and Email body (HTML), then click Save.
-
Click Preview to render the email with the marketplace’s most recent real record (its latest order, its latest member), or Send test email to receive it at the address you are signed in with.
Editing the content is available on paid plans. On other plans the editor shows the current template and an Upgrade your account link instead of saving.
Email settings
Section titled “Email settings”Settings in the editor opens Email settings for that notification:
| Setting | Effect |
|---|---|
| Send by e-mail | Turns the email on or off. |
| Send as a mobile notification | Shown when the marketplace runs the installable app with push notifications and the notification has a push version. Independent of the email. |
| Email type | Send as HTML, Send as plain text or Send as plain text and HTML. The plain-text version is generated from your HTML when you save. |
| Send copy to (CC), Send invisible copy to (BCC) | Extra recipients, separated by commas. |
A test email goes through the same rules: a notification switched off sends nothing, even though the screen confirms the test.
Sender address
Section titled “Sender address”The sender is set once for all emails in Settings → Emails (/admin/settings/email):
From name, Sender email and replyTo. The sender name and address are used
only when Use custom smtp settings is on and the SMTP account is allowed to send for
that address; otherwise emails leave from Kreezalid’s default address, with your
replyTo as the reply address. The SMTP connection is tested when you save.
How an email template is built
Section titled “How an email template is built”A template is a complete HTML document: there is no shared layout around it. The header, the logo and the signature are part of each template, which lets you design each email freely, and means a change of style must be made in every template.
<!DOCTYPE html><html><body style="{{ email_body_style }}"> <div style="{{ email_container_style }}"> <p><img src="{{ email_logo }}" style="{{ email_logo_style }}" alt="{{ marketplace_name | escape }}"></p>
<p>Hello {{ customer.first_name | escape }},</p> <p>Thank you for your order <strong>#{{ order.number }}</strong> of {{ order.amount | money: order.currency }}.</p>
{{ order_details }}
<p><a href="{{ order.customer_url }}" style="{{ email_button_style }}">View my order</a></p>
<p>- <strong>{{ marketplace_name }}</strong></p> </div></body></html>The subject is Liquid too:
Your order #{{ order.number }} on {{ marketplace_name }}Write inline styles: most email clients ignore <style> blocks and external
stylesheets. The theme’s assets and asset_url are not meant for emails.
Variables in every email
Section titled “Variables in every email”| Variable | Description |
|---|---|
marketplace_name |
The marketplace’s name |
marketplace_url |
Its storefront URL |
email_logo |
The URL of the email logo: Logo in email in Content → Theme → General, or the main logo when none is set. Use a PNG or JPG: SVG and WebP are not displayed by Outlook or Gmail. |
marketplace_logo_email |
The same URL |
email_title |
The rendered subject |
email_body_style, email_container_style, email_logo_style, email_button_style |
The default inline styles of the body, the central column, the logo and a button |
shop |
name, url, currency, locale, timezone |
locale |
The language of the email |
The storefront’s global objects (settings, routes, authenticated_user) are not
available in emails.
Notifications and their variables
Section titled “Notifications and their variables”The objects below are the same as on the storefront: order has the
order fields, customer, supplier and user the
member fields, listing the
listing fields. supplier is the vendor of the order,
customer the buyer. customer.dashboard_url and supplier.dashboard_url link to each
one’s account.
Orders
Section titled “Orders”| Notification (handle) | Sent to | When | Variables |
|---|---|---|---|
New order (order_new_supplier) |
Vendor | An order is placed | order, customer, supplier, order_details, event_calendar, order.accept_url, order.decline_url |
Order confirmation (order_new_customer) |
Buyer | An order is placed | order, customer, supplier, order_details |
Order accepted (order_accepted_customer) |
Buyer | The vendor accepts the order | order, customer, supplier, order_details, event_calendar, order.customer_url, order.supplier_url |
Order rejected (order_rejected_customer) |
Buyer | The vendor declines the order, or does not answer in time | order, customer, supplier, order_details, order.refusal_reason, order.refusal_date |
Order cancelled (order_canceled_customer) |
Buyer | The order is cancelled | same as Order rejected |
Order automatically cancelled (order_auto_canceled_customer) |
Buyer | The order is cancelled automatically | same as Order rejected |
Order shipped (order_shipping_fulfillment) |
Buyer | The vendor marks the order shipped | order, customer, supplier, order_details |
Order delivered (order_customer_confirmed) |
Vendor | The buyer confirms receipt | order, customer, supplier, order_details |
Order paid (order_payout_created) |
Vendor | The vendor’s payout is sent | order, customer, supplier, order_details |
Pending order (pending_order_customer) |
Buyer | An order is placed with a manual payment or a bank transfer | order, customer, supplier, order_details, manual_payment_instructions |
Order message (order_message) |
Buyer or vendor | A message is posted on an order | sender, recipient, order, message_content, order_link |
order_details is the summary of the order’s items, already rendered as HTML. Each item
in it is drawn by the theme snippet order-item-email.liquid, which you can edit in the
theme editor: the snippet receives order_item, order,
variants_label, audience (buyer, seller or admin) and recipient_tz, the
recipient’s time zone. event_calendar and manual_payment_instructions are HTML
blocks too: print them as they are.
Members
Section titled “Members”| Notification (handle) | When | Variables |
|---|---|---|
Welcome email (user_registration) |
A member signs up | user |
Email confirmation (user_confirm_email_address) |
A member must confirm their address | user, confirm_email_link |
Forget password (user_reset_password) |
A member asks for a new password | user, reset_password_link |
Account status change (user_group_changed) |
A member moves to another group. Off by default. | user, previous_group, new_group, dashboard_url |
In these emails user holds first_name, last_name, public_name, email, avatar,
attributes, group_id, group_name, group_alias and lang (the last four are not in
the account status change). previous_group and new_group hold id, title, alias,
can_post_listing and is_onboarding.
Listings
Section titled “Listings”Shown when the marketplace uses the matching feature.
| Notification (handle) | When | Variables |
|---|---|---|
Listing accepted (listing_accepted) |
A moderator approves a listing | user, listing |
Listing rejected (listing_rejected) |
A moderator rejects a listing | user, listing, moderation.reason, moderation.details |
Listing expiring (listing_expiring) |
A listing reaches the end of its validity | user, listing, validity_days, expires_on |
Listing fee due, fee window ending, fee expired (listing_fee_due, listing_fee_window_ending, listing_fee_expired) |
Listing publication fees | user, listing, payment_url, plus amount (fee due) or ends_on (window ending) |
Reviews
Section titled “Reviews”Shown when the Reviews app is on: rating request to the buyer, review request to the
vendor, and their reminders. Variables: order_details, review_url, customer,
supplier (there is no order).
Other apps
Section titled “Other apps”| Notifications | Shown when | Variables |
|---|---|---|
New results for a saved search (saved_searches_new_results) |
The Saved searches app is on | user, listings, listings_thumbnails (HTML cards), search, search_results_url |
| Payment account verified, restricted, action required, information due soon, information received | The marketplace pays vendors through Stripe Connect custom accounts | user, onboarding_url, has_eventually_due |
| Complete your account to get paid | Same | user, order.order_number, onboarding_url |
| Booking reminders to the buyer and to the vendor | The Advanced Calendar app is on | customer, supplier, order (with order.listing), booking.title, booking.starts_at (in the recipient’s time zone), booking.session_label |
- Use Preview after every change: it renders your Liquid with real data, and shows “You cannot preview this email notification.” when the marketplace has no record to build it from yet, or for the few notifications preview does not support.
- The Variables list beside the editor is a reminder, not the contract. Where it
differs from this page, trust this page: for the member emails, the fields are under
user.({{ user.first_name }}), and the order message’s addressee isrecipient. - Escape what members typed:
{{ customer.first_name | escape }}. - Format amounts in the order’s currency:
{{ order.amount | money: order.currency }}. - Dates are printed in the marketplace’s time zone by
date; pass the recipient’s when you have it, for example{{ order.checkout_at | date: 'd/m/Y H:i', recipient_tz }}insideorder-item-email.liquid.