02-06-2018 02:52 PM - edited 08-03-2022 01:09 PM
Invoca is the industry leader in call intelligence and provides marketers with insights on what happened before, during and after a phone call. Bridging the digital experience with the voice experience is essential for marketers to make informed decisions about where to focus their strategic efforts and dollars, and Invoca plays a pivotal role there. How Invoca is able to bridge that gap between digital and voice is actually quite complex and sophisticated, although we strive to make it easy and seamless for the marketer. Several moving parts are involved, with the InvocaJS library (formerly referred to as SolutionsJS or the Web Integration Code) as a cornerstone.
The InvocaJS library runs on the customer's website and is able to collect attribution details about the visit, the page being viewed, and how the user got there. Most importantly, InvocaJS collects integration details such as a Google Client ID, Adobe User ID, a custom session ID, and other data points that serve as primary identifiers in third-party systems of record. The JavaScript then is able to request or update a phone number from Invoca's servers and dynamically swap out numbers that were already on the page. That way, when a user calls to make a purchase or get help, all of the attribution details are captured and tied together. All of this happens seamlessly on page load, with only a small snippet of configuration code.
The InvocaJS library has always been a core part of how Invoca is able to get fine-grained attribution for calls, even down to the user level. What's exciting though, is in the past year we have further committed to improving the feature set of the library, making it more robust, and greatly reducing the amount of effort required by an Invoca customer to get it set up and running.
One of the biggest and most exciting changes that recently came out related to the InvocaJS library, is an entire workflow and feature set devoted to configuring and deploying the library. Until very recently, configuring the InvocaJS library was all done in JavaScript directly on the customer's landing pages or in their tag managers as custom JavaScript. This provided a lot of flexibility and power for having dynamic configurations and passing your cookies or data layer values to Invoca, but it also meant it was complex and hard to change.
In order to support a configurable Invoca tag in the platform, improvements and changes were made to our core InvocaJS library. We kept everything backwards compatible for customers that are still using the manual JavaScript configuration version, and any features we have added to support the Invoca Tag UI we made sure were also available right away to anyone using our library, regardless of whether they have migrated to the Invoca Tag yet.
Invoca is proud of its software development practices and commitment to quality. The InvocaJS library is a great example of that, as there are automated tests covering our whole code base, using the Jasmine test framework. New features or bug fixes are made using the Test Driven Development methodology to ensure that our test coverage never goes down. We improved the development workflow of the library with better tooling around local test environments, automated integration tests, and a new continuous deployment pipeline allowing developers to release new updates sooner, with less risk.
A major goal for the past year was to reduce the amount of configuration and special case code when integrating the library onto a customer's website. We removed the requirement that customers specify the exact format of every number they have on their page. For example, previously if the web team changed the contact number from being separated by hyphens to periods, our integration would break. This was of course inconvenient and error-prone, so we refactored our number detection and swapping logic. The new functionality provides more flexibility, better vanity number support, and improved international number support. Fewer code updates required on the customer site is an added benefit.
Mobile support has always been a priority, and the InvocaJS library works well with mobile landing pages containing tel links (tap to call links or buttons). We have continued to refine and improve the logic around finding tel links on the page and swapping the link target even if a phone number isn't visible on the page. We also fully support Google AMP pages.
We revamped our logging capabilities and eliminated some confusing and redundant messages in our debug output, enabling customers to self-serve most issues that may arise during integration and testing.
Websites continue to become more sophisticated, with more pages using JavaScript frameworks such as React or Angular to render their content. These types of websites are often referred to as Single Page Applications, because after the initial page load, subsequent clicking on links or buttons swap views into place without a full browser page load. On the technical side, this means that as a user navigates around the site, the next "page" of HTML contents are loaded asynchronously, and a new "page ready" event is not fired. We're happy to announce that with the latest versions of InvocaJS, it is much easier to hook directly into a framework's render system and invoke our logic after any view content is swapped. This allows us to always swap out phone numbers that match the configuration settings, even if they render later in the page's execution lifetime.
While we accomplished a lot in the past year, we are already working on additional features and improvements to the InvocaJS library. A primary focus is improving how we collect and attribute data on each call that occurs, and making that easier for marketers to configure and experiment with. There are other areas, including Single Page Application support, where we can continue to be more intelligent out of the box, thus further reducing custom configurations.
We strive to improve on usability and performance in a continuous manner. Our customers' feedback is very important to us and we would love to hear from those of you that use our library and how we can make things even better this year!