Most document platforms store your templates in a format only they can read. That is not an accident — it is the part of the product that makes leaving expensive.
If a tool keeps your templates as its own JSON document model, then your templates are not really yours. You cannot diff them, review them in a pull request, or take them anywhere. The export button, if it exists, produces something no other renderer understands. The switching cost is the lock-in, and it grows with every template you add.
A Paperomat template is a Liquid file with HTML in it. That is the whole storage format. What you see in the editor is byte-for-byte what runs, so it diffs cleanly, reviews normally, and belongs to you in the ordinary sense of the word.
<h1>Invoice {{ invoice.number }}</h1>
{% for line in invoice.lines %}
<tr><td>{{ line.description }}</td></tr>
{% endfor %}
{% include 'footer' %} Liquid is an open template language with independent implementations in Ruby, Python, JavaScript, Go and .NET. We did not invent it and we do not control it. A template written here renders under any of them, which means the exit is not a promise we make — it is a property of the format.
Because there is no proprietary format to convert into, bringing
templates in is mostly mechanical. Upload a folder as a zip — a
partials/ directory identifies shared snippets, filenames
become their ids, and the includes you already wrote keep working. Existing
HTML is already a valid template, because Liquid passes markup it does not
recognise straight through.
Accounts are by invitation while we onboard a few teams at a time. Tell us where to reach you and roughly what you render.
Request an invitation on the home page, or write to [email protected].