Search code examples
mailchimpmailchimp-api-v3.0

MailChimp API - dynamic content - mc:repeatable + mc:edit


My email template has some intro text followed by a repeatable block [a picture + a button].

I would like to repeat this block some X times and each time have picture link and button link updated with new links.

Currently I am using this payload to edit one block, and it is working as intended. I have used this SO answer as a guideline.

 var data = {
             'template': {
                          'id': template_id,
                          'sections': {
                                        'editbutton': '<a class="mcnButton " title="Get Profile" href="' + button1 + '" target="_blank" style="font-weight: bold;letter-spacing: normal;line-height: 100%;text-align: center;text-decoration: none;color: #FFFFFF;">GET DATA</a>',
                                        'editimage': '<img alt="" src="' + image1 + '" width="564" style="max-width:564px; padding-bottom: 0; display: inline !important; vertical-align: bottom;" class="mcnImage">'
                                      }
                         }
             };

What I am struggling is repeating this block and updating image and button link.

I am working in Google Apps Script but I guess the problem is independence of language.

Any help would be appreciated. Thanks.


Solution

  • I do not think you need to use the mc:repeatable or the mc:variant at all. Use the single mc:edit="editbutton_and_editimage_items_list" MailChimp tag. Put there dynamically generated HTML <ul><li> list with your actual data via sections part of the payload you sent to the API.

    E.g. your sections.editbutton_and_editimage_items_list JSON item in your var data = {..} object above would look like:

       <ul>
            <li>
                <a class="mcnButton " href="' + button1 + '" style="...">GET DATA</a></li>
                <img alt="" src="' + image1 + '" width="564" style="..." class="mcnImage">
            </li>
            <!-- Repeat the LI with different data as needed --!>
       </ul>
    

    After you successfully set the template content of your yet-not-sent campaign with the data above, use the API to send the campaign.