Skip to main content

Liquid

Beta Feature

Inline Liquid in the token picker is in beta. It may not be turned on for your account yet. To request access, contact Paminga Support.

Personalized fields drop a value into your content. Liquid lets you decide what to do with it.

Liquid is a widely used templating language. In Paminga it reads your contact, account, event, and token values, then lets you apply conditions, format dates, do arithmetic, and loop over multi-select values. "Gold members see this paragraph." "Your trial ends in 6 days." "You're registered for Tuesday, April 14 at 11:00 AM." All of it is rendered per recipient.

If you're coming from Marketo, Paminga can convert your Velocity scripts to Liquid for you. See Converting From Velocity.

What's in beta

The Liquid Template element is available in every account. Liquid tokens, which put Liquid inline in your text through the token picker, are the beta part.

Where You Can Use Liquid​

Liquid Template and Code Elements​

The Email, Form, Landing Page, and CTA builders all include a Liquid Template element, which starts with a small working example, and a Code element. Both accept HTML and Liquid together. See Asset Builder Elements for the full list.

Select the element and edit its content in the right-hand panel. Expand to the full-screen HTML / Liquid Editor when you need room.

Liquid Tokens​

Liquid tokens put Liquid inline, inside a sentence, a heading, or a button label, wherever you'd insert any other token.

  1. Open the token picker in a text editor
  2. Choose Liquid as the token source
  3. Write your template in the Liquid Template editor
  4. Optionally, give it a Chip Label, the name shown on the token chip in your content. Without one, the chip shows the first 10 characters of your template
  5. Click Apply

Liquid tokens are not offered in Text Messages, where the token picker sticks to plain values.

Elsewhere​

Paminga also renders Liquid typed directly into:

  • The HTML of custom HTML emails
  • Text Message content
  • Values written by the Set Field Values action

The Editor​

The Liquid editor is built to keep you out of trouble:

  • Readable field names. Fields are stored by ID, but the editor shows you their names
  • Liquid Docs. Hover the info icon beside the editor. Available Fields lists every field and token you can use, grouped as Contact, Account, Global, Folder, and Event. Click one to add it. Examples holds ready-made snippets for every pattern on this page, also one click to add
  • Format Code tidies your indentation
  • Error checking. Common mistakes are flagged as you type, and the editor won't save a template that uses an unknown filter, puts a value after a pipe with no filter name, or leaves out the colon before a filter's argument
tip

Previews in the builder fill your template with sample values. To see real values, send a test to a contact whose data you know.

What You Can Reference​

Insert fields from Liquid Docs rather than typing them. The editor writes the reference for you.

GroupWhat it holds
ContactThe recipient's standard and custom contact fields
AccountStandard and custom fields of the recipient's account
GlobalYour account's details: company name, display name, address, city, state, zip, country, business phone, and website URL
FolderFolder Tokens from the asset's folder and the folders above it
EventDetails of your Events: name, description, start and end times, registration deadline, time zone, capacity, registration link, and more

A few values deserve a note:

  • Drop-down fields output their label. .label and .id give you each one explicitly
  • Multi-select fields are lists of options, each with a .label and .id. Loop over them, count them with size, or join them with map: "label" | join: ", "
  • Number, decimal, and true/false fields arrive as numbers and booleans, so math and comparisons work as you'd expect
  • An event's join link is personal: for a registered contact it's the link from their own registration

Tags​

Paminga supports the standard Liquid tags, including:

TagUse
{% if %} {% elsif %} {% else %}Show content when a condition is true. Combine conditions with and / or; test text with contains; test for empty with == blank
{% unless %}Show content when a condition is false
{% case %} {% when %}Choose between several values
{% for %}Loop over a list. limit: caps the loop; forloop.index numbers the items
{% assign %}Store a value in a variable
{% capture %}Store a block of rendered text in a variable
{% comment %}Notes to yourself that never render

Add a hyphen, as in {%- or -%}, to trim the whitespace around a tag. That keeps logic-heavy templates from leaving blank lines in your email.

Filters​

Filters transform a value: {{ value | filter: argument }}. Chain as many as you like.

CategoryFilters
Textappend, prepend, capitalize, upcase, downcase, replace, replace_first, remove, remove_first, strip, lstrip, rstrip, strip_html, strip_newlines, newline_to_br, truncate, truncatewords, slice, split, escape, escape_once, url_encode, url_decode
Numbersplus, minus, times, divided_by, modulo, round, floor, ceil, abs, at_least, at_most
Listssize, first, last, join, map, where, sort, sort_natural, reverse, uniq, compact, concat
Datesdate
Fallbacksdefault

These are the filters the editor accepts. A filter that isn't on this list fails at render time, which is why the editor won't let you save one.

Paminga's math filters are forgiving: a blank value counts as 0, and dividing by zero returns 0 rather than an error. A contact with an empty date field won't break a "days since" calculation, though the result will be meaningless, so guard it with {% if %} when it matters.

Examples​

In these examples, field names stand in for the references Liquid Docs inserts for you.

A Friendly Fallback​

Hi {{ contact.First_Name | default: "there" }},

Content by Membership Level​

{% case contact.Membership_Level %}
{% when "Gold" %}
Your Gold benefits renew next month.
{% when "Silver" %}
You're 2 events away from Gold.
{% else %}
Join the loyalty program and start earning.
{% endcase %}

Days Until a Date​

{%- assign now_ts = "now" | date: "%s" -%}
{%- assign end_ts = contact.Trial_End_Date | date: "%s" -%}
{%- assign days_left = end_ts | minus: now_ts | divided_by: 86400 -%}
{% if days_left > 0 %}Your trial ends in {{ days_left }} days.{% else %}Your trial has ended.{% endif %}

date: "%s" converts a date to seconds, so subtracting two of them and dividing by 86,400 gives days.

Formatting a Date​

{{ event.Spring_Summit.Start_Time | date: "%A, %B %d at %I:%M %p" }}

renders as something like Tuesday, April 14 at 11:00 AM.

Listing Multi-Select Choices​

{% if contact.Interests.size > 0 %}
You told us you're interested in {{ contact.Interests | map: "label" | join: ", " }}.
{% endif %}

Converting From Velocity​

Moving from Marketo? Click Convert from Velocity in the Liquid token editor, or the Convert from Velocity Script button on a Liquid Template or Code element.

The converter works in three steps:

  1. Paste Script. Paste your Velocity Script
  2. Map Fields. Each Velocity variable is matched to a Paminga field, with a confidence score. Confirm or change each match under Map To, then click Convert
  3. Preview & Insert. Review the converted Liquid, then click Insert into Editor

Review the result before you use it. Anything that couldn't be translated is flagged in the preview.

Limits​

Each render has a ceiling on how much work it can do. A runaway loop is stopped before it can stall a send. Real templates, even long and logic-heavy ones, come nowhere near it.

Product

PricingFAQPaminga vs. MarketoMarketo to Paminga TranslatorMarketo Alternative
Paminga Logo
LinkedInFacebookXYouTube
ISO 27001 CompliantSOC 2 Compliant

Built with pride in Denver, Colorado, USA

Copyright © Paminga, Inc. 2026
All rights reserved. Various trademarks held by their respective owners.