Back to Documentation Overview

campaignCreate

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

Create a new draft campaign to send

Section:
Campaign Related
Parameters:
apikey a valid API Key for your user account. Get by visiting your API dashboard
type the Campaign Type to create - one of "regular", "plaintext", "absplit", "rss", "trans", "auto"
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.
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
booleanauto_footeroptional - Whether or not we should auto-generate the footer for your content. Mostly useful for content from URLs or Imports
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.
booleanauto_tweetoptional - If set, this campaign will be auto-tweeted when it is sent - defaults to false. Note that if a Twitter account isn't linked, this will be silently ignored.
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. Note, this will override any other content options - for lists with Email Format options, you'll need to turn on generate_text as well
"archive" to send a Base64 encoded archive file for us to import all media from. Note, this will override any other content options - for lists with Email Format options, you'll need to turn on generate_text as well
"archive_type" optional - only necessary for the "archive" option. Supported formats are: zip, tar.gz, tar.bz2, tar, tgz, tbz . If not included, we will default to zip
 
 
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. Supported template sections include: "html_HEADER", "html_MAIN", "html_SIDECOLUMN", and "html_FOOTER"
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(). Also, "trans" campaigns do not support segmentation.
type_opts optional -
For RSS Campaigns this, array should contain:
stringurlthe URL to pull RSS content from - it will be verified and must exist
stringscheduleoptional - one of "daily", "weekly", "monthly" - defaults to "daily"
stringschedule_houroptional - an hour between 0 and 24 - default to 4 (4am local time) - applies to all schedule types
stringschedule_weekdayoptional - for "weekly" only, a number specifying the day of the week to send: 0 (Sunday) - 6 (Saturday) - defaults to 1 (Monday)
stringschedule_monthdayoptional - for "monthly" only, a number specifying the day of the month to send (1 - 28) or "last" for the last day of a given month. Defaults to the 1st day of the month
 
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"
 
For AutoResponder campaigns, this array should contain:
stringoffset-unitsone of "day", "week", "month", "year" - required
stringoffset-timeoptional - , sort of - the number of units must be a number greater than 0 for signup based autoresponders
stringoffset-direither "before" or "after"
stringeventoptional - "signup" (default) to base this on double-optin signup, "date" or "annual" to base this on merge field in the list
stringevent-datemergeoptional - sort of, this is required if the event is "date" or "annual"
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.  
Add New Note User Contributed Notes for campaignCreate
No notes, yet... Will you be the first??