{"id":509,"date":"2025-12-02T12:28:39","date_gmt":"2025-12-02T12:28:39","guid":{"rendered":"https:\/\/naveedshahzad.net\/blog\/?p=509"},"modified":"2025-12-02T12:28:39","modified_gmt":"2025-12-02T12:28:39","slug":"codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow","status":"publish","type":"post","link":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/","title":{"rendered":"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow"},"content":{"rendered":"<p><strong>CodeIgniter 4 Cron Jobs<\/strong> are one of the most powerful ways to automate recurring tasks inside a web application. Whether you need to send reminders, update records, sync data, or process workflows, cron jobs allow your system to run tasks automatically, without human effort.<\/p>\n<p>In this guide, I\u2019ll explain how I built a <strong>fully automated business workflow using CodeIgniter 4 + Cron Jobs<\/strong>, including real examples, folder structure, and best practices you can apply to any project.<\/p>\n<h3>What Are Cron Jobs?<\/h3>\n<p>A cron job is a scheduled task that runs automatically on your server at fixed intervals (every minute, hourly, daily, weekly, etc.).<\/p>\n<p>Example uses:<\/p>\n<ul>\n<li>Auto-send emails\/SMS<\/li>\n<li>Sync inventory with ERP<\/li>\n<li>Auto-generate invoices<\/li>\n<li>Expire memberships<\/li>\n<li>Send reminders<\/li>\n<li>Clean old logs<\/li>\n<li>Update order statuses<\/li>\n<\/ul>\n<p>When combined with CodeIgniter 4, cron jobs can run <strong>complete business workflows<\/strong> on autopilot.<\/p>\n<h3>Why Use Cron Jobs in CodeIgniter 4?<\/h3>\n<p>CodeIgniter 4 is lightweight, fast, and perfect for background task automation.<\/p>\n<p><strong>Benefits:<\/strong><\/p>\n<ul>\n<li>No need for manual triggers<\/li>\n<li>Zero reliance on user actions<\/li>\n<li>Runs 24\/7<\/li>\n<li>Reduces human error<\/li>\n<li>Perfect for API integrations<\/li>\n<li>Helps scale business operations<\/li>\n<\/ul>\n<h3>How I Designed the Business Automation Workflow<\/h3>\n<p>Before writing code, I created a simple workflow:<\/p>\n<ol>\n<li>Fetch pending tasks from the database<\/li>\n<li>Process each task<\/li>\n<li>Call external APIs (like ERP, SMS, or email)<\/li>\n<li>Update the database<\/li>\n<li>Log results for debugging<\/li>\n<li>Notify admin on failures<\/li>\n<\/ol>\n<p>This entire workflow runs automatically every 5 minutes.<\/p>\n<h3>Step 1: Create a Custom Command in CodeIgniter 4<\/h3>\n<p>CodeIgniter 4 provides a great CLI tool called <strong>spark<\/strong>, which allows you to create custom commands.<\/p>\n<p>Run:<\/p>\n<pre><code>php spark make:command ProcessTasks<\/code><\/pre>\n<p>This creates:<\/p>\n<pre><code>app\/Commands\/ProcessTasks.php<\/code><\/pre>\n<p>Inside the file:<\/p>\n<pre><code>&lt;?php\r\n\r\nnamespace App\\Commands;\r\n\r\nuse CodeIgniter\\CLI\\BaseCommand;\r\nuse CodeIgniter\\CLI\\CLI;\r\n\r\nclass ProcessTasks extends BaseCommand\r\n{\r\n    protected $group = 'Custom Tasks';\r\n    protected $name = 'tasks:process';\r\n    protected $description = 'Process pending business workflow tasks';\r\n\r\n    public function run(array $params)\r\n    {\r\n        CLI::write('Cron started...', 'yellow');\r\n\r\n        $model = model('TaskModel');\r\n        $pending = $model-&gt;getPending();\r\n\r\n        foreach ($pending as $task) {\r\n            try {\r\n                \/\/ Your workflow logic\r\n                $this-&gt;processTask($task);\r\n\r\n                $model-&gt;markCompleted($task['id']);\r\n                CLI::write(\"Task #{$task['id']} completed\", 'green');\r\n\r\n            } catch (\\Exception $e) {\r\n                $model-&gt;markFailed($task['id'], $e-&gt;getMessage());\r\n                CLI::write(\"Task #{$task['id']} failed: {$e-&gt;getMessage()}\", 'red');\r\n            }\r\n        }\r\n\r\n        CLI::write('Cron finished.', 'yellow');\r\n    }\r\n\r\n    private function processTask($task)\r\n    {\r\n        \/\/ Example API workflow\r\n        \/\/ (send email, hit ERP API, generate file, update data etc.)\r\n    }\r\n}\r\n<\/code><\/pre>\n<h3>Step 2: Create Your Task Model<\/h3>\n<pre><code>class TaskModel extends Model\r\n{\r\n    protected $table = 'tasks';\r\n\r\n    public function getPending()\r\n    {\r\n        return $this-&gt;where('status', 'pending')-&gt;findAll();\r\n    }\r\n\r\n    public function markCompleted($id)\r\n    {\r\n        return $this-&gt;update($id, ['status' =&gt; 'completed']);\r\n    }\r\n\r\n    public function markFailed($id, $reason)\r\n    {\r\n        return $this-&gt;update($id, [\r\n            'status' =&gt; 'failed',\r\n            'error_message' =&gt; $reason\r\n        ]);\r\n    }\r\n}\r\n<\/code><\/pre>\n<h3>Step 3: Create the Cron Job in Your Server<\/h3>\n<p>Run your command every 5 minutes:<\/p>\n<h3>Linux Cron<\/h3>\n<p>Run:<\/p>\n<pre><code>crontab -e<\/code><\/pre>\n<p>Add:<\/p>\n<pre><code>*\/5 * * * * php \/home\/username\/public_html\/spark tasks:process &gt;&gt; \/home\/username\/logs\/cron.log 2&gt;&amp;1<\/code><\/pre>\n<p>This will:<\/p>\n<ul>\n<li>Run your CI4 command<\/li>\n<li>Every 5 minutes<\/li>\n<li>Log output for debugging<\/li>\n<\/ul>\n<h3>Step 4: Add Logging for Debugging<\/h3>\n<pre><code>log_message('info', 'Processing task ID: ' . $task['id']);<\/code><\/pre>\n<p>Logs go to: <code>writable\/logs\/<\/code><\/p>\n<h3>Real Example: Automating a Business Workflow<\/h3>\n<p>Here&#8217;s a real use case I implemented for a client:<\/p>\n<h3>Workflow:<\/h3>\n<ul>\n<li>Customer submits a return request<\/li>\n<li>Cron checks pending requests<\/li>\n<li>It creates a 50% credit note in ERP (via API)<\/li>\n<li>Sends email to customer<\/li>\n<li>Updates DB<\/li>\n<li>Logs everything<\/li>\n<li>Marks request completed<\/li>\n<\/ul>\n<p><strong>Why automation was required?<\/strong><br \/>\nThe manual process used to take 2\u20133 hours daily. Now the cron job does everything in seconds.<\/p>\n<ul>\n<li>Zero human effort<\/li>\n<li>Zero delays<\/li>\n<li>Zero mistakes<\/li>\n<\/ul>\n<h3>Best Practices for Cron Jobs in CodeIgniter 4<\/h3>\n<ul>\n<li>Use custom Commands (never trigger URLs)<\/li>\n<li>Add rate limiting on external APIs<\/li>\n<li>Add retry logic for failed requests<\/li>\n<li>Log everything<\/li>\n<li>Never run heavy queries inside loops<\/li>\n<li>Use queues if processing large tasks<\/li>\n<li>Use try\/catch to avoid broken cron<\/li>\n<li>Set timeouts for APIs<\/li>\n<\/ul>\n<h3>Conclusion<\/h3>\n<p>Automating workflows using <strong>CodeIgniter 4 Cron Jobs<\/strong> can save time, reduce errors, and help businesses scale effortlessly. Whether you&#8217;re processing orders, syncing data, or running API integrations, cron jobs turn your system into a powerful automated engine.<\/p>\n<p>If you\u2019re building a CI4 application, cron jobs are not optional, they are essential.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>CodeIgniter 4 Cron Jobs are one of the most powerful ways to automate recurring tasks inside a web application. Whether you need to send reminders, update records, sync data, or process workflows, cron jobs allow your system to run tasks automatically, without human effort. In this guide, I\u2019ll explain how I built a fully automated [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":513,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,3],"tags":[],"class_list":["post-509","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-custom-development","category-web-development-trends"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow - Blogs - Naveed Shahzad<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow\" \/>\n<meta property=\"og:description\" content=\"CodeIgniter 4 Cron Jobs are one of the most powerful ways to automate recurring tasks inside a web application. Whether you need to send reminders, update records, sync data, or process workflows, cron jobs allow your system to run tasks automatically, without human effort. In this guide, I\u2019ll explain how I built a fully automated [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/\" \/>\n<meta property=\"og:site_name\" content=\"Blogs - Naveed Shahzad\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/naveed.shahzad.35728\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/naveed.shahzad.35728\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-02T12:28:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"naveedshahzad\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@NaveedS92080775\" \/>\n<meta name=\"twitter:site\" content=\"@NaveedS92080775\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"naveedshahzad\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/\"},\"author\":{\"name\":\"naveedshahzad\",\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04\"},\"headline\":\"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow\",\"datePublished\":\"2025-12-02T12:28:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/\"},\"wordCount\":481,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04\"},\"image\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg\",\"articleSection\":[\"Custom Development\",\"Web Development Trends\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/\",\"url\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/\",\"name\":\"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow - Blogs - Naveed Shahzad\",\"isPartOf\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg\",\"datePublished\":\"2025-12-02T12:28:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage\",\"url\":\"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg\",\"contentUrl\":\"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg\",\"width\":1200,\"height\":675,\"caption\":\"Automate Business Workflows Step-by-Step in CodeIgniter 4\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/naveedshahzad.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#website\",\"url\":\"https:\/\/naveedshahzad.net\/blog\/\",\"name\":\"Blogs - Naveed Shahzad\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/naveedshahzad.net\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04\",\"name\":\"naveedshahzad\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/09\/logo-01-updated.jpg\",\"contentUrl\":\"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/09\/logo-01-updated.jpg\",\"width\":1200,\"height\":630,\"caption\":\"naveedshahzad\"},\"logo\":{\"@id\":\"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Experienced Web &amp; WordPress Developer specializing in custom themes, plugins, eCommerce solutions, and API integrations. Explore projects showcasing front-end and back-end development expertise, tailored to meet unique business needs.\",\"sameAs\":[\"https:\/\/naveedshahzad.net\/\",\"https:\/\/www.facebook.com\/naveed.shahzad.35728\",\"https:\/\/www.instagram.com\/naveed.shahzad94\/\",\"https:\/\/www.linkedin.com\/in\/naveed-shahzad-338b10140\/\",\"https:\/\/x.com\/NaveedS92080775\"],\"honorificPrefix\":\"Mr\",\"birthDate\":\"1994-10-15\",\"gender\":\"male\",\"knowsAbout\":[\"HTML\",\"CSS\",\"Bootstrap\",\"jQuery\",\"PHP\",\"CodeIgniter\",\"WordPress\",\"Ecommerce\",\"WordPress Plugin Development\",\"WordPress Theme Development\",\"AJAX\",\"MySQL\"],\"knowsLanguage\":[\"English\",\"Urdu\"],\"jobTitle\":\"Full Stack Developer\",\"url\":\"https:\/\/naveedshahzad.net\/blog\/author\/naveedshahzad\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow - Blogs - Naveed Shahzad","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/","og_locale":"en_US","og_type":"article","og_title":"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow","og_description":"CodeIgniter 4 Cron Jobs are one of the most powerful ways to automate recurring tasks inside a web application. Whether you need to send reminders, update records, sync data, or process workflows, cron jobs allow your system to run tasks automatically, without human effort. In this guide, I\u2019ll explain how I built a fully automated [&hellip;]","og_url":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/","og_site_name":"Blogs - Naveed Shahzad","article_publisher":"https:\/\/www.facebook.com\/naveed.shahzad.35728","article_author":"https:\/\/www.facebook.com\/naveed.shahzad.35728","article_published_time":"2025-12-02T12:28:39+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg","type":"image\/jpeg"}],"author":"naveedshahzad","twitter_card":"summary_large_image","twitter_creator":"@NaveedS92080775","twitter_site":"@NaveedS92080775","twitter_misc":{"Written by":"naveedshahzad","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#article","isPartOf":{"@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/"},"author":{"name":"naveedshahzad","@id":"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04"},"headline":"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow","datePublished":"2025-12-02T12:28:39+00:00","mainEntityOfPage":{"@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/"},"wordCount":481,"commentCount":0,"publisher":{"@id":"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04"},"image":{"@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage"},"thumbnailUrl":"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg","articleSection":["Custom Development","Web Development Trends"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/","url":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/","name":"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow - Blogs - Naveed Shahzad","isPartOf":{"@id":"https:\/\/naveedshahzad.net\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage"},"image":{"@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage"},"thumbnailUrl":"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg","datePublished":"2025-12-02T12:28:39+00:00","breadcrumb":{"@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#primaryimage","url":"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg","contentUrl":"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/12\/cron-job-ci4.jpg","width":1200,"height":675,"caption":"Automate Business Workflows Step-by-Step in CodeIgniter 4"},{"@type":"BreadcrumbList","@id":"https:\/\/naveedshahzad.net\/blog\/codeigniter-4-cron-jobs-how-i-automated-a-complete-business-workflow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/naveedshahzad.net\/blog\/"},{"@type":"ListItem","position":2,"name":"CodeIgniter 4 + Cron Jobs: How I Automated a Complete Business Workflow"}]},{"@type":"WebSite","@id":"https:\/\/naveedshahzad.net\/blog\/#website","url":"https:\/\/naveedshahzad.net\/blog\/","name":"Blogs - Naveed Shahzad","description":"","publisher":{"@id":"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/naveedshahzad.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/2a4d03da05dae472db9d17f993781b04","name":"naveedshahzad","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/image\/","url":"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/09\/logo-01-updated.jpg","contentUrl":"https:\/\/naveedshahzad.net\/blog\/wp-content\/uploads\/2025\/09\/logo-01-updated.jpg","width":1200,"height":630,"caption":"naveedshahzad"},"logo":{"@id":"https:\/\/naveedshahzad.net\/blog\/#\/schema\/person\/image\/"},"description":"Experienced Web &amp; WordPress Developer specializing in custom themes, plugins, eCommerce solutions, and API integrations. Explore projects showcasing front-end and back-end development expertise, tailored to meet unique business needs.","sameAs":["https:\/\/naveedshahzad.net\/","https:\/\/www.facebook.com\/naveed.shahzad.35728","https:\/\/www.instagram.com\/naveed.shahzad94\/","https:\/\/www.linkedin.com\/in\/naveed-shahzad-338b10140\/","https:\/\/x.com\/NaveedS92080775"],"honorificPrefix":"Mr","birthDate":"1994-10-15","gender":"male","knowsAbout":["HTML","CSS","Bootstrap","jQuery","PHP","CodeIgniter","WordPress","Ecommerce","WordPress Plugin Development","WordPress Theme Development","AJAX","MySQL"],"knowsLanguage":["English","Urdu"],"jobTitle":"Full Stack Developer","url":"https:\/\/naveedshahzad.net\/blog\/author\/naveedshahzad\/"}]}},"_links":{"self":[{"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/posts\/509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/comments?post=509"}],"version-history":[{"count":3,"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/posts\/509\/revisions"}],"predecessor-version":[{"id":512,"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/posts\/509\/revisions\/512"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/media\/513"}],"wp:attachment":[{"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/media?parent=509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/categories?post=509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/naveedshahzad.net\/blog\/wp-json\/wp\/v2\/tags?post=509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}