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 calling login()
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.
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-timethe number of units, must be a number greater than 0 - required
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??