public class BrevoContactTrigger_Handler { /*Method to create contact in Brevo when created in SF*/ @future(callout=true) public static void createContactInBrevo(String email, String firstName, String lastName, String phone, Id contactId) { try { // Fetch the contact record Contact con = [SELECT Brevo_Status__c, Brevo_List__c FROM Contact WHERE Id = :contactId]; // Map the Brevo_List__c values to list IDs Map listMap = new Map{ 'Salesforce Contact'=> 7, 'Test List' => 8, 'Identified Contacts' => 6 }; // Get the list IDs from the Brevo_List__c field List listIds = new List(); for (String listName : con.Brevo_List__c.split(';')) { if (listMap.containsKey(listName)) { listIds.add(listMap.get(listName)); } } HttpRequest req = new HttpRequest(); Http http = new Http(); req.setEndpoint('https://api.brevo.com/v3/contacts'); req.setMethod('POST'); req.setHeader('Content-Type', 'application/json'); req.setHeader('api-key', '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'); Map brevoContact = new Map(); brevoContact.put('email', email); Map brevoAttributes = new Map(); brevoAttributes.put('FIRSTNAME', firstName); brevoAttributes.put('LASTNAME', lastName); brevoAttributes.put('SMS', phone); brevoContact.put('attributes', brevoAttributes); String brevoBody = JSON.serialize(brevoContact); req.setBody(brevoBody); try { HttpResponse res = http.send(req); if (res.getStatusCode() != 201) { System.debug('Failed to create contact in Brevo with status code: ' + res.getStatusCode()); con.Brevo_Status__c = 'Error: ' + res.getStatusCode(); }else{ Map responseMap = (Map) JSON.deserializeUntyped(res.getBody()); String brevoId = String.valueOf(responseMap.get('id')); //String successMessage = String.valueOf(responseMap.get('message')); System.debug('Created Successfully in Brevo with ID: '+ brevoId); con.Brevo_Status__c = 'Contact created in Brevo successfully: ' + ', Brevo ID: ' + brevoId; } database.update(con); } catch(Exception ex) { System.debug('API call failed with message: ' + ex.getMessage()); } } catch(Exception ex) { System.debug('API call failed with message: ' + ex.getMessage()); } } /*Method to update contact in Brevo when updated in SF Also, if update contact not exist in Brevo create new one*/ @future(callout=true) public static void updateContactInBrevo(String email, String firstName, String lastName, String phone, Id contactId) { try { HttpRequest req = new HttpRequest(); Http http = new Http(); // GET request to check if the contact exists req.setEndpoint('https://api.brevo.com/v3/contacts/' + email); req.setMethod('GET'); req.setHeader('Content-Type', 'application/json'); req.setHeader('api-key', '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'); HttpResponse res = http.send(req); Contact con = [SELECT Brevo_Status__c FROM Contact WHERE Id = :contactId]; if (res.getStatusCode() == 200) { // contact exists, sending a PUT request to update the contact req.setMethod('PUT'); Map brevoContact = new Map(); brevoContact.put('email', email); Map brevoAttributes = new Map(); brevoAttributes.put('FIRSTNAME', firstName); brevoAttributes.put('LASTNAME', lastName); brevoAttributes.put('SMS', phone); brevoContact.put('attributes', brevoAttributes); String brevoBody = JSON.serialize(brevoContact); req.setBody(brevoBody); HttpResponse updateRes = http.send(req); if (updateRes.getStatusCode() == 204) { System.debug('Record successfully updated in Brevo with status code: ' + updateRes.getStatusCode()); con.Brevo_Status__c = 'Update Successfully, Brevo Email: ' + email; } else { System.debug('Failed to update contact in Brevo with status code: ' + updateRes.getStatusCode()); con.Brevo_Status__c = 'Update Error: ' + updateRes.getStatusCode(); } database.update(con); } else { System.debug('Contact does not exist in Brevo creating new'); HttpRequest req1 = new HttpRequest(); Http http1 = new Http(); req1.setEndpoint('https://api.brevo.com/v3/contacts'); req1.setMethod('POST'); req1.setHeader('Content-Type', 'application/json'); req1.setHeader('api-key', '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'); Map brevoContact = new Map(); brevoContact.put('email', email); Map brevoAttributes = new Map(); brevoAttributes.put('FIRSTNAME', firstName); brevoAttributes.put('LASTNAME', lastName); brevoAttributes.put('SMS', phone); brevoContact.put('attributes', brevoAttributes); String brevoBody = JSON.serialize(brevoContact); req1.setBody(brevoBody); HttpResponse res1 = http.send(req1); if (res1.getStatusCode() != 201) { System.debug('Failed to create contact in Brevo with status code: ' + res.getStatusCode()); con.Brevo_Status__c = 'Create Error: ' + res.getStatusCode(); }else{ Map responseMap = (Map) JSON.deserializeUntyped(res1.getBody()); String brevoId = String.valueOf(responseMap.get('id')); System.debug('Created Successfully in Brevo with ID: '+ brevoId); con.Brevo_Status__c = 'Create Success, Brevo ID: ' + brevoId; } database.update(con); } } catch(Exception ex) { System.debug('API call failed with message: ' + ex.getMessage()); } } /*Method to delete contact from Brevo when deleted from SF*/ @future(callout=true) public static void deleteContactInBrevo(String email) { HttpRequest req = new HttpRequest(); Http http = new Http(); // GET request to check if the contact exists req.setEndpoint('https://api.brevo.com/v3/contacts/' + email); req.setMethod('GET'); req.setHeader('Content-Type', 'application/json'); req.setHeader('api-key', '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'); try { HttpResponse res = http.send(req); if (res.getStatusCode() == 200) { // contact exists, sending a DELETE request to delete the contact req.setMethod('DELETE'); HttpResponse deleteRes = http.send(req); if (deleteRes.getStatusCode() == 204) { System.debug('Record successfully deleted from Brevo with status code: ' + deleteRes.getStatusCode()); } else { System.debug('Failed to delete contact in Brevo with status code: ' + deleteRes.getStatusCode()); } } } catch(Exception ex) { System.debug('API call failed with message: ' + ex.getMessage()); } } }