0

I have got around 1000 contacts to import to Mailchimp. This is my company's old database, which we have exported from the CSM system, and we want every contact to confirm their subscription if they want to be on our subscription list.

When I try to import it through Mailchimp, I can't give the contact status pending.

So, I have managed how to do it with single contact through bash, but I will want to import the whole contact list.

I am not familiar with this scripting language that much, so can anybody advise me, is there a way to import the data from the CSV file and how can I do it?

Or maybe there is some other way to do it?

This is the code that is working for a single contact:

#!/bin/bash
set -euo pipefail

list_id="Add_LIST_ID"
user_email="Add_E_MAIL"
user_fname="Add_F_NAME"
user_lname="Add_L_NAME"

curl -sS --request POST \
  --url "https://$API_SERVER.api.mailchimp.com/3.0/lists/$list_id/members" \
  --user "key:$API_KEY" \
  --header 'content-type: application/json' \
  --data @- \
<<EOF | jq '.id'
{
  "email_address": "$user_email",
  "status": "pending",
  "merge_fields": {
    "FNAME": "$user_fname",
    "LNAME": "$user_lname"
  }
}
EOF

EDIT1

Okay, I have managed to load the data from csv file. The code is below.

while IFS=, read -r col1
do
{

#!/bin/bash

set -euo pipefail

list_id="LIST_ID"
echo "$col1"

curl -sS --request POST \
  --url "https://$API_SERVER.api.mailchimp.com/3.0/lists/$list_id/members" \
  --user "key:$API_KEY" \
  --header 'content-type: application/json' \
  --data @- \
<<EOF | jq '.id'
{
  "email_address": "$(echo $col1)",
  "status": "pending",
  "merge_fields": {
    "FNAME": "",
    "LNAME": ""
  }
}
EOF
}
done < mails.csv

I have put echo line after list_id to see if the data is imported correctly.

The code is working (no errors in the buildup), but I have managed to add a contact to the list only once (subscriber hash is the response). In other tries, I have got a "null" value in response. Does anybody know why?

Simon
  • 1
  • 1
  • Let me know if I've understood your question correctly: you are able to import a single contact using the bash script you've shared, and you would now like to do that once for each of the contacts you have in your CSV? If that is correct, maybe search for "reading a CSV in bash". For example, this answer might help you: https://stackoverflow.com/a/4286841/101975 – Gar Apr 21 '21 at 13:04
  • Yes, this is exactly what I want to do. Thanks for the link. – Simon Apr 21 '21 at 15:11

0 Answers0