Email Marketing Integrations
Connect your email marketing platforms to SkunkCRM to sync subscribers, track email engagement, and create unified customer profiles. Perfect for nurturing leads and tracking email performance.
Mailchimp Integration
Mailchimp provides webhooks for list events, making it easy to sync with SkunkCRM.
Setup Steps
-
Create Webhook Token in SkunkCRM:
- Go to SkunkCRM → Webhooks
- In the Incoming Webhook Tokens section, click "Create Token"
- Enter token name: "Mailchimp Integration"
- Copy the complete webhook URL provided
-
Configure Mailchimp Webhooks:
- Log into your Mailchimp account
- Go to Audience → Settings → Webhooks
- Click "Create New Webhook"
- Callback URL:
https://yoursite.com/wp-json/skunkcrm/v1/webhook/{your-token}
-
Select Events:
- ✅ Subscribes - New subscriber added
- ✅ Unsubscribes - Subscriber removed
- ✅ Profile Updates - Subscriber info changed
- ✅ Email Address Changes - Email updated
- ✅ Cleaned - Email bounced/invalid
Webhook Processing
SkunkCRM automatically processes Mailchimp webhook events:
New Subscriber:
json1{ 2 "action": "create_contact", 3 "data": { 4 "name": "John Doe", 5 "email": "john@example.com", 6 "source": "mailchimp", 7 "status": "subscriber", 8 "mailchimp_list_id": "abc123", 9 "subscribed_at": "2025-01-09 14:30:00" 10 } 11}
Profile Update:
json1{ 2 "action": "update_contact", 3 "data": { 4 "email": "john@example.com", 5 "name": "John Smith", 6 "phone": "+1234567890", 7 "source": "mailchimp" 8 } 9}
Custom Mailchimp Handler
For advanced processing, create a custom webhook handler:
functions.phpphp1// Mailchimp webhook handler 2add_action('rest_api_init', function() { 3 register_rest_route('your-plugin/v1', '/mailchimp-webhook', [ 4 'methods' => 'POST', 5 'callback' => 'handle_mailchimp_webhook' 6 ]); 7}); 8 9function handle_mailchimp_webhook($request) { 10 $data = $request->get_json_params(); 11 12 switch ($data['type']) { 13 case 'subscribe': 14 $subscriber = $data['data']; 15 16 $contact_data = [ 17 'contact' => [ 18 'name' => $subscriber['merges']['FNAME'] . ' ' . $subscriber['merges']['LNAME'], 19 'email' => $subscriber['email'], 20 'source' => 'mailchimp', 21 'status' => 'subscriber', 22 'mailchimp_list_id' => $subscriber['list_id'], 23 'tags' => ['newsletter_subscriber'] 24 ] 25 ]; 26 27 // Send to SkunkCRM 28 sendToSkunkCRM($contact_data); 29 break; 30 31 case 'unsubscribe': 32 $subscriber = $data['data']; 33 34 $contact_data = [ 35 'action' => 'update_contact', 36 'data' => [ 37 'email' => $subscriber['email'], 38 'status' => 'unsubscribed', 39 'unsubscribed_at' => date('Y-m-d H:i:s') 40 ] 41 ]; 42 43 sendToSkunkCRM($contact_data); 44 break; 45 } 46 47 return new WP_REST_Response(['status' => 'success'], 200); 48}
ConvertKit Integration
ConvertKit offers webhooks for subscriber events and form submissions.
Setup Steps
- Create Webhook Token in SkunkCRM
- Configure ConvertKit Webhooks:
- Go to ConvertKit → Account Settings → Webhooks
- Add Webhook URL:
https://yoursite.com/wp-json/skunkcrm/v1/webhook/{your-token} - Select Events: Subscriber activated, form subscribed, tag added
Webhook Events
Subscriber Activated:
json1{ 2 "action": "create_contact", 3 "data": { 4 "name": "Jane Smith", 5 "email": "jane@example.com", 6 "source": "convertkit", 7 "status": "subscriber", 8 "convertkit_subscriber_id": 12345 9 } 10}
Form Subscription:
json1{ 2 "action": "create_contact", 3 "data": { 4 "name": "John Doe", 5 "email": "john@example.com", 6 "source": "convertkit", 7 "form_name": "Lead Magnet Download", 8 "convertkit_form_id": 678 9 } 10}
ConvertKit Custom Fields
Map ConvertKit custom fields to SkunkCRM:
functions.phpphp1// ConvertKit webhook handler 2function process_convertkit_webhook($data) { 3 if ($data['event'] === 'subscriber.subscriber_activate') { 4 $subscriber = $data['subscriber']; 5 6 $contact_data = [ 7 'contact' => [ 8 'name' => $subscriber['first_name'] . ' ' . $subscriber['last_name'], 9 'email' => $subscriber['email_address'], 10 'source' => 'convertkit', 11 'convertkit_id' => $subscriber['id'] 12 ] 13 ]; 14 15 // Map custom fields 16 if (!empty($subscriber['fields'])) { 17 foreach ($subscriber['fields'] as $field_name => $field_value) { 18 $contact_data['contact']['custom_' . $field_name] = $field_value; 19 } 20 } 21 22 sendToSkunkCRM($contact_data); 23 } 24}
ActiveCampaign Integration
ActiveCampaign provides comprehensive webhook support for contact and campaign events.
Setup Process
- Create Webhook Token in SkunkCRM
- Configure ActiveCampaign Webhooks:
- Go to ActiveCampaign → Settings → Developer
- Add Webhook:
https://yoursite.com/wp-json/skunkcrm/v1/webhook/{your-token} - Events: Contact added, updated, tagged
Event Processing
Contact Added:
json1{ 2 "action": "create_contact", 3 "data": { 4 "name": "Sarah Johnson", 5 "email": "sarah@example.com", 6 "phone": "+1234567890", 7 "source": "activecampaign", 8 "activecampaign_id": 789 9 } 10}
Contact Tagged:
json1{ 2 "action": "update_contact", 3 "data": { 4 "email": "sarah@example.com", 5 "tags": ["high_value_lead"], 6 "source": "activecampaign" 7 } 8}
Constant Contact Integration
Constant Contact supports webhooks for account activity.
Configuration
-
Create Webhook in Constant Contact:
- Go to Account → Webhooks
- Callback URL:
https://yoursite.com/wp-json/skunkcrm/v1/webhook/{your-token} - Topic: contact.created, contact.updated
-
Process Events:
functions.phpphp1function handle_constant_contact_webhook($data) { 2 if ($data['topic'] === 'contact.created') { 3 $contact = $data['contact']; 4 5 $contact_data = [ 6 'contact' => [ 7 'name' => $contact['first_name'] . ' ' . $contact['last_name'], 8 'email' => $contact['email_addresses'][0]['email_address'], 9 'source' => 'constant_contact', 10 'cc_contact_id' => $contact['contact_id'] 11 ] 12 ]; 13 14 sendToSkunkCRM($contact_data); 15 } 16}
Drip Integration
Drip offers webhooks for subscriber lifecycle events.
Setup
- Configure Drip Webhooks:
- Go to Drip → Settings → Webhooks
- Add Webhook:
https://yoursite.com/wp-json/skunkcrm/v1/webhook/{your-token} - Events: Subscriber created, workflow completed
Event Handling
Subscriber Created:
json1{ 2 "action": "create_contact", 3 "data": { 4 "email": "user@example.com", 5 "name": "New Subscriber", 6 "source": "drip", 7 "drip_subscriber_id": "abc123", 8 "custom_fields": { 9 "lead_score": 50, 10 "interest": "webinar" 11 } 12 } 13}
Email Campaign Tracking
Email Opens and Clicks
Track email engagement from your email service provider:
functions.phpphp1// Email engagement webhook handler 2function handle_email_engagement($data) { 3 switch ($data['event']) { 4 case 'email_opened': 5 $engagement_data = [ 6 'action' => 'create_activity', 7 'data' => [ 8 'contact_email' => $data['email'], 9 'type' => 'email_opened', 10 'content' => 'Opened email: ' . $data['campaign_name'], 11 'source' => 'email_service' 12 ] 13 ]; 14 break; 15 16 case 'email_clicked': 17 $engagement_data = [ 18 'action' => 'create_activity', 19 'data' => [ 20 'contact_email' => $data['email'], 21 'type' => 'email_clicked', 22 'content' => 'Clicked link: ' . $data['url'], 23 'source' => 'email_service' 24 ] 25 ]; 26 break; 27 } 28 29 sendToSkunkCRM($engagement_data); 30}
Bounce and Unsubscribe Handling
functions.phpphp1// Handle email bounces and unsubscribes 2function handle_email_status($data) { 3 switch ($data['event']) { 4 case 'email_bounced': 5 $status_data = [ 6 'action' => 'update_contact', 7 'data' => [ 8 'email' => $data['email'], 9 'email_status' => 'bounced', 10 'notes' => 'Email bounced: ' . $data['reason'] 11 ] 12 ]; 13 break; 14 15 case 'unsubscribed': 16 $status_data = [ 17 'action' => 'update_contact', 18 'data' => [ 19 'email' => $data['email'], 20 'email_status' => 'unsubscribed', 21 'status' => 'unsubscribed', 22 'unsubscribed_at' => date('Y-m-d H:i:s') 23 ] 24 ]; 25 break; 26 } 27 28 sendToSkunkCRM($status_data); 29}
Bi-directional Sync
Send SkunkCRM Contacts to Email Service
Use SkunkCRM outgoing webhooks to sync contacts to your email service:
functions.phpphp1// Send new SkunkCRM contacts to Mailchimp 2add_action('skunkcrm_contact_created', function($contact) { 3 if ($contact['email'] && $contact['email_status'] !== 'unsubscribed') { 4 5 // Add to Mailchimp list 6 $mailchimp_data = [ 7 'email_address' => $contact['email'], 8 'status' => 'subscribed', 9 'merge_fields' => [ 10 'FNAME' => $contact['first_name'], 11 'LNAME' => $contact['last_name'], 12 'PHONE' => $contact['phone'], 13 'COMPANY' => $contact['company'] 14 ] 15 ]; 16 17 // Send to Mailchimp API 18 addToMailchimpList($mailchimp_data); 19 } 20});
Segmentation and Tagging
Automatic Tagging Based on Behavior
functions.phpphp1// Tag contacts based on email engagement 2function tag_engaged_contacts($data) { 3 if ($data['event'] === 'email_clicked') { 4 $tag_data = [ 5 'action' => 'add_tag', 6 'data' => [ 7 'contact_email' => $data['email'], 8 'tag' => 'email_engaged' 9 ] 10 ]; 11 12 sendToSkunkCRM($tag_data); 13 } 14 15 // Tag high-engagement contacts 16 $click_count = getContactClickCount($data['email']); 17 if ($click_count >= 5) { 18 $tag_data = [ 19 'action' => 'add_tag', 20 'data' => [ 21 'contact_email' => $data['email'], 22 'tag' => 'highly_engaged' 23 ] 24 ]; 25 26 sendToSkunkCRM($tag_data); 27 } 28}
Testing Email Integrations
Webhook Testing
- Use test accounts with your email service
- Test subscriber actions - subscribe, unsubscribe, update profile
- Check webhook logs in both systems
- Verify contact creation in SkunkCRM
Email Deliverability Testing
- Test with real email addresses
- Check spam folders
- Monitor bounce rates
- Verify unsubscribe handling
Troubleshooting
Missing Subscribers
- Check webhook configuration - Ensure all events are selected
- Verify webhook URL - Test URL accessibility
- Review logs - Check delivery status in email service
- Field mapping - Ensure required fields are present
Duplicate Contacts
- Email deduplication - Enable automatic duplicate prevention
- Update existing - Use update actions for known subscribers
- Sync timing - Handle race conditions between systems
Sync Issues
- Rate limiting - Check API limits on email service
- Authentication - Verify webhook tokens are correct
- Data format - Ensure data formats match expected schemas
Best Practices
Data Privacy
- GDPR compliance - Handle unsubscribes and data deletion requests
- Permission tracking - Record how contacts opted in
- Data minimization - Only sync necessary contact data
Performance
- Batch processing - Handle high-volume webhook events efficiently
- Queue webhooks - Use background processing for webhook handling
- Error handling - Implement retry logic for failed webhooks
Monitoring
- Webhook health - Monitor delivery success rates
- Sync accuracy - Regular audits of contact sync accuracy
- Performance metrics - Track webhook processing times
Next Steps
- Test your integration - Subscribe/unsubscribe to verify sync works
- Set up monitoring - Watch webhook delivery logs
- Create segments - Use SkunkCRM tags and segments for email targeting
- Automate workflows - Set up SkunkCRM automations based on email engagement
Powerful REST API Ready for Integration
SkunkCRM provides a comprehensive REST API designed for seamless integrations and external access. Build powerful integrations with full CRUD operations, secure authentication, and real-time webhook support.
Complete control over contacts, deals, and activities
WordPress Application Passwords with permission controls
Built-in protection and performance optimization
Clean, RESTful endpoints with consistent responses
Real-time integrations and event notifications
Get started with examples, authentication guides, and interactive endpoint testing.
Need help with an email service not listed here? Check our incoming webhooks guide for general webhook setup instructions.