<?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; Alex Durzy</title>
	<atom:link href="http://brontoversity.com/author/alex/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>Make Mine A Double: Double Opt-in With The API</title>
		<link>http://brontoversity.com/2010/07/15/make-mine-a-double-double-opt-in-with-the-api/</link>
		<comments>http://brontoversity.com/2010/07/15/make-mine-a-double-double-opt-in-with-the-api/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 19:07:08 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[API version 4]]></category>
		<category><![CDATA[double opt-in]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=8137</guid>
		<description><![CDATA[For those of you that want to use the API and thought that the only way to do a double opt-in or subscription confirmation message was by using our contact Import tool, this post is for you. Maybe you&#8217;ve been doing a double-optin the way Lucas described in How To Send A Subscription Confirmation Message [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/02/02/how-to-send-a-subscription-confirmation-message/' rel='bookmark' title='Permanent Link: How To Send A Subscription Confirmation Message'>How To Send A Subscription Confirmation Message</a> <small>At Bronto, we&#8217;re very serious about permission based marketing. We...</small></li>
<li><a href='http://brontoversity.com/2010/05/25/webforms-and-subscriber-confirmation/' rel='bookmark' title='Permanent Link: Webforms and Subscriber Confirmation'>Webforms and Subscriber Confirmation</a> <small>Back in February, Lucas Weber gave us a great post...</small></li>
<li><a href='http://brontoversity.com/2009/08/06/a-look-at-contact-status/' rel='bookmark' title='Permanent Link: A Look At Contact Status'>A Look At Contact Status</a> <small>Within Bronto, your contacts can be labeled with a number...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2010/07/double.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/07/double.jpg" alt="Machinery" width="205" height="237" /></a>For those of you that want to use the API and thought that the only way to do a double opt-in or subscription confirmation message was by using our contact Import tool, this post is for you. Maybe you&#8217;ve been doing a double-optin the way Lucas described in <a href="http://brontoversity.com/2010/02/02/how-to-send-a-subscription-confirmation-message/" target="_new">How To Send A Subscription Confirmation Message</a> and want to automate that process through the API.</p>
<p>There are a few things you&#8217;ll need to do to ensure that your contacts are required to confirm their subscription before being sent any more marketing messages.  </p>
<p>Check out the <a href="http://app.bronto.com/api/?q=v4_f_view&#038;fn=View&#038;id=100" target="_new">addContacts</a> function if you haven&#8217;t used our API to add contacts. You will need to add your contacts with a status of unconfirmed. Doing this ensures that only messages that contain the %%!confirm_url%% link can be sent to them. This link allows your contacts to confirm their subscription, i.e. their status will become active and they can be sent any message.  So go ahead and make sure that you have a created a confirmation message.  The confirm_url is available in the Special Tags dropdown in the WYSIWYG editor or you can add it directly to your html.</p>
<p>Now you can schedule this message to be delivered to an unconfirmed contact using the <a href="http://app.bronto.com/api/?q=v4_f_view&#038;fn=View&#038;id=104" target="_new">addDeliveries</a> function.  The only difference between this and a normal delivery is that you need to specifically mark it as an optin message by setting the optin parameter to True.  </p>
<p>And there you have it!  A way to automate your double opt-in process through the API so you can be sure that your active contacts truly want to hear from you.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em>    </p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/02/02/how-to-send-a-subscription-confirmation-message/' rel='bookmark' title='Permanent Link: How To Send A Subscription Confirmation Message'>How To Send A Subscription Confirmation Message</a> <small>At Bronto, we&#8217;re very serious about permission based marketing. We...</small></li>
<li><a href='http://brontoversity.com/2010/05/25/webforms-and-subscriber-confirmation/' rel='bookmark' title='Permanent Link: Webforms and Subscriber Confirmation'>Webforms and Subscriber Confirmation</a> <small>Back in February, Lucas Weber gave us a great post...</small></li>
<li><a href='http://brontoversity.com/2009/08/06/a-look-at-contact-status/' rel='bookmark' title='Permanent Link: A Look At Contact Status'>A Look At Contact Status</a> <small>Within Bronto, your contacts can be labeled with a number...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/07/15/make-mine-a-double-double-opt-in-with-the-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>May I Have Another User</title>
		<link>http://brontoversity.com/2010/06/11/may-i-have-another-user/</link>
		<comments>http://brontoversity.com/2010/06/11/may-i-have-another-user/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 16:00:57 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[Did You Know?]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[API version 4]]></category>
		<category><![CDATA[Bronto]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=7667</guid>
		<description><![CDATA[As part of version 4 of the Bronto API, we have added the ability to programatically manage your account. This is especially useful for agency and groups accounts that are bringing new client accounts online and want to minimize the amount of manual intervention. We have already discussed how to add new accounts, but what [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/06/17/token-token-who-wants-a-token/' rel='bookmark' title='Permanent Link: Token, Token, Who Wants a Token?'>Token, Token, Who Wants a Token?</a> <small>Another new feature of version 4 of the Bronto API...</small></li>
<li><a href='http://brontoversity.com/2010/05/27/agencies-can-create-new-accounts-using-the-api/' rel='bookmark' title='Permanent Link: Agencies Can Create New Accounts Using The API'>Agencies Can Create New Accounts Using The API</a> <small>Last month we discussed how to create headers and footers...</small></li>
<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>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2010/06/machinery.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/06/machinery.jpg" alt="Machinery" width="250" height="187" /></a>As part of version 4 of the Bronto API, we have added the ability to programatically manage your account. This is especially useful for agency and groups accounts that are bringing new client accounts online and want to minimize the amount of manual intervention. We have already discussed <a href="http://brontoversity.com/2010/05/27/agencies-can-create-new-accounts-using-the-api/" target="_new">how to add new accounts</a>, but what good is an account without users?  Prior to version 4 of the API, you had to login to the Bronto web app in order to view or add users(logins). So let&#8217;s take a look at the new functions that allow you to manage your users.</p>
<p>As is standard, we have included <a href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=112" target="_new">create</a>, <a href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=22" target="_new">read</a>, <a href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=409" target="_new">update</a>, and <a href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=509" target="_new">delete</a> functions for logins. We have also made an effort to make the objects that are accessible through the API very closely mirror their web application counterparts. In other words, creating a contact, message, account, login, etc through the API should feel very similar to creating one in the application.</p>
<p>The quickest way to get a sense for an object and its parameters is to read one or more that have already been created.  So check out the <a title="readLogins" href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=22" target="_blank">readLogins</a> function and give it a try with an empty filter. Here&#8217;s an example SOAP request/response generated from <a title="soapui" href="http://www.soapui.org" target="_blank">soapui</a>:</p>
<div style="height: 300px; overflow: auto; border: 1px solid;"><code><br />
&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v4="http://api.bronto.com/v4"&gt;<br />
&lt;soapenv:Header&gt;<br />
&lt;v4:sessionHeader&gt;<br />
&lt;sessionId&gt;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&lt;/sessionId&gt;<br />
&lt;/v4:sessionHeader&gt;<br />
&lt;/soapenv:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;v4:readLogins&gt;<br />
&lt;filter&gt;<br />
&lt;/filter&gt;<br />
&lt;pageNumber&gt;1&lt;/pageNumber&gt;<br />
&lt;/v4:readLogins&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;</code></p>
<p><code><br />
&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;<br />
&lt;soap:Body&gt;<br />
&lt;ns2:readLoginsResponse xmlns:ns2="http://api.bronto.com/v4"&gt;<br />
&lt;return&gt;<br />
&lt;username&gt;xxxxxxxxx&lt;/username&gt;<br />
&lt;password&gt;xxxxxxxxx&lt;/password&gt;<br />
&lt;contactInformation&gt;<br />
&lt;firstName&gt;my&lt;/firstName&gt;<br />
&lt;lastName&gt;name&lt;/lastName&gt;<br />
&lt;email&gt;my@email.address&lt;/email&gt;<br />
&lt;phone&gt;1234567890&lt;/phone&gt;<br />
&lt;country&gt;US&lt;/country&gt;<br />
&lt;/contactInformation&gt;<br />
&lt;permissionAgencyAdmin&gt;false&lt;/permissionAgencyAdmin&gt;<br />
&lt;permissionAdmin&gt;false&lt;/permissionAdmin&gt;<br />
&lt;permissionApi&gt;true&lt;/permissionApi&gt;<br />
&lt;permissionUpgrade&gt;false&lt;/permissionUpgrade&gt;<br />
&lt;permissionFatigueOverride&gt;false&lt;/permissionFatigueOverride&gt;<br />
&lt;permissionMessageCompose&gt;true&lt;/permissionMessageCompose&gt;<br />
&lt;permissionMessageApprove&gt;false&lt;/permissionMessageApprove&gt;<br />
&lt;permissionMessageDelete&gt;false&lt;/permissionMessageDelete&gt;<br />
&lt;permissionAutomatorCompose&gt;false&lt;/permissionAutomatorCompose&gt;<br />
&lt;permissionListCreatSend&gt;true&lt;/permissionListCreatSend&gt;<br />
&lt;permissionListCreate&gt;false&lt;/permissionListCreate&gt;<br />
&lt;permissionSegmentCreate&gt;true&lt;/permissionSegmentCreate&gt;<br />
&lt;permissionFieldCreate&gt;true&lt;/permissionFieldCreate&gt;<br />
&lt;permissionFieldReorder&gt;false&lt;/permissionFieldReorder&gt;<br />
&lt;permissionSubscriberCreate&gt;true&lt;/permissionSubscriberCreate&gt;<br />
&lt;permissionSubscriberView&gt;true&lt;/permissionSubscriberView&gt;<br />
&lt;/return&gt;<br />
&lt;/ns2:readLoginsResponse&gt;<br />
&lt;/soap:Body&gt;<br />
&lt;/soap:Envelope&gt;<br />
</code></p>
</div>
<p>All of the permissions should look familiar if you have had a chance to edit a user&#8217;s permissions in the application. Hence, when you create a login object through the API, you can specify those same permissions. Here is what the SOAP request for the addLogins function looks like.</p>
<div style="height: 300px; overflow: auto; border: 1px solid;"><code><br />
&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v4="http://api.bronto.com/v4"&gt;<br />
&lt;soapenv:Header&gt;<br />
&lt;v4:sessionHeader&gt;<br />
&lt;sessionId&gt;&lt;/sessionId&gt;<br />
&lt;/v4:sessionHeader&gt;<br />
&lt;/soapenv:Header&gt;<br />
&lt;soapenv:Body&gt;<br />
&lt;v4:addLogins&gt;<br />
&lt;accounts&gt;<br />
&lt;username&gt;&lt;/username&gt;<br />
&lt;password&gt;&lt;/password&gt;<br />
&lt;contactInformation&gt;<br />
&lt;organization&gt;&lt;/organization&gt;<br />
&lt;firstName&gt;&lt;/firstName&gt;<br />
&lt;lastName&gt;&lt;/lastName&gt;<br />
&lt;email&gt;&lt;/email&gt;<br />
&lt;phone&gt;&lt;/phone&gt;<br />
&lt;address&gt;&lt;/address&gt;<br />
&lt;address2&gt;&lt;/address2&gt;<br />
&lt;city&gt;&lt;/city&gt;<br />
&lt;state&gt;&lt;/state&gt;<br />
&lt;zip&gt;&lt;/zip&gt;<br />
&lt;country&gt;&lt;/country&gt;<br />
&lt;notes&gt;&lt;/notes&gt;<br />
&lt;/contactInformation&gt;<br />
&lt;permissionAgencyAdmin&gt;&lt;/permissionAgencyAdmin&gt;<br />
&lt;permissionAdmin&gt;&lt;/permissionAdmin&gt;<br />
&lt;permissionApi&gt;&lt;/permissionApi&gt;<br />
&lt;permissionUpgrade&gt;&lt;/permissionUpgrade&gt;<br />
&lt;permissionFatigueOverride&gt;&lt;/permissionFatigueOverride&gt;<br />
&lt;permissionMessageCompose&gt;&lt;/permissionMessageCompose&gt;<br />
&lt;permissionMessageApprove&gt;&lt;/permissionMessageApprove&gt;<br />
&lt;permissionMessageDelete&gt;&lt;/permissionMessageDelete&gt;<br />
&lt;permissionAutomatorCompose&gt;&lt;/permissionAutomatorCompose&gt;<br />
&lt;permissionListCreatSend&gt;&lt;/permissionListCreatSend&gt;<br />
&lt;permissionListCreate&gt;&lt;/permissionListCreate&gt;<br />
&lt;permissionSegmentCreate&gt;&lt;/permissionSegmentCreate&gt;<br />
&lt;permissionFieldCreate&gt;&lt;/permissionFieldCreate&gt;<br />
&lt;permissionFieldReorder&gt;&lt;/permissionFieldReorder&gt;<br />
&lt;permissionSubscriberCreate&gt;&lt;/permissionSubscriberCreate&gt;<br />
&lt;permissionSubscriberView&gt;&lt;/permissionSubscriberView&gt;<br />
&lt;/accounts&gt;<br />
&lt;/v4:addLogins&gt;<br />
&lt;/soapenv:Body&gt;<br />
&lt;/soapenv:Envelope&gt;<br />
</code></div>
<p>With these new functions in hand, you will be able to automate the management of your account, whereas previously this was only possible by logging into the Bronto web application.  We hope you find them useful and welcome any feedback.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/06/17/token-token-who-wants-a-token/' rel='bookmark' title='Permanent Link: Token, Token, Who Wants a Token?'>Token, Token, Who Wants a Token?</a> <small>Another new feature of version 4 of the Bronto API...</small></li>
<li><a href='http://brontoversity.com/2010/05/27/agencies-can-create-new-accounts-using-the-api/' rel='bookmark' title='Permanent Link: Agencies Can Create New Accounts Using The API'>Agencies Can Create New Accounts Using The API</a> <small>Last month we discussed how to create headers and footers...</small></li>
<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>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/06/11/may-i-have-another-user/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>Ready, Set, Import.</title>
		<link>http://brontoversity.com/2010/04/15/ready-set-import/</link>
		<comments>http://brontoversity.com/2010/04/15/ready-set-import/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 17:52:14 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[Did You Know?]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[add contacts]]></category>
		<category><![CDATA[Bronto]]></category>
		<category><![CDATA[email]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=7076</guid>
		<description><![CDATA[Did you know there is a way to upload your contacts without logging into the application or using the API?  We call it Direct Import.
Direct Import allows you to post (or send) a file over http without having to interact manually with the contact import forms in the Bronto web application.  Why is [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/03/01/its-coming-the-bronto-spring-2010-release/' rel='bookmark' title='Permanent Link: It&#8217;s Coming! The Bronto Spring 2010 Release'>It&#8217;s Coming! The Bronto Spring 2010 Release</a> <small>It&#8217;s been a cold and snowy winter and all of...</small></li>
<li><a href='http://brontoversity.com/2009/09/15/get-ready-the-bronto-fall-2009-release/' rel='bookmark' title='Permanent Link: Get Ready: The Bronto Fall 2009 Release'>Get Ready: The Bronto Fall 2009 Release</a> <small> You may have noticed Halloween displays at the local...</small></li>
<li><a href='http://brontoversity.com/2009/10/27/abandonment-issues-use-direct-update-to-get-over-them/' rel='bookmark' title='Permanent Link: Abandonment Issues?  Use Direct Update to Get Over Them!'>Abandonment Issues?  Use Direct Update to Get Over Them!</a> <small>In my last post, DIY Integrations II: Direct Update, I...</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/04/clock.jpg" alt="Clock" width="250" height="164" />Did you know there is a way to upload your contacts without logging into the application or using the API?  We call it Direct Import.</p>
<p>Direct Import allows you to post (or send) a file over http without having to interact manually with the contact import forms in the Bronto web application.  Why is this so great?  Well, without having to do any API programming or much of any setup at all, you can create a system that automatically sends a file with your contacts&#8217; email addresses and any additional information you have, to Bronto.</p>
<p>Using a scheduling utility, such as <a href="http://www.unixgeeks.org/security/newbie/unix/cron-1.html" target="_new">cron</a> on unix based systems, and an http posting library, such as <a href="http://curl.haxx.se/docs/manpage.html" target="_new">curl</a>, you can setup a scheduled process to keep your contact data fresh.  These are tools that are familiar to most system administrators, so you should be up and running relatively quickly.</p>
<p>Do you have the ability to automatically create exports of your contact data from your local database, but have been logging into Bronto to keep your contact data up to date?  Let Direct Import take care of that for you.  You&#8217;ll always have the most up to date information about your contacts and you&#8217;ll only have to set it up once.</p>
<p>So, head on over to the help topics in the application for all of the information and setup options that you&#8217;ll need.  Less manual work, and fresher data.  We hope you&#8217;ll like it.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/03/01/its-coming-the-bronto-spring-2010-release/' rel='bookmark' title='Permanent Link: It&#8217;s Coming! The Bronto Spring 2010 Release'>It&#8217;s Coming! The Bronto Spring 2010 Release</a> <small>It&#8217;s been a cold and snowy winter and all of...</small></li>
<li><a href='http://brontoversity.com/2009/09/15/get-ready-the-bronto-fall-2009-release/' rel='bookmark' title='Permanent Link: Get Ready: The Bronto Fall 2009 Release'>Get Ready: The Bronto Fall 2009 Release</a> <small> You may have noticed Halloween displays at the local...</small></li>
<li><a href='http://brontoversity.com/2009/10/27/abandonment-issues-use-direct-update-to-get-over-them/' rel='bookmark' title='Permanent Link: Abandonment Issues?  Use Direct Update to Get Over Them!'>Abandonment Issues?  Use Direct Update to Get Over Them!</a> <small>In my last post, DIY Integrations II: Direct Update, I...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/04/15/ready-set-import/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Filtering Result Sets, Part 2</title>
		<link>http://brontoversity.com/2010/04/01/filtering-result-sets-part-2/</link>
		<comments>http://brontoversity.com/2010/04/01/filtering-result-sets-part-2/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 19:23:04 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[API version 4]]></category>
		<category><![CDATA[Bronto]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=6887</guid>
		<description><![CDATA[Last time we looked at the basics of Filtering Result Sets.  This time we&#8217;ll look at another great new filtering mechanism that was added to version 4 of the Bronto API.  In the past many of these types of filtering operations had to be performed by reading the entire contact database and then [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/03/25/filtering-result-sets/' rel='bookmark' title='Permanent Link: Filtering Result Sets'>Filtering Result Sets</a> <small>Did you know that all of the read functions available...</small></li>
<li><a href='http://brontoversity.com/2010/04/08/using-the-new-readcontacts-function/' rel='bookmark' title='Permanent Link: Using the New readContacts Function'>Using the New readContacts Function</a> <small>Over the past few weeks, we have looked at how...</small></li>
<li><a href='http://brontoversity.com/2010/06/11/may-i-have-another-user/' rel='bookmark' title='Permanent Link: May I Have Another User'>May I Have Another User</a> <small>As part of version 4 of the Bronto API, we...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2010/03/monkeys.jpg" target="_new"><img style="float: right; padding: 5px 5px 5px 5px;" src="http://brontoversity.com/wp-content/uploads/2010/03/monkeys.jpg" alt="Monkey" width="250" height="165" /></a>Last time we looked at the basics of <a href="http://brontoversity.com/2010/03/25/filtering-result-sets/" target="_new">Filtering Result Sets</a>.  This time we&#8217;ll look at another great new filtering mechanism that was added to version 4 of the Bronto API.  In the past many of these types of filtering operations had to be performed by reading the entire contact database and then filtering locally.  In some cases, with a large contact database, this operation could potentially take much longer than desired due to the increased number of back and forth calls over the internet that was required.</p>
<p>If you used the previous version of the API you may have used the filtering that was available.  You had the option to check equality(=) for all data types as well as inequalities(&gt;, &lt;, &gt;=, &lt;=) with numeric and date types. In version 4 of the API we have added some very useful <a href="http://app.bronto.com/api/?q=v4_o_view&amp;fn=View&amp;id=106" target="_new">filter operators</a>.  Let&#8217;s take a closer look at a couple of the new operators.</p>
<h3>To The Operators Jeeves</h3>
<p>StartsWith / EndsWith can be used as a string comparison and are especially useful when trying to filter down your contacts by matching a portion of their email address.  For instance, let&#8217;s say you wanted to see how engaged contacts with only yahoo.com have been.  You could use the EndsWith operator and &#8220;yahoo.com&#8221; as the value to request just these contacts.  Once you have these contacts you can use the aggregated statistics that are returned to create a customized report with just the information that you need.</p>
<h3>But Wait, There&#8217;s More&#8230;</h3>
<p>So you actually want all of the contacts <em>except</em> those yahoo.com addresses?  You&#8217;re in luck, you can change that EndsWith operator to DoesNotEndWith.    Why stop there?  You can add additional filters to crop that list down even more.  You only want contacts that signed up this year?  Add a filter using the new SameYearAs operator?  Want to get contacts that signed up specifically between two dates?  Check out the Before / After and BeforeOrSameDay / AfterOrSameDay.</p>
<p>With this version of the API we have made an effort to open up the filtering to give you more options.  As your contact database grows this will be increasingly important to you.  Hopefully you will find these additional possibilities helpful.  Let us know what you think!</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/03/25/filtering-result-sets/' rel='bookmark' title='Permanent Link: Filtering Result Sets'>Filtering Result Sets</a> <small>Did you know that all of the read functions available...</small></li>
<li><a href='http://brontoversity.com/2010/04/08/using-the-new-readcontacts-function/' rel='bookmark' title='Permanent Link: Using the New readContacts Function'>Using the New readContacts Function</a> <small>Over the past few weeks, we have looked at how...</small></li>
<li><a href='http://brontoversity.com/2010/06/11/may-i-have-another-user/' rel='bookmark' title='Permanent Link: May I Have Another User'>May I Have Another User</a> <small>As part of version 4 of the Bronto API, we...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/04/01/filtering-result-sets-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filtering Result Sets</title>
		<link>http://brontoversity.com/2010/03/25/filtering-result-sets/</link>
		<comments>http://brontoversity.com/2010/03/25/filtering-result-sets/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 18:07:32 +0000</pubDate>
		<dc:creator>Alex Durzy</dc:creator>
				<category><![CDATA[API Version 4]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Developer]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[API version 4]]></category>
		<category><![CDATA[Bronto]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://brontoversity.com/?p=6795</guid>
		<description><![CDATA[Did you know that all of the read functions available in the Bronto API have the option to include a filter based on selected criteria? Do you want to limit the number of results you get from a read request? Do you only need one or a few specific records? Do you only want records [...]


Related posts:<ol><li><a href='http://brontoversity.com/2010/04/01/filtering-result-sets-part-2/' rel='bookmark' title='Permanent Link: Filtering Result Sets, Part 2'>Filtering Result Sets, Part 2</a> <small>Last time we looked at the basics of Filtering Result...</small></li>
<li><a href='http://brontoversity.com/2010/04/08/using-the-new-readcontacts-function/' rel='bookmark' title='Permanent Link: Using the New readContacts Function'>Using the New readContacts Function</a> <small>Over the past few weeks, we have looked at how...</small></li>
<li><a href='http://brontoversity.com/2010/06/11/may-i-have-another-user/' rel='bookmark' title='Permanent Link: May I Have Another User'>May I Have Another User</a> <small>As part of version 4 of the Bronto API, we...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://brontoversity.com/wp-content/uploads/2010/03/filter.jpg" target="_new"><img style="float: right;padding: 5px 5px 5px 5px" src="http://brontoversity.com/wp-content/uploads/2010/03/filter.jpg" alt="Coffee Filter" width="250" height="166" /></a>Did you know that all of the read functions available in the Bronto API have the option to include a filter based on selected criteria? Do you want to limit the number of results you get from a read request? Do you only need one or a few specific records? Do you only want records that were created between two dates? If you are using or have used version 3 of the API, these concepts will be familiar. For Version 4, we have made filtering even more powerful!</p>
<h3>What&#8217;s New In Version 4?</h3>
<p>Gone is the universal readFilter with its readCriteria attributes. In version 4, each read function has its own filter object with associated named criteria parameters. As with V3, you can still opt to perform the read with an empty filter in order to retrieve all of the available records for that request. In some cases, this may be the desired effect. However, in other cases, filtering the returned results is essential. The objects that you will probably want to filter most are contacts, since this is likely your largest set of objects.</p>
<h3>Filtering Contacts</h3>
<p>Let&#8217;s take a look at the options available in the filter for the readContacts function. On <a href="http://api.bronto.com" target="_new">api.bronto.com</a>, you will find the <a href="http://app.bronto.com/api/?q=v4_o_view&amp;fn=View&amp;id=108" target="_new">contactFilter</a> object that is one of the parameters of the <a href="http://app.bronto.com/api/?q=v4_f_view&amp;fn=View&amp;id=2" target="_new">readContacts (Click here for example code)</a> function. The parameters of the various filter objects correlate to their associated object. All of the parameters you see in the contactFilter object are all in the contact object itself, except for one. That is the <em>type</em> parameter. This parameter takes on the same role as the <em>operator</em> parameter in V3. That is, it allows you to set multiple criteria and join them with an AND or OR operator. We have also added some new operators that allow for more advanced filtering. Take a look at the comparisons that are now available in the <a href="http://app.bronto.com/api/?q=v4_o_view&amp;fn=View&amp;id=106" target="_new">filterOperator</a>.</p>
<p>If you want to give it a try without writing any code and don&#8217;t yet have a handy SOAP testing tool, see <a href="http://brontoversity.com/2009/06/04/washing-with-soap-part-1/" target="_new">Washing With SOAP</a>.  You&#8217;ll also want to review <a href="http://brontoversity.com/2010/03/18/logging-into-the-new-api-v4-0/" target="_new">Logging into the API v4.0</a>. Once you have done that, you can go ahead and pick out your favorite read function and start trying out some of the different filtering parameters.</p>
<p><em>Alex Durzy<br />
Support Engineer at Bronto</em></p>


<p>Related posts:<ol><li><a href='http://brontoversity.com/2010/04/01/filtering-result-sets-part-2/' rel='bookmark' title='Permanent Link: Filtering Result Sets, Part 2'>Filtering Result Sets, Part 2</a> <small>Last time we looked at the basics of Filtering Result...</small></li>
<li><a href='http://brontoversity.com/2010/04/08/using-the-new-readcontacts-function/' rel='bookmark' title='Permanent Link: Using the New readContacts Function'>Using the New readContacts Function</a> <small>Over the past few weeks, we have looked at how...</small></li>
<li><a href='http://brontoversity.com/2010/06/11/may-i-have-another-user/' rel='bookmark' title='Permanent Link: May I Have Another User'>May I Have Another User</a> <small>As part of version 4 of the Bronto API, we...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://brontoversity.com/2010/03/25/filtering-result-sets/feed/</wfw:commentRss>
		<slash:comments>0</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>
	</channel>
</rss>
