{"id":21602,"date":"2017-09-27T17:47:55","date_gmt":"2017-09-28T00:47:55","guid":{"rendered":"http:\/\/how_to_boost_email_marketing_with_personalized_email_banners"},"modified":"2024-05-29T16:41:26","modified_gmt":"2024-05-29T23:41:26","slug":"how_to_boost_email_marketing_with_personalized_email_banners","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners","title":{"rendered":"How to Boost Email Marketing with Personalized Email Banners"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p><strong>TL;DR<\/strong>\nIn our last article, we saw how Cloudinary is the perfect email image hosting solution for launching <a href=\"https:\/\/cloudinary.com\/blog\/embed_images_in_email_campaigns_at_scale\">email marketing campaigns<\/a> at scale. Today, we\u2019ll explore this topic further, looking at how Cloudinary can create dynamic image banners that can be used to create highly personalized email marketing campaigns.<\/p>\n<hr \/>\n<p>While email marketing is still a dominant channel to reach your customers, blindly sending generic emails doesn\u2019t work well. <strong>Personalizing emails<\/strong> is key to a successful marketing campaign. This is where merge tags come in. Merge tags are one of the best features in email marketing. They enable us to send highly customized emails to our subscribers and eventually turn them into customers.<\/p>\n<p>However, until now, most of us were restricted to personalize only the textual content in our email campaigns by using merge tags. In this article, we\u2019ll learn how to <strong>dynamically generate images<\/strong> using Cloudinary and merge tags. By the end of this tutorial, you\u2019ll be able to create highly personalized email marketing campaigns with <strong>customized email banners<\/strong>, using nothing but the content from your merge tags and Cloudinary.<\/p>\n<p>Before we get started, let\u2019s quickly revisit the topic of merge tags and how to use them in our campaigns. If you\u2019re familiar with merge tags, you can skip this section and jump to the next one.<\/p>\n<h2>What are Merge Tags?<\/h2>\n<p>Merge tags are placeholders of information used in email marketing campaigns. There are two steps to using a merge tag.<\/p>\n<ol>\n<li>You need to define the merge tag<\/li>\n<li>You need to have a data source for your merge tag (this is typically your email list)<\/li>\n<\/ol>\n<p>One of the most famous examples of a merge tag is the |*FNAME*| tag, which is nothing but the first name of the person who you are emailing.<\/p>\n<p>Take this email list for example:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/Table-1.png\" alt=\"Table 1\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"304\"\/>\n<em>Table 1: Sample Email List<\/em><\/p>\n<p>The table without any entry represents what is known in technical terms, the schema. In other words, it\u2019s an empty table with only the columns. It gives you a pretty good idea as to what data to enter into the table.<\/p>\n<h2>How Do We Identify Merge Tags?<\/h2>\n<p>The first row of each column is the <strong>identifier<\/strong> of that column. In the first column of Table 1, the first row reads \u201cFirst Name\u201d, which is the identifier for that column. The <strong>merge tag<\/strong> maps to this identifier.<\/p>\n<p>Each column\u2019s identifier can have its own merge tag, but we typically use the common ones, i.e. First Name, Last Name and some more.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/Table-2.png\" alt=\"Table 2\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"304\"\/>\n<em>Table 2: Merge Tags<\/em><\/p>\n<p>By default, your email service provider would allocate the common merge tags to your email lists. Table 2 shows some of the most commonly used merge tags.<\/p>\n<h2>How do Merge Tags Work?<\/h2>\n<p>Merge tags are embedded in the body of the email. When sending the email, the ESP replaces the value of the merge tag for that particular email address, picked from the email list.<\/p>\n<p>Take a look at this example, where we embed the  |*FNAME*| merge tag in the email body:<\/p>\n<blockquote>\n<p>Hi <strong>|*FNAME*|<\/strong>,<\/p>\n<\/blockquote>\n<blockquote>\n<p>Thanks for subscribing to our newsletter. Here\u2019s a copy of the ebook \u201c<a href=\"https:\/\/cloudinary.com\/documentation\/responsive_images\">Responsive Images<\/a> with Cloudinary\u201d we promised you.<\/p>\n<\/blockquote>\n<blockquote>\n<p>Download Now<\/p>\n<\/blockquote>\n<blockquote>\n<p>To your email marketing success,<\/p>\n<\/blockquote>\n<blockquote>\n<p>Team ESP<\/p>\n<\/blockquote>\n<p>Let\u2019s assume that the email is being sent to <a href=\"mailto:mike@box.com\">mike@box.com<\/a>.<\/p>\n<p>When the actual email is sent, the merge tag points to the <strong>First Name<\/strong> field, whose value is replaced in the body of the email. (Refer Table 1)<\/p>\n<p>The actual sent email would look something like this:<\/p>\n<blockquote>\n<p>Hi <strong>Sam<\/strong>,<\/p>\n<\/blockquote>\n<blockquote>\n<p>Thanks for subscribing to our newsletter. Here\u2019s a copy of our ebook \u201cResponsive Images with Cloudinary\u201d we promised you.<\/p>\n<\/blockquote>\n<blockquote>\n<p>Download now.<\/p>\n<\/blockquote>\n<blockquote>\n<p>To your email marketing success,<\/p>\n<\/blockquote>\n<blockquote>\n<p>Team ESP<\/p>\n<\/blockquote>\n<h2>Merge Tags in Subject Lines?<\/h2>\n<p>Merge tags enable us to use the word \u2018Sam\u2019 instead of a generic \u2018Hi there\u2019 or \u2018Hello\u2019.\nIn fact, merge tags are pretty useful in crafting compelling email subject lines.<\/p>\n<p>A generic email subject line for an ebook download would run:<\/p>\n<blockquote>\n<p><em>Download your copy of Responsive Images with Cloudinary.<\/em><\/p>\n<\/blockquote>\n<p>Sure, it\u2019ll get you some open rates. But with merge tags available, you can craft a more personalized subject line:<\/p>\n<blockquote>\n<p><em>Sam &#8211; download your free copy of Responsive Images with Cloudinary.<\/em><\/p>\n<\/blockquote>\n<p>However in your ESP, you would use the following code in your subject line:<\/p>\n<blockquote>\n<p><em>|*FNAME*| &#8211; download your free copy of Responsive Images with Cloudinary.<\/em><\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/kb.mailchimp.com\/campaigns\/previews-and-tests\/best-practices-for-email-subject-lines\">Research<\/a> has shown that the second option <a href=\"https:\/\/mailchimp.com\/resources\/research\/subject-line-comparison\/\">has higher open-rates<\/a>. Personalizing emails helps a brand resonate with the reader. As a result, the reader feels more connected with the brand.<\/p>\n<h2>Where do Merge Tags Fall Short?<\/h2>\n<p>We know that merge tags enable us to send customized emails. However, it has only been linked to the text elements of the email. For example, the email body, the subject line or the recipient\u2019s name. We weren\u2019t able to generate <strong>customized images<\/strong> based on the content of the merge tags.<\/p>\n<p>Cloudinary, on the other hand, is a platform <em>built<\/em> for on-the-fly <a href=\"https:\/\/cloudinary.com\/documentation\/image_optimization\">image optimization<\/a> and transformation. It makes perfect sense to connect the two pieces, which would enable us to create truly personalized email marketing campaigns.<\/p>\n<p>For the remainder of this tutorial, we\u2019ll learn how to use Cloudinary\u2019s advanced <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference\">image manipulation<\/a> capabilities and the data from the merge tags, to craft highly customized images for our email marketing campaigns.<\/p>\n<h2>Use Case: Personalized Images in Email Marketing<\/h2>\n<p>Let\u2019s take an example of a fictional SaaS company &#8211; HashMetrics &#8211; which operates a freemium business model. HashMetrics has two sets of active customers:<\/p>\n<ol>\n<li>People on the trial plan<\/li>\n<li>Paying customers<\/li>\n<\/ol>\n<p>HashMetrics wants to run a promotional campaign, offering a flat 10 percent discount to paying customers, and a 20 percent discount to trial account customers.<\/p>\n<p>For the purpose of simplicity, let\u2019s assume that our HashMetric\u2019s ESP has a similar dataset for the target email list, as shown in the table below:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/Table-3.png\" alt=\"Table 3\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"303\"\/>\n<em>Table 3: Sample email list with discount information for HashMetric\u2019s promotional campaign<\/em><\/p>\n<p>The available merge tags are:\n<img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/Table-4.png\" alt=\"Table 4\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"304\"\/><\/p>\n<p>Let\u2019s see how we can generate a customized email banner using Cloudinary\u2019s on-demand image transformation and optimization platform.<\/p>\n<p>Here\u2019s the email campaign with the merge tags:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_300,c_fill\/dpr_auto\/Dogemail.png\" alt=\"Dog Email\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"600\" height=\"816\"\/><\/p>\n<blockquote>\n<p>Hey <strong>|*FNAME*|<\/strong>,<\/p>\n<\/blockquote>\n<blockquote>\n<p>We hope HashMetrics is helping you keep track of your digital marketing campaigns.<\/p>\n<\/blockquote>\n<blockquote>\n<p>Holidays are around the corner and we have a special gift for you &#8211;\na flat <strong>|*DISCOUNT*|<\/strong> percent off on your next bill, no matter your subscription.<\/p>\n<\/blockquote>\n<blockquote>\n<p>We hope you\u2019re enjoying using HashMetrics as much as we enjoy building it.<\/p>\n<\/blockquote>\n<blockquote>\n<p>If you ever have any questions, please feel free to reach out to us via email at <a href=\"mailto:support@hasmetrics.io\">support@hasmetrics.io<\/a> or by simply tweeting your query to @hashmetrics.<\/p>\n<\/blockquote>\n<blockquote>\n<p>To your marketing success,<\/p>\n<\/blockquote>\n<blockquote>\n<p>Team HashMetrics<\/p>\n<\/blockquote>\n<p>The only thing missing in the email is the merge tag for the discount value.\nHere\u2019s how we can <strong>dynamically generate the image with Cloudinary<\/strong>.<\/p>\n<p>We start with the <strong>base image<\/strong>:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_300,c_fill\/dpr_auto\/Dogemail2.png\" alt=\"Dog Email 2\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"600\" height=\"815\"\/>\n<em>Base image for a typical promotional email marketing campaign<\/em><\/p>\n<p>We then apply the discount code to the image using Cloudinary\u2019s on-the-fly image transformation capabilities. Let\u2019s examine the following piece of code:<\/p>\n<p><cld-code-widget\n      class=\" c-code-widget\"\n      snippets=\"[{&quot;sdkId&quot;:&quot;nodejs&quot;,&quot;framework&quot;:&quot;nodejs&quot;,&quot;language&quot;:&quot;nodejs&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(\\&quot;image1.png\\&quot;, {transformation: [ {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;}, {overlay: {font_family: \\&quot;ttf\\&quot;, font_size: 220, font_weight: \\&quot;bold\\&quot;, text: \\&quot;10%25\\&quot;}, color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;}, {width: 400, crop: \\&quot;scale\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(\\&quot;image1.png\\&quot;, {transformation: [\\n  {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;},\\n  {overlay: {font_family: \\&quot;ttf\\&quot;, font_size: 220, font_weight: \\&quot;bold\\&quot;, text: \\&quot;10%25\\&quot;}, color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;},\\n  {width: 400, crop: \\&quot;scale\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Node.js&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_2&quot;,&quot;framework&quot;:&quot;react_2&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;react&quot;,&quot;framework&quot;:&quot;react&quot;,&quot;language&quot;:&quot;react&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;image1.png\\&quot; &gt; &lt;Transformation quality=\\&quot;auto\\&quot; flags=\\&quot;lossy\\&quot; \\\/&gt; &lt;Transformation overlay={{fontFamily: \\&quot;ttf\\&quot;, fontSize: 220, fontWeight: \\&quot;bold\\&quot;, text: \\&quot;10%25\\&quot;}} color=\\&quot;#815e3d\\&quot; y=\\&quot;240\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;Transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;\\\/Image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;Image publicId=\\&quot;image1.png\\&quot; &gt;\\n\\t&lt;Transformation quality=\\&quot;auto\\&quot; flags=\\&quot;lossy\\&quot; \\\/&gt;\\n\\t&lt;Transformation overlay={{fontFamily: \\&quot;ttf\\&quot;, fontSize: 220, fontWeight: \\&quot;bold\\&quot;, text: \\&quot;10%25\\&quot;}} color=\\&quot;#815e3d\\&quot; y=\\&quot;240\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n\\t&lt;Transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n&lt;\\\/Image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React&quot;,&quot;packageName&quot;:&quot;cloudinary-react&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue_2&quot;,&quot;framework&quot;:&quot;vue_2&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/vue&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;vue&quot;,&quot;framework&quot;:&quot;vue&quot;,&quot;language&quot;:&quot;vue&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;image1.png\\&quot; &gt; &lt;cld-transformation quality=\\&quot;auto\\&quot; flags=\\&quot;lossy\\&quot; \\\/&gt; &lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;ttf&#039;, fontSize: 220, fontWeight: &#039;bold&#039;, text: &#039;10%25&#039;}\\&quot; color=\\&quot;#815e3d\\&quot; y=\\&quot;240\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;cld-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt; &lt;\\\/cld-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cld-image public-id=\\&quot;image1.png\\&quot; &gt;\\n\\t&lt;cld-transformation quality=\\&quot;auto\\&quot; flags=\\&quot;lossy\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation :overlay=\\&quot;{fontFamily: &#039;ttf&#039;, fontSize: 220, fontWeight: &#039;bold&#039;, text: &#039;10%25&#039;}\\&quot; color=\\&quot;#815e3d\\&quot; y=\\&quot;240\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n\\t&lt;cld-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot; \\\/&gt;\\n&lt;\\\/cld-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Vue.js&quot;,&quot;packageName&quot;:&quot;cloudinary-vue&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular_2&quot;,&quot;framework&quot;:&quot;angular_2&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/ng&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;angular&quot;,&quot;framework&quot;:&quot;angular&quot;,&quot;language&quot;:&quot;angular&quot;,&quot;rawCodeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;image1.png\\&quot; &gt; &lt;cl-transformation quality=\\&quot;auto\\&quot; flags=\\&quot;lossy\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation overlay=\\&quot;text:OpenSans-ExtraBold.ttf_220_bold:10%25\\&quot; color=\\&quot;#815e3d\\&quot; y=\\&quot;240\\&quot; crop=\\&quot;scale\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;cl-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot;&gt; &lt;\\\/cl-transformation&gt; &lt;\\\/cl-image&gt;&quot;,&quot;codeSnippet&quot;:&quot;&lt;cl-image public-id=\\&quot;image1.png\\&quot; &gt;\\n\\t&lt;cl-transformation quality=\\&quot;auto\\&quot; flags=\\&quot;lossy\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation overlay=\\&quot;text:OpenSans-ExtraBold.ttf_220_bold:10%25\\&quot; color=\\&quot;#815e3d\\&quot; y=\\&quot;240\\&quot; crop=\\&quot;scale\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n\\t&lt;cl-transformation width=\\&quot;400\\&quot; crop=\\&quot;scale\\&quot;&gt;\\n\\t&lt;\\\/cl-transformation&gt;\\n&lt;\\\/cl-image&gt;&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Angular&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/angular-5.x&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js_2&quot;,&quot;framework&quot;:&quot;js_2&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;@cloudinary\\\/url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;js&quot;,&quot;framework&quot;:&quot;js&quot;,&quot;language&quot;:&quot;js&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.imageTag(&#039;image1.png&#039;, {transformation: [ {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;}, {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;), color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;}, {width: 400, crop: \\&quot;scale\\&quot;} ]}).toHtml();&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.imageTag(&#039;image1.png&#039;, {transformation: [\\n  {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;},\\n  {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;), color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;},\\n  {width: 400, crop: \\&quot;scale\\&quot;}\\n  ]}).toHtml();&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;JS&quot;,&quot;packageName&quot;:&quot;cloudinary-core&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;python&quot;,&quot;framework&quot;:&quot;python&quot;,&quot;language&quot;:&quot;python&quot;,&quot;rawCodeSnippet&quot;:&quot;CloudinaryImage(\\&quot;image1.png\\&quot;).image(transformation=[ {&#039;quality&#039;: \\&quot;auto\\&quot;, &#039;flags&#039;: \\&quot;lossy\\&quot;}, {&#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;ttf\\&quot;, &#039;font_size&#039;: 220, &#039;font_weight&#039;: \\&quot;bold\\&quot;, &#039;text&#039;: \\&quot;10%25\\&quot;}, &#039;color&#039;: \\&quot;#815e3d\\&quot;, &#039;y&#039;: 240, &#039;crop&#039;: \\&quot;scale\\&quot;}, {&#039;width&#039;: 400, &#039;crop&#039;: \\&quot;scale\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;CloudinaryImage(\\&quot;image1.png\\&quot;).image(transformation=[\\n  {&#039;quality&#039;: \\&quot;auto\\&quot;, &#039;flags&#039;: \\&quot;lossy\\&quot;},\\n  {&#039;overlay&#039;: {&#039;font_family&#039;: \\&quot;ttf\\&quot;, &#039;font_size&#039;: 220, &#039;font_weight&#039;: \\&quot;bold\\&quot;, &#039;text&#039;: \\&quot;10%25\\&quot;}, &#039;color&#039;: \\&quot;#815e3d\\&quot;, &#039;y&#039;: 240, &#039;crop&#039;: \\&quot;scale\\&quot;},\\n  {&#039;width&#039;: 400, &#039;crop&#039;: \\&quot;scale\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Python&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;php_2&quot;,&quot;framework&quot;:&quot;php_2&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;(new ImageTag(&#039;image1.png&#039;))\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto())\\n\\t-&gt;lossy()\\n\\t)\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;10%\\&quot;,(new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;,220))\\n\\t-&gt;fontWeight(\\n\\tFontWeight::bold())\\n\\t)\\n\\t-&gt;textColor(Color::rgb(\\&quot;815e3d\\&quot;))\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()))\\n\\t)\\n\\t-&gt;position((new Position())-&gt;offsetY(240))\\n\\t)\\n\\t-&gt;resize(Resize::scale()-&gt;width(400));&quot;,&quot;codeSnippet&quot;:&quot;(new ImageTag(&#039;image1.png&#039;))\\n\\t-&gt;delivery(Delivery::format(\\n\\tFormat::auto())\\n\\t-&gt;lossy()\\n\\t)\\n\\t-&gt;delivery(Delivery::quality(\\n\\tQuality::auto()))\\n\\t-&gt;overlay(Overlay::source(\\n\\tSource::text(\\&quot;10%\\&quot;,(new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;,220))\\n\\t-&gt;fontWeight(\\n\\tFontWeight::bold())\\n\\t)\\n\\t-&gt;textColor(Color::rgb(\\&quot;815e3d\\&quot;))\\n\\t-&gt;transformation((new Transformation())\\n\\t-&gt;resize(Resize::scale()))\\n\\t)\\n\\t-&gt;position((new Position())-&gt;offsetY(240))\\n\\t)\\n\\t-&gt;resize(Resize::scale()-&gt;width(400));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;php&quot;,&quot;framework&quot;:&quot;php&quot;,&quot;language&quot;:&quot;php&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;image1.png\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array( array(\\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;, \\&quot;flags\\&quot;=&gt;\\&quot;lossy\\&quot;), array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;ttf\\&quot;, \\&quot;font_size\\&quot;=&gt;220, \\&quot;font_weight\\&quot;=&gt;\\&quot;bold\\&quot;, \\&quot;text\\&quot;=&gt;\\&quot;10%25\\&quot;), \\&quot;color\\&quot;=&gt;\\&quot;#815e3d\\&quot;, \\&quot;y\\&quot;=&gt;240, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;), array(\\&quot;width\\&quot;=&gt;400, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;) )))&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;image1.png\\&quot;, array(\\&quot;transformation\\&quot;=&gt;array(\\n  array(\\&quot;quality\\&quot;=&gt;\\&quot;auto\\&quot;, \\&quot;flags\\&quot;=&gt;\\&quot;lossy\\&quot;),\\n  array(\\&quot;overlay\\&quot;=&gt;array(\\&quot;font_family\\&quot;=&gt;\\&quot;ttf\\&quot;, \\&quot;font_size\\&quot;=&gt;220, \\&quot;font_weight\\&quot;=&gt;\\&quot;bold\\&quot;, \\&quot;text\\&quot;=&gt;\\&quot;10%25\\&quot;), \\&quot;color\\&quot;=&gt;\\&quot;#815e3d\\&quot;, \\&quot;y\\&quot;=&gt;240, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;),\\n  array(\\&quot;width\\&quot;=&gt;400, \\&quot;crop\\&quot;=&gt;\\&quot;scale\\&quot;)\\n  )))&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;PHP&quot;,&quot;packageName&quot;:&quot;cloudinary_php&quot;,&quot;packageStatus&quot;:&quot;legacy&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;java&quot;,&quot;framework&quot;:&quot;java&quot;,&quot;language&quot;:&quot;java&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation().quality(\\&quot;auto\\&quot;).flags(\\&quot;lossy\\&quot;).chain() .overlay(new TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;)).color(\\&quot;#815e3d\\&quot;).y(240).crop(\\&quot;scale\\&quot;).chain() .width(400).crop(\\&quot;scale\\&quot;)).imageTag(\\&quot;image1.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.url().transformation(new Transformation()\\n  .quality(\\&quot;auto\\&quot;).flags(\\&quot;lossy\\&quot;).chain()\\n  .overlay(new TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;)).color(\\&quot;#815e3d\\&quot;).y(240).crop(\\&quot;scale\\&quot;).chain()\\n  .width(400).crop(\\&quot;scale\\&quot;)).imageTag(\\&quot;image1.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Java&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;ruby&quot;,&quot;framework&quot;:&quot;ruby&quot;,&quot;language&quot;:&quot;ruby&quot;,&quot;rawCodeSnippet&quot;:&quot;cl_image_tag(\\&quot;image1.png\\&quot;, transformation: [ {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;}, {overlay: {font_family: \\&quot;ttf\\&quot;, font_size: 220, font_weight: \\&quot;bold\\&quot;, text: \\&quot;10%25\\&quot;}, color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;}, {width: 400, crop: \\&quot;scale\\&quot;} ])&quot;,&quot;codeSnippet&quot;:&quot;cl_image_tag(\\&quot;image1.png\\&quot;, transformation: [\\n  {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;},\\n  {overlay: {font_family: \\&quot;ttf\\&quot;, font_size: 220, font_weight: \\&quot;bold\\&quot;, text: \\&quot;10%25\\&quot;}, color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;},\\n  {width: 400, crop: \\&quot;scale\\&quot;}\\n  ])&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Ruby&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;csharp&quot;,&quot;framework&quot;:&quot;csharp&quot;,&quot;language&quot;:&quot;csharp&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation().Quality(\\&quot;auto\\&quot;).Flags(\\&quot;lossy\\&quot;).Chain() .Overlay(new TextLayer().FontFamily(\\&quot;ttf\\&quot;).FontSize(220).FontWeight(\\&quot;bold\\&quot;).Text(\\&quot;10%25\\&quot;)).Color(\\&quot;#815e3d\\&quot;).Y(240).Crop(\\&quot;scale\\&quot;).Chain() .Width(400).Crop(\\&quot;scale\\&quot;)).BuildImageTag(\\&quot;image1.png\\&quot;)&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.Api.UrlImgUp.Transform(new Transformation()\\n  .Quality(\\&quot;auto\\&quot;).Flags(\\&quot;lossy\\&quot;).Chain()\\n  .Overlay(new TextLayer().FontFamily(\\&quot;ttf\\&quot;).FontSize(220).FontWeight(\\&quot;bold\\&quot;).Text(\\&quot;10%25\\&quot;)).Color(\\&quot;#815e3d\\&quot;).Y(240).Crop(\\&quot;scale\\&quot;).Chain()\\n  .Width(400).Crop(\\&quot;scale\\&quot;)).BuildImageTag(\\&quot;image1.png\\&quot;)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;.NET&quot;,&quot;packageName&quot;:&quot;CloudinaryDotNet&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;dart&quot;,&quot;framework&quot;:&quot;dart&quot;,&quot;language&quot;:&quot;dart&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;image1.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;q_auto,f_auto,fl_lossy\\\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%,co_rgb:815e3d,y_240\\\/w_400\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;image1.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;q_auto,f_auto,fl_lossy\\\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%,co_rgb:815e3d,y_240\\\/w_400\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Dart&quot;,&quot;packageName&quot;:&quot;cloudinary_dart&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;swift&quot;,&quot;framework&quot;:&quot;swift&quot;,&quot;language&quot;:&quot;swift&quot;,&quot;rawCodeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation().setQuality(\\&quot;auto\\&quot;).setFlags(\\&quot;lossy\\&quot;).chain() .setOverlay(\\&quot;text:OpenSans-ExtraBold.ttf_220_bold:10%25\\&quot;).setColor(\\&quot;#815e3d\\&quot;).setY(240).setCrop(\\&quot;scale\\&quot;).chain() .setWidth(400).setCrop(\\&quot;scale\\&quot;)).generate(\\&quot;image1.png\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;codeSnippet&quot;:&quot;imageView.cldSetImage(cloudinary.createUrl().setTransformation(CLDTransformation()\\n  .setQuality(\\&quot;auto\\&quot;).setFlags(\\&quot;lossy\\&quot;).chain()\\n  .setOverlay(\\&quot;text:OpenSans-ExtraBold.ttf_220_bold:10%25\\&quot;).setColor(\\&quot;#815e3d\\&quot;).setY(240).setCrop(\\&quot;scale\\&quot;).chain()\\n  .setWidth(400).setCrop(\\&quot;scale\\&quot;)).generate(\\&quot;image1.png\\&quot;)!, cloudinary: cloudinary)&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;iOS&quot;,&quot;packageName&quot;:&quot;cloudinary&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;5.x&quot;},{&quot;sdkId&quot;:&quot;android&quot;,&quot;framework&quot;:&quot;android&quot;,&quot;language&quot;:&quot;android&quot;,&quot;rawCodeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation().quality(\\&quot;auto\\&quot;).flags(\\&quot;lossy\\&quot;).chain() .overlay(new TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;)).color(\\&quot;#815e3d\\&quot;).y(240).crop(\\&quot;scale\\&quot;).chain() .width(400).crop(\\&quot;scale\\&quot;)).generate(\\&quot;image1.png\\&quot;);&quot;,&quot;codeSnippet&quot;:&quot;MediaManager.get().url().transformation(new Transformation()\\n  .quality(\\&quot;auto\\&quot;).flags(\\&quot;lossy\\&quot;).chain()\\n  .overlay(new TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;)).color(\\&quot;#815e3d\\&quot;).y(240).crop(\\&quot;scale\\&quot;).chain()\\n  .width(400).crop(\\&quot;scale\\&quot;)).generate(\\&quot;image1.png\\&quot;);&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Android&quot;,&quot;packageName&quot;:&quot;cloudinary-android&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;3.x&quot;},{&quot;sdkId&quot;:&quot;flutter&quot;,&quot;framework&quot;:&quot;flutter&quot;,&quot;language&quot;:&quot;flutter&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image(&#039;image1.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;q_auto,f_auto,fl_lossy\\\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%,co_rgb:815e3d,y_240\\\/w_400\\&quot;));&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image(&#039;image1.png&#039;).transformation(Transformation()\\n\\t.addTransformation(\\&quot;q_auto,f_auto,fl_lossy\\\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%,co_rgb:815e3d,y_240\\\/w_400\\&quot;));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Flutter&quot;,&quot;packageName&quot;:&quot;cloudinary_flutter&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;kotlin&quot;,&quot;framework&quot;:&quot;kotlin&quot;,&quot;language&quot;:&quot;kotlin&quot;,&quot;rawCodeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;image1.png\\&quot;)\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()) {\\n\\t lossy()\\n\\t })\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto()))\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;10%\\&quot;,TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;,220) {\\n\\t fontWeight(\\n\\tFontWeight.bold())\\n\\t }) {\\n\\t textColor(Color.rgb(\\&quot;815e3d\\&quot;))\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale()) })\\n\\t }) {\\n\\t position(Position() { offsetY(240) })\\n\\t })\\n\\t resize(Resize.scale() { width(400) }) \\n}.generate()&quot;,&quot;codeSnippet&quot;:&quot;cloudinary.image {\\n\\tpublicId(\\&quot;image1.png\\&quot;)\\n\\t delivery(Delivery.format(\\n\\tFormat.auto()) {\\n\\t lossy()\\n\\t })\\n\\t delivery(Delivery.quality(\\n\\tQuality.auto()))\\n\\t overlay(Overlay.source(\\n\\tSource.text(\\&quot;10%\\&quot;,TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;,220) {\\n\\t fontWeight(\\n\\tFontWeight.bold())\\n\\t }) {\\n\\t textColor(Color.rgb(\\&quot;815e3d\\&quot;))\\n\\t transformation(Transformation {\\n\\t resize(Resize.scale()) })\\n\\t }) {\\n\\t position(Position() { offsetY(240) })\\n\\t })\\n\\t resize(Resize.scale() { width(400) }) \\n}.generate()&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;Kotlin&quot;,&quot;packageName&quot;:&quot;kotlin-url-gen&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;},{&quot;sdkId&quot;:&quot;jquery&quot;,&quot;framework&quot;:&quot;jquery&quot;,&quot;language&quot;:&quot;jquery&quot;,&quot;rawCodeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;image1.png\\&quot;, {transformation: [ {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;}, {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;), color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;}, {width: 400, crop: \\&quot;scale\\&quot;} ]})&quot;,&quot;codeSnippet&quot;:&quot;$.cloudinary.image(\\&quot;image1.png\\&quot;, {transformation: [\\n  {quality: \\&quot;auto\\&quot;, flags: \\&quot;lossy\\&quot;},\\n  {overlay: new cloudinary.TextLayer().fontFamily(\\&quot;ttf\\&quot;).fontSize(220).fontWeight(\\&quot;bold\\&quot;).text(\\&quot;10%25\\&quot;), color: \\&quot;#815e3d\\&quot;, y: 240, crop: \\&quot;scale\\&quot;},\\n  {width: 400, crop: \\&quot;scale\\&quot;}\\n  ]})&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;jQuery&quot;,&quot;packageName&quot;:&quot;cloudinary-jquery&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;2.x&quot;},{&quot;sdkId&quot;:&quot;react_native&quot;,&quot;framework&quot;:&quot;react_native&quot;,&quot;language&quot;:&quot;react_native&quot;,&quot;rawCodeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;codeSnippet&quot;:&quot;new CloudinaryImage(\\&quot;image1.png\\&quot;)\\n  .delivery(format(auto()).lossy())\\n  .delivery(quality(auto()))\\n  .overlay(\\n    source(\\n      text(\\n        \\&quot;10%\\&quot;,\\n        new TextStyle(\\&quot;OpenSans-ExtraBold.ttf\\&quot;, 220).fontWeight(\\&quot;bold\\&quot;)\\n      )\\n        .textColor(\\&quot;#815e3d\\&quot;)\\n        .transformation(new Transformation().resize(scale()))\\n    ).position(new Position().offsetY(240))\\n  )\\n  .resize(scale().width(400));&quot;,&quot;status&quot;:0,&quot;statusText&quot;:&quot;Ok&quot;,&quot;displayName&quot;:&quot;React Native&quot;,&quot;packageName&quot;:&quot;cloudinary-react-native&quot;,&quot;packageStatus&quot;:&quot;&quot;,&quot;packageVersion&quot;:&quot;1.x&quot;}]\"\n      parsed-url=\"{&quot;url&quot;:&quot;https:\\\/\\\/res.cloudinary.com\\\/demo\\\/image\\\/upload\\\/q_auto,f_auto,fl_lossy\\\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%25,co_rgb:815e3d,y_240\\\/w_400\\\/image1.png&quot;,&quot;cloud_name&quot;:&quot;demo&quot;,&quot;host&quot;:&quot;res.cloudinary.com&quot;,&quot;type&quot;:&quot;upload&quot;,&quot;resource_type&quot;:&quot;image&quot;,&quot;transformation&quot;:[{&quot;quality&quot;:&quot;auto&quot;,&quot;format&quot;:&quot;auto&quot;,&quot;flags&quot;:&quot;lossy&quot;},{&quot;crop_mode&quot;:&quot;scale&quot;,&quot;overlay&quot;:&quot;text:OpenSans-ExtraBold.ttf_220_bold:10%&quot;,&quot;color&quot;:&quot;rgb:815e3d&quot;,&quot;y&quot;:&quot;240&quot;},{&quot;width&quot;:&quot;400&quot;}],&quot;transformation_string&quot;:&quot;q_auto,f_auto,fl_lossy\\\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%,co_rgb:815e3d,y_240\\\/w_400&quot;,&quot;url_suffix&quot;:&quot;&quot;,&quot;version&quot;:&quot;&quot;,&quot;secure&quot;:true,&quot;public_id&quot;:&quot;image1.png&quot;,&quot;extension&quot;:&quot;png&quot;,&quot;format&quot;:&quot;png&quot;,&quot;format_code&quot;:true,&quot;url_code&quot;:false,&quot;signature&quot;:&quot;&quot;,&quot;private_cdn&quot;:false,&quot;result_asset_type&quot;:&quot;image&quot;}\"\n      with-url=\"true\"\n    >\n      <span class=\"u-visually-hidden\">Loading code examples<\/span>\n    <\/cld-code-widget><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/q_auto,f_auto,fl_lossy\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%25,co_rgb:815e3d,y_240\/w_400\/image1.png\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/q_auto,f_auto,fl_lossy\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:10%25,co_rgb:815e3d,y_240\/w_400\/image1.png\" alt=\"Dog\" loading=\"lazy\" class=\"c-transformed-asset\" \/><\/a><\/p>\n<p>We\u2019ve added the text <strong>10%<\/strong> to the image. That\u2019s the bit in the image URL that\u2019s highlighted in bold. However, the text needs to be URL encoded, which means special characters get encoded in a URL.<\/p>\n<ul>\n<li>Message: <strong>10%<\/strong>\n<\/li>\n<li>Actual URL encoded text: <strong>10%25<\/strong>\n<\/li>\n<\/ul>\n<p>Marketing would need to work closely with a developer to generate this URL. If you use Google Fonts, then you\u2019re in luck &#8211; Cloudinary supports Google Fonts right out of the box!<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_300,c_fill\/dpr_auto\/dogemail3.png\" alt=\"Dog Email 3\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"600\" height=\"815\"\/>\n<em>Dynamically generated email promo banner using Cloudinary<\/em><\/p>\n<p>The above image was generated by adding 10 as the URL parameter. We now take a step further to replace 10 with the merge tag used in our email campaign.<\/p>\n<ul>\n<li>Our merge tag is: |*DISCOUNT*|<\/li>\n<li>URL Encoded merge tag: |*DISCOUNT*|%25 (the %25 stands for the percentage symbol that should appear after the discount amount).<\/li>\n<\/ul>\n<p>Thus, the new URL containing the merge tag would look something like this:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/chriszak\/image\/upload\/q_auto,f_auto,fl_lossy\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:|*DISCOUNT*|%25,co_rgb:815e3d,y_240\/w_400\/image1.png\n<\/code><\/pre>\n<p>We then simply include it in our email campaign. Now the content of our email campaign is as follows:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/chriszak\/image\/upload\/q_auto,f_auto,fl_lossy\/c_scale,l_text:OpenSans-ExtraBold.ttf_220_bold:|*DISCOUNT*|%25,co_rgb:815e3d,y_240\/w_400\/image1.png\n<\/code><\/pre>\n<blockquote>\n<p>Hey |*FNAME*|,<\/p>\n<\/blockquote>\n<blockquote>\n<p>We hope HashMetrics is helping you keep track of your digital marketing campaigns.<\/p>\n<\/blockquote>\n<blockquote>\n<p>Holidays are around the corner and we have a special gift for you &#8211;\na flat |*DISCOUNT*| percent off on your next bill, no matter your subscription.<\/p>\n<\/blockquote>\n<blockquote>\n<p>We hope you\u2019re enjoying using HashMetrics as much as we enjoy building it.<\/p>\n<\/blockquote>\n<blockquote>\n<p>If you ever have any questions, please feel free to reach out to us via email at  <a href=\"mailto:support@hasmetrics.io\">support@hasmetrics.io<\/a> or by simply tweeting your query to @hashmetrics.<\/p>\n<\/blockquote>\n<blockquote>\n<p>To your marketing success,<\/p>\n<\/blockquote>\n<blockquote>\n<p>Team HashMetrics<\/p>\n<\/blockquote>\n<p>Once sent, each image would be generated on-the-fly based on the image URL, which is in turn, generated by the merge tag from the ESP.<\/p>\n<h2>Further Image Customization for Email Campaigns<\/h2>\n<p>HashMetics\u2019 example is one of the many use cases possible using Cloudinary\u2019s platform. Other examples include:<\/p>\n<ul>\n<li>Adding an offer expiry date to a promo code<\/li>\n<li>Embedding a name in the image<\/li>\n<\/ul>\n<p>Let\u2019s take a look at the code that\u2019s used to generate these images.<\/p>\n<h2>Feedback Campaigns<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/feedback_campaign1.png\" alt=\"feedback campaign\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"787\"\/>\n<em>A personalized banner for a feedback campaign<\/em><\/p>\n<p>This images can be used in thank-you emails sent as a response to someone who leaves a feedback or completes a survey.<\/p>\n<p>As you can see, the person\u2019s name is embedded in the image. With Cloudinary, you can use the following code to dynamically generate these images from the base image:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/chriszak\/image\/upload\/q_auto,f_auto,fl_lossy\/c_scale,l_text:Calibri.ttf_100_bold:Jonathan,co_rgb:002060,g_west,x_80\/w_600\/image2.png\n<\/code><\/pre>\n<p>Here\u2019s a before and after version of the same image, showcasing Cloudinary\u2019s on-demand transformation feature.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/Feedback_campaign_2.png\" alt=\"feedback_campaign\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"511\"\/>\n<em>Example of an on-demand image transformation using Cloudinary<\/em><\/p>\n<h2>Promotional Campaigns<\/h2>\n<p>Another useful application of dynamically generated banners are offer banners. Similar to the example in our first use case (HashMetrics), we could add an offer expiration date to the discount code. This would strengthen the marketing message by using the classic FOMO or <em>Fear of Missing Out<\/em> technique.<\/p>\n<p>Here\u2019s an example:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/FOMO_1.png\" alt=\"FOMO\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"935\"\/>\n<em>Promotional Banner using the FOMO technique<\/em><\/p>\n<p>Here\u2019s the code to generate customized offer expiration text on the image:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>https:\/\/res.cloudinary.com\/chriszak\/image\/upload\/q_auto,f_auto,fl_lossy\/w_200,c_scale,l_text:Montserrat-Light.otf_100_bold:!*EXPIRES*!,co_rgb:ff8f7e,g_south,y_10\/image3.png\n<\/code><\/pre>\n<p>Here\u2019s a before and after version of the banners:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/w_700,c_fill\/dpr_auto\/FOMO_2.png\" alt=\"FOMO\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"1400\" height=\"566\"\/>\n<em>Example of an on-demand image transformation using Cloudinary<\/em><\/p>\n<h2>Summary<\/h2>\n<p>Here\u2019s a quick look at the things we\u2019ve covered in this tutorial:<\/p>\n<ul>\n<li>Merge tags are extremely resourceful for personalizing email campaigns<\/li>\n<li>Cloudinary can dynamically add text to specified regions on an image, by simply selecting the parameters in the image URL<\/li>\n<li>The input for these dynamically generated images can come from merge tags, as defined in the ESP<\/li>\n<li>Using Cloudinary\u2019s on-demand image transformation capabilities, we can send highly personalized emails in our email marketing campaigns.<\/li>\n<\/ul>\n<h2>Conclusion<\/h2>\n<p>The past decade has seen business transform from vertical, exclusive practices to more horizontal, inclusive practices. Personalization is an important step toward a business\u2019 success.\nRight from online ad campaigns, to SMS and emails sent &#8211; everything is personalized.<\/p>\n<p>However, generating customized images for every email sent in an email marketing campaign requires enterprise-level marketing automation tools that cost several thousand dollars every month. With a bit of tweaking, you can achieve the similar results using Cloudinary and merge tags in your ESP.<\/p>\n<p>Cloudinary\u2019s on-the-fly image transformation capabilities open the door to numerous possibilities not only in email marketing, but overall marketing campaigns, as well.<\/p>\n<p>Do you use Cloudinary in your email marketing campaigns? How? Let us know in the comments below!<\/p>\n<table>\n<tr>\n<td style = \"padding: 5px;\">\n<img decoding=\"async\" src=\"https:\/\/cloudinary-res.cloudinary.com\/image\/upload\/c_thumb,w_200\/Sourav_Kundu.jpg\" alt=\"Sourav Kundu\" title=\"Sourav Kundu\"><\/img><\/td>\n<td style = \"padding: 10px;\"><i><a href=\"https:\/\/twitter.com\/souravify\" target=\"_new\"> Sourav Kundu<\/a> is an avid marketer with a passion for all things digital. From email marketing to app re-engagement campaigns, he loves putting on multiple hats during the workday. He&#8217;s available for consultation over <a href=\"https:\/\/twitter.com\/souravify\" target=\"_new\"> Twitter<\/a> or his <a href=\"https:\/\/souravkundu.in\/?utm_sourav=cloudinary.com\" target=\"_new\"> website.<\/a><\/i><\/td>\n<\/tr>\n<\/table>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":21603,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[134,165,227,251],"class_list":["post-21602","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-guest-post","tag-image-transformation","tag-performance-optimization","tag-responsive-images"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Create Dynamic Image Banners for Email Marketing Campaigns with Cloudinary<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Boost Email Marketing with Personalized Email Banners\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-28T00:47:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-29T23:41:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"1540\" \/>\n\t<meta property=\"og:image:height\" content=\"847\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"How to Boost Email Marketing with Personalized Email Banners\",\"datePublished\":\"2017-09-28T00:47:55+00:00\",\"dateModified\":\"2024-05-29T23:41:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA\",\"keywords\":[\"Guest Post\",\"Image Transformation\",\"Performance Optimization\",\"Responsive Images\"],\"inLanguage\":\"en-US\",\"copyrightYear\":\"2017\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners\",\"url\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners\",\"name\":\"Create Dynamic Image Banners for Email Marketing Campaigns with Cloudinary\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA\",\"datePublished\":\"2017-09-28T00:47:55+00:00\",\"dateModified\":\"2024-05-29T23:41:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA\",\"width\":1540,\"height\":847},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Boost Email Marketing with Personalized Email Banners\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Create Dynamic Image Banners for Email Marketing Campaigns with Cloudinary","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners","og_locale":"en_US","og_type":"article","og_title":"How to Boost Email Marketing with Personalized Email Banners","og_url":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners","og_site_name":"Cloudinary Blog","article_published_time":"2017-09-28T00:47:55+00:00","article_modified_time":"2024-05-29T23:41:26+00:00","og_image":[{"width":1540,"height":847,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners"},"author":{"name":"","@id":""},"headline":"How to Boost Email Marketing with Personalized Email Banners","datePublished":"2017-09-28T00:47:55+00:00","dateModified":"2024-05-29T23:41:26+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners"},"wordCount":9,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA","keywords":["Guest Post","Image Transformation","Performance Optimization","Responsive Images"],"inLanguage":"en-US","copyrightYear":"2017","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners","url":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners","name":"Create Dynamic Image Banners for Email Marketing Campaigns with Cloudinary","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA","datePublished":"2017-09-28T00:47:55+00:00","dateModified":"2024-05-29T23:41:26+00:00","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA","width":1540,"height":847},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/how_to_boost_email_marketing_with_personalized_email_banners#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to Boost Email Marketing with Personalized Email Banners"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649723126\/Web_Assets\/blog\/Email_Campaigns_2000x1100\/Email_Campaigns_2000x1100.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=21602"}],"version-history":[{"count":2,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21602\/revisions"}],"predecessor-version":[{"id":34134,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/21602\/revisions\/34134"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/21603"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=21602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=21602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=21602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}