Changelog

We want this page to be useful, so we just describe the most notable changes to our Widget and API. Occasionally, we’ve listed a bug fix when it is of interest but usually we skip those so we don’t overwhelm this page.


November, 2018

  • We fixed an issue with clock skew and our short-lived auth token for the widget. The problem was that on some user agents, the auth token looks invalid before it expires on the server. This isn’t a problem in most cases, but on some systems, the clock was skewed too far and even a fresh token looked like it had expired. The solution was to simply trust any fresh tokens that the client receives and let the server reject it if it isn’t valid.

  • When our widget is hosted inside an iframe on a page, we now capture the site from the parent of the iframe. This change should not have any impact on any existing integrations. However, if you are using our widget inside an iframe, let us know and we can help verify that your installation is solid.


October, 2018

  • Mailing addresses can now be displayed in the widget using the displayContactColumns option. Check out the sample here.

  • Added support for authentication using a JWT.

  • Fixed an authentication issue that prevented the widget from authenticating properly in a few cases.


September, 2018

  • We’re very proud and excited to share our new customer portal. We believe that it makes it much easier for you to set up your CloudSponge account and monitor its performance.

  • Added the address book’s import ID to the beforeImport callback so that customers may download the address book asynchronously to their app server.

  • Investigated slow imports from Gmail and fixed it by sending the appropriate headers to force a compressed payload to be returned.


August, 2018

  • Added real-time monitoring for our upstream requests. This will help us proactively identify if any address book providers are performing poorly.


July, 2018

  • We laid the groundwork for better verifying your Proxy URL as you set up your Google OAuth and others. The rest of these changes are coming soon; stay tuned.

  • We spent some cycles digging into and resolving a few intermittent errors in the widget. Hardly worth mentioning. But the widget’s better for it.


June, 2018

  • New language: Dutch! 🇳🇱

  • We added a beforeGathering callback to indicate the moment when contacts are starting to be collected from the address book source.

  • Our Yandex.ru integration was misbehaving, but now it’s back.

  • Physical addresses were not being parsed correctly from AOL, iCloud and some others. Now they are. 💥


May, 2018

  • GDPR happened and we are all still here. We have made an update to our … OK, OK, I know that you’ve heard it many times already. I won’t repeat it. But If you haven’t gotten enough of it, you can read about how we comply with the GDPR.

  • Our Yandex.ru integration needed some love. So we gave it some. And by that, I mean that we updated the magic URLs. Bol had also broken, so we fixed it too.

  • PhantomJS was raising errors in the widget code. If you are performing automated testing on a page with our widget, it should work properly, just like in a browser.


April, 2018

  • We have an option to disable tracking and cookie use in the widget to help customers comply with GDPR’s requirements. If your users in the EU haven’t consented to tracking or cookies, use noTracking: true to turn it off. And here’s a [trivial example(/address-book-widget/examples/noTracking/).

  • Out Outlook.com imports now pull from the Microsoft Contacts and People APIs in order to better reflect the contacts that users see in their Outlook.com address book. We had noticed that some of our ancient contacts from Hotmail didn’t show up in imports. Now we grab these and we also access contact information from people who appear in your email list. Oh, and this is a ditto for Office 365. 💥

  • We can now parse CSV files that use underscores in the name field headers. We also return the notes field for more sources like Yahoo, iCloud and AOL.


March, 2018

  • AOL got a big update after they turned off their Contacts API. We might have set a record for updating our integration to use their CardDAV service. We didn’t exactly cheat, but we’ve don’t this kind of integration a few times before.

  • Sorting in our widget was only taking the first letter into account which was weak. Now contacts appear sorted, as in like a dictionary.


February, 2018

  • We have added more complete contact data for Gmail. Look for notes, relations, websites, ims and custom data in the payload.


January, 2018


December, 2017

  • Happy Holidays! Since updating the widget architecture, we’ve kept an eye on it and fixed a few bugs.


November, 2017

  • The bulk of our development efforts have been focussed on the latest big change to our widget. We have accumulated some technical debt and it was time to pay it down. We’re very excited about our lighter, faster, stronger widget.

  • We have started to internally monitor for issues with any of our OAuth sources. We can detect issues with your Proxy URL, or your OAuth app for Google, Yahoo, Outlook.com or Office365. If something seems amiss, we’ll reach out to you.

  • There was an bug with parsing VCards with multiple contacts, we squashed it. Terra’s interface has changed so we updated our API to accommodate it.


October, 2017

  • You can now suppress the confirmation dialog when a user deselects all their selected contacts.

  • We’ve been hard at work laying the foundation for a newly architected version of the widget. It’s going to be much faster and user fewer web requests to load fewer and smaller assets. It’s a bit of repayment of some technical debt that we’ve accrued and it’s feeling great!

  • Customizing our stylesheet is OK if you want to make a couple simple changes like colors, margins, padding, borders, etc. If you are interested in bigger changes like moving elements around or suppressing the mobile display then you shouldn’t need to learn our CSS in depth to achieve your goals.
    Enter Themes! Each theme is a unique starting layout for our widget. You can further customize the theme with your own CSS. Our first two themes are live.
    If you want to propose something complete different, send us a mock up of what you’d like the widget to look like and we’ll see what we can do.

  • LInkedin make some changes to their UI and zip file format so we are keeping pace as they bob and weave.


September, 2017

  • Themes have come to the widget, starting with a very basic one that suppresses the responsive layout. If you are considering applying a custom style using the css option, reach out to us to ask about a new theme instead.

  • SPA and Turbolinks support! You can now load the widget script in the head of the page and call cloudsponge.init(...) whenever you need to (re)initialize the widget before launching it.

  • We’re always happy for a chance to improve the accessibility of our widget. This change suppresses the tabstops on hidden elements in our UI to reduce confusion of screen readers.

  • In the few months since publishing our document on the Google OAuth review process, there have been some changes and we’ve received feedback from a bunch of you who have run into hurdles put up by Google. We’ve update the document with our most recent learnings.

  • Setting up your Google OAuth credential from scratch is easy, when you know how. We published a single document aiming to achieve enlightenment in this area. Let us know if we succeeded or not.


August, 2017

  • Looking for a way to manage your CloudSponge payments in one place? Look no further! We are now part of the AWS Marketplace where you can manage your CloudSponge subscription and payment directly within your AWS account. Check out our listing!

  • You can now display phone numbers in the contact list and users can pick from multiple ones to submit. It works on desktop and mobile UI.

  • Users can now search for contacts by the name of the group that they belong to.

  • Our widget was hiding the important messaging about refreshing your contacts from the source when there was nothing to display in the list. Well that’s fixed now.


July, 2017

  • Mail.ru now returns more contacts! The OAuth APIs that Mail.ru exposes do not return a meaningful number of contacts that have an email address. To improve the result, we changed the import type to accept a username and password. Don’t worry. We’ve taken care of everything for you if you are using our widget.

  • We published an aptly named article about how Airbnb build one of the most successful referral programs ever. Check it out here.

  • We fixed Linkedin CSV parsing when individual files are uploaded instead of the whole zip file. Linkedin confusion has been reduced just a little bit more.


June, 2017

  • Lots of folks have been asking us about the new Google OAuth Review process so we summarized our knowledge on how to navigate the new requirement.

  • The widget now uses a CSS class to indicate the current state on the container. This means that it’s easy to do things like hide the UI only while an import is in progress using just CSS!

  • The afterImport callback is now invoked when popup closes prematurely so your app can immediately detect and respond if the user abandoned the import.

  • The new skipContactsDisplay allows you to declare that you want so suppress the contacts selection screen explicitly. We think it’s a lot clearer like this.

  • No longer does the onlyGroupedContacts option conflict with a custome filter. Both are given due respect.

  • Fixed imports from Linkedin and Yandex.


May, 2017

  • Linkedin launched a whole new user interface and with it came a change to how they allow users to export their contacts. We updated our service to accept the new data archive zip file and also present specific instructions to users to help guide them through this new process.

  • Google imposed a manual review step on new OAuth developer accounts who requst access to ‘risky permissions’ like address books. It’s a beneficial step because it will help keep the trust of users ensuring that they will continue to want to share their data. However, it’s an extra step that all new customers must take to enable Gmail imports for their integration so we’ve provided specific instructions on how to navigate this new review process and continue to test while you wait.

  • Made our /events endpoint respond even faster.

  • Our widget causes security exceptions to be logged in the browser’s console. It doesn’t interfere with the widget behaviour but it generates noise for customers who monitor for that sort of thing. We addressed many of these isses and are still working to address more.


April, 2017

  • Improved Widget: our iCloud 2-step verification documentation for widget users.

  • For too long we’ve heard that it’s hard to make simple changes to the email format in the textarea because you needed to write your own javascript code. Now we’ve introducted some simple options to cover the common formatting cases, contactsDelimiter and contactsTemplate.

  • We have a new option to always display the CTA on the contact selection screen of the widget. By default we hide the CTA if there are no contacts selected and that’s not everyone’s bag of tea. So you can change it with alwaysShowCTA.

  • We resolved an vague and mysterious issue where sometimes our widget would fail to work for some customers.

  • We have reduced the reporting of inaccurate failures on our contact-importers page.

  • CSV uploads will parse a name field into a first and last name. In case you have a CSV file with the full name in one field.


March, 2017

  • Don’t like javascript alerts? We don’t blame you. Now we support a new new callback that let’s you decide how to let your users know when they’ve tried to select too many contacts. onSelectionLimitReached is for you.

  • Some address books have lots of nameless email addresses. Some have a few. For some reason we used to assume that these contacts were all named “Unknown” but then we asked around and it turns out that we don’t know anybody by that name. So now we use the email address instead of ass-u-me-ing.

  • There was a weird bug on mobile devices on select sites. An empty native select UI would display for contacts with 1 email address and it wouldn’t show up at all for contacts with multiple email addresses. Users may have felt like they had been fed crazy pills. They had not. It was a bug. And we squashed it.


February, 2017

  • We fixed our Microsoft integrations to properly retrieve the owner contact from Outlook.com and Office365. There’s at least three different ways that the owner contact is returned from these sources. Anyway, we found that for some of the various possible combinations of developer accounts, OAuth flows and Contacts APIs, the owner contact was not in one of the three usual places. So we’re now looking in a fourth place to make sure we get it every time.

  • People do crazy things. Sometimes, users of our widget will even upload VCard data on the CSV import page! Can you imagine? We now do the right thing in this nutty situation.

  • Our widget got some love too. The most interesting fix this month was to correct the display on mobile devices when there is more than one email for a contact. OK, that wasn’t so interesting but we’re proud of it anyway.

  • We took some preventative measures and moved a bunch of non-urgent reporting queries to the read-replica to keep access on the master database need-to-write-only. Everythings works more smoothly and our CPU graphs are oh so pretty.


January, 2017

  • Microsoft supports accessing Outlook.com and Office365 via a common API. Existing branding just works™ with the new APIs. However, you might want to update your Microsoft branding to take advantage of simpler permissions.

  • We found out that the new Outlook.com API supports most Outlook.com email accounts. Our system will still support the old version of the API until 100% of Outlook.com email accounts use the new API.

  • We were not closing the widget if the OAuth window was closed before the flow completed. This left the widget UI waiting endlessesly. We taught the widget to know better and now it packs itself up when this happens.

  • selectLimit was hard to change after the widget had already loaded. Now you can set this option to be a function that returns the value you want. This is handy if your users may import multiple times on a single page load.

  • We published our first case study. It’s about Gainfully who improved their product and their onboarding with our service.

  • We finally published this changelog page!


December, 2016

  • We updated the original widget include to serve the universal snippet bootstraping code. This won’t migrate customers to the universal snippet automatically, but it will make the migration even easier.


November, 2016

  • Oh, ho! We got a new homepage!

  • An obscure CSV upload bug got squashed; sometimes the proper delimiter was not being detected properly in very small CSV files.

  • WindowsLive now supports the newer Office.com API and will fail back to using the deprecated Live Contacts API. We will continue supporting the deprecated API while Microsoft migrates existing address books to Office.com support. There is no change required to your integration.

  • French language support for the new widget! Just use locale: 'fr'.

  • We buttoned down CSS isolation in the new widget. Your site styles are beautiful on your site. They don’t necessarily mix well into our widget UI.

  • Now displays the selection limit message as needed when a user clicks on “Select All”.


October, 2016

  • Environmental update: Reduce, Reuse, Recycle. This is an exciting improvement to the widget! When a user attempts to connect their address book a second time, we can now instantly display it. It is a big improvement to the UX with full transparency to the user. This is also a great tool for customers to reduce integration complexity, reduce the scope of PII and reduce the cost of their service. Wow!

  • Numerous issues were affecting IE10 and below because we were using ECMAScript 5 features that were not supported. We reined in our horses and now use IE friendly Javascript instead.
    Long contact names were breaking onto two lines which messed up the uniformity of the list of contacts. No longer!
    An empty address book was raising an exception when displaying no contacts. This is fixed too.

  • When you went to add a team member to your account, you saw the hideous old widget UI! Don’t worry, the soothing new widget is in place. We appologize for any eyes that were scratched out becuase of this oversight.


September, 2016

  • CSV Level-up: We added CORS support to our /c/csv endpoint to support our client libraray.
    CSV files with alternative separators used to require quotation characters around each field. We thought this was an unreasonable expectation when we found out about it breaking import for folks in non-North American markets.

  • We now show names in the widget, even when name is not specified in the list of fields to include.
    Our script behaved badly when it was included multiple times on a single page. Now it behaves properly if you accidentally on purpose, add it twice.
    If you made a typo in your credentials in the new widget you couldn’t submit the form again unless you closed the widget. Well it’s fixed now. Also we notify the user sooner when returning from the OAuth flow by throwing up the loading screen as soon as the widget code loads.

  • When the widget opens a popup window, it now opens in the centre of the browser window, right over top of the widget. Several customers have asked for this over the past year and now that we see how much better it works, we wish that we’d made time to change it sooner!

  • Fixed Web.de integration with the new widget

  • CORS! Any of our API endpoints will respond to an OPTIONS request in public.
    More CORS! The widget can now accept a file upload via CORS.

  • iCloud now supports users with 2-factor authentication enabled!

  • The widget now responds to dynamic HTML. If you add a link to the page, calling cloudsponge.init will find it and enable it to launch the widget!


August, 2016

  • The new widget offers standard translations for English, Brazilian Portuguese and Bulgarian.


July, 2016

  • The new widget is generally available! Read about the new features, why you should upgrade and some of the benefits.

  • QIP.ru source fix for changes in the source origin service
    Mail2World source fix for changes in the source origin service
    BOL source fix for changes in the source origin service
    Naver source fix for changes in the source origin service


June, 2016

  • New Widget Beta was released.

  • Fix Rediff not importing contacts for different servers Fix DOB in Mail.com the Mail.com date format change to DD.MM.YYYY


May, 2016

  • New Status Server structure, adding tests for all fields imported.

  • Fix QIP.Ru tests in status server

Create your sandbox account now

Get Started

Your trial doesn’t start until you go live.