DEV Community

Cover image for How to add or update a Mailchimp subscriber using REST API with JavaScript
Abdulrahman Saleh Khamis
Abdulrahman Saleh Khamis

Posted on

7 3

How to add or update a Mailchimp subscriber using REST API with JavaScript

A great number of websites today use a contact form to get in touch with their visitors, and at the same time, they might want to add them to their Mailchimp list for future communication.

This is a simple way on how to add a new subscriber to your Mailchimp list, or update the subscriber's information if one already exists, with a simple snippet of JavaScript.

We will be using Mailchimp's REST API v3. We will not go over how to obtain your API key, as it is already covered here.

This is the whole code snippet:

const MAILCHIMP_API = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-us1";
const MAILCHIMP_SERVER = "us1";
const MAILCHIMP_LIST_ID = "XXXXXXXXXX";
const auth = Buffer.from(`anystring:${MAILCHIMP_API}`).toString('base64');

const subscriber = {
  email_address: "test@example.com",
  status_if_new: "subscribed",
  merge_fields: {
    FNAME: "John",
    LNAME: "Smith",
  }
};

//Using Node's 'crypto', you can replace with any library that can generate MD5 hash for you
const subscriberHash = crypto
  .createHash("md5")
  .update(subscriber.email_address.toLowerCase())
  .digest("hex");

//Using Node's 'node-fetch'
const response = await fetch(
`https://${MAILCHIMP_SERVER}.api.mailchimp.com/3.0/lists/${MAILCHIMP_LIST_ID}/members/${subscriberHash}`,
  {
    body: JSON.stringify(subscriber),
    headers: {
      Accept: "application/json",
      'Content-Type': "application/json",
      Authorization: `Basic ${auth}`
    },
    method: "PUT"
  }
);

if (response.ok) {
  return { statusCode: response.status, body: response.statusText };
} else {
  throw new Error("Error requesting Mailchimp API");
}
Enter fullscreen mode Exit fullscreen mode

Here is a quick glance on what the variables mean:
${MAILCHIMP_API} You generate this from your Mailchimp portal, for example, XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-us1
${MAILCHIMP_SERVER} Your Mailchimp server, for example, us1
${MAILCHIMP_LIST_ID} Find Your Audience ID

${subscriberHash} You need to generate MD5 hash of the email address of the subscriber. You can generate it easily with JavaScript using the following code:

const subscriberHash = crypto
    .createHash("md5")
    .update("test@example.com")
    .digest("hex");
Enter fullscreen mode Exit fullscreen mode

The API's request body contains the information of the subscriber that you want to add, or if the email already exists, update.

const subscriber = {
  email_address: "test@example.com",
  status_if_new: "subscribed",
  merge_fields: {
    FNAME: "John",
    LNAME: "Smith",
  }
};
Enter fullscreen mode Exit fullscreen mode

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Billboard image

Try REST API Generation for Snowflake

DevOps for Private APIs. Automate the building, securing, and documenting of internal/private REST APIs with built-in enterprise security on bare-metal, VMs, or containers.

  • Auto-generated live APIs mapped from Snowflake database schema
  • Interactive Swagger API documentation
  • Scripting engine to customize your API
  • Built-in role-based access control

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay