Evaluate Emailwizard with one command
Git-backed email templates, fast previews, safe releases, and a simple send API — packaged as a self-hosted service your team can fully control in a production environment.
Quickstart
docker run --rm -it \
-p 8080:8080 \
-e EW_ADDR=":8080" \
-e EW_DIR="/data/emailwizard-essentials" \
-e EW_REPO_URL="https://github.com/emailwizard/emailwizard-essentials.git" \
-v "$PWD/emailwizard-essentials:/data/emailwizard-essentials" \
emailwizard/emailwizard
Running this command on your local development will allow you to evaluate emailwizard. Test template repository will be downloaded.
Production deployment
Full command to run emailwizard - production ready
Deploy everywhere with docker container.
docker run --rm -it \
-p 8080:8080 \
-e EW_ADDR=":8080" \
-e EW_DIR="/data/emailwizard-essentials" \
-e EW_REPO_URL="git@github.com:emailwizard/emailwizard-essentials.git" \
-e EW_DEPLOY_KEY="/run/secrets/repo-deploy-key" \
-e EW_SMTP_HOST="my-smtp.example.org" \
-e EW_SMTP_PORT="587" \
-e EW_SMTP_USERNAME="foo@example.org" \
-e EW_SMTP_PASSWORD="password" \
-v "$PWD/emailwizard-essentials:/data/emailwizard-essentials" \
-v "$PWD/repo-deploy-key:/run/secrets/repo-deploy-key:ro" \
emailwizard/emailwizard
Simple and powerful template language
Each template is stored as a file in your Git repository. To render dynamic content, Emailwizard uses the Liquid templating language — simple to learn, powerful enough for real-world product emails. For easier development and consistency, templates can be split into smaller reusable parts. For example, keep your branded header and footer in separate files and include them across every email.
Example template
<h1>{{ total_price }} Paid Successfully!</h1>
{% include 'header.html.tpl' %}
<table class="invoice-items" cellpadding="0" cellspacing="0">
{% for item in items %}
<tr>
<td>{{ item.name }}</td>
<td class="alignright">{{ item.price }}</td>
</tr>
{% endfor %}
<tr class="total">
<td class="alignright" width="80%">Total</td>
<td class="alignright">{{ total_price }}</td>
</tr>
</table>
{% include 'footer.html.tpl' %}
Emailwizard also encourages you to keep JSON test data alongside templates. These files power instant previews during development and double as ready-to-use example payloads when integrating with the HTTP API.
Json data to render above template
{
"total_price": "$34.98",
"title": "Thanks for using Dreki tools",
"items": [
{
"name": "Service 1",
"price": "$ 19.99"
},
{
"name": "Service 2",
"price": "$ 9.99"
},
{
"name": "Service 3",
"price": "$ 4.00"
}
],
}
A workflow developers already like
Emailwizard treats templates like code: versioned in Git, reviewed in PRs, validated in CI, and deployed with confidence.
Git as the source of truth
Every template change is diffable, reviewable, and reversible. No more “who changed this email?” mysteries.
Preview
Render previews with sample data, validate required variables, and catch broken layouts before merging. Share template with team member in seconds.
Safe rollouts
Pin versions, deploy gradually, and roll back instantly by reverting a commit.
Works with your stack
Any language, any framework — your app just calls an HTTP endpoint to render or send.
A simple send API
Your application sends emails by referencing a template and passing data. Emailwizard handles rendering, inlining, provider integration, and tracking the exact template version used.
Sending email
POST /v1/send/emailwizard-essentials/invoice.html.tpl
{
"template-data": {
"total_price": "$34.98",
"title": "Thanks for using our services",
"items": [
{
"name": "Service 1",
"price": "$ 19.99"
},
{
"name": "Service 2",
"price": "$ 9.99"
},
{
"name": "Service 3",
"price": "$ 4.00"
}
],
"header": "Thanks for using Acme Inc.",
},
"from": "sales@example.org",
"to": [
"customer@example.com"
],
"subject": "Invoice Email"
}
Deploy like any other service
Run Emailwizard locally, in Docker Compose, Kubernetes, or wherever your team deploys services. Add health checks, metrics, logs, and you’re done.
Observability
Logs, metrics, and health endpoints — easy to plug into your tooling.
Security
Self-host for control over data, templates, and delivery configuration.
Rollbacks
Roll back templates by reverting commits — no emergency hotfix edits.