{"id":27,"date":"2019-10-31T13:59:06","date_gmt":"2019-10-31T13:59:06","guid":{"rendered":"http:\/\/otb.agency\/?p=27"},"modified":"2020-01-18T08:33:00","modified_gmt":"2020-01-18T08:33:00","slug":"configuring-ubuntu-18-04-for-mautic-hosting","status":"publish","type":"post","link":"https:\/\/otb.agency\/?p=27","title":{"rendered":"Configuring Ubuntu 18.04 for Mautic hosting"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">In recent years, Mautic became one of the most promising players in the marketing automation industry. Their approach to open marketing and active community makes them unique by offering powerful tools to your disposal, without setting a price tag. Of course, you can pay for their service and additional tools that will help you manage your marketing activities at scale. The open-source nature of Mautic, allows you to use it on your servers, without additional costs. However, one of the things you need to take care by yourself is Mautic installation.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">All you need to get started with Mautic is one server, preferably dedicated or VPS and a couple of hours for proper configuration.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This post will be a part of a series where I will try to explain to you how to set up and run your Mautic instance. The first part will cover preparing and configuration of the server, as well as the installation process. So let\u2019s jump in.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To run a Mautic, you can use whatever the server stack you want, as long as it has the ability to run PHP applications and have the MySQL database server. For full requirements, you can check <\/span><a href=\"https:\/\/www.mautic.org\/download\/requirements\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"font-weight: 400;\">their website<\/span><\/a><span style=\"font-weight: 400;\"> for specific versions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this series, I will use the following stack:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Fresh Ubuntu 18.04 server<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">LEMP stack (PHP 7.2, Nginx, MariaDB 10.4)<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">For queue management, I will use the RabbitMQ management system<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">I\u2019ll assume that you are using a fresh install of Ubuntu 18.04 Server.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">At the end of these series, you will have a complete marketing automation tool with only costs being charges for your server.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Preparing server<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Before installing Mautic, we first need to install our web server and database.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">SSH to your server and get the latest updates<\/span><\/p>\n<pre><code class=\"language-bash\">sudo apt update \r\nsudo apt upgrade -y<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">After the process is complete install the nginx server:<\/span><\/p>\n<pre><code class=\"language-bash\">sudo apt install nginx<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Next, we are installing PHP 7.2 (as of the moment of writing this article, Mautic still requirements are limited to max PHP 7.2). Alongside PHP we will install all required extensions as well. The default PHP version in Ubuntu 18.04 is 7.2 so installation is a piece of cake.<\/span><\/p>\n<pre><code class=\"language-bash\">sudo apt install -y php7.2 php7.2-common php7.2-gmp php7.2-curl php7.2-intl php7.2-mbstring php7.2-xmlrpc php7.2-mysql php7.2-bcmath php7.2-gd php7.2-xml php7.2-cli php7.2-zip<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Now let&#8217;s enable PHP-FPM service<\/span><\/p>\n<pre><code class=\"language-bash\">sudo service php7.2-fpm enable<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">And make sure that the service is started\u00a0<\/span><\/p>\n<pre><code class=\"language-bash\">sudo service php7.2 restart<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">The last part of our stack is installing MariaDB database server. First, let&#8217;s install <strong>software-properties-common<\/strong>\u00a0package in case it\u2019s missing<\/span><\/p>\n<pre><code class=\"language-bash\">sudo apt-get install software-properties-common<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Next, we\u2019ll add the repository key to our system:<\/span><\/p>\n<pre><code class=\"language-bash\">sudo apt-key adv --recv-keys --keyserver hkp:\/\/keyserver.ubuntu.com:80 0xF1656F24C74CD1D8<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Once we added the repository key, we\u2019ll add MariaDB repository which will allow us to install our database server.<\/span><\/p>\n<pre><code class=\"language-bash\">sudo add-apt-repository \"deb [arch=amd64,arm64,ppc64el] http:\/\/mariadb.mirror.liquidtelecom.com\/repo\/10.4\/ubuntu $(lsb_release -cs) main\"<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Last step database server configuration is installation itself<\/span><\/p>\n<pre><code class=\"language-bash\">sudo apt update\r\n\r\nsudo apt -y install mariadb-server mariadb-client<\/code><\/pre>\n<h3><span style=\"font-weight: 400;\">Create a database for Mautic instance<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">MariaDB 10.4 comes with new authentication system so you can log in to database by using a command\u00a0<\/span><\/p>\n<pre><code class=\"language-bash\">sudo mysql<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">We are gonna create a database:<\/span><\/p>\n<pre><code class=\"language-sql\">create database mautic;<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Next, we will create a user:<\/span><\/p>\n<pre><code class=\"language-sql\">create user \u2018mautic\u2019@\u2019localhost\u2019 identified by \u2018StrongPassword\u2019;<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">When creating a new user, I suggest that you create a strong password, you can use strongpasswordgenerator.com. However, remember that password since you will need it during Mautic installation.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">We will allow all permissions on the database to the created user:<\/span><\/p>\n<pre><code class=\"language-sql\">grant all permissions on \u2018mautic\u2019.*\u00a0 to \u2018mautic\u2019@\u2019localhost\u2019;\r\nflush privileges;\r\nEXIT;<\/code><\/pre>\n<p><span style=\"font-weight: 400;\">Congratulations, you have completed database configuration. We have three more steps to complete before installing the Mautic.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">Nginx configuration<\/span><\/h3>\n<p>First, big shoutout to <a href=\"https:\/\/gist.github.com\/proffalken\" target=\"_blank\" rel=\"noopener noreferrer\">Matthew Macdonald-Wallace<\/a> who created <a href=\"https:\/\/gist.github.com\/proffalken\/ebfa9debc4eef929b0163d11a80af349\" target=\"_blank\" rel=\"noopener noreferrer\">gists<\/a> with for nginx and PHP-FPM configurations. I&#8217;ve modified them a bit for the needs of this tutorial.<\/p>\n<p><strong>Note: <\/strong>In the tutorial, I will use the domain name <em><strong>mautic.yourdomain.com<\/strong><\/em>. In order to make it work, <strong>replace this domain<\/strong> with your domain name in all the following files.<\/p>\n<p>Create a new nginx configuration file by running the command:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/nginx\/sites-available\/mautic.yourdomain.com.conf<\/code><\/pre>\n<p>Copy the following lines to a newly created file. <strong>Don&#8217;t forget to update the domain to the one you will use!<\/strong><\/p>\n<pre><code class=\"language-nginx\">server {\r\n    listen 80;\r\n    server_name   mautic.yourdomain.com; # This is the domain name you want to use for your Mautic installation\r\n    root \/var\/www\/mautic.yourdomain.com\/htdocs; # The path where you will download your Mautic installation\r\n    server_tokens off;\r\n    add_header 'Access-Control-Allow-Headers' 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,If-Modified-Since';\r\n    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';\r\n\r\n    error_log \/var\/www\/mautic.yourdomain.com\/logs\/error_log; # Path for error logs if they appear, for easier debugging\r\n    access_log \/var\/www\/mautic.yourdomain.com\/logs\/access_log; # Path for access logs\r\n\r\n    client_max_body_size 64M;\r\n\r\n    gzip on;\r\n    gzip_disable \"msie6\";\r\n    gzip_min_length 256;\r\n\r\n    gzip_vary on;\r\n    gzip_proxied any;\r\n    gzip_comp_level 6;\r\n    gzip_buffers 16 8k;\r\n    gzip_http_version 1.1;\r\n    gzip_types\r\n        font\/truetype\r\n        font\/opentype\r\n        font\/woff2\r\n        text\/plain\r\n        text\/css\r\n        text\/js\r\n        text\/xml\r\n        text\/javascript\r\n        application\/javascript\r\n        application\/x-javascript\r\n        application\/json\r\n        application\/xml\r\n        application\/rss+xml\r\n        image\/svg+xml;\r\n\r\n        error_page 404 \/index.php;\r\n\r\n\r\n    # redirect index.php to root\r\n    rewrite ^\/index.php\/(.*) \/$1  permanent;\r\n\r\n    #######################################\r\n    ##  Start Mautic Specific config #####\r\n    #######################################\r\n\r\n    # redirect some entire folders\r\n    rewrite ^\/(vendor|translations|build)\/.* \/index.php break;\r\n\r\n    location \/ {\r\n        # First attempt to serve request as file, then\r\n        # as directory, then fall back to index.html\r\n        # one option: try_files $uri $uri\/ \/index.php$is_args$args;\r\n        try_files $uri \/index.php$is_args$args;\r\n        # Uncomment to enable naxsi on this location\r\n        # include \/etc\/nginx\/naxsi.rules\r\n    }\r\n\r\n    # Deny everything else in \/app folder except Assets folder in bundles\r\n    location ~ \/app\/bundles\/.*\/Assets\/ {\r\n        allow all;\r\n        access_log off;\r\n    }\r\n    location ~ \/app\/ { deny all; }\r\n\r\n    # Deny everything else in \/addons or \/plugins folder except Assets folder in bundles\r\n    location ~ \/(addons|plugins)\/.*\/Assets\/ {\r\n        allow all;\r\n        access_log off;\r\n    }\r\n    # location ~ \/(addons|plugins)\/ { deny all; }\r\n\r\n    # Deny all php files in themes folder\r\n    location ~* ^\/themes\/(.*)\\.php {\r\n        deny all;\r\n    }\r\n\r\n    # Don't log favicon\r\n    location = \/favicon.ico {\r\n        log_not_found off;\r\n        access_log off;\r\n    }\r\n\r\n    # Don't log robots\r\n    location = \/robots.txt  {\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    # Deny yml, twig, markdown, init file access\r\n    location ~* \/(.*)\\.(?:markdown|md|twig|yaml|yml|ht|htaccess|ini)$ {\r\n        deny all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    # Deny all attempts to access hidden files\/folders such as .htaccess, .htpasswd, .DS_Store (Mac), etc...\r\n    location ~ \/\\. {\r\n        deny all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    # Deny all grunt, composer files\r\n    location ~* (Gruntfile|package|composer)\\.(js|json)$ {\r\n        deny all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    # Solve email tracking pixel not found\r\n    location ~ email\/(.*).gif {\r\n        try_files $uri \/index.php?$args;\r\n    }\r\n\r\n    # Solve JS Loading 404 Error\r\n    location ~ (.*).js {\r\n        try_files $uri \/index.php?$args;\r\n    }\r\n\r\n    #######################################\r\n    ##  End Mautic Specific config #####\r\n    #######################################\r\n\r\n    location ~*  \\.(jpg|jpeg|png|ico|pdf)$ {\r\n        expires 15d;\r\n    }\r\n\r\n    # Deny access to any files with a .php extension in the uploads directory\r\n    location ~* \/(?:uploads|files)\/.*\\.php$ {\r\n        deny all;\r\n    }\r\n\r\n    location ~ \\.php$ {\r\n        try_files $uri =404;\r\n        fastcgi_split_path_info ^(.+\\.php)(\/.+)$;\r\n        fastcgi_index index.php;\r\n        fastcgi_pass  127.0.0.1:9002;  # The port on which PHP-FPM process will run\r\n        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n        include fastcgi_params;\r\n    }\r\n}<\/code><\/pre>\n<p>Check if your configuration file contains any errors:<\/p>\n<pre><code class=\"language-bash\">sudo nginx -t\r\nnginx: the configuration file \/etc\/nginx\/nginx.conf syntax is ok\r\nnginx: configuration file \/etc\/nginx\/nginx.conf test is successful<\/code><\/pre>\n<p>If your output matches the lines above, you should enable the created site configuration<\/p>\n<pre><code class=\"language-bash\">sudo ln -s \/etc\/nginx\/sites-available\/mautic.yourdomain.com.conf \/etc\/nginx\/sites-enabled\/<\/code><\/pre>\n<p>and restart the nginx service<\/p>\n<pre><code class=\"language-bash\">sudo service nginx restart<\/code><\/pre>\n<h3><span style=\"font-weight: 400;\">PHP-FPM configuration<\/span><\/h3>\n<p>We are getting closer to finishing the configuration of our server. What we have remaining is configuring the PHP-FPM and the last step will be adding the LetsEncrtypt SSL certificate to our Mautic installation.<\/p>\n<p>Let&#8217;s create a new PHP-FPM pool for our instance.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/php\/7.2\/fpm\/pool.d\/mautic.conf<\/code><\/pre>\n<p>Copy and paste the following lines to the newly created file. And again, don&#8217;t forget to update the domain name. Also, don&#8217;t forget to update the timezone to the location of your server.<\/p>\n<pre><code class=\"language-bash\">[mautic]\r\nuser = www-data\r\ngroup = www-data\r\n; Match the listen directive to the one from your nginx configuration\r\nlisten = 127.0.0.1:9002\r\npm = dynamic\r\npm.max_children = 5\r\npm.start_servers = 1\r\npm.min_spare_servers = 1\r\npm.max_spare_servers = 2\r\nslowlog = \/var\/www\/mautic.yourdomain.com\/logs\/mautic-slow.log\r\nphp_admin_value[error_log] = \/var\/www\/mautic.yourdomain.com\/mautic-error.log\r\nphp_admin_value[open_basedir] = \/var\/www\/mautic.yourdomain.com\/htdocs      \r\nphp_admin_value[upload_tmp_dir] = \/var\/www\/mautic.yourdomain.com\/htdocs\/tmp\r\nphp_admin_flag[log_errors] = on\r\n; Change the timezone to match your servers timezone\r\nphp_admin_value[date.timezone] = Europe\/Amsterdam<\/code><\/pre>\n<p>Let&#8217;s restart the PHP-FPM service<\/p>\n<p><code class=\"language-bash\">sudo service php7.2-fpm restart<\/code><\/p>\n<p>With our nginx and php-fpm configuration complete, let&#8217;s secure our instance by adding SSL certificate. Before we proceed with the final step, make sure that you update your domain settings to point to your server. If you are using mautic.yourdomain.com to host your instance, then you must create A record for mautic.yourdomain.com that will point to the IP address of your server.<\/p>\n<p><strong>Note:<\/strong> If you are using Cloudflare to manage your DNS settings, you must disable CF Proxy and expose your server&#8217;s IP address in order to generate the LetsEncrypt SSL certificate.<\/p>\n<p>Assuming that you created DNS records, now it&#8217;s time for the configuration of your webserver. We will enable Ubuntu&#8217;s firewall <strong>ufw\u00a0<\/strong>and allow only SSH, HTTP and HTTPS protocols on it.<\/p>\n<p><code class=\"language-bash\">sudo ufw allow 'OpenSSH'<br \/>\nsudo ufw allow 'Nginx Full'<br \/>\nsudo ufw reload<\/code><\/p>\n<p>Check the status of <strong>ufw<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo ufw status\r\n\r\nStatus: active\r\n\r\nTo                         Action      From\r\n--                         ------      ----\r\nOpenSSH                    ALLOW       Anywhere\r\nNginx Full                 ALLOW       Anywhere\r\nOpenSSH (v6)               ALLOW       Anywhere (v6)\r\nNginx Full (v6)            ALLOW       Anywhere (v6)\r\n\r\n<\/code><\/pre>\n<p>If you get the status like the output above, you may proceed with the installation of Certbot which we will use to generate and renew the SSL certificate.<\/p>\n<p>We are gonna add Certbot repository:<\/p>\n<pre><code class=\"language-bash\">sudo add-apt-repository ppa:certbot\/certbot\r\nsudo apt update<\/code><\/pre>\n<p>After the update is complete, let&#8217;s install the Certbot itself<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install python-certbot-nginx<\/code><\/pre>\n<p>After the installation is complete, all we have to do now is to run a command that will generate our certificate and add it to the server.<\/p>\n<pre><code class=\"language-bash\">sudo certbot --agree-tos -m your@email.com --redirect -d mautic.yourdomain.com<\/code><\/pre>\n<pre><code class=\"language-bash\">Saving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\r\nPlugins selected: Authenticator nginx, Installer nginx\r\nObtaining a new certificate\r\nPerforming the following challenges:   \r\nhttp-01 challenge for mautic.yourdomain.com\r\nWaiting for verification...\r\nCleaning up challenges\r\nDeploying Certificate to VirtualHost \/etc\/nginx\/sites-enabled\/mautic.yourdomain.com.conf\r\nRedirecting all traffic on port 80 to ssl in \/etc\/nginx\/sites-enabled\/mautic.yourdomain.com.conf\r\n\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\nCongratulations! You have successfully enabled https:\/\/mautic.yourdomain.com\r\n\r\nYou should test your configuration at:\r\nhttps:\/\/www.ssllabs.com\/ssltest\/analyze.html?d=mautic.yourdomain.com\r\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\r\n\r\nIMPORTANT NOTES:\r\n - Congratulations! Your certificate and chain have been saved at:\r\n   \/etc\/letsencrypt\/live\/mautic.yourdomain.com\/fullchain.pem\r\n   Your key file has been saved at:\r\n   \/etc\/letsencrypt\/live\/mautic.yourdomain.com\/privkey.pem\r\n   Your cert will expire on 2020-01-30. To obtain a new or tweaked\r\n   version of this certificate in the future, simply run certbot again\r\n   with the \"certonly\" option. To non-interactively renew *all* of\r\n   your certificates, run \"certbot renew\"\r\n - If you like Certbot, please consider supporting our work by:\r\n\r\n   Donating to ISRG \/ Let's Encrypt:   https:\/\/letsencrypt.org\/donate\r\n   Donating to EFF:                    https:\/\/eff.org\/donate-le<\/code><\/pre>\n<p>If you receive the output like the one below, congratulations! You have successfully configured your web server and you are ready to proceed to the next step, installation of Mautic which I will cover in the next article. Thanks for reading. If you have any questions feel free to reach out to me via the comments section below or shoot me an email at goran@otb.agency<\/p>\n<p>And in case you want to go for the extra mile, you can test the configuration by creating a php info file and opening it in your browser.<\/p>\n<pre><code class=\"language-bash\">sudo nano \/var\/www\/mautic.yourdomain.com\/htdocs\/index.php<\/code><\/pre>\n<p>Add the following lines<\/p>\n<pre><code class=\"language-php\">&lt;?php phpinfo();<\/code><\/pre>\n<p>Save the file and exit the editor.<\/p>\n<p>Now, when you open up the website on <strong>https:\/\/mautic.yourdomain.com<\/strong> you should see the following page:<\/p>\n<figure id=\"attachment_66\" aria-describedby=\"caption-attachment-66\" style=\"width: 957px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/phpinfo-output.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-66 size-full\" src=\"https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/phpinfo-output.jpg\" alt=\"PHP Info output\" width=\"957\" height=\"912\" srcset=\"https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/phpinfo-output.jpg 957w, https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/phpinfo-output-300x286.jpg 300w, https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/phpinfo-output-768x732.jpg 768w, https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/phpinfo-output-480x457.jpg 480w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/><\/a><figcaption id=\"caption-attachment-66\" class=\"wp-caption-text\">PHP Info output<\/figcaption><\/figure>\n<p>And also, by clicking on the padlock on the left side of the URL in the address bar, you should see the message <strong>Connection is secure\u00a0<\/strong>which confirms that your SSL Certificate is valid and properly installed.<\/p>\n<figure id=\"attachment_67\" aria-describedby=\"caption-attachment-67\" style=\"width: 347px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-67\" src=\"https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/mautic-ssl-confirmation.jpg\" alt=\"Mautic SSL Confirmation\" width=\"347\" height=\"366\" srcset=\"https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/mautic-ssl-confirmation.jpg 347w, https:\/\/otb.agency\/wp-content\/uploads\/2019\/11\/mautic-ssl-confirmation-284x300.jpg 284w\" sizes=\"auto, (max-width: 347px) 100vw, 347px\" \/><figcaption id=\"caption-attachment-67\" class=\"wp-caption-text\">SSL Confirmation<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In recent years, Mautic became one of the most promising players in the marketing automation industry. Their approach to open marketing and active community makes them unique by offering powerful tools to your disposal, without setting a price tag. Of course, you can pay for their service and additional tools that will help you manage [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_uag_custom_page_level_css":"","footnotes":""},"categories":[3],"tags":[],"class_list":["post-27","post","type-post","status-publish","format-standard","hentry","category-mautic"],"acf":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Goran \u0106ulibrk","author_link":"https:\/\/otb.agency\/?author=1"},"uagb_comment_info":1,"uagb_excerpt":"In recent years, Mautic became one of the most promising players in the marketing automation industry. Their approach to open marketing and active community makes them unique by offering powerful tools to your disposal, without setting a price tag. Of course, you can pay for their service and additional tools that will help you manage&hellip;","_links":{"self":[{"href":"https:\/\/otb.agency\/index.php?rest_route=\/wp\/v2\/posts\/27","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/otb.agency\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/otb.agency\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/otb.agency\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/otb.agency\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=27"}],"version-history":[{"count":9,"href":"https:\/\/otb.agency\/index.php?rest_route=\/wp\/v2\/posts\/27\/revisions"}],"predecessor-version":[{"id":85,"href":"https:\/\/otb.agency\/index.php?rest_route=\/wp\/v2\/posts\/27\/revisions\/85"}],"wp:attachment":[{"href":"https:\/\/otb.agency\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/otb.agency\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/otb.agency\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}