{"id":376965,"date":"2026-10-13T20:35:52","date_gmt":"2026-10-13T20:35:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/incode-automations\/"},"modified":"2026-10-13T20:35:21","modified_gmt":"2026-10-13T20:35:21","slug":"incode-automations","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/incode-automations\/","author":23087910,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.9","stable_tag":"0.1.9","tested":"7.1.3","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Incode Automations","header_author":"Adri\u00e1n Alcal\u00e1","header_description":"Store automations for WooCommerce: when something happens in an order, wait as long as you like, check whatever you like and send an email with its coupon. Part of the Incode Cart Toolkit family.","assets_banners_color":"1b302d","last_updated":"2026-10-13 20:35:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/carttoolkit.com","header_author_uri":"https:\/\/adrianalcala.es","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.9":{"tag":"0.1.9","author":"adrianincode","date":"2026-10-13 20:35:21","revision":3744873}},"upgrade_notice":{"0.1.3":"<p>Clearer wording on the module cards.<\/p>","0.1.2":"<p>The Incode Cart Toolkit panel lists the rest of the family too.<\/p>","0.1.1":"<p>Translatable into any language, and a pass over database queries and form input.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3744873,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3744873,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3744873,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3744873,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.9"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3744873,"resolution":"1","location":"assets","locale":"","width":2880,"height":1960},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3744873,"resolution":"2","location":"assets","locale":"","width":2880,"height":1960},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3744873,"resolution":"3","location":"assets","locale":"","width":2880,"height":2400},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3744873,"resolution":"4","location":"assets","locale":"","width":2880,"height":680}},"screenshots":{"1":"Your automations: state, trigger and figures for each one.","2":"The editor: a trigger and its steps, read top to bottom.","3":"A step opened for editing, with its merge tags and its own condition.","4":"The recipes that come ready made, created as drafts for you to review."}},"plugin_section":[],"plugin_tags":[286575,569,591,26806,286],"plugin_category":[45],"plugin_contributors":[278539],"plugin_business_model":[],"class_list":["post-376965","plugin","type-plugin","status-publish","hentry","plugin_tags-abandoned-order","plugin_tags-automation","plugin_tags-coupons","plugin_tags-follow-up","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-adrianincode","plugin_committers-adrianincode"],"banners":{"banner":"https:\/\/ps.w.org\/incode-automations\/assets\/banner-772x250.png?rev=3744873","banner_2x":"https:\/\/ps.w.org\/incode-automations\/assets\/banner-1544x500.png?rev=3744873","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/incode-automations\/assets\/icon-128x128.png?rev=3744873","icon_2x":"https:\/\/ps.w.org\/incode-automations\/assets\/icon-256x256.png?rev=3744873","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/incode-automations\/assets\/screenshot-1.png?rev=3744873","caption":"Your automations: state, trigger and figures for each one."},{"src":"https:\/\/ps.w.org\/incode-automations\/assets\/screenshot-2.png?rev=3744873","caption":"The editor: a trigger and its steps, read top to bottom."},{"src":"https:\/\/ps.w.org\/incode-automations\/assets\/screenshot-3.png?rev=3744873","caption":"A step opened for editing, with its merge tags and its own condition."},{"src":"https:\/\/ps.w.org\/incode-automations\/assets\/screenshot-4.png?rev=3744873","caption":"The recipes that come ready made, created as drafts for you to review."}],"raw_content":"<!--section=description-->\n<p>Incode Automations builds store automations that read top to bottom like a sentence:<\/p>\n\n<p><em>When their first order is completed \u2192 create a 10% coupon \u2192 email it \u2192 wait 5 days \u2192 remind them if they have not used it.<\/em><\/p>\n\n<p>Every automation is a trigger plus a list of steps. A step can wait, create a coupon, send an email or add an order note, and any step can carry a condition, so the sequence only continues for the people it should.<\/p>\n\n<h4>Included recipes<\/h4>\n\n<p>You do not start from a blank screen. Five automations come written and ready to review:<\/p>\n\n<ul>\n<li><strong>10% off the second purchase<\/strong> \u2014 when their first order is completed, with a reminder if the coupon goes unused.<\/li>\n<li><strong>Loyal customer discount<\/strong> \u2014 for someone who has already ordered several times.<\/li>\n<li><strong>Welcome to new customers<\/strong> \u2014 when they create an account in the store.<\/li>\n<li><strong>Failed payment rescue<\/strong> \u2014 when an order ends up cancelled or failed.<\/li>\n<li><strong>Abandoned cart recovery<\/strong> \u2014 half an hour after someone leaves a cart behind, with the products they left and a link back to them. Needs Incode Cart Toolkit, which is what captures the cart.<\/li>\n<\/ul>\n\n<p>They are created as drafts on purpose: you review the wording, set your own discount and switch them on yourself.<\/p>\n\n<h4>Triggers<\/h4>\n\n<ul>\n<li>An order is completed<\/li>\n<li>An order is paid<\/li>\n<li>An order is cancelled or fails<\/li>\n<li>A customer registers, filtered by role<\/li>\n<\/ul>\n\n<h4>Conditions<\/h4>\n\n<ul>\n<li>Number of orders by the customer, optionally within the last N days<\/li>\n<li>Whether this is their first purchase<\/li>\n<li>Order total<\/li>\n<li>Total spend by the customer<\/li>\n<li>Whether the coupon you sent has been used<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<p>An automation is not a sleeping process. Each person inside one is a row with a \"resume at\" date, and a 15-minute heartbeat runs whatever is due. A five-day wait costs nothing while it waits, and if the server is down for a week, everything resumes where it left off when it comes back.<\/p>\n\n<p>Coupons are single-use, carry an expiry date and can be restricted to the person who received them.<\/p>\n\n<h4>What this plugin does not do<\/h4>\n\n<p>It does not manage subscriber lists, segments, opt-in forms or newsletters. That belongs to an email marketing plugin, and this one is meant to sit next to it, not replace it. If you already run the same automation there, switch one of the two off so customers are not offered the same discount twice.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>The plugin sends email only to people who trigger an automation in your own store, and every email carries an unsubscribe link. Nothing is sent to any external service: no analytics, no third-party API calls, no phoning home.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin from Plugins &gt; Add New, or upload the <code>incode-automations<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Go to Incode Cart Toolkit &gt; Automations.<\/li>\n<li>Create one from a recipe, review the email, and switch it on.<\/li>\n<\/ol>\n\n<p>WooCommerce must be active.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20replace%20my%20newsletter%20plugin%3F\"><h3>Does it replace my newsletter plugin?<\/h3><\/dt>\n<dd><p>No. This one automates the store: orders, coupons, follow-ups. Lists, forms and newsletters stay with your email marketing plugin.<\/p><\/dd>\n<dt id=\"do%20the%20coupons%20show%20up%20in%20the%20public%20coupon%20list%3F\"><h3>Do the coupons show up in the public coupon list?<\/h3><\/dt>\n<dd><p>No. They are marked as automatically generated, because they are personal: one use, one customer.<\/p><\/dd>\n<dt id=\"does%20it%20respect%20unsubscribes%3F\"><h3>Does it respect unsubscribes?<\/h3><\/dt>\n<dd><p>Yes. These are marketing emails, not transactional ones. Anyone who unsubscribes stops entering automations, and the unsubscribe list is shared with Incode Cart Toolkit when that plugin is installed.<\/p><\/dd>\n<dt id=\"does%20it%20need%20wp-cron%3F\"><h3>Does it need WP-Cron?<\/h3><\/dt>\n<dd><p>Yes. Delays are dispatched by a scheduled event that runs every 15 minutes. A real server cron pointing at <code>wp-cron.php<\/code> makes the timing more precise on low-traffic stores.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20people%20already%20inside%20an%20automation%20when%20i%20edit%20it%3F\"><h3>What happens to people already inside an automation when I edit it?<\/h3><\/dt>\n<dd><p>They keep going with the version that was in place when they entered. Changes apply to whoever enters from then on.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.9<\/h4>\n\n<ul>\n<li>Abandoned cart recipes stop as soon as the person pays. Before every email the recipe checks whether their cart became an order or they have a paid order, whatever way it was paid (another device, an order created in the admin and paid with \"Pay for order\"...). Live runs are also closed the moment Incode Cart Toolkit reports the payment.<\/li>\n<li>One run per person and recipe, even when two carts arrive at the same moment. A newer cart from someone already in the recipe updates that run instead of starting another, and after a run there is a 30-day rest before the same person can start the recipe again. Filter: <code>ctkau_dias_entre_tandas<\/code>.<\/li>\n<li>Abandoned cart emails follow the limit per person of Incode Cart Toolkit 1.0.14 and later: at most one a day and three in 30 days, counting every recipe and the cart reminders. A step that would break it is skipped and noted in the run.<\/li>\n<li>Empty carts and carts older than three days no longer start a recipe. Filter: <code>ctkau_dias_carrito_reciente<\/code>.<\/li>\n<\/ul>\n\n<h4>0.1.8<\/h4>\n\n<ul>\n<li>One person, one live run per automation. Twenty different carts left by the same address used to mean twenty enrolments and twenty copies of every email, all arriving in the same minute.<\/li>\n<li>The shop no longer emails itself. The site address and the sender address are work mailboxes, not marketing contacts. Filter: <code>ctkau_correos_de_la_casa<\/code>.<\/li>\n<li>A safety brake per recipient: whatever happens further up, two automated emails no longer land on the same address back to back. Four hours by default, and it never gets in the way of a recipe whose steps are further apart than that. Filter: <code>ctkau_minutos_entre_correos<\/code>.<\/li>\n<\/ul>\n\n<h4>0.1.7<\/h4>\n\n<ul>\n<li>Internal names now carry a longer, distinctive prefix, so they cannot collide with another plugin's.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>The Incode Cart Toolkit panel now loads its stylesheet through the WordPress queue instead of printing it into the page, so caching and optimisation plugins can see it.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>First-run steps in the Incode Cart Toolkit panel: a short checklist that is ticked against your own store -- whether a recipe exists, whether it is switched on, who signs your emails and whether the schedule is running -- and disappears on its own when there is nothing left to do.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>New trigger: abandoned cart. With Incode Cart Toolkit installed, an automation can now start on its own when someone leaves a cart behind, and the email carries the recovery link and the products that were left in it.<\/li>\n<li>New ready-made recipe: abandoned cart recovery, an email half an hour later and a last reminder a day after.<\/li>\n<li>Emails now go out with a real design -- your logo, the products with their picture and price, a proper button and a footer with your shop details -- instead of plain text. Colours, logo and footer can be changed with the ctkau_diseno option or filter.<\/li>\n<li>The email step gained Headline, Opening and Sign-off fields, so the button sits between the closing paragraph and the goodbye instead of at the very bottom.<\/li>\n<li>New {cart_url} variable: the link that takes the customer back to what they left.<\/li>\n<li>Every email now carries an unsubscribe link in its footer.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>The module cards in the shared panel now read \"active\" and \"inactive\" instead of \"on\" and \"off\".<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>The Incode Cart Toolkit panel now also lists the add-ons of the family you do not have installed yet, next to the ones you do.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>English is now the source language, with Spanish bundled as a translation, so the plugin can be translated into any language.<\/li>\n<li>Table names are passed as prepared identifiers, and everything coming in from a form is unslashed, sanitised and escaped on the way out.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release: step engine with waits, conditions, coupons and emails; the first ready-made recipes; order and customer triggers.<\/li>\n<\/ul>","raw_excerpt":"Turn what happens in your WooCommerce store into automations: wait, check a condition, create a coupon and send the email.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/376965","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=376965"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/adrianincode"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=376965"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=376965"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=376965"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=376965"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=376965"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=376965"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}