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.
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.
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.
There were two big developments this month relating to Gmail and Linkedin.
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
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.
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
cover the common formatting cases,
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.
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.
decide how to let your users know when they’ve tried to select too many contacts.
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.
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.
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!
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.
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”.
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
Numerous issues were affecting IE10 and below because we were using ECMAScript 5 features that were not supported.
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.
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!
The new widget offers standard translations for English, Brazilian Portuguese and Bulgarian.
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
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
New Status Server structure, adding tests for all fields imported.
Fix QIP.Ru tests in status server
You made it!
We have been making changes for a lot longer than we've been publishing them.
As a reward for looking this far into the past, here's our commit graph for most of our history.