Skip to content

Mailgun

Transactional email. A Piksio image goes into Mailgun as an ordinary image link. The platform fills in each recipient’s values, and Piksio renders their version when the email is opened.

Mailgun writes merge tags like {{first_name}}.

Mailgun doesn’t URL-encode values inside links, so keep personalized fields free of & and # (they can cut the link short). If you build the email in code, use the Code output instead: it encodes every value for you.

Paste the HTML into your Mailgun template and send each value in t:variables.

Formats offered: HTML, Code, Image URL. The default for Mailgun is HTML.

For a design with first_name and company_name, the HTML looks like this:

<img src="https://app.piksio.com/i/YOUR_IMAGE_ID?first_name={{first_name}}&company_name={{company_name}}" width="600" alt="Your personalized image" style="display:block;max-width:100%;height:auto;border:0" />

Building the email in code? The Code output:

// One Piksio image link per recipient. URLSearchParams encodes each value,
// so names like "Smith & Co" are safe. Empty values show the fallback.
function piksioImageUrl(recipient) {
const values = {
first_name: recipient.first_name,
company_name: recipient.company_name,
};
const params = new URLSearchParams();
for (const [key, value] of Object.entries(values)) {
if (value !== undefined && value !== null && value !== '') params.set(key, String(value));
}
const query = params.toString();
return `https://app.piksio.com/i/YOUR_IMAGE_ID${query ? '?' + query : ''}`;
}
// Put it in the html you send through the Mailgun API.
const imageHtml = `<img src="${piksioImageUrl(recipient).replace(/&/g, '&amp;')}" width="600" alt="Your personalized image" style="display:block;max-width:100%;height:auto;border:0" />`;
  • Sending one message to many recipients with recipient-variables? Choose “Mailgun batch sending” instead.
  1. In Use in email, use Test the link with sample values, and again with unfilled tags. Both are free.
  2. Preview one real recipient in Mailgun to confirm it fills in the fields.
  3. See Fallbacks and blanks for what a recipient with missing data sees.

Checked against Mailgun’s own documentation on 2026-10-07: