« Back to Documentation Overview

campaignCreate – v1.1

 campaignCreate(string apikey, string type, array options, array content, array segment_opts, array type_opts)

Create a new draft campaign to send. You can not have more than 32,000 campaigns in your account.

Section
Campaign Related
Parameters
apikey a valid API Key for your user account. Get by calling Get by visiting your API dashboard
type the Campaign Type to create - one of "regular", "plaintext", "absplit", "rss"
options a hash of the standard options for this campaign :
stringlist_idthe list to send this campaign to- get lists using lists()
stringsubjectthe subject line for your campaign message
stringfrom_emailthe From: email address for your campaign message
stringfrom_namethe From: name for your campaign message (not an email address)
stringto_emailthe To: name recipients will see (not email address)
integertemplate_idoptional - use this template to generate the HTML content of the campaign
integerfolder_idoptional - automatically file the new campaign in the folder_id passed
arraytrackingoptional - set which recipient actions will be tracked, as a struct of boolean values with the following keys: "opens", "html_clicks", and "text_clicks". By default, opens and HTML clicks will be tracked. Click tracking can not be disabled for Free accounts.
stringtitleoptional - an internal name to use for this campaign. By default, the campaign subject will be used.
booleanauthenticateoptional - set to true to enable SenderID, DomainKeys, and DKIM authentication, defaults to false.
arrayanalyticsoptional - if provided, use a struct with "service type" as a key and the "service tag" as a value. For Google, this should be "google"=>"your_google_analytics_key_here". Note that only "google" is currently supported - a Google Analytics tags will be added to all links in the campaign with this string attached. Others may be added in the future
booleaninline_cssoptional - Whether or not css should be automatically inlined when this campaign is sent, defaults to false.
booleangenerate_textoptional - Whether of not to auto-generate your Text content from the HTML content. Note that this will be ignored if the Text part of the content passed is not empty, defaults to false.
content the content for this campaign - use a struct with the following keys:
"html" for pasted HTML content
"text" for the plain-text version
"url" to have us pull in content from a URL (will replace any "html" content you pass in - can be used with "generate_text" option as well).
 
If you chose a template instead of pasting in your HTML content, then use "html_" followed by the template sections as keys - for example, use a key of "html_MAIN" to fill in the "MAIN" section of a template.
segment_opts optional - if you wish to do Segmentation with this campaign this array should contain: see campaignSegmentTest(). It's suggested that you test your options against campaignSegmentTest().
type_opts optional -
For RSS Campaigns this, array should contain:
stringurlthe URL to pull RSS content from - it will be verified and must exist
 
For A/B Split campaigns, this array should contain:
stringsplit_testThe values to segment based on. Currently, one of: "subject", "from_name", "schedule". NOTE, for "schedule", you will need to call campaignSchedule() separately!
stringpick_winnerHow the winner will be picked, one of: "opens" (by the open_rate), "clicks" (by the click rate), "manual" (you pick manually)
integerwait_unitsoptional - the default time unit to wait before auto-selecting a winner - use "3600" for hours, "86400" for days. Defaults to 86400.
integerwait_timeoptional - the number of units to wait before auto-selecting a winner - defaults to 1, so if not set, a winner will be selected after 1 Day.
integersplit_sizeoptional - this is a percentage of what size the Campaign's List plus any segmentation options results in. "schedule" type forces 50%, all others default to 10%
stringfrom_name_aoptional - sort of, required when split_test is "from_name"
stringfrom_name_boptional - sort of, required when split_test is "from_name"
stringfrom_email_aoptional - sort of, required when split_test is "from_name"
stringfrom_email_boptional - sort of, required when split_test is "from_name"
stringsubject_aoptional - sort of, required when split_test is "subject"
stringsubject_boptional - sort of, required when split_test is "subject"
Returns
string the ID for the created campaign

Examples (4)

download example code

[1] mcapi_campaignCreate.php

  1. <?php
  2. /**
  3. This Example shows how to create a basic campaign via the MCAPI class.
  4. **/
  5. require_once 'inc/MCAPI.class.php';
  6. require_once 'inc/config.inc.php'; //contains apikey
  7.  
  8. $api = new MCAPI($apikey);
  9.  
  10. $type = 'regular';
  11.  
  12. $opts['list_id'] = 'f9ee6d8616';
  13. $opts['subject'] = 'Test Newsletter Subject';
  14. $opts['from_email'] = 'mailchimp@example.org';
  15. $opts['from_name'] = 'ACME, Inc.';
  16.  
  17. $opts['tracking']=array('opens' => true, 'html_clicks' => true, 'text_clicks' => false);
  18.  
  19. $opts['authenticate'] = true;
  20. $opts['analytics'] = array('google'=>'my_google_analytics_key');
  21. $opts['title'] = 'Test Newsletter Title';
  22.  
  23. $content = array('html'=>'some pretty html content *|UNSUB|* message',
  24. 'text' => 'text text text *|UNSUB|*'
  25. );
  26. /** OR we could use this:
  27. $content = array('html_main'=>'some pretty html content',
  28. 'html_sidecolumn' => 'this goes in a side column',
  29. 'html_header' => 'this gets placed in the header',
  30. 'html_footer' => 'the footer with an *|UNSUB|* message',
  31. 'text' => 'text content text content *|UNSUB|*'
  32. );
  33. $opts['template_id'] = "1";
  34. **/
  35.  
  36. $retval = $api->campaignCreate($type, $opts, $content);
  37.  
  38. if ($api->errorCode){
  39. echo "Unable to Create New Campaign!";
  40. echo "\n\tCode=".$api->errorCode;
  41. echo "\n\tMsg=".$api->errorMessage."\n";
  42. } else {
  43. echo "New Campaign ID:".$retval."\n";
  44. }
  45.  

[2] xml-rpc_campaignCreate.php

  1. <?php
  2. /**
  3. This Example shows how create a basic campaign using XML-RPC.
  4. Note that we are using the PEAR XML-RPC client and recommend others do as well.
  5. **/
  6. require_once 'XML/RPC2/Client.php';
  7. require_once 'inc/config.inc.php';
  8. try {
  9. $client = XML_RPC2_Client::create($apiUrl);
  10.  
  11. $type = 'regular';
  12. $opts['list_id'] = $listId;
  13. $opts['subject'] = 'hello thar!';
  14. $opts['from_email'] = $my_email;
  15. $opts['from_name'] = 'My Name';
  16.  
  17. $opts['tracking']=array('opens' => true, 'html_clicks' => true,
  18. 'text_clicks' => false);
  19.  
  20. $opts['authenticate'] = false;
  21. $opts['analytics'] = array('google'=>'atphga');
  22. $opts['title'] = 'My 123 Campaign';
  23.  
  24. $content = array ('html'=>'something *|UNSUB|* message',
  25. 'text' => 'text text text *|UNSUB|*');
  26.  
  27. $seg = array();
  28.  
  29. $seg['match'] = 'any';
  30. $seg['conditions'][] = array('field'=>'fname', 'op'=>'like', 'value'=>'bob');
  31.  
  32. $result = $client->campaignCreate($apikey, $type, $opts, $content, $seg);
  33. echo "SUCCESS! \n";
  34. echo "New Campaign Id: ".$result."\n";
  35.  
  36. } catch (XML_RPC2_FaultException $e){
  37. echo "ERROR!!!!\n";
  38. echo $e->getFaultCode()." : ".$e->getFaultString()."\n";
  39. }
  40.  
  41.  

[3] xml-rpc_campaignCreateABSplit.php

  1. <?php
  2. /**
  3. This Example shows how create an A/B Split campaign using XML-RPC.
  4. Note that we are using the PEAR XML-RPC client and recommend others do as well.
  5. **/
  6. require_once 'XML/RPC2/Client.php';
  7. require_once 'inc/config.inc.php';
  8. try {
  9. $client = XML_RPC2_Client::create($apiUrl);
  10.  
  11. $opts['list_id'] = $listId;
  12. $opts['subject'] = 'hello thar!';
  13. $opts['from_email'] = $my_email;
  14. $opts['from_name'] = 'My Name';
  15.  
  16. $opts['tracking']=array('opens' => true, 'html_clicks' => true,
  17. 'text_clicks' => false);
  18.  
  19. $opts['authenticate'] = false;
  20. $opts['analytics'] = array('google'=>'atphga');
  21. $opts['title'] = 'My 123 Campaign';
  22.  
  23. $content = array ('html'=>'something *|UNSUB|* message',
  24. 'text' => 'text text text *|UNSUB|*');
  25. //no segmentation on this one.
  26. $seg = array();
  27.  
  28. $type = "absplit";
  29. $type_opts = array();
  30. $type_opts['split_test'] = 'schedule';
  31. $type_opts['pick_winner'] = 'manual';
  32.  
  33. $type_opts['from_name_a'] = 'Wahoo McDaniels';
  34. $type_opts['from_email_a'] = 'wahoo@example.org';
  35. $type_opts['from_name_b'] = 'Yahoo McDonald';
  36. $type_opts['from_email_b'] = 'yahoo@example.org';
  37.  
  38. $result = $client->campaignCreate($apikey, $type, $opts, $content, $seg, $type_opts);
  39. echo "SUCCESS! \n";
  40. echo "New Campaign Id: ".$result."\n";
  41.  
  42. } catch (XML_RPC2_FaultException $e){
  43. echo "ERROR!!!!\n";
  44. echo $e->getFaultCode()." : ".$e->getFaultString()."\n";
  45. }
  46.  
  47.  

[4] xml-rpc_campaignCreateRss.php

  1. <?php
  2. /**
  3. This Example shows how create a RSS campaign using XML-RPC.
  4. Note that we are using the PEAR XML-RPC client and recommend others do as well.
  5. **/
  6. require_once 'XML/RPC2/Client.php';
  7. require_once 'inc/config.inc.php';
  8. try {
  9. $client = XML_RPC2_Client::create($apiUrl);
  10.  
  11. $opts['list_id'] = $listId;
  12. $opts['subject'] = 'hello thar!';
  13. $opts['from_email'] = $my_email;
  14. $opts['from_name'] = 'My Name';
  15.  
  16. $opts['tracking']=array('opens' => true, 'html_clicks' => true,
  17. 'text_clicks' => false);
  18.  
  19. $opts['authenticate'] = false;
  20. $opts['analytics'] = array('google'=>'atphga');
  21. $opts['title'] = 'My 123 Campaign';
  22.  
  23. $content = array ('html'=>'something *|UNSUB|* message',
  24. 'text' => 'text text text *|UNSUB|*');
  25. //no segmentation on this one.
  26. $seg = array();
  27.  
  28. $type = 'rss';
  29. $type_opts = array();
  30. $type_opts['url'] = 'http://mailchimp.com/blog/rss';
  31.  
  32. $result = $client->campaignCreate($apikey, $type, $opts, $content, $seg, $type_opts);
  33. echo "SUCCESS! \n";
  34. echo "New Campaign Id: ".$result."\n";
  35.  
  36. } catch (XML_RPC2_FaultException $e){
  37. echo "ERROR!!!!\n";
  38. echo $e->getFaultCode()." : ".$e->getFaultString()."\n";
  39. }
  40.  
  41.