We at FoxyCart really like Campaign Monitor. It's built for web-designers and developers, just like FoxyCart, and it's very easy to set up, use, and love.
Campaign Monitor is designed from the ground up to be branded and resold to your clients, and it has a very complete API that can be used to completely replace their web interface; check out the samples and documentation here: http://www.campaignmonitor.com/api/samples-and-wrappers/
The integration below only uses a modest subset of the capabilities of the Campaign Monitor API – we're only going to use it to add customers who order through our FoxyCart store to a Campaign Monitor mailing list. We want the customer's permission before we send them our latest newsletter, too, so we're going to add a checkbox that lets them do that.
This integration automatically adds your FoxyCart customers to a Campaign Monitor list of your choice. Let's get started:
fc-campaignmonitor.phpIncluded for good measure are the PHP Campaign Monitor API interface, a PHP4-compatible XML parser, a RC4 decryption library, and a test harness.
fc-campaignmonitor.phpin your favorite text editor.
Well, the Keys to your Campaign Monitor list, at least. You need three of them: your API key, your Client ID, and your List ID. How do you find those, and what do you do once you find them? Follow along.
First of all, you're going to edit the configuration section of
fc-campaignmonitor.php; handily, it's at the top of the file:
... ///// BEGIN Configuration ////// $Campaign_Monitor_API_Key = "YOURAPIKEYHERE"; // Replace YOURAPIKEYHERE with your Campaign Monitor API Key. // How to find that? Glad you asked, go here: // http://www.campaignmonitor.com/api/required/ to find this and the next few keys. $Campaign_Monitor_Client_ID = "CLIENTID"; // Replace CLIENTID with the Campaign Monitor Client ID. See the above link. $Campaign_Monitor_List_ID = "LISTID"; // Replace LISTID with the Campaign Monitor List ID. See the above link. ... ////// END Configuration /////// ...
fc-campaignmonitor.phpreplacing YOURAPIKEYHERE with your API key and leaving the enclosing quotes in place.
fc-campaignmonitor.php, replacing CLIENTID with your Client ID.
fc-campaignmonitor.php, replacing LISTID with the List ID.
fc-campaignmonitor.phpand go onto the next section.
OK, great, you've found and retrieved your API keys from Campaign Monitor. This last section concerns the rest of the configuration section in
fc-campaignmonitor.php. This section here, in fact:
.. ///// BEGIN Configuration ////// ... /** * Use a custom field during checkout? If true, check for the presence of $Custom_Field below. * If false, always subscribe the customer. Use wisely. */ $Use_Custom_Field = true; $Custom_Field = 'Subscribe'; // Name of the custom "Opt In" field during checkout. $Custom_Field_Value = 'yes'; // The value of the custom field that indicates the customer's agreement. $key = 'CHANGE THIS TEXT to your own datafeed keyphrase'; ////// END Configuration /////// ...
http://your.domain.dom/path/to/fc-campaignmonitor.php) that you uploaded as described above.
fc-campaignmonitor.php, replacing “CHANGE THIS TEXT…”.
fc-campaignmonitor.phpto your server.
test.xmldatafeed.php, then open
http://your.domain.dom/path/to/test.xmldatafeed.phpin your browser. You should get a page that contains only the word
foxyin reply. If you get something else, double-check your datafeed keys in both files and, if all else fails, feel free to ask for help in our forum.
Now you have a datafeed receiver all set up on your server, so it's time to let your customers opt in to your mailing list. To do that, we need to add a Custom Field to your checkout template, so that your customer sees a “Subscribe” checkbox alongside their cart contents. There are a lot of cool things possible custom fields; find out more at the wiki page on Custom Fields. Today we're only going to add a single checkbox to the checkout template. Open the template up in your editor (if it's hosted on your server) or edit it directly from the FoxyCart admin interface, and add the following block of code anywhere in the template:
^^custom_begin^^ <h2>Newsletter</h2> <fieldset id="fc_custom_fields"> <legend>Newsletter</legend> <div class="fc_inner"> <div> <h4>Subscribe</h4> <input type="checkbox" name="Subscribe" id="Subscribe" value="yes" checked="checked" /> <label for="Subscribe">Leave this box checked to receive occasional updates about our products. We will not share your email address, and you can unsubscribe at any time.</label> </div> </div><!-- .fc_inner --> </fieldset><!-- #fc_custom_fields --> ^^custom_end^^
You can put the code at the end of the file, or at the beginning – it doesn't matter. FoxyCart will move the
<fieldset> into the checkout form when it loads your checkout page, so it can even be after the
</html> tags. Replace “Newsletter” and “occasional updates about our products” with whatever's appropriate for your mailing list.
Save your changes to the checkout template in the FoxyCart admin. Test by adding a product to your cart and going to checkout – you should have a shiny new “Subscribe” checkbox, all primed and ready for your customers to use.