Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Tuesday, 28 January 2020

Chicago’s ActiveCampaign raises $100M for an all-in-one marketing and sales automation platform

Marketing and sales automation — tools that leverage the advances and data of our digital age to better identify and then interact with customers — is big business, with the whole market expected to generate some $6.6 billion in revenues for related companies by 2025.

But “companies” is the operative word here: it’s a very fragmented space, with dozens of hopefuls covering different aspects of marketing and sales, each with its own unique approach. There is an alternative trend, though, and today a customer experience automation company called ActiveCampaign, catering not just to large enterprises but small and medium businesses too, has raised a large round of funding to build out its own one-stop-shop model. It includes the tools to run email and messaging-based marketing campaigns; marketing automation across sites and events; and sales and CRM.

The Chicago-based company is today announcing that it has closed a Series B of $100 million, money that it will use to invest in building out new technology and to expand internationally. The funding is being led by Susquehanna Growth Equity, with PE firm Silversmith Capital Partners also participating.

ActiveCampaign is not your typical startup. It has been around since 2003, and this is only the second time that it has raised money — the first time was in 2016, a modest $20 million round from Silversmith. Fundraising is not the only thing that sets it apart: it’s also profitable and has been for years (one reason it hasn’t raised money), and it’s actually already quite large, with 90,000 customers in 161 countries.

Yet it’s something of a theme in the world of “startups” — meaning tech companies that are still privately owned and raising from VCs and related backers — particularly those that are B2B focused, that some of the more interesting and successfully bootstrapped of them at some point turn to VC and private equity when it comes to needing an extra boost to move beyond what has become its natural growth rate.

In the case of ActiveCampaign, it had a taste of what a little outside investment could do in the last few years: Jason VandeBoom, founder and CEO of ActiveCampaign, said that the company has seen its annual recurring revenues grow 6x since 2016 to $90 million, with employees booming from 65 to more than 550.

The company’s core proposition is that it provides a less fragmented approach to businesses interested in building in some digital marketing or sales tools into their outreach and then considering what to do next.

“What we are up against are a number of companies focused on a single slice of customer experience, either CRM or a customer success platform,” VandeBoom said. “We’re still at this point in the industry where the category is taking shape,” which spells a ripe opportunity for ActiveCampaign.

The need for what ActiveCampaign provides is a basic one: whether you are an online retailer or any business that wants to expand its audience or make sure to stay connected to the one you already have, you need tools to reach users, figure out what they want to see from you, and connect in a relevant way.

VandeBoom added while there are no specific plans for acquisitions that can be discussed now, the funding also gives the company “optionality” in terms of what it might do next.

Part of the company’s approach is to build technology in-house, but in the spirit of all-in-one platforms, its value also lies in how many other things its users can plug into using ActiveCampaign.

The company has some 260 technology partners and a “recipe library” with more than 250 automations already built, or users can build and customise themselves from more than 300 possible apps that can be integrated, including Shopify, Square, Facebook, Eventbrite, and Salesforce.

With this round, Martin Angert, Director at Susquehanna, is joining ActiveCampaign’s board of directors. His existing roles on the boards of Workfront, WhiteSource, XebiaLabs, and Allocadia speaks to interesting potential strategic partnerships for ActiveCampaign.

“ActiveCampaign and the CXA category have grown significantly and our investment in the series B reconfirms Silversmith’s commitment to ActiveCampaign’s future,” said Todd Maclean, Co-Founder & Managing Partner of Silversmith Capital Partners, in a statement.



from TechCrunch https://ift.tt/2RvSwXv
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support