<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Brontoversity &#187; API Legacy Version 3</title>
	<atom:link href="http://brontoversity.com/tag/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://brontoversity.com</link>
	<description>Product Education for Bronto's Email Marketing Application</description>
	<lastBuildDate>Thu, 29 Jul 2010 18:57:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using readDeliveries In API Version 4</title>
		<link>http://brontoversity.com/2010/05/20/using-readdeliveries-in-api-version-4/</link>
		<comments>http://brontoversity.com/2010/05/20/using-readdeliveries-in-api-version-4/#comments</comments>
		<pubDate>Thu, 20 May 2010 18:34:37 +0000</pubDate>
		<dc:creator>John Gunther</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[readDeliveries]]></category>
		<category><![CDATA[Version 4]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=7485</guid>
		<description><![CDATA[In version 4 of the API, we have updated the way our readDeliveries function works. One of these changes was to include the delivery metrics (opens, clicks, conversions, etc) as part of the delivery object. In this post, I will share with you a quick example that demonstrates how you can use readDeliveries to find [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/07/22/clear-that-list-using-the-api-v4/' rel='bookmark' title='Permanent Link: Clear that List using the API v4'>Clear that List using the API v4</a> <small> Last fall, Alex explained how to Clear Contacts From...</small></li>
<li><a href='http://brontoversity.com/2010/06/24/using-loop-tags-with-the-api/' rel='bookmark' title='Permanent Link: Using Loop Tags With The API'>Using Loop Tags With The API</a> <small>A very useful, but little known feature in Bronto is...</small></li>
<li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2010/05/Reading-e-mail-on-Flickr-Photo-Sharing.png"><img style="float: right; padding: 5px 5px 5px 5px;" title="Reading e-mail on Flickr - Photo Sharing!" src="http://brontoversity.com/wp-content/uploads/2010/05/Reading-e-mail-on-Flickr-Photo-Sharing.png" alt="" width="272" height="194" /></a>In version 4 of the API, we have updated the way our <code>readDeliveries</code> function works. One of these changes was to include the delivery metrics (opens, clicks, conversions, etc) as part of the <a href="http://app.bronto.com/api/?q=v4_o_view&amp;fn=View&amp;id=5" target="_new">delivery object</a>. In this post, I will share with you a quick example that demonstrates how you can use <code>readDeliveries</code> to find out some pretty valuable information.</p>
<h3>What This Code Does</h3>
<p>The example code will read the details of any delivery made in your Bronto account in the last 7 days. It will also print out what message was sent, how many contacts it was sent, how many messages were actually delivered, and how many conversions each delivery received.</p>
<div style="border: 1px solid; overflow: auto; width: 550px; height: 300px;"><code>&lt;?php<br />
$client = new SoapClient('https://api.bronto.com/v4?wsdl', array('trace' =&gt; 1,<br />
'features' =&gt; SOAP_SINGLE_ELEMENT_ARRAYS));<br />
setlocale(LC_ALL, 'en_US');</code></p>
<p><code>try {<br />
$token = "ADD YOUR API TOKEN HERE";</code></p>
<p><code>print "logging in\n";<br />
$sessionId = $client-&gt;login(array('apiToken' =&gt; $token))-&gt;return;</code></p>
<p><code>$session_header = new SoapHeader("http://api.bronto.com/v4",<br />
'sessionHeader',<br />
array('sessionId' =&gt; $sessionId));<br />
$client-&gt;__setSoapHeaders(array($session_header));</code></p>
<p><code>// compute date/time 7 days ago<br />
$startDate = date('c', time() - (7* 24 * 60 * 60)); // 7 days * 60 minutes * 60 seconds;</code></p>
<p><code>// set up a filter to read deliveries in the last 7 days<br />
$filter = array('start' =&gt; array('operator' =&gt; 'After',<br />
'value' =&gt; $startDate,<br />
),<br />
'status' =&gt; 'sent',<br />
);</code></p>
<p><code>print "reading deliveries completed from past 7 days \n";<br />
$deliveries = $client-&gt;readDeliveries(array('pageNumber' =&gt; 1,<br />
'includeRecipients' =&gt; false,<br />
'includeContent' =&gt; false,<br />
'filter' =&gt; $filter,<br />
)<br />
)-&gt;return;</code></p>
<p><code>// print matching results<br />
foreach ($deliveries as $delivery) {<br />
// get name of the message sent.<br />
$msgFilter = array('id' =&gt; $delivery-&gt;messageId);<br />
$message = array_pop($client-&gt;readMessages(array('pageNumber' =&gt; 1,<br />
'includeContent' =&gt; false,<br />
'filter' =&gt; $msgFilter))-&gt;return);<br />
$startString = strftime('%c', strtotime($delivery-&gt;start));<br />
print "Message: \"" . $message-&gt;name . "\" sent at: " . $startString . "\n";<br />
print "\tSent: " . $delivery-&gt;numSends . "\n\tDelivered: " . $delivery-&gt;numDeliveries . " (" .<br />
number_format((($delivery-&gt;numDeliveries / $delivery-&gt;numSends) * 100), $decimals, '.', ',') . "%)\n";<br />
print "\tConversions: " . $delivery-&gt;numConversions . "\n";<br />
}</code></p>
<p><code>} catch (Exception $e) {<br />
print "uncaught exception\n";<br />
print_r($e);<br />
}<br />
?&gt;</code></p>
</div>
<p>With a simple call using <code>readDeliveries</code>, we were able to find out some pretty valuable information. You can use this example to get started making calls of your own and adjust the parameters to get back the data you need. If you have any questions, feel free to leave them in the comments section below.</p>
<p><em><br />
John Gunther<br />
Technical Writer/eLearning Specialist at Bronto<br />
Editor of Brontoversity</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/07/22/clear-that-list-using-the-api-v4/' rel='bookmark' title='Permanent Link: Clear that List using the API v4'>Clear that List using the API v4</a> <small> Last fall, Alex explained how to Clear Contacts From...</small></li>
<li><a href='http://brontoversity.com/2010/06/24/using-loop-tags-with-the-api/' rel='bookmark' title='Permanent Link: Using Loop Tags With The API'>Using Loop Tags With The API</a> <small>A very useful, but little known feature in Bronto is...</small></li>
<li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/05/20/using-readdeliveries-in-api-version-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Personalize Your Contacts, Storing Field Data With The API</title>
		<link>http://brontoversity.com/2010/05/13/personalize-your-contacts-storing-field-data-with-the-api/</link>
		<comments>http://brontoversity.com/2010/05/13/personalize-your-contacts-storing-field-data-with-the-api/#comments</comments>
		<pubDate>Thu, 13 May 2010 19:00:09 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[add contacts]]></category>
		<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[fields]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[Version 4]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=7428</guid>
		<description><![CDATA[OK, so your integration is running. You&#8217;re adding contacts at a dizzying pace, and then your marketing team wants to send some personalized messages and&#8230;whoops, all you have are email addresses. You neglected to push any customer data that could be used to personalize a message; first name, last name, favorite soda, etc.  Whatever [...]


Related posts:<ol><li><a href='http://brontoversity.com/2009/09/29/diy-integrations-ii-updating-contact-field-information-with-direct-update/' rel='bookmark' title='Permanent Link: DIY Integrations II: Updating Contact Field Information With Direct Update'>DIY Integrations II: Updating Contact Field Information With Direct Update</a> <small> Integrating your website or database with a third party...</small></li>
<li><a href='http://brontoversity.com/2010/02/18/welcome-friend-adding-new-contacts-using-the-api/' rel='bookmark' title='Permanent Link: Welcome Friend! Adding New Contacts Using the API'>Welcome Friend! Adding New Contacts Using the API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2010/04/23/adding-contacts-to-a-specific-list-with-direct-add/' rel='bookmark' title='Permanent Link: Adding Contacts To A Specific List With Direct Add'>Adding Contacts To A Specific List With Direct Add</a> <small>A few months ago, Lucas Weber wrote a post called...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/05/field.jpg" alt="Corn Field" width="250" height="166" />OK, so your integration is running. You&#8217;re adding contacts at a dizzying pace, and then your marketing team wants to send some personalized messages and&#8230;whoops, all you have are email addresses. You neglected to push any customer data that could be used to personalize a message; first name, last name, favorite soda, etc.  Whatever data you have gathered from your contacts could potentially be useful in developing a bulk message that seems less bulky.</p>
<p>You know that this data can be imported using a csv file and the import tool in the Bronto web app, but how about with the API?  We talked about adding contacts using version 3 in <a href="http://brontoversity.com/2010/02/18/welcome-friend-adding-new-contacts-using-the-api/">Welcome Friend! Adding New Contacts Using the API</a>, but let&#8217;s look at the <a href="http://app.bronto.com/api/?q=v4_o_view&amp;fn=View&amp;id=4 target="><code>contactObject</code></a> to see how we might use it to add or update contacts with version 4.</p>
<p>Let&#8217;s first look at the fields portion (in bold) of the <a href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=100" target="_new"><code>addContacts</code></a> SOAP request message below(note: <code>updateContacts</code> uses the same contact object and <code>readContacts</code> returns the same object).</p>
<div style="border: 1px solid; overflow: auto; height: 225px;">
<p>&lt;contacts&gt;<br />
&lt;id&gt;&lt;/id&gt;<br />
&lt;email&gt;&lt;/email&gt;<br />
&lt;status&gt;&lt;/status&gt;<br />
&lt;msgPref&gt;&lt;/msgPref&gt;<br />
&lt;source&gt;&lt;/source&gt;<br />
&lt;customSource&gt;&lt;/customSource&gt;<br />
&lt;created&gt;&lt;/created&gt;<br />
&lt;modified&gt;&lt;/modified&gt;<br />
&lt;deleted&gt;&lt;/deleted&gt;<br />
&lt;listIds&gt;&lt;/listIds&gt;<br />
<strong>&lt;fields&gt;<br />
&lt;fieldId&gt;&lt;/fieldId&gt;<br />
&lt;content&gt;&lt;/content&gt;<br />
&lt;/fields&gt;</strong><br />
&lt;numSends&gt;&lt;/numSends&gt;<br />
&lt;numBounces&gt;&lt;/numBounces&gt;<br />
&lt;numOpens&gt;&lt;/numOpens&gt;<br />
&lt;numClicks&gt;&lt;/numClicks&gt;<br />
&lt;numConversions&gt;&lt;/numConversions&gt;<br />
&lt;conversionAmount&gt;&lt;/conversionAmount&gt;<br />
&lt;/contacts&gt;</p>
</div>
<p>You might never need to actually look at a SOAP message or a WSDL if your IDE/SOAP library takes care of that for you, but it can definitely be helpful when trying to understand how the requests and responses are passed back and forth. Most of the attributes are self descriptive and using them is hopefully straight forward. The fields attribute however takes a little more explaining.</p>
<p>In the WSDL you will see that it is defined as:</p>
<p><code>&lt;xs:element maxOccurs="unbounded" minOccurs="0" name="fields" nillable="true" type="tns:contactField"/&gt;</code></p>
<p>This tells us that the fields item is a group of zero or more <code>contactField objects</code>. In most programming languages, that type of structure would be represented as an array of <code>contactField</code> objects. These <code>contactField</code> objects in turn contain two items; <code>fieldId</code> and <code>content</code>. The <code>content</code> is the actual data that you want to store and the <code>fieldId</code> is a static id that is assigned to each of your fields when they are created. The <code>fieldId</code> can be retrieved using the <a href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=4"><code>readFields</code></a> function. Since the <code>fieldId</code>s are static, it probably makes sense to go ahead and store these locally so they do not need to be read each time you want to use them. The easiest thing to do is to call <code>readFields</code> once with an empty filter and store the field information in a configuration file. That way, adding or removing fields will not require changes to your code.</p>
<p>With this information in hand, it will hopefully make more sense on how you would go about passing in contact information. So don&#8217;t leave those fields empty any more.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2009/09/29/diy-integrations-ii-updating-contact-field-information-with-direct-update/' rel='bookmark' title='Permanent Link: DIY Integrations II: Updating Contact Field Information With Direct Update'>DIY Integrations II: Updating Contact Field Information With Direct Update</a> <small> Integrating your website or database with a third party...</small></li>
<li><a href='http://brontoversity.com/2010/02/18/welcome-friend-adding-new-contacts-using-the-api/' rel='bookmark' title='Permanent Link: Welcome Friend! Adding New Contacts Using the API'>Welcome Friend! Adding New Contacts Using the API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2010/04/23/adding-contacts-to-a-specific-list-with-direct-add/' rel='bookmark' title='Permanent Link: Adding Contacts To A Specific List With Direct Add'>Adding Contacts To A Specific List With Direct Add</a> <small>A few months ago, Lucas Weber wrote a post called...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/05/13/personalize-your-contacts-storing-field-data-with-the-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logging into the new API v4.0</title>
		<link>http://brontoversity.com/2010/03/18/logging-into-the-new-api-v4-0/</link>
		<comments>http://brontoversity.com/2010/03/18/logging-into-the-new-api-v4-0/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 18:35:27 +0000</pubDate>
		<dc:creator>Andrew Kanes</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[API version 4]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=6663</guid>
		<description><![CDATA[
This past week, Bronto was proud to introduce many new features in accordance with our Spring 2010 Release. The release also included a new version of the API (version 4). While the old API (legacy version 3) is not going away, the new version is the one Bronto will be concentrating on and developing new [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/04/29/create-a-header-without-logging-into-bronto/' rel='bookmark' title='Permanent Link: Create a Header Without Logging into Bronto'>Create a Header Without Logging into Bronto</a> <small>Did you know you can now create headers and footers...</small></li>
<li><a href='http://brontoversity.com/2010/05/20/using-readdeliveries-in-api-version-4/' rel='bookmark' title='Permanent Link: Using readDeliveries In API Version 4'>Using readDeliveries In API Version 4</a> <small>In version 4 of the API, we have updated the...</small></li>
<li><a href='http://brontoversity.com/2010/05/13/personalize-your-contacts-storing-field-data-with-the-api/' rel='bookmark' title='Permanent Link: Personalize Your Contacts, Storing Field Data With The API'>Personalize Your Contacts, Storing Field Data With The API</a> <small>OK, so your integration is running. You&#8217;re adding contacts at...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2010/03/rune_stone.jpg"><img style="padding: 5px 5px 5px 5px; float: right;" src="http://brontoversity.com/wp-content/uploads/2010/03/rune_stone.jpg" alt="" width="171" height="240" /></a></p>
<div>This past week, Bronto was proud to introduce many new features in accordance with our Spring 2010 Release. The release also included a new version of the API (version 4). While the old API (legacy version 3) is not going away, the new version is the one Bronto will be concentrating on and developing new features for. The new API will give you access to more Bronto objects and improved filtering of those objects. Along with the improvements made in the new API are a few changes. One of the main changes is how you authenticate or log into the API. You are no longer required to create an API user with the appropriate permissions. Instead, you will create an API token. Once you have been authenticated, you will be returned a <code>sessionId</code> that you will use for the rest of you session.</div>
<h3>Creating a token</h3>
<div>To create a token, go to <strong>Home-&gt;Settings-&gt;Data Exchange</strong> and click <strong>Add Access Token</strong>. The token can be limited in the actions it can perform, such as read, write, or send. Hence, you can configure each token you create and allow it do any one of those actions, a combination, or all of them.</div>
<div><a href="http://brontoversity.com/wp-content/uploads/2010/03/create_token.jpg"><img style="padding: 5px 5px 5px 5px; float: middle;" src="http://brontoversity.com/wp-content/uploads/2010/03/create_token.jpg" alt="Create token screen shot" width="555" height="514" /></a></div>
<div>
<h3>Some Example Code (PHP and JAVA AXIS)</h3>
<p>Below is some example code you can use to get an idea of how to login to the new API.</p>
<h4>PHP</h4>
<div style="border: 1px solid; overflow: auto; height: 225px; padding: 10px;"><code><br />
/*<br />
This example script will connect to the API and authenticate a session.<br />
Be sure to replace the "ADD YOUR API TOKEN HERE" text with a working<br />
API Token.<br />
*/<br />
<code><br />
ini_set("soap.wsdl_cache_enabled", "0");<br />
date_default_timezone_set('America/New_York');<br />
</code><br />
<code><br />
$wsdl = "https://api.bronto.com/v4?wsdl";<br />
$url = "https://api.bronto.com/v4";</code><br />
<code><br />
$client = new SoapClient($wsdl, array('trace' =&gt; 1, 'encoding' =&gt; 'UTF-8'));<br />
$client-&gt;__setLocation($url);</code><br />
</code><br />
<code>$token = "ADD YOUR API TOKEN HERE";<br />
$sessionId = $client-&gt;login(array("apiToken" =&gt; $token))-&gt;return;<br />
$client-&gt;__setSoapHeaders(array(new SoapHeader("https://api.bronto.com", 'sessionId', $sessionId)));<br />
</code></p>
</div>
<h4>JAVA AXIS</h4>
<div style="border: 1px solid; overflow: auto; height: 225px;"><code><br />
/**<br />
* This example program will connect to the API and authenticate a session.<br />
*/</code></p>
<p><code>package com.bronto;</code></p>
<p><code>import org.apache.axis.client.Stub;</code></p>
<p><code>import com.bronto.api.objects.BrontoSoapApi;<br />
import com.bronto.api.objects.BrontoSoapApiImplService;<br />
import com.bronto.api.objects.BrontoSoapApiImplServiceLocator;<br />
import com.bronto.api.objects.StringValue;</code></p>
<p><code>public class TestLoginBronto {<br />
private static final String API_TOKEN = "ADD YOUR API TOKEN HERE";</code></p>
<p><code>public static void main(String args[]) throws Exception {<br />
BrontoSoapApiImplService locator = new BrontoSoapApiImplServiceLocator();<br />
BrontoSoapApi api = locator.getBrontoSoapApiImplPort();</code></p>
<p><code>// Login<br />
String sessionId = api.login(API_TOKEN);<br />
if (sessionId == null) {<br />
System.out.println("Login failed.");<br />
return;<br />
}<br />
((Stub)api).setHeader(locator.getServiceName().getNamespaceURI(), "sessionId", sessionId);</code></p>
<p><code>System.out.println("Login was successful.");<br />
}<br />
}</code></p>
</div>
<h3>Lots More</h3>
<p>With its expanded functionality and improved design, the new API provides many exciting opportunities to integrate with your systems outside of Bronto. We hope you enjoy the new API as much as we enjoy bringing it to you.</p>
<p><em>Andrew Kanes</em><br />
<em>Support Engineer at Bronto</em></p>
</div>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/04/29/create-a-header-without-logging-into-bronto/' rel='bookmark' title='Permanent Link: Create a Header Without Logging into Bronto'>Create a Header Without Logging into Bronto</a> <small>Did you know you can now create headers and footers...</small></li>
<li><a href='http://brontoversity.com/2010/05/20/using-readdeliveries-in-api-version-4/' rel='bookmark' title='Permanent Link: Using readDeliveries In API Version 4'>Using readDeliveries In API Version 4</a> <small>In version 4 of the API, we have updated the...</small></li>
<li><a href='http://brontoversity.com/2010/05/13/personalize-your-contacts-storing-field-data-with-the-api/' rel='bookmark' title='Permanent Link: Personalize Your Contacts, Storing Field Data With The API'>Personalize Your Contacts, Storing Field Data With The API</a> <small>OK, so your integration is running. You&#8217;re adding contacts at...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/03/18/logging-into-the-new-api-v4-0/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Welcome Friend! Adding New Contacts Using the API</title>
		<link>http://brontoversity.com/2010/02/18/welcome-friend-adding-new-contacts-using-the-api/</link>
		<comments>http://brontoversity.com/2010/02/18/welcome-friend-adding-new-contacts-using-the-api/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 18:41:06 +0000</pubDate>
		<dc:creator>Andrew Kanes</dc:creator>
				<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[add contacts via API]]></category>
		<category><![CDATA[write contacts]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=6260</guid>
		<description><![CDATA[
This post only applies to Legacy Version 3 of the API
You may be using the Bronto API to find out who is reading your deliveries or to send a message, but how about using it to add new contacts to your Bronto list? Using the API, you can add new contacts that you have in [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/01/12/importing-contacts-updating-existing-contacts-and-adding-new-contacts/' rel='bookmark' title='Permanent Link: Importing Contacts: Updating Existing Contacts And Adding New Contacts'>Importing Contacts: Updating Existing Contacts And Adding New Contacts</a> <small>Often times, when managing your Bronto contacts, you&#8217;ll want to...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2010/04/23/adding-contacts-to-a-specific-list-with-direct-add/' rel='bookmark' title='Permanent Link: Adding Contacts To A Specific List With Direct Add'>Adding Contacts To A Specific List With Direct Add</a> <small>A few months ago, Lucas Weber wrote a post called...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/02/welcome_car.jpg" alt="Waving" width="256" height="170" /></p>
<p><strong><span style="color: #ff0000;">This post only applies to Legacy Version 3 of the API</span></strong></p>
<p>You may be using the Bronto API to find out who is <a href="http://brontoversity.com/2009/08/27/who-loves-you/" target="_new">reading your deliveries</a> or to <a href="http://brontoversity.com/2009/07/30/washing-with-soap-part-3/" target="_new">send a message</a>, but how about using it to add new contacts to your Bronto list? Using the API, you can add new contacts that you have in a system outside of Bronto. The Bronto API allows you to create up to 1000 contacts in a single request. After the request has been successfully processed, these contacts will be available in the Bronto application and the API.</p>
<h3>Adding New Contacts</h3>
<p>You create these new contacts using the <a href="http://app.bronto.com/api/?q=v3_f_view&amp;fn=View&amp;id=100" target="_new"><code>writeContacts</code></a> function. This function allows you to give as much or as little information about the new contacts as you have. The only information required to create new contacts using <code>writeContacts</code> is their email address, their <a href="http://brontoversity.com/2009/06/23/whats-your-contacts-status/" target="_new"><code>status</code></a> (active, unsubscribed, bounced, unconfirmed), and whether each contact should receive html or plain text messages. Naturally, you can also include other information such as source, any lists the new contacts should be on, and any member field data you have about the new contacts. Since the email address is a unique identifier in the Bronto system, you will not create a duplicate contact should you try to create an email address that already exists. You can, however, update current contacts based on the email address if you choose.</p>
<h3>Advanced Features</h3>
<p>What if you don&#8217;t know if the contacts you are trying to add are all new? What if you don&#8217;t want to overwrite contact information already in Bronto? As part of your request, you can specify the mode that <code>writeContacts</code> should use. This tells the API how to handle this request. You can use <code>insert</code>, <code>update</code> or <code>insertUpdate</code>. If you specify <code>insert</code>, the contacts will only be created. If they already exist in Bronto, their information will not be updated or overwritten. The <code>update</code> mode will update information of current contacts. The last mode, <code>insertUpdate</code> will allow you to create new contacts or update contacts if they already exist.</p>
<p>The <code>listsMode</code> attribute of the <code>writeContacts</code> function gives you the ability  to add or remove the contacts from lists. The options for <code>listsMode</code> are <code>replace</code>, <code>insertUpdate</code> and <code>remove</code>. The <code>replace</code> mode removes the contacts from the lists they are currently on and adds them to the lists specified in the request. The <code>insertUpdate</code> mode keeps the contacts on any lists they may currently be on and adds them to the specified lists. The <code>remove</code> mode removes the contact from the lists in the request. You should always have a contact assigned to at least one list since you can only send to contacts on a list.</p>
<p>The <code>fieldsMode</code> allows you to specify how any member field data you send is treated. There are only two modes, <code>replace</code> and <code>insertUpdate</code>. The <code>replace</code> mode will delete any current field data the contact has, and add the field data sent in the request. The <code>insertUpdate</code> mode will only add data to a field if new field data is included in the request. It will leave any fields not specified in the request as they are.</p>
<p>Last but not least is the <code>ignoreStatusChangeIfUpdate</code> attribute. This parameter is really a safety net that keeps you from unintentionally changing the status of a contact. For instance, if a contact already exists in Bronto, but is bounced, this will keep you from accidentally updating them to subscribed and then attempting to send them a message. If you include this parameter with a value of 1 in your request, then a contact who is currently on your list will not have their status changed, regardless of what value you specify in the request.</p>
<h3>Some Example Code (PHP)</h3>
<p>Below is some example code you can use to get an idea of how the <code>writeContacts</code> function can be used.</p>
<div style="border: 1px solid; overflow: auto; height: 225px;"><code>/**<br />
* Creates a contact with the data provided here.<br />
*  This can easily be tied into a for loop to create many contacts at once.<br />
*/<br />
function writeContacts($binding) {<br />
// Initialize emtpy arrays<br />
$writeContact = $writeContactsHandler = array();<br />
// The email address to add<br />
$writeContact['email'] = 'user@yoursite.com';<br />
// Preference for type of message: text or html<br />
$writeContact['msgPref'] = 'html';<br />
// For status the choices are: active, unsubscribed, bounced, or unconfirmed<br />
// for a new contact, this should be 'active'<br />
$writeContact['status'] = 'active';<br />
// Where did this contact come from?<br />
$writeContact['customSource'] = 'signup during purchase';<br />
// insert, update, or insertUpdate, most of the time you want insertUpdate<br />
$writeContactsHandler['mode'] = 'insertUpdate';<br />
$parameters = array('contacts' =&gt; $writeContact, 'handler' =&gt; $writeContactsHandler);<br />
$result = $binding-&gt;writeContacts($parameters);<br />
return $result;<br />
}<br />
</code></div>
<h3>Add Away</h3>
<p>Now that you have read about the power of <code>writeContacts</code>, we hope you will continue to leverage the power of the Bronto API and discovery new ways to use it.</p>
<p><em>Andrew Kanes</em><br />
<em>Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/01/12/importing-contacts-updating-existing-contacts-and-adding-new-contacts/' rel='bookmark' title='Permanent Link: Importing Contacts: Updating Existing Contacts And Adding New Contacts'>Importing Contacts: Updating Existing Contacts And Adding New Contacts</a> <small>Often times, when managing your Bronto contacts, you&#8217;ll want to...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2010/04/23/adding-contacts-to-a-specific-list-with-direct-add/' rel='bookmark' title='Permanent Link: Adding Contacts To A Specific List With Direct Add'>Adding Contacts To A Specific List With Direct Add</a> <small>A few months ago, Lucas Weber wrote a post called...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/02/18/welcome-friend-adding-new-contacts-using-the-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Separate Your Way To Success</title>
		<link>http://brontoversity.com/2010/02/12/separate-your-way-to-success/</link>
		<comments>http://brontoversity.com/2010/02/12/separate-your-way-to-success/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 20:55:34 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Bronto]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=6205</guid>
		<description><![CDATA[This post only applies to Legacy Version 3 of the API
Would you tow a trailer with a sports car? Would you tighten a bolt with a hammer? Would you eat soup with a knife?
Many of our clients, either by design or due to allocation of resources, have a separation of responsibilities in regards to their email marketing [...]


Related posts:<ol><li><a href='http://brontoversity.com/2009/11/12/i-have-the-power-agency-level-api-access/' rel='bookmark' title='Permanent Link: I Have the Power: Agency Level API Access'>I Have the Power: Agency Level API Access</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2009/10/15/have-logs-will-travel/' rel='bookmark' title='Permanent Link: Have Logs Will Travel'>Have Logs Will Travel</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;"><strong>This post only applies to Legacy Version 3 of the API</strong></span></p>
<p>Would you tow a trailer with a sports car? <a href="http://brontoversity.com/wp-content/uploads/2010/02/soup.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/02/soup.jpg" alt="Soup" width="200" height="140" /></a>Would you tighten a bolt with a hammer? Would you eat soup with a knife?</p>
<p>Many of our clients, either by design or due to allocation of resources, have a separation of responsibilities in regards to their email marketing activities. This is especially true when an API integration is involved and the developers handling the integration may or may not also be involved on the marketing side.</p>
<p><a href="http://brontoversity.com/wp-content/uploads/2010/02/servers.jpg" target="_new"><img style="float: left; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/02/servers.jpg" alt="Server Cluster" width="180" height="200" /></a>The Bronto API is a powerful tool that allows you to control your entire work-flow, from contact management, to message creation, to message sending.  From a development standpoint, this is great in that you have all the power in your own hands. While this may suit your needs perfectly, you may also want to ask yourself what parts of your work-flow are best served by your custom integration, and what would make more sense to save for human intervention in the Bronto application.  Developers and marketers sometimes view things very differently, so let&#8217;s look into a couple of places where you can make some choices to affect how you ultimately end up sending messages.</p>
<h3>No Code Changes Required</h3>
<p>So your developers have integrated your contact database with Bronto. Messages are being triggered off of various activities on your website. Marketing messages are being sent regularly to the various lists managed by your integration. Transactional messages are being sent with a fury from all the purchasing that is occurring on your site. Unfortunately, the messages look like an old paper plate that someone wrote on. If your developers don&#8217;t also double as email marketers and graphic designers, then perhaps you want to pass control of that portion of the process. We talked about how message creation, data population, and sending can be separate activities in <a href="../2009/12/10/give-them-what-they-want-with-api-message-tags/">Give Them What They Want</a>. Your designers can create a visually appealing emails and your developer&#8217;s custom integration can continue to trigger the sending of messages and managing contacts.  You shouldn&#8217;t have to make any code changes because you want to update the look of a message.</p>
<p>Sending through an API Triggered Automated Message Rule, as we talked about in <a href="http://brontoversity.com/2009/06/18/owning-automated-messages/">Owning Automated Messages</a> is another way to not only get great reporting for your triggered deliveries, but to allow more choice for your marketing team. You can turn an AMR on and off, schedule it to expire, control lists of ineligible and eligible contacts, override frequency caps, and control throttling, all without having to make a single code change. Often this type of control is tied into the code that was written by your developers, but Bronto also allows you to make these changes directly from our web application.</p>
<p>Allowing your developers and marketers to do what they do best is one way to get maximum performance from everyone and hopefully yield a successful marketing campaign. Don&#8217;t eat soup with a knife.  It burns and you&#8217;ll probably end up buying a new shirt.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2009/11/12/i-have-the-power-agency-level-api-access/' rel='bookmark' title='Permanent Link: I Have the Power: Agency Level API Access'>I Have the Power: Agency Level API Access</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2009/10/15/have-logs-will-travel/' rel='bookmark' title='Permanent Link: Have Logs Will Travel'>Have Logs Will Travel</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/02/12/separate-your-way-to-success/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep Your Eye On The Sparrow: Using The API To Retrieve Conversions</title>
		<link>http://brontoversity.com/2010/01/21/keep-your-eye-on-the-sparrow-using-the-api-to-retrieve-conversions/</link>
		<comments>http://brontoversity.com/2010/01/21/keep-your-eye-on-the-sparrow-using-the-api-to-retrieve-conversions/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 18:53:48 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=5932</guid>
		<description><![CDATA[
This post only applies to Legacy Version 3 of the API
Since conversions are in many cases the purpose for sending an email, they have been covered in great depth in previous posts. You may to start with the basics of conversion tracking and how to set it up by John Gunther. Also, as Adam Covati recently [...]


Related posts:<ol><li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2009/10/15/have-logs-will-travel/' rel='bookmark' title='Permanent Link: Have Logs Will Travel'>Have Logs Will Travel</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2010/01/nyse2.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/01/nyse2.jpg" alt="NYSE" width="250" height="188" /></a></p>
<p><span style="color: #ff0000;"><strong>This post only applies to Legacy Version 3 of the API</strong></span></p>
<p>Since conversions are in many cases the purpose for sending an email, they have been covered in great depth in previous posts. You may to start with the basics of <a href="http://brontoversity.com/2009/04/15/how-much-are-your-emails-worth-setting-up-conversion-tracking/" target="_new">conversion tracking and how to set it up</a> by John Gunther. Also, as Adam Covati recently wrote, <a href="http://brontoversity.com/2010/01/14/tracking-non-commerce-goals/" target="_new">a conversion doesn&#8217;t necessarily just mean a purchase</a>.<br />
Don&#8217;t get me wrong, the Bronto reporting tools are great! That said, rather than cover the what and how behind setting up conversion tracking and the reports in the Bronto application, let&#8217;s look into how we can use the API to create a custom reporting app or mash-up that gives you exactly what you want, how you want it, when you want it.</p>
<h3>Whiz-Bang</h3>
<p>So we don&#8217;t know how to get the conversion data yet. First, let&#8217;s determine what we&#8217;re going to get, in order to see what we could possibly build with it. Ultimately, at the individual contact or delivery level, we&#8217;ll be able to retrieve the IP, URL, type, description, revenue, and time created for a conversion. You can group by URL or revenue amount, or add an IP locator to track from where in the world you get the most conversions. Hopefully there will be lots and lots of data, because that means your contacts are clicking through and converting.</p>
<h3>Tools Of The Trade</h3>
<p>If you&#8217;re already using the API to do some contact management or some other custom reporting, then you have most likely already used the functions related to contacts and deliveries, namely <a href="http://app.bronto.com/api/?q=v3_f_view&amp;fn=View&amp;id=2" target="_self"><code>readContacts</code></a> and <a href="http://app.bronto.com/api/?q=v3_f_view&amp;fn=View&amp;id=3" target="_self"><code>readDeliveries</code></a>. In order to get to the conversion data, we&#8217;ll need to reference either a contact or a delivery by ID. Both of these functions return the IDs for their respective objects. Note: all of the object IDs remain static, so if you have a particular contact or delivery you are watching, there is no need to re-read the object to retrieve the ID.</p>
<p>The only other functions we&#8217;ll need are <a href="http://app.bronto.com/api/?q=v3_f_view&amp;fn=View&amp;id=17" target="_self"><code>readStreams</code></a> and <a href="http://app.bronto.com/api/?q=v3_f_view&amp;fn=View&amp;id=18" target="_self"><code>readStreamViews</code></a>. For each object in which you are interested(a contact or a delivery) you need to first call the <code>readStreams</code> function to retrieve the click stream instances. Then for each of these, you will need to call the <code>readStreamViews</code> function with that particular stream ID. Something to consider &#8211; each time you call the <code>readStreams</code> function for a deliveryId you will get all of the click streams, not just the new ones since the last time you called the function.</p>
<h3>If You Write It They Will Come</h3>
<p>Small automatically run applications or scripts are great at getting data and transforming it into a customized format, so you don&#8217;t have to do any of the work manually. As we have seen, the API has the necessary functions to get at all of that great conversion data that you see in the Bronto application. Why not take advantage of it and create your own report-wizard-gizmo-script-gadget-formatter-application?  Let us know how you&#8217;re using the data(and what you named it!)</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2009/10/15/have-logs-will-travel/' rel='bookmark' title='Permanent Link: Have Logs Will Travel'>Have Logs Will Travel</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/01/21/keep-your-eye-on-the-sparrow-using-the-api-to-retrieve-conversions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Give Them What They Want With API Message Tags</title>
		<link>http://brontoversity.com/2009/12/10/give-them-what-they-want-with-api-message-tags/</link>
		<comments>http://brontoversity.com/2009/12/10/give-them-what-they-want-with-api-message-tags/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 21:44:59 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=5627</guid>
		<description><![CDATA[
This post only applies to Legacy Version 3 of the API
If you have been sending personalized messages to your contacts, then you already understand how useful this marketing technique can be.  If you would like to start exploring how to use personal information you have about your contacts, take a look at this post [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/02/09/feed-me-seymour-using-rss-feeds-can-give-your-message-new-reach/' rel='bookmark' title='Permanent Link: Feed Me, Seymour! Using RSS Feeds Can Give Your Message New Reach'>Feed Me, Seymour! Using RSS Feeds Can Give Your Message New Reach</a> <small>In the past few years, web technology has provided us...</small></li>
<li><a href='http://brontoversity.com/2010/01/21/keep-your-eye-on-the-sparrow-using-the-api-to-retrieve-conversions/' rel='bookmark' title='Permanent Link: Keep Your Eye On The Sparrow: Using The API To Retrieve Conversions'>Keep Your Eye On The Sparrow: Using The API To Retrieve Conversions</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2010/06/24/using-loop-tags-with-the-api/' rel='bookmark' title='Permanent Link: Using Loop Tags With The API'>Using Loop Tags With The API</a> <small>A very useful, but little known feature in Bronto is...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2009/11/powerlines.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2009/12/candy.jpg" alt="Powerlines" width="187" height="250" /></a></p>
<p><span style="color: #ff0000;"><strong>This post only applies to Legacy Version 3 of the API</strong></span></p>
<p>If you have been sending personalized messages to your contacts, then you already understand how useful this marketing technique can be.  If you would like to start exploring how to use personal information you have about your contacts, take a look at this post by Frank Chapman on <a href="http://brontoversity.com/2009/06/16/getting-personal-with-your-contacts/" target="_blank">Getting Personal With Your Contacts</a>.  But what about those of you that are sending messages with data that isn&#8217;t available until you send the message? API message tags to the rescue!  You can think of API message tags as place holders that you can fill in with data when you send a message through the API. Adam Covati touched on API message tags in <a href="http://brontoversity.com/2009/06/18/owning-automated-messages/" target="_blank">Owning Automated Messages</a>. API message tags are clearly useful in the case of a receipt or some other transactional type of message like the following example.  <a href="http://brontoversity.com/wp-content/uploads/2009/11/powerlines.jpg" target="_new"><img style="padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2009/12/messagetags.png" alt="Powerlines" width="536" height="270" /></a> You will notice that the message tags can exist within the context of an HTML tag, as is the case with the address fields in the table. The <code>%%#items%%</code> tag could be passed in as a table, or could be a simple list of items.  Since API message tags are just empty place holders, they can be used for anything that you want to contain up to date/personalized information, or data you don&#8217;t have at the time the message is designed.</p>
<h3>Setup</h3>
<p>So let&#8217;s make sure you know how to pass this data in from the development side. If you take a look at the documentation for the <a href="http://app.bronto.com/api/?q=v3_f_view&amp;fn=View&amp;id=104" target="_self"><code>writeDeliveries</code> function</a>, you will notice the optional fields parameter. This is an array of <code>messageField</code> objects which contain the name of the field, the type, and the actual content. The type is the type of message for which the data is destined, not the type of the data. In some cases, the difference between the data you send into an HTML message and the data you send into the text version of the message will be different. A transactional purchase receipt, for instance, would likely contain a list of items purchased. The HTML version of the message might get an HTML table structure, while the text version of the message would get a simple comma separated list of items.</p>
<h3>Passing In HTML</h3>
<p>Wait a minute, HTML? That&#8217;s right! You can pass in more than just a simple name of an item, or a purchase price. You can even make styling or formatting decisions at send time. You would probably want to leave most of the styling to your email designers, but clearly there is the opportunity to do a lot of interesting things with API message tags.</p>
<p>Hopefully you can now see how useful API message tags are. If you have been using the API and wondered what these optional tags were, run to your nearest code editor or IDE and send some messages with personalized information courtesy of API message tags.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/02/09/feed-me-seymour-using-rss-feeds-can-give-your-message-new-reach/' rel='bookmark' title='Permanent Link: Feed Me, Seymour! Using RSS Feeds Can Give Your Message New Reach'>Feed Me, Seymour! Using RSS Feeds Can Give Your Message New Reach</a> <small>In the past few years, web technology has provided us...</small></li>
<li><a href='http://brontoversity.com/2010/01/21/keep-your-eye-on-the-sparrow-using-the-api-to-retrieve-conversions/' rel='bookmark' title='Permanent Link: Keep Your Eye On The Sparrow: Using The API To Retrieve Conversions'>Keep Your Eye On The Sparrow: Using The API To Retrieve Conversions</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2010/06/24/using-loop-tags-with-the-api/' rel='bookmark' title='Permanent Link: Using Loop Tags With The API'>Using Loop Tags With The API</a> <small>A very useful, but little known feature in Bronto is...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2009/12/10/give-them-what-they-want-with-api-message-tags/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I Have the Power: Agency Level API Access</title>
		<link>http://brontoversity.com/2009/11/12/i-have-the-power-agency-level-api-access/</link>
		<comments>http://brontoversity.com/2009/11/12/i-have-the-power-agency-level-api-access/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 19:23:42 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[agency]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[wsdl]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=5377</guid>
		<description><![CDATA[
This post only applies to Legacy Version 3 of the API
So far, most of the API examples and blog posts that we&#8217;ve written have dealt with a single account. But what if you have an agency account and want to automate tasks or have other needs that require the use of the API? The chances [...]


Related posts:<ol><li><a href='http://brontoversity.com/2009/10/15/have-logs-will-travel/' rel='bookmark' title='Permanent Link: Have Logs Will Travel'>Have Logs Will Travel</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2009/11/powerlines.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2009/11/powerlines.jpg" alt="Powerlines" width="172" height="250" /></a></p>
<p><span style="color: #ff0000;"><strong>This post only applies to Legacy Version 3 of the API</strong></span></p>
<p>So far, most of the API examples and blog posts that we&#8217;ve written have dealt with a single account. But what if you have an agency account and want to automate tasks or have other needs that require the use of the API? The chances are pretty good that you will want to perform these tasks for more than one, or even all of your subaccounts. With agency level API permissions, an agency user has the ability to login to the API and perform tasks in any subaccount just as though it was logged into the subaccount itself.</p>
<h3>Let&#8217;s Get Started</h3>
<p>First, make sure you have an agency user with agency API access turned on.</p>
<p><a href="http://brontoversity.com/wp-content/uploads/2009/11/permissions.jpg" target="_new"><img style="padding: 5px;" src="http://brontoversity.com/wp-content/uploads/2009/11/permissions.jpg" alt="Permissions" width="474" height="212" /></a></p>
<p>Note that this user does not need to have administrator privileges. This allows you to restrict the amount of access this user has in the Bronto web application, while still allowing access to the API.</p>
<p>Now you can login to the API using this username, password, and the sitename from from the Sign In tab of your agency preferences. As with logging into the agency portion of the Bronto web application, you can&#8217;t perform subaccount activities just yet (i.e. updating contacts, sending messages, etc).  You&#8217;ll first need to login to a specific subaccount by using the optional <code>siteId</code> parameter in the <code>login</code> function. This <code>siteId</code> can be retrieved by using the <code>readAccounts</code> function. In fact, this is the only function you&#8217;ll have access to as an agency API user.  Once you have these <code>siteIds</code>, you may choose to store them locally. This way you won&#8217;t have to go through the first step of logging in as the agency user and reading them.</p>
<h3>Keep This In Mind&#8230;</h3>
<p>If your subaccounts change somewhat frequently and you are creating an interface to allow someone in your organization to perform various subaccount activities, you may want to continue to perform the initial agency login and retrieval of <code>siteIds</code> step. Doing this allows you to present an up to date list of all your subaccounts.</p>
<p>Included is a <a title="Agency Level API Example" href="http://brontoversity.com/wp-content/uploads/2009/11/agency_level_api_example.zip" target="_blank">PHP example</a> that shows how you can use a single login function for both agency and subaccount logins. Let us know if you have any questions in the comments section below.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2009/10/15/have-logs-will-travel/' rel='bookmark' title='Permanent Link: Have Logs Will Travel'>Have Logs Will Travel</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
<li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2009/11/12/i-have-the-power-agency-level-api-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Abandonment Issues?  Use Direct Update to Get Over Them!</title>
		<link>http://brontoversity.com/2009/10/27/abandonment-issues-use-direct-update-to-get-over-them/</link>
		<comments>http://brontoversity.com/2009/10/27/abandonment-issues-use-direct-update-to-get-over-them/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 18:31:01 +0000</pubDate>
		<dc:creator>Lucas Weber</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[abandoned]]></category>
		<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[Bronto]]></category>
		<category><![CDATA[Direct Update]]></category>
		<category><![CDATA[e-commerce]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[shopping cart]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=5196</guid>
		<description><![CDATA[In my last post, DIY Integrations II: Direct Update, I talked about our Direct Update feature, which allows your to update a contact&#8217;s field data based on the pages they visit on your website. Today, I&#8217;m going to delve a bit deeper and show an example of how this feature can be used to narrow [...]


Related posts:<ol><li><a href='http://brontoversity.com/2009/09/29/diy-integrations-ii-updating-contact-field-information-with-direct-update/' rel='bookmark' title='Permanent Link: DIY Integrations II: Updating Contact Field Information With Direct Update'>DIY Integrations II: Updating Contact Field Information With Direct Update</a> <small> Integrating your website or database with a third party...</small></li>
<li><a href='http://brontoversity.com/2009/08/31/diy-integrations-getting-contacts-into-your-account-with-direct-add/' rel='bookmark' title='Permanent Link: DIY Integrations: Getting Contacts Into Your Account With Direct Add'>DIY Integrations: Getting Contacts Into Your Account With Direct Add</a> <small>Integrating your website or database with a third party application...</small></li>
<li><a href='http://brontoversity.com/2010/05/18/direct-unsubscribe-grows-up/' rel='bookmark' title='Permanent Link: Direct Unsubscribe Grows Up'>Direct Unsubscribe Grows Up</a> <small>In the beginning, our Direct Unsubscribe feature was tucked away...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2009/10/cart.jpg" target="_blank"><img style="float:right; padding:5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2009/10/cart.jpg" border="0" alt="Abandoned Shopping Cart" width="272" height="302" /></a>In my last post, <a href="http://brontoversity.com/2009/09/29/diy-integrations-ii-updating-contact-field-information-with-direct-update/" target="_blank">DIY Integrations II: Direct Update</a>, I talked about our Direct Update feature, which allows your to update a contact&#8217;s field data based on the pages they visit on your website. Today, I&#8217;m going to delve a bit deeper and show an example of how this feature can be used to narrow down your target audience. You&#8217;ll learn how to reach out to contacts that have started, but not completed a purchase, and offer them a discount or other incentive. This can be a great way to increase your conversions.</p>
<p>This post will assume that you have an understanding of how Direct Update works and how to implement it on your site. If you have questions on the basics or usage of Direct Update, please check out the help topic called Enabling Direct Update in the Bronto application.</p>
<p>Getting this set up is as simple as setting up a couple of fields, creating two separate Direct Update strings, and placing them in the right location on your site. Let&#8217;s get started&#8230;</p>
<h3>The Fields</h3>
<p>First, the easy part, creating two fields. We&#8217;ll use these fields to monitor when a contact has placed something in their cart, and when they complete a purchase.  We&#8217;ll call our first field <em>ItemInCart</em>. This can be pretty much any type of field you&#8217;d like. For simplicity&#8217;s sake, we&#8217;ll leave it as a text field.  The next field we&#8217;ll call <em>CompletedPurchase</em>. Again, this can be any type of field. I would recommend a date type field so that you can use this field data in multiple ways to target contacts.</p>
<h3>The First Direct Update Statement</h3>
<p>Next, we&#8217;ll need to set up the first of our two Direct Update code snippets.  The base code can be found by going to <strong>Home-&gt;Settings-&gt;Analytics</strong>, and then scrolling down to the Direct Update section.  In addition to grabbing the code, make sure that the check box under Direct Update is checked. Doing so will activate the feature.</p>
<p style="text-align: center;"><a href="http://brontoversity.com/wp-content/uploads/2009/10/checkbox.jpg"><img class="aligncenter size-full wp-image-5233" src="http://brontoversity.com/wp-content/uploads/2009/10/checkbox.jpg" alt="Be sure to check this checkbox" width="480" height="138" /></a></p>
<p>Let&#8217;s take a look at a sample of the base code first.<br />
<code><br />
&lt;img src="http://app.bronto.com/public/?q=direct_update&amp;fn=Public_DirectUpdateForm&amp;id=cdagfvzjskjuipnbbdjdvbiwgfkdbbb" border="0" alt="" width="0" height="0" /&gt;<br />
</code><br />
The goal of the first snippet is to let us know that someone has placed an item in their shopping cart. We&#8217;ll need to add an operator to the end of the snippet that sets the <em>ItemInCart</em> field to a positive value. To do this, we&#8217;ll use the following code:<br />
<code><br />
field1=ItemInCart,set,Yes<br />
</code><br />
The completed Direct Update code snippet would look like this:<br />
<code><br />
&lt;img src="http://app.bronto.com/public/?q=direct_update&amp;fn=Public_DirectUpdateForm&amp;id=cdagfvzjskjuipnbbdjdvbiwgfkdbbb&amp;field1=ItemInCart,set,Yes" border="0" alt="" width="0" height="0" /&gt;<br />
</code><br />
Once you&#8217;ve got this first snippet, it will need to be placed on your website. Preferably, you should place it on a confirmation page that comes up after a contact adds an item or items to their shopping cart.  That way, when they reach this page, the Direct Update code snippet will activate and update their <em>ItemInCart</em> field to &#8216;Yes&#8217;.</p>
<h3>The Second Direct Update Statement</h3>
<p>Now we&#8217;re ready to set up the second and final piece of Direct Update code. We&#8217;ll start with the base code again and build from there. This time around, we need to add an operator that sets a contact&#8217;s <em>CompletedPurchase</em> field to a certain value. I recommend using the current date.  This will allow you to use this data for other segmenting purposes.<br />
<code><br />
field1=CompletedPurchase,set,10/27/2009<br />
</code><br />
In order to set to the current date, you will need to use some simple javascript that will be run from your own server. <a href="http://www.javascriptkit.com/jsref/date.shtml" target="_blank">Click here</a> and check out Example 1 for a simple script to call the current date. It is important to note that the date must be specified in the format you have  						designated for date fields on the Formatting page located at <strong>Home-&gt;Settings-&gt;Formatting</strong>. In addition, we need to remove the positive value from the <em>ItemInCart</em> field so that we don&#8217;t accidentally pull in people that have completed a purchase.  We&#8217;ll use the following to do so:<br />
<code><br />
field2=ItemInCart,set,No<br />
</code><br />
The completed Direct Update code snippet would look like this:<br />
<code><br />
&lt;img src="http://app.bronto.com/public/?q=direct_update&amp;fn=Public_DirectUpdateForm&amp;id=cdagfvzjskjuipnbbdjdvbiwgfkdbbb&amp;field1=CompletedPurchase,set,10/27/2009&amp;field2=ItemInCart,set,No" border="0" alt="" width="0" height="0" /&gt;<br />
</code><br />
This second code snippet will also need to be placed on your website. This one should be placed on the order confirmation screen, after the purchase has been completed. It will set the contact&#8217;s <em>CompletedPurchase</em> field to the date defined, and will set their <em>ItemInCart</em> field to No.</p>
<h3>Segmenting with Reckless Abandon</h3>
<p>All that remains is to find the people in your contact list that have abandoned their shopping cart and give them a little incentive to complete the purchase! This can be very easily done by creating a simple segment that searches for contacts in your account that have a value of Yes in the <em>ItemInCart</em> field. Once that segment is created, all you have to do is send your message to it.</p>
<h3>Careful Considerations</h3>
<p>One small caveat to this post is that the whole thing will only work if a couple of conditions are met. First, the contact must have clicked on a link in an email sent via Bronto, which will open a tracking cookie on their computer. The cookie will allow the Direct Update code to work. Second, they must have cookies enabled in their web browser.</p>
<p>There you have it, a relatively simple way to set up an abandoned shopping cart tracking mechanism for your Bronto contacts. Keeping track of when your contacts <strong>do not</strong> complete a purchase can be just as important as keeping track of when they do. Are you currently using this method to increase conversions? Are you using a different method? Let us know in the comments.</p>
<p><em>Lucas Weber<br />
Bronto Client Services</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2009/09/29/diy-integrations-ii-updating-contact-field-information-with-direct-update/' rel='bookmark' title='Permanent Link: DIY Integrations II: Updating Contact Field Information With Direct Update'>DIY Integrations II: Updating Contact Field Information With Direct Update</a> <small> Integrating your website or database with a third party...</small></li>
<li><a href='http://brontoversity.com/2009/08/31/diy-integrations-getting-contacts-into-your-account-with-direct-add/' rel='bookmark' title='Permanent Link: DIY Integrations: Getting Contacts Into Your Account With Direct Add'>DIY Integrations: Getting Contacts Into Your Account With Direct Add</a> <small>Integrating your website or database with a third party application...</small></li>
<li><a href='http://brontoversity.com/2010/05/18/direct-unsubscribe-grows-up/' rel='bookmark' title='Permanent Link: Direct Unsubscribe Grows Up'>Direct Unsubscribe Grows Up</a> <small>In the beginning, our Direct Unsubscribe feature was tucked away...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2009/10/27/abandonment-issues-use-direct-update-to-get-over-them/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Have Logs Will Travel</title>
		<link>http://brontoversity.com/2009/10/15/have-logs-will-travel/</link>
		<comments>http://brontoversity.com/2009/10/15/have-logs-will-travel/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 18:26:01 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Legacy Version 3]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[wsdl]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=5049</guid>
		<description><![CDATA[This post only applies to Legacy Version 3 of the API
Using a web service is a little bit like a leap of faith.  You no longer have total control of the code and are depending on the service to perform a chunk of your work flow.  The benefits are obvious, in that you don&#8217;t have [...]


Related posts:<ol><li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/11/12/i-have-the-power-agency-level-api-access/' rel='bookmark' title='Permanent Link: I Have the Power: Agency Level API Access'>I Have the Power: Agency Level API Access</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;"><strong>This post only applies to Legacy Version 3 of the API</strong></span></p>
<p>Using a web service is a little bit like a leap of faith.  You no longer have total control of the code and are depending on the service to perform a chunk of your work flow.  The benefits are obvious, in that you don&#8217;t have to develop or maintain<a href="http://brontoversity.com/wp-content/uploads/2009/10/logging.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2009/10/logging.jpg" alt="Logging" width="250" height="200" /></a> that code.  The downside is that when something does go wrong, it&#8217;s tempting to blame the web service provider. However, this is not always the case and in the event that something does go wrong, you need a way to determine where the failure was. One way is to use a SOAP testing tool as we&#8217;ve seen in Washing with SOAP part <a href="http://brontoversity.com/2009/06/04/washing-with-soap-part-1/" target="_blank">1</a>, <a href="http://brontoversity.com/2009/07/09/washing-with-soap-part-2/" target="_blank">2</a>, <a href="http://brontoversity.com/2009/07/30/washing-with-soap-part-3/" target="_blank">3</a>.  This is a quick way to verify that the web service is doing what it&#8217;s supposed to.  But if you need to debug your code, then you will need a way to output the SOAP requests and responses that you are sending and receiving.  This will also be valuable information to show to the provider of the web service you are consuming.  So, let&#8217;s look at how to do this in a few different languages.</p>
<h3>PHP Logging Example</h3>
<p>PHP(version 5+) gives you easy access to the last request and response through the SOAP Client object.  The functions <code>__getLastRequest()</code> and <code>__getLastResponse()</code> will return a string representation of the last request and response.  You can either echo this string to standard output, as with the very simple file logger class in this example, or more than likely in your production code you will be logging it to a file.  <a href="http://brontoversity.com/wp-content/uploads/2009/10/logging_examplephp.zip">Get the code</a></p>
<h3>Python Logging Example</h3>
<p>If you&#8217;re using the Suds SOAP library for Python, you can enable logging through Python&#8217;s own logging library.  You won&#8217;t need to directly access the request and response strings. You can also control how much information you receive by setting the logging level. Additionally, the library allows adding a file handler to pipe the output to a log file.  Pretty convenient, right?  <a href="http://brontoversity.com/wp-content/uploads/2009/10/logging_examplepy.zip">Get the code<br />
</a></p>
<h3>Java Logging Example</h3>
<p>With Java, using the JAX-WS SOAP stack, things get slightly more complicated.  If you worked through accessing the SOAP header through the use of a SOAP message handler, then you&#8217;ll be familiar with the process here.  What we&#8217;ll be doing is writing a handler whose purpose is to intercept requests and responses, log them, and then pass them along to the next handler.  Here you will find the handler code, as well as the code to associate it to the binding.  Again, this is for use with Java&#8217;s JAX-WS library.  If you&#8217;re using Apache Axis or some other SOAP library, you will likely have alternate methods to log SOAP messages.  <a href="http://brontoversity.com/wp-content/uploads/2009/10/loghandlerjava.zip">Get the code</a></p>
<p>While some languages are easier than others in terms of logging SOAP messages, you should always write your code with the idea that at some point, something may go wrong. When something does go wrong, you&#8217;ll need a way to investigate what happened.  Without being able to see the SOAP messages that your application and the Bronto API are passing back and forth, you will have a much harder time debugging your code.  So with these examples in hand, go forth and log those SOAP messages.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2009/08/27/who-loves-you/' rel='bookmark' title='Permanent Link: Who Loves You: Getting Open Rates Via The API'>Who Loves You: Getting Open Rates Via The API</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/11/12/i-have-the-power-agency-level-api-access/' rel='bookmark' title='Permanent Link: I Have the Power: Agency Level API Access'>I Have the Power: Agency Level API Access</a> <small> This post only applies to Legacy Version 3 of...</small></li>
<li><a href='http://brontoversity.com/2009/09/24/spring-cleaning-clearing-contacts-from-lists/' rel='bookmark' title='Permanent Link: Spring Cleaning: Clearing Contacts From Lists'>Spring Cleaning: Clearing Contacts From Lists</a> <small>This post only applies to Legacy Version 3 of the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2009/10/15/have-logs-will-travel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
