Store mail templates in theme

Installs: 44 509

Dependents: 0

Suggesters: 0

Security: 0

Stars: 33

Watchers: 6

Forks: 5

Open Issues: 1


1.2.0 2022-11-02 08:54 UTC

This package is auto-updated.

Last update: 2024-01-25 16:28:52 UTC


Join the chat at Download @ Community Store

This plugin allows to store the mails in theme instead of database. This gives us advantages like

  • easier deployment
  • translate it using snippets
  • build your mail template using includes / extends / blocks / inheritance
  • usage of theme configuration


  • Shopware 5.4.x or higher
  • PHP 7.0


  • Download latest release
  • Extract the zip file in shopware_folder/custom/plugins/

Template location

Create a mail for a specific subshop or language shop (also inheritance in shops works)

Search order in example with sOrder:

HTML Template

  • themes/Frontend/MyTheme/email/sORDER-SHOPID.html.tpl (Shop ID)
  • themes/Frontend/MyTheme/email/sORDER.html.tpl (Default)
  • Database saved values

Text Template:

  • themes/Frontend/MyTheme/email/sORDER-SHOPID.text.tpl (Shop ID)
  • themes/Frontend/MyTheme/email/sORDER.text.tpl (Default)
  • Database saved values

Subject Template:

  • themes/Frontend/MyTheme/email/sORDER-SHOPID.subject.tpl (Shop ID)
  • themes/Frontend/MyTheme/email/sORDER.subject.tpl (Default)
  • Database saved values


Available loaders

Write your own loader

You can also implement your custom loader. Create a new class and implement the interface FroshTemplateMail/Components/Loader/MailLoaderInterface and register it using tag frosh_template_mail.loader.


namespace MyPlugin;

use FroshTemplateMail\Components\Loader\MailLoaderInterface;
use Shopware\Models\Mail\Mail;

class TwigMailLoader implements MailLoaderInterface {
    private $twig;
    public function __construct(\Twig_Enviroment $twig)
        $this->twig = $twig;

    public function canHandleExtensions(): array
        return ['twig'];
    public function loadMail(Mail $mail, string $templatePath, string $resolvedTemplatePath): string
        return $this->twig->render($resolvedTemplatePath);
<service id="my_plugin.twig_loader" class="MyPlugin\TwigMailLoader">
    <argument type="service" id="twig"/>
    <tag name="frosh_template_mail.loader"/>


Feel free to fork and send pull requests!


This project uses the MIT License.