New Features!

exchange.png-550x0
Last month we announced you could test Exchange accounts on Lite. We started with basic functionality such as authentication, pulling folder and message lists, and fetching a raw message. Our Exchange development continues and we’re happy to announce support for even more endpoints.

We’ll keep you posted as we continue to roll out new Exchange resources. WebHooks for Exchange are coming very soon. We’re also working on the ability to pull folder meta data, message flags, and message meta data.

Your feedback guides our development plans. The other features listed below are all requests that were sent to support@context.io. We’d love to know which updates to our platform will make your application even better!

  • Exchange on Lite
    • Connect_Tokens – Create connect_tokens on Lite with Exchange accounts. Please note that to test the connect_tokens you’ll need to make the calls through the API since the creation of connect_tokens through the developer console has not yet been implemented.
    • Message Headers – The message headers endpoint on Lite supports Exchange messages. You can use this resource to pull the subject line, recipients copied on the message, mime-version, content-type, etc.
    • Message Body – Pull the message body from Exchange accounts in addition to the raw message body. Fetching a message body allows you to display it to the user, filter or group it based on content or sender, and hundreds of other use cases.
  • API Call Limit Increased – The API calls per minute limit on Lite has been increased from 120 to 240 per user. If you have a use case which requires more than 240 API calls per user per minute, please contact us at support@context.io and we can explore the option of a further increase.
  • Send Error Code For Empty Message Body – We return a more descriptive and instructive error code when a user oversubscribes the system. The new error code explains the issue is probably due to throttling and provides steps for you to resolve the problem. This should allow you to handle the error gracefully, correct the issue, and hopefully prevent it from occurring again.
  • BCC Related Headers for Lite WebHooks – If the headers exist in the Lite WebHook postbody, they are returned in the response. This will alleviate the need for a separate call to pull the BCC header data (original-to, x-original-to, envelope-to, x-rcptto).

If you haven’t already, we highly recommend you register for our status updates and bookmark our roadmap. Please email us at support@context.io if you have any questions whatsoever!

Join the Context.IO Team!

we-are-hiring

Want to work for one of the best companies in the country? Context.IO and Return Path are growing fast and looking for great people to join our team. We were just ranked the #2 Best Medium Workplace in America by Fortune Magazine. Not too shabby! If you’re a great engineer that cares about developers and helping them build amazing products, then we have an incredible job just waiting for you!

We’re looking to hire two Software Engineers for Context.IO. Are you curious with a drive to learn and ship code? Do you possess a versatile mindset with strong experience in at least one dynamic language? Then come work with us in the greatest city in the US, and possibly the world, Austin, Texas!

In addition to the software engineer positions we’re looking for an API Developer Evangelist to be located in Colorado, Austin, New York, or San Francisco. Your choice! This person will work directly with third party developers to help them solve real world business problems. We’re looking for someone skilled in web programming technologies, including JavaScript, REST and HTML5. Someone who’s great at writing compelling pieces and comfortable engaging all types of audiences, be it at hackathons, conferences or meetups.

Curious about working for Context.IO and Return Path? Contact us and we’ll be happy to answer any of your questions!

We’ve Updated Our Privacy Policy

We wanted to make sure you knew that we updated our privacy policy to unify it with that of our parent company, Return Path and to present all of our policies in plain, clear language.

One of our core values is “People First!” This fundamental principle permeates every aspect of our culture, guides every decision we make, and is baked into everything we release. We think of privacy as a product in itself, and the decisions we make around privacy involve the same level of collaboration as any of our other product decisions. Every step of the way we asked ourselves, “How can we do even better for the developers who rely on our API and their users?” Our commitment to you is that we’ll always work to improve and innovate around privacy practices at Return Path.

These new policies go into effect immediately for all developers.

The new policies don’t change our existing agreements, relationship with you, or the API itself, but they should be easier to read. In the future we’ll tell you whenever we post new policies and we’ll summarize what changed.

You don’t need to take any action because of this update, but please read the new policy. If you have any questions about it, you can always reach us by submitting a request here.

Spotlight: PitchBox

PitchBox Banner

Client Spotlight: Pitchbox

Periodically we spotlight innovative companies building great tools with the help of Context.IO. One company we’re extremely proud to work with is Pitchbox. Learn how Pitchbox is making outreach and public relations teams across the world more efficient.

What is Pitchbox?

Pitchbox is an Outreach and Influencer Marketing platform built for SEO and PR professionals and agencies. Pitchbox allows users to identify, contact, and build relationships with influencers, PR prospects, bloggers, and subject matter experts. It’s an ideal application for those looking to generate buzz in the press and social media, amplify their message, increase their reach, and spread the word about their product or service.

PitchBox

How does Pitchbox do this?

Users identify relevant keywords, industries and topics, and Pitchbox crawls the web to find the most influential people in those fields. Then, users can view important site stats, contact information, email addresses, and social profile information right in the Pitchbox dashboard. This allows users to engage with influential bloggers on social media prior to pitching them. Plus, the built-in metrics give users a scorecard to better understand influencers.

Pitchbox also helps users streamline the outreach process through features like CRM, email management tools, customizable templates, automated follow-up, and performance metrics.

By pairing with Context.IO, Pitchbox is able to easily incorporate incoming email data. This key integration allows users to track email communications for each project, get notified of important updates, and ensures all of their outreach efforts are in sync.

Why are people flocking to Pitchbox?

Pitchbox understands the more you can streamline outreach, the more productive you’ll be. It doesn’t matter if you’re an agency with unlimited resources or a start-up operating out of a garage; Pitchbox can help anyone connect with influencers in just about any field.

Users of Pitchbox are establishing themselves as industry leaders through their streamlined outreach process. The bottom line is Pitchbox helps users spend less time chasing down prospects and more time closing them.

Test Exchange Accounts on Lite!

logo-Exchange-Color
You asked and we listened! Our top feature request is support for Exchange accounts and we’re working furiously to provide that functionality.

Early this month we released an Exchange MVP on Lite and we would love your feedback. The features in the MVP are limited right now, but building full Exchange support on Lite is our main focus. We will certainly keep you informed as we add new features.

What is the main purpose of the MVP?

The primary goal for MVP is to validate connectivity and authentication for a variety of versions and instances of Exchange. Beyond the authentication, there is basic functionality such as fetching folder and message lists. You are also able to fetch a raw message.

We’re looking to test authentication against as many flavors of Exchange as possible so the more accounts from different versions and servers you can test, the better. As we validate the authentication and credentials we are also working on WebHooks for Exchange as well as new endpoints.

How to connect

This can be run from the developer console, but it would be great if it were also run from actual code as well.

  1. Use http://context.io/docs/lite/users/email_accounts#post to add an email account to an existing user with exchange credentials. Make sure the ‘type’ is “exchange”.
  2. You can also hit these endpoints:
  3. Messages GET method: http://context.io/docs/lite/users/email_accounts/folders/messages#get
  4. Raw message fetching: http://context.io/docs/lite/users/email_accounts/folders/messages/raw
  5. You can also hit the method for both creating a user and adding an Exchange account (http://context.io/docs/lite/users#post).

Where to send feedback

Please send any comments, questions, and suggestions to support@context.io. Please include as much information as possible such as the version of Exchange, exact error messages, etc. We also are keen to hear which endpoints you would like us to build next or if WebHooks would be more helpful for your application.

Please let me know if you would like to schedule a call to discuss the MVP. We are always happy when we can speak directly with you!

What’s next?

Our engineers are busy creating WebHooks for Exchange and finishing the remaining Lite endpoints. We will keep you posted as we prepare for the full Exchange Beta launch on Lite. Follow our progress on our roadmap!

Follow Our Roadmap Progress!

We value our developer partners and pride ourselves on providing the best support possible. We work hard to quickly resolve any issues that may arise and offer advice on how to best utilize the API. We listen closely when you ask for new features that will make your app even more amazing.

Providing the best developer experience possible means keeping you informed of what features we’re building, what’s on our roadmap, and known issues that might affect your application. To help you keep up to date we’ve created the Context.IO Development board.

Context.IO Development board

The Context.IO team actively participates on this board and uses it to communicate its development priorities.

The board consists of four different lists. In each list there are cards where you can leave comments and feedback. The cards also are color coded so you can easily visualize the work being done on the Lite API, 2.0 API, Features and Bug Fixes.

Ideas
Check the Ideas list for features we may add to the roadmap. If you like a feature, add your vote, or leave a comment. You can also submit a feature request by contacting support@context.io.

Known Issues
These are things, usually bugs, we know about but haven’t had time to move into the schedule. Once we start the coding we’ll move the item to the In Progress column.

Accepted
Think of this as our “on deck circle”. These are items are engineers will work on next. The column contains new work that we’ve vetted and will begin as soon as resources are available.

In Progress
The Context.IO team is actively working on cards in this list. We might be at the white boarding stage but it’s part of our current workload and we’re working towards completion as soon as possible.

Live
When new features go live, they will be here. At least a few previous Live lists will remain to show what things went out a while back.

Comments? Ideas?

Feel free to leave a comment on the main Info card. If you would like a response, drop us a line at support@context.io.

We hope you find the Context.IO Development board a helpful way to stay informed of changes in the API. Please leave comments, send us your feedback, and let us know all of your feature requests. We love hearing from you and answering any questions you have about Context.IO!

BattleHack Boston

Last month Context.IO was a sponsor at BattleHack Boston 2014. It’s one of a series of global hackathon contests organized by PayPal. The competitors are tasked with solving a local problem by coding. A battle axe is awarded to the first prize winners along with admission to the world finals where competitors compete for a $100,000 grand prize.

FundMatch at BattleHack Boston

Our fearless Developer Evangelist, Tony Blank, was on hand to present special viking drinking horns to the team with the best application that incorporated the Context.IO API. The winning application was FundMatch: Efficient Giving for Effective NonProfits. We interviewed Darren Tseng from the winning team to hear how they came up with the idea for FundMatch and what problem it sought to resolve.

Who was on your team and what were their roles?

Our Backend Developer was John Rodley, the CTO of Twiage which is a Google Glass platform that allows EMTs to communicate live with doctors. Kirstian Tran from Carbonite was the Frontend Developer while I was the Designer and Data Scraper. Every good team needs a solid strategist and Product Manager, which is where Tammy Sanders came in.

Where did the idea for FundMatch come from?

The seed of our idea came from #IdeaHack, 24 hour hackathon at the StartUp Institute in which teams competed to assist Dave Delmar from resilientcoders.org. The volunteer program helps teach kids from Department of Youth Services and Boston Public Schools how to code so that they can better their lives with their new skills. One of the main deliverables for #IdeaHack was to gather a list of the most appropriate grants that ResilientCoders should apply for.

My team won the hackathon but I realized two pain points – early nonprofits have difficulty sourcing grants and that the directories we discovered either cost money or only had one level of categorization.

I presented this to the rest of the team and Tammy came up with the refined version of our idea. A platform that allowed Foundations that are overwhelmed by grant proposals to filter and rank nonprofits based on the amount of money they put towards their cause over money put towards operations.

FundMatch

What was the value proposition of FundMatch?

We sought to assist both the foundations seeking productive nonprofits and worthy nonprofits looking to demonstrate their effectiveness to foundations.

Effective nonprofits spend more on their cause than their operations. Their level of public openness and transparency also comes into play. On the other side, nonprofits have difficulty sourcing and receiving appropriate grants and many of them are not technologically savvy.

Understanding this, we decided to create a platform to allow foundations to filter the best fit nonprofit candidates to fund and allow nonprofits to send us their IRS 990 forms (which include financial data) to pull into the platform for ranking and approval. Thus, FundMatch.org was born.

How did you create FundMatch?

I started by finding an online directory of nonprofits and scraping their data for a half hour. I stopped the script after and we had a dataset of 350 registered nonprofits and their financial information. I spent some time designing the logo and registering the domain while John and Kirstian worked on setting up the front and backend architecture.

Next we integrated with the Paypal API to allow donations to nonprofits and to FundMatch. We also integrated with Context.IO to allow our platform to receive emails. John also hooked it up to a pdf parser to pull in all the data into the platform for approval.

FundMatchDetailsScreen

Did you run into any issues during the BattleHack or the final presentation?

We did have one hiccup: during the later parts of the night, “Grunt Dist” was used incorrectly and screwed up minification of our code and prevented us from using the domain to present. Fortunately, we were still able to present using the localhost.

Near the end of the gruelingly delightful experience FundMatch was as ready as it was going to be and it was Time for Tammy to hone and practice the pitch and Kirstian to drive the visuals. Knowing that timing is often part of key to winning, they both set off to practice and perfect their timing and delivery. When it came our time to pitch Tammy and Kirstian did awesome and delivered everything right before the 3 minute buzzer went off. We honestly didn’t think the other teams had a chance just because we served a solution to a serious problem for an approx. $300 billion market of nonprofits and foundations.

Have you continued your work on FundMatch?

After winning the awesome viking drinking horn that Context.IO awarded us, we felt a sense of waste. We didn’t want to leave this platform as it really would be useful for society. But, we are all too busy with our current projects.

A few days later on the way to Boston I ran into a kid who was fascinated with my Google Glass and also just graduated from the same highschool I went to. He told me that him and his friends wanted to do a startup, but never had a proper idea. I decided this was the perfect moment to hand off the flag…a Google Hangout, a Facebook chat, and a shared repository later, they’re taking it to the next level.

Congratulations to Darren and the entire team for their well deserved victory. Congratulations also go out to the Pothole Sonar team which created an application that gives auditory alerts to bikers when potholes are nearby. They recently contacted the CIO of Boston City Government and gave a demo of the app at the Mayor’s Office!

Pothole Sonar

Finally, thank you to PayPal for organizing the event to to the other partners (SendGrid, Twilio, Leap Motion, Mashery, Isobar, and Venmo) for helping make BattleHack Boston a reality.

TEMP_DISABLED Q&A

Accessing the inbox is tricky since each email provider operates differently. Not surprisingly this lack of uniformity can cause problems. One example is how the TEMP_DISABLED status is applied. If you’ve experienced it, you know it can be unpredictable and quite frustrating…but we’re here to help!

What is TEMP_DISABLED?

The TEMP_DISABLED status means the Context.IO API is temporarily unable to connect to a specific email account. The issue is specific to the account and it does not mean that there’s a problem with your application or the Context.IO API.

Why does it occur?

The status is likely due to the email server being unreachable or the email service provider throttling the API. Often there are too many simultaneous connections to the email account. The amount of connections can get quite high when you consider mobile phone apps, desktop email clients, and our services combined.

Once an email account is TEMP_DISABLED for four hours, an API request to http://context.io/docs/2.0/accounts#get can be made to attempt to reestablish a connection. After three consecutive failed connections, the IMAP syncing of this account is completely disabled and manual intervention will be needed to bring it back.

How can I tell if my accounts are TEMP_DISABLED?

If you make a request to this endpoint: http://context.io/docs/2.0/accounts#get with the status_ok parameter set to 0, it will return a list of all accounts that have sources in temporary or permanent failure.

How can I fix affected accounts?

You can attempt to fix the TEMP_DISABLED status in two ways. Hit the endpoint at http://context.io/docs/2.0/accounts/sources#id-post with either the status=1 param or the force_status_check=1 param. The difference between them is that the status param will reset the status in our records so an API request can be made by you, and the force_status_check param will actually make a request to IMAP and try to force a connection. For more information, please review the documentation on how to modify a data source on a given account.

How can I avoid the TEMP_DISABLED status?

Even though each email provider has different reasons for throttling, we can recommend a few best practices. The first is to reduce the number of API requests to the IMAP server with an efficient and judicious design of your application. For example, if you are using the 2.0 API perhaps you can use the message header data, which is cached, instead of fetching the entire message again. You can also use WebHooks for alerts when a specific type of update has occurred. This is more efficient than periodically connecting to an account to poll for new data.

Another suggestion is to prevent too many open connections on the IMAP server. Providers throttle accounts with alot of connections to protect against robots and automated scripts, prevent abnormal bandwidth utilization, and stop other abusive activity. Gmail recommends mail clients only check email every 10 minutes. More frequent checks might receive an INVALID CREDENTIALS error which we return as TEMP_DISABLED (see this article for more info). The logic will eventually correct itself via retries but it’s important not to open too many connections to user accounts through your application.

We hope this has provided insight into TEMP_DISABLED and how you can avoid it in the future. If you have any questions, please leave them in the comments section or contact our support engineers. We’re always happy to schedule a call if you have technical questions!

Status, Alerts, and Transparency



“Sometimes being too transparent can be a bad thing.” We disagree. A core value of Context.IO is being as transparent as possible. If we do the right thing and have no secrets with our partners, we’ll both know where we stand and together we can make great products.

This core value can be seen in action with our support. We set up status.context.io to keep developers posted on any issue which might affect their applications. It’s just the first step though. In the months ahead we’ll be rolling out more metrics and tools for developers to monitor the performance of their API calls.

The status page displays the current state of our overall system as well as the API, syncs, and WebHooks. If any of those features are delayed or impaired, the page is updated immediately. The Context.IO status site and our notification emails will alert you if any of our endpoints are unavailable, there’s an increase in error responses, and if syncs or WebHooks are experiencing slowness. Our status page also allows you to view incident history if you need to research past issues.

If you have not already done so, we highly encourage you to register for our status alerts. You can receive the notifications via email, text message, RSS feed, or all three! Messages are only sent when incidents are opened and resolved. The alerts will provide incident details and a resolution time frame, if one is known.

We’ve invested a lot upgrading our infrastructure and underlying code to provide even greater performance and reliability. We rarely experience system wide issues but if an issue does arise, we will notify you as soon as possible via the status page.

New Lite Features!

You asked and we listened!

We’ve had a great response from those using Lite and we’re making updates based on your feedback. We introduced two new features and have more in the works. A very special thank you to companies such as Unified Inbox and OnePageCRM for their generous input. The feedback is critically important as we continue to expand Lite functionality.

The first new feature is the attachments endpoint for messages. Having access to files from the Inbox opens up a variety of use cases for your application, which is why we deployed this new feature first.

The attachments List method (GET) allows you to pull a listing of files from an email. The response object includes such data as size, type, and file_name. It works similarly to the files endpoint in 2.0. You can also pull specific files from an email using the instance method (GET). The result of this call is the file itself.

The second new feature is the read endpoint. It has a very straightforward functionality; it marks messages as either read or unread. This is accomplished by using the POST and DELETE methods. This is a basic but very useful endpoint for developers building on top of email data.

Have any questions on these new endpoints or would like to request other new features for Lite? Please email me at dan@context.io and share your thoughts. We welcome all of your comments, questions, and suggestions. Based on our conversations with you, we’ll continue to add new features to Lite as well as 2.0.