{"id":6422,"date":"2026-10-15T09:55:11","date_gmt":"2026-10-15T06:55:11","guid":{"rendered":"https:\/\/www.scalahosting.com\/kb\/?p=6422"},"modified":"2026-10-15T09:55:12","modified_gmt":"2026-10-15T06:55:12","slug":"git-push-deploy-spanel","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/kb\/git-push-deploy-spanel\/","title":{"rendered":"How to Deploy a Website with Git Push: Auto-Deployment in SPanel"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Git Version Control in SPanel clones a public or private Git repository into a directory on your account, then keeps it in sync. You can pull new code automatically every 3, 5, or 15 minutes, use a webhook, or manually deploy updates.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add an executable .autodeploy script to the repository root and SPanel runs it after every pull, so git push becomes a real deploy step. In other words, SPanel handles the entire deployment while you focus on the project&#8217;s development.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s the rundown:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>SPanel clones from GitHub, GitLab, Bitbucket, or a self-hosted repository over HTTPS or SSH.<\/li>\n\n\n\n<li>Three sync modes cover most needs: scheduled pulls, webhook-triggered pulls on push, and manual pulls.<\/li>\n\n\n\n<li>The optional .autodeploy script holds your build and deploy commands; SPanel does not guess them.<\/li>\n\n\n\n<li>A failed automatic pull sends a notification and an email, with a recovery notice when pulls work again.<\/li>\n\n\n\n<li>You can stop tracking a repository without deleting the files that are already on disk.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Automatic Git Deployment Matters<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Dragging files into an FTP client is how a lot of sites still get updated, and it is where a lot of sites still break. You upload 11 files, forget the 12th, and the homepage throws an error. The upload leaves no meaningful logs, so you don&#8217;t even know what went wrong.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Git already fixes the record-keeping half: every change is a commit, and rolling back is one command. What Git does not do on its own is put those committed files onto your live server. This is what <a href=\"https:\/\/www.scalahosting.com\/spanel.html\">SPanel&#8217;s Git Version Control<\/a> does. Thanks to it, a single git push saves your work and ships it to your server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You only add your repository once. Through SPanel&#8217;s interface, you specify its URL, pick a branch, choose how pulls should be handled. Pushing to that branch then updates the server copy according to&nbsp; your chosen schedule, and a committed .autodeploy script runs after each pull to handle any build step.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Git Deployment Does and What It Doesn&#8217;t<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Some people assume that &#8220;Git deployment&#8221; means the panel builds your project for you. It does not. SPanel pulls the committed files and then runs whatever you told it to run in .autodeploy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Plain HTML or PHP that ships as-is may need no build step at all &#8211; the pull is the deploy. If your site needs npm install or a framework&#8217;s build command, those commands are yours to write. The other misconception is that the fastest timed option, &#8220;Every 3 minutes,&#8221; is instant; it is a poll on a clock. For changes that must go out the moment you push, use <strong>Webhook<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How It Actually Works<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A pull tells your server to fetch the latest committed version of your project and update its local copy. A branch is one line of your project&#8217;s history, like main for production or staging for testing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SPanel clones the repository into the <strong>Repository Path<\/strong> you choose. You set which <strong>Branch<\/strong> to track (main by default) then pick an <strong>Automatic Pull &amp; Deploy<\/strong> mode.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The timed options &#8211; <strong>Every 3 minutes<\/strong>, <strong>Every 5 minutes<\/strong>, <strong>Every 15 minutes<\/strong> &#8211; poll the repository on a schedule. <strong>Webhook<\/strong> flips the direction: your Git provider tells SPanel the instant you push, and the pull happens then. <strong>Disabled<\/strong> leaves the repository static until you pull it yourself.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"678\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image1-1024x678.webp\" alt=\"How to Deploy a Website with Git Push: Auto-Deployment in SPanel, How It Actually Works\" class=\"wp-image-6423\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image1-1024x678.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image1-300x199.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image1-767x508.webp 767w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image1-1536x1018.webp 1536w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image1.webp 1600w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After every pull, if an executable file named .autodeploy sits in the repository root, SPanel runs it. The script must start with the path to an interpreter, such as #!\/bin\/bash or #!\/opt\/remi\/php84\/root\/usr\/bin\/php. Inside it are the steps that turn fetched files into a running site.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Where SPanel Is Different<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SPanel treats deployment as a panel feature, not a command-line afterthought. There is no SSH session, cron entry, or Git hook to set up by hand &#8211; clone, schedule, branch, and post-pull hook all live on one screen, with no separate licensing for the feature on <a href=\"https:\/\/www.scalahosting.com\/managed-cloud-hosting.html\">managed VPS plans<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Two details are crucial here. First, <strong>private repositories<\/strong> are handled in the panel: choose <strong>Private<\/strong> as the <strong>Repository Type<\/strong> and SPanel exposes <strong>PAT Token<\/strong> and <strong>SSH Authentication<\/strong> for secure access. Second, failures are easy to spot. When an automatic pull doesn&#8217;t go through, SPanel raises a notification and emails the account&#8217;s contact address. When the pull succeeds on the next try, a recovery notice is sent, so the account owner knows that everything is fine. That closes the usual blind spot of scheduled deployments, and it pairs with the rest of SPanel&#8217;s alerting.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"702\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image3-1024x702.webp\" alt=\"How to Deploy a Website with Git Push: Auto-Deployment in SPanel, Where SPanel Is Different\" class=\"wp-image-6424\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image3-1024x702.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image3-300x206.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image3-767x526.webp 767w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image3.webp 1304w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Every repository you add lands in the <strong>Existing Repositories<\/strong> list, where you have an <strong>Actions<\/strong> drop-down menu with options to <strong>Pull &amp; Deploy<\/strong>, <strong>Manage<\/strong> (which is where you see the logs), and <strong>Remove<\/strong> the repository.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"284\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image2-1024x284.webp\" alt=\"How to Deploy a Website with Git Push: Auto-Deployment in SPanel, Where SPanel Is Different 2\" class=\"wp-image-6425\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image2-1024x284.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image2-300x83.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image2-765x212.webp 765w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/10\/image2.webp 1307w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What you&#8217;d do without SPanel<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Without a panel, the same result is a manual chain you build and maintain yourself: an SSH session, a cron job or post-pull hook to trigger each pull, a deploy script you write by hand, and your own monitoring to catch a pull that fails silently. Git Version Control folds all of that into one screen, with built-in failure and recovery alerts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Which Sync Mode to Choose<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can use one <strong>Automatic Pull &amp; Deploy<\/strong> mode for each repository. This table shows you how the different modes work and which scenarios they fit the best.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td>Mode<\/td><td>How it triggers<\/td><td>Best for<\/td><td>Trade-off<\/td><\/tr><tr><td>Disabled<\/td><td>You click <strong>Pull &amp; Deploy<\/strong> yourself<\/td><td>Deploys you want to gate manually<\/td><td>Nothing ships until you act<\/td><\/tr><tr><td>Every 3 minutes<\/td><td>Timed pull<\/td><td>Active sites needing quick updates<\/td><td>Small delay; not instant<\/td><\/tr><tr><td>Every 5 minutes<\/td><td>Timed pull<\/td><td>General-purpose active projects<\/td><td>Small delay<\/td><\/tr><tr><td>Every 15 minutes<\/td><td>Timed pull<\/td><td>Low-frequency edits, content sites<\/td><td>Longest wait of the timed options<\/td><\/tr><tr><td>Webhook<\/td><td>Provider pings SPanel on push<\/td><td>Instant deploys the moment you push<\/td><td>Needs webhook setup on the provider side<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In short: pick <strong>Webhook<\/strong> when a push must go live immediately, a timed interval when a few minutes&#8217; delay is acceptable, and <strong>Disabled<\/strong> when you want to gate every deploy by hand.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Limitations and Trade-Offs<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This feature deploys files; it does not design your release process. SPanel will not build your project, run database migrations, or restart services unless your .autodeploy script tells it to. The automatic deployment doesn&#8217;t save you from a bad commit &#8211; the panel only checks that the pull succeeded, not that your code works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The timed modes trade immediacy for simplicity. Even <strong>Every 3 minutes<\/strong> leaves a short window between push and live, so time-critical launches should use <strong>Webhook<\/strong> or a manual <strong>Pull &amp; Deploy<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Webhook setup also involves a step on your Git provider&#8217;s side, best confirmed against their current documentation. And the interpreter path in your .autodeploy file must be valid, or the script stops before it starts.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Recommended Workflow and Steps<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Start on a non-production branch: clone the repository, track staging, and set <strong>Disabled<\/strong> so nothing deploys while you experiment. Trigger a manual <strong>Pull &amp; Deploy<\/strong>, open the <strong>Log<\/strong>, and confirm the files land where you expect and that a minimal .autodeploy ran.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once that loop is clean, point a second repository or branch at production. Choose <strong>Webhook<\/strong> for instant deploys, or a timed interval if a few minutes of delay is fine, and use <strong>PAT Token<\/strong> or <strong>SSH Authentication<\/strong> for private repositories while keeping secrets out of tracked files.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here&#8217;s a step-by-step guide:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the SPanel User Interface, open <strong>Git Version Control<\/strong>.<\/li>\n\n\n\n<li>Review the <strong>Existing Repositories<\/strong> panel and its columns: <strong>Name<\/strong>, <strong>Path<\/strong>, <strong>URL<\/strong>, <strong>Status<\/strong>, <strong>Branches<\/strong>, and <strong>Actions<\/strong>.<\/li>\n\n\n\n<li>Click <strong>Create a New Repository<\/strong> to open the <strong>Create A New Repository<\/strong> form.<\/li>\n\n\n\n<li>Enter a <strong>Repository Name<\/strong> (for example, my-awesome-project) and set the <strong>Repository Path<\/strong> under your account home, using the <strong>Browse<\/strong> button if needed.<\/li>\n\n\n\n<li>Choose the <strong>Repository Type<\/strong>. For <strong>Private<\/strong>, complete <strong>PAT Token<\/strong> or <strong>SSH Authentication<\/strong>.<\/li>\n\n\n\n<li>Paste the <strong>Repository URL<\/strong> (for example, https:\/\/github.com\/user\/repo.git) and set the <strong>Branch<\/strong> (default main).<\/li>\n\n\n\n<li>Pick an <strong>Automatic Pull &amp; Deploy<\/strong> mode: <strong>Disabled<\/strong>, <strong>Every 3 minutes<\/strong>, <strong>Every 5 minutes<\/strong>, <strong>Every 15 minutes<\/strong>, or <strong>Webhook<\/strong>.<\/li>\n\n\n\n<li>Click <strong>Clone Repository<\/strong>. The repository appears in <strong>Existing Repositories<\/strong>, where you can use <strong>Pull &amp; Deploy<\/strong>, <strong>Manage<\/strong>, or <strong>Remove<\/strong>.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Does SPanel build my project or just copy the files?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> It copies the committed files on each pull, and runs a build only if you provide one. Put your build and deploy commands in an executable .autodeploy script in the repository root and SPanel runs it after every pull. Static sites need no script &#8211; the pull is the deploy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How fast is automatic deployment after I push?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> That depends on the mode. The timed options pull on a clock &#8211; <strong>Every 3 minutes<\/strong>, <strong>Every 5 minutes<\/strong>, or <strong>Every 15 minutes<\/strong> &#8211; so a push goes live within that window. <strong>Webhook<\/strong> is different: your Git provider notifies SPanel the moment you push, and the pull happens then.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can I deploy from a private GitHub or GitLab repository?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Yes. Set the <strong>Repository Type<\/strong> to <strong>Private<\/strong> on the create form, and SPanel exposes <strong>PAT Token<\/strong> and <strong>SSH Authentication<\/strong> so you connect securely. This works with GitHub, GitLab, Bitbucket, or a self-hosted Git server, over HTTPS or SSH. Keep the token or key in these panel fields rather than in your repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What happens if an automatic pull fails?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> SPanel raises a notification and emails the account&#8217;s contact address, so a broken deploy does not sit unnoticed, and it sends a recovery notice when pulls succeed again. Test this early, before you depend on unattended deployments for a production site.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Which branch does SPanel deploy?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> The one you set in the <strong>Branch<\/strong> field, which defaults to main. SPanel can list and switch branches for a tracked repository, so you can point production at main and a test copy at another branch. Changing the tracked branch changes what the next pull deploys, which is why testing on a non-production branch first is safer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can I remove a repository without deleting my site?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Yes. The <strong>Remove<\/strong> action stops SPanel from tracking a repository, but it does not delete the files already placed in the <strong>Repository Path<\/strong>, so your live site keeps running from them. If you want them gone too, remove them separately through the File Manager after you stop tracking.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"Does SPanel build my project or just copy the files?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"It copies the committed files on each pull, and runs a build only if you provide one. Put your build and deploy commands in an executable .autodeploy script in the repository root and SPanel runs it after every pull. Static sites need no script - the pull is the deploy.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"How fast is automatic deployment after I push?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"That depends on the mode. The timed options pull on a clock - Every 3 minutes, Every 5 minutes, or Every 15 minutes - so a push goes live within that window. Webhook is different: your Git provider notifies SPanel the moment you push, and the pull happens then.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Can I deploy from a private GitHub or GitLab repository?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Yes. Set the Repository Type to Private on the create form, and SPanel exposes PAT Token and SSH Authentication so you connect securely. This works with GitHub, GitLab, Bitbucket, or a self-hosted Git server, over HTTPS or SSH. Keep the token or key in these panel fields rather than in your repository.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"What happens if an automatic pull fails?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"SPanel raises a notification and emails the account's contact address, so a broken deploy does not sit unnoticed, and it sends a recovery notice when pulls succeed again. Test this early, before you depend on unattended deployments for a production site.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Which branch does SPanel deploy?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"The one you set in the Branch field, which defaults to main. SPanel can list and switch branches for a tracked repository, so you can point production at main and a test copy at another branch. Changing the tracked branch changes what the next pull deploys, which is why testing on a non-production branch first is safer.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Can I remove a repository without deleting my site?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Yes. The Remove action stops SPanel from tracking a repository, but it does not delete the files already placed in the Repository Path, so your live site keeps running from them. If you want them gone too, remove them separately through the File Manager after you stop tracking.\"\n        }\n      }]\n    }\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">It helps to pair Git deployment with the rest of SPanel&#8217;s tooling, including scheduled tasks through the <a href=\"https:\/\/www.scalahosting.com\/kb\/add-edit-delete-cron-jobs-spanel\/\">Cron Job Manager<\/a> and safer updates through the <a href=\"https:\/\/www.scalahosting.com\/kb\/getting-started-with-swordpress\/\">WordPress Manager<\/a>. You can request or vote on new features through the Cloud Democracy board at <a href=\"https:\/\/features.spanel.io\">features.spanel.io<\/a>. To try it yourself, add your first repository on a ScalaHosting trial and follow the deploy through.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Git Version Control in SPanel clones a public or private Git repository into a directory on your account, then keeps it in sync. You can pull new code automatically every 3, 5, or 15 minutes, use a webhook, or manually deploy updates. Add an executable .autodeploy script to the repository root and SPanel runs it [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"Deploy a Website with Git Push in SPanel | ScalaHosting KB","_seopress_titles_desc":"Set up Git auto-deployment in SPanel: clone a repo, pull on a schedule or webhook, and run a build script on every push. Follow the step-by-step guide.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[66],"tags":[],"class_list":["post-6422","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6422","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/comments?post=6422"}],"version-history":[{"count":2,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6422\/revisions"}],"predecessor-version":[{"id":6428,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6422\/revisions\/6428"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/media?parent=6422"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/categories?post=6422"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/tags?post=6422"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}