function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Saniya Khan 2Saniya Khan 2 

Mailchimp integration with salesforce

Hi All,
I want to integrate salesforce custom object to Mailchimp list,but its showing status 401. Don't know where to put API key and usename.
Any help will be apreciable.
here is my code after update trigger I am calling API call
global class LeadIntegrationMailChimp {

    Public static MailChimpSetting__c mailchimpsetting = MailChimpSetting__c.getInstance();
    @future(callout=true)
    
    public static void sendInfo(string LeadID)
    {
        Lead__c LeadList=[Select Name,Email__c,Address__c,Contact_Phone__c,Company_Name__c,Status__c from lead__c where id=:LeadID];
        
            String ContactName=LeadList.Name;
            List<String> Splitname=ContactName.split(' ');
            System.debug('First Name'+Splitname[0]);
            system.debug('Last Name'+Splitname[1]);
            JSONGenerator gen = JSON.createGenerator(true);
            gen.writeStartObject();
         /* String ContactName=LeadList.Name;
            gen.writeStringField('FName',Splitname[0]);
            gen.writeStringField('LName',Splitname[1]);
            gen.writeStringField('Address',leadList.Address__c);
            gen.writeStringField('Phone Number',leadList.Contact_Phone__c);
            gen.writeStringField('Business Name',leadList.Company_Name__c);
            gen.writeStringField('status',leadList.Status__c);
           */ 
            gen.writeStringField('email_address', leadList.Email__c);
      
            gen.writeStringField('status',leadList.Status__c);
            gen.writeEndObject();   
            String jsonS = gen.getAsString();
        
            System.debug('Jjson string'+jsonS);
            
            HTTP auth = new HTTP();
  
        HTTPRequest r = new HTTPRequest();    
       r.setEndpoint('https://usXX.api.mailchimp.com/3.0/lists/bxxxxxxxxx/members');
        r.setHeader('Authorization','Saniya:111b1b1ba1111111111-usXX');
        r.setHeader('Content-Type','application/json');
        
        r.setMethod('POST');   
        r.setBody(jsonS);  
        System.debug('Request'+r);
        HTTPResponse authresp=new HttpResponse();
            authresp=auth.send(r);
        system.debug('Response Is'+authresp);
        
    }
}
Many Thanks,
Saniya
Waqar Hussain SFWaqar Hussain SF
Hi Saniya, 

Try below code and let me know 
 
global class LeadIntegrationMailChimp {

    Public static MailChimpSetting__c mailchimpsetting = MailChimpSetting__c.getInstance();
    @future(callout=true)
    
    public static void sendInfo(string LeadID)
    {
		Lead__c LeadList=[Select Name,Email__c,Address__c,Contact_Phone__c,Company_Name__c,Status__c from lead__c where id=:LeadID];
        
            String ContactName=LeadList.Name;
            List<String> Splitname=ContactName.split(' ');
            System.debug('First Name'+Splitname[0]);
            system.debug('Last Name'+Splitname[1]);
            JSONGenerator gen = JSON.createGenerator(true);
            gen.writeStartObject();
         /* String ContactName=LeadList.Name;
            gen.writeStringField('FName',Splitname[0]);
            gen.writeStringField('LName',Splitname[1]);
            gen.writeStringField('Address',leadList.Address__c);
            gen.writeStringField('Phone Number',leadList.Contact_Phone__c);
            gen.writeStringField('Business Name',leadList.Company_Name__c);
            gen.writeStringField('status',leadList.Status__c);
           */ 
            gen.writeStringField('email_address', leadList.Email__c);
      
            gen.writeStringField('status',leadList.Status__c);
            gen.writeEndObject();   
            String jsonS = gen.getAsString();
        
            System.debug('Jjson string'+jsonS);
			
		String apiKey = mailchimpsetting.Api_Key__c;
		Blob authValue = Blob.valueOf('user:' + apiKey);
		String authorizationHeader = 'Basic ' + EncodingUtil.base64Encode(authValue);
		
		// Determine data center and construct the path.
		String dataCenter = apiKey.split('-')[1];
		String path = 'https://' + dataCenter + '.api.mailchimp.com/3.0';
		String method = '/lists';
		String url = path + method;
		
		HttpRequest req = new HttpRequest(); 
		
		//Set HTTPRequest Method
		req.setMethod('POST');
		
		//Set HTTPRequest header properties
		req.setHeader('Content-Type', 'application/json');
		req.setHeader('Authorization', authorizationHeader);
		req.setEndpoint( url );
		req.setTimeout(120000);
		req.setBody(jsonS); 
		
		Http http = new Http();
		//Execute web service call here       
		HTTPResponse res = http.send(req);    
		
		//Helpful debug messages
		System.debug(res.getBody());
		//System.debug('STATUS:'+res.getStatus());
		//System.debug('STATUS_CODE:'+res.getStatusCode());
		
	}
}