Mailchimp API not replacing mc:edit content sections (using ruby library)
I struggled with this for a few days, using the template manager in MailChimp. The only way I got it to work was exporting my existing template, adding the mc:edit tag to the code and then uploading it as a custom template.
Exporting template from MailChimp
- Go to 'Templates'
- Click on the 'Edit' drop down arrow, next to the template you want to use with the API
- Select 'Export HTML'
Uploading your template to MailChimp
- Go to 'Templates'
- Click the 'Create Template ' button in the top right
- Click the 'Code Your Own'
- Then select 'Import html'
Example of my template code:
<div mc:edit="eventmessage">
Custom Event Message (replaced by API Call)
<br></div>
As a check, I was now able to see the section now appear when using /templates/info API call
Once I confirmed that Mailchimp saw the template section I used /campaigns/create call, as mentioned above but skipping over the html definition.
Updated campaign/create (content/sections):
},
"content": {
"sections": {
"eventmessage": "Event Message Content"
},
},
As per @kateray comment above, after an hour of tries I managed to insert my custom HTML from my back-end as the MailChimp campaign content via its API 3.0. For such a simple use case it is rather annoying not to have a ready-made solution on their docs. Surely MailChimp API lacks a cookbook.
So from the beginning:
a) Create the mailing list with API or with MailChimp web interface - create list and b) add the recepients to it - add members.
Create the new campaign via API create campaign or their website. Do not assign any template to it.
Assign the mailing list to the camplaign assign mailing list.
Now set the campaign content with this API endpoint. Assign the following value to the JSON body of the request you send to the endpoint:
{
"html": "<p>This is your custom HTML assigned to your campaign as content.</p>"
}
and send the request.
In the response to this request you get the HTML you set and its plain text version.
Go in the MailChimp web interface and ensure the campaign has all the check marks green.
Send out the campaign with this API request.
NB:
- double check you use the correct HTTP verbs for each API request: GET, PUT, PATCH, POST as shown in the API reference
- do not forget to authenticate your API calls, here is the quick intro with clean examples made in Postman
- double check you pass the correct list ID, campaign ID with your API requests.
There's an endpoint to set the content along with the sections available at:
https://developer.mailchimp.com/documentation/mailchimp/reference/campaigns/content/#edit-put_campaigns_campaign_id_content