{"id":44030,"date":"2026-03-16T15:20:11","date_gmt":"2026-03-16T09:50:11","guid":{"rendered":"https:\/\/www.inogic.com\/blog\/?p=44030"},"modified":"2026-03-16T15:20:11","modified_gmt":"2026-03-16T09:50:11","slug":"step-by-step-guide-to-creating-low-code-plug-ins-for-copilot","status":"publish","type":"post","link":"https:\/\/www.inogic.com\/blog\/2026\/03\/step-by-step-guide-to-creating-low-code-plug-ins-for-copilot\/","title":{"rendered":"Step-by-Step Guide to Creating Low-Code Plug-Ins for Copilot"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignnone size-full wp-image-44040\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot.png\" alt=\"\" width=\"2100\" height=\"1200\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot.png 2100w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot-300x171.png 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot-1024x585.png 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot-768x439.png 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot-1536x878.png 1536w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot-2048x1170.png 2048w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Step-by-Step-Guide-to-Creating-Low-Code-Plug-Ins-for-Copilot-660x377.png 660w\" sizes=\"(max-width: 2100px) 100vw, 2100px\" \/><\/p>\n<p>While exploring the capabilities of low-code plug-ins in Dataverse in our previous <a href=\"https:\/\/www.inogic.com\/blog\/2023\/12\/low-code-plug-ins-using-the-dataverse-accelerator-app-preview\/\" target=\"_blank\" rel=\"noopener\">blog<\/a>, we experimented with a simple scenario involving billing details calculation. The objective was to implement a small piece of logic that calculates the total bill amount based on values such as price, duration, and user count.<\/p>\n<p>During the implementation, you may notice that the same low-code plug-in can also be used as an action within a Copilot Agent. Curious to explore this capability further, you might decide to experiment by integrating the plug-in into a Copilot Agent to see how it could enhance the user experience.<\/p>\n<p>To test this, you can add the plug-in as an action in the Copilot Agent and interact with it using natural language prompts. The results are quite encouraging\u2014it works seamlessly. The Copilot Agent triggers the plug-in based on the user\u2019s prompt and returns the required total billing details.<\/p>\n<p>In this blog, we will demonstrate how to create a Low-Code Plug-in and integrate it with a Copilot Agent to execute actions.<\/p>\n<h3><strong>Step-by-Step Guide to Create low-code plug-ins to use with a copilot:<\/strong><\/h3>\n<p><strong>Step 1: Create Low-Code Plug-Ins from the Dataverse Accelerator App.<\/strong><\/p>\n<p>A comprehensive guide on creating a low-code plug-in is available in our previous <a href=\"https:\/\/www.inogic.com\/blog\/2023\/12\/low-code-plug-ins-using-the-dataverse-accelerator-app-preview\/\" target=\"_blank\" rel=\"noopener\">blog<\/a> and can be referred to for detailed steps.<\/p>\n<p><strong>Step 2: Now, we will see how to use these plug-ins within the Copilot Agent.<\/strong><\/p>\n<p>The Copilot Agent is used to invoke these plug-ins so that business logic can be executed dynamically based on user queries. By integrating plug-ins with the Copilot Agent, you can enable automated actions, real-time data processing, and intelligent responses within the conversation experience. To do this,<\/p>\n<ul>\n<li>Create an agent in <strong>Copilot Studio<\/strong>.<\/li>\n<li>Add a <strong>Tool<\/strong> to the agent.<\/li>\n<li>From the available options, select <strong>Perform Unbound Action<\/strong> to proceed.<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-44031\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-1.jpg\" alt=\"Dataverse Accelerator App.\" width=\"1031\" height=\"576\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-1.jpg 1031w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-1-300x168.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-1-1024x572.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-1-768x429.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-1-660x369.jpg 660w\" sizes=\"(max-width: 1031px) 100vw, 1031px\" \/><\/p>\n<ul>\n<li>Fill in the <strong>Name<\/strong>, <strong>Description<\/strong>, and <strong>Inputs<\/strong>.<\/li>\n<li>Select the <strong>environment<\/strong> where the plug-in is created.<\/li>\n<li>In the <strong>Action<\/strong> field, select the <strong>plug-in<\/strong> you created.<\/li>\n<li><strong>Map the required inputs<\/strong> to the plug-in parameters.<\/li>\n<li>Click <strong>Save<\/strong> to complete the configuration.<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-44032\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-2.jpg\" alt=\"Dataverse Accelerator App.\" width=\"844\" height=\"602\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-2.jpg 844w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-2-300x214.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-2-768x548.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-2-660x471.jpg 660w\" sizes=\"(max-width: 844px) 100vw, 844px\" \/><\/p>\n<p>You can test it by giving the Prompt. It will successfully calculate and display the billing details.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-44033\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-3.jpg\" alt=\"Dataverse Accelerator App.\" width=\"1297\" height=\"595\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-3.jpg 1297w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-3-300x138.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-3-1024x470.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-3-768x352.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-3-660x303.jpg 660w\" sizes=\"(max-width: 1297px) 100vw, 1297px\" \/><\/p>\n<p>We implemented a <strong>low-code plug-in <\/strong>that provided a <strong>quick overview of the Opportunity <\/strong>table and <strong>sent reminder notifications <\/strong>to record owners whose <strong>Estimated Close Date <\/strong>was approaching.<\/p>\n<p>Calling this Plug-in in the Copilot agent as an action, users can simply ask questions such as requesting an overview of Opportunities or identifying records with an upcoming <strong>Estimated Close Date<\/strong>. Based on the prompt, the Copilot Agent automatically calls the plug-in, retrieves the relevant data, and can even trigger <strong>reminder notifications to the respective record owners.<\/strong><\/p>\n<p><strong><img decoding=\"async\" class=\"alignnone size-full wp-image-44034\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-4.jpg\" alt=\"low-code plug-in \" width=\"1301\" height=\"585\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-4.jpg 1301w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-4-300x135.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-4-1024x460.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-4-768x345.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-4-660x297.jpg 660w\" sizes=\"(max-width: 1301px) 100vw, 1301px\" \/><\/strong><\/p>\n<p>Do the Same for all Plug-ins that you have created. Add the tool to select Unbound Action. Fill in the Details and map the input, then save.<\/p>\n<h3>Test and Result<\/h3>\n<p><strong>Test Case 1: <\/strong>Overview of the Opportunity Entity.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-44035\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-5.jpg\" alt=\"Overview on Opportunity\" width=\"1039\" height=\"473\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-5.jpg 1039w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-5-300x137.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-5-1024x466.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-5-768x350.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-5-660x300.jpg 660w\" sizes=\"(max-width: 1039px) 100vw, 1039px\" \/><strong>Test Case 2: <\/strong>Send the Reminder to the owner of the Opportunities Record whose Estimated Close Date is within the Specified Range of Days.<\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-44036\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-6.jpg\" alt=\"Notify to Record owner\" width=\"1293\" height=\"599\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-6.jpg 1293w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-6-300x139.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-6-1024x474.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-6-768x356.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-6-660x306.jpg 660w\" sizes=\"(max-width: 1293px) 100vw, 1293px\" \/><\/p>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-44037\" style=\"border: 1px solid #000000; padding: 1px; margin: 1px;\" src=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-7.jpg\" alt=\"Dataverse Accelerator App.\" width=\"1049\" height=\"527\" srcset=\"https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-7.jpg 1049w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-7-300x151.jpg 300w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-7-1024x514.jpg 1024w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-7-768x386.jpg 768w, https:\/\/www.inogic.com\/blog\/wp-content\/uploads\/2026\/03\/Low-Code-Plug-Ins-7-660x332.jpg 660w\" sizes=\"(max-width: 1049px) 100vw, 1049px\" \/>These scenarios demonstrate that, by leveraging low-code plug-ins, Copilot can perform dynamic data summarization and derive actionable insights directly from table data without requiring users to repeatedly apply filters. Additionally, trigger contextual reminders or notifications based on the derived insights with user consent.<\/p>\n<h3>Frequently Asked Questions (FAQs)<\/h3>\n<p><strong>Q1. What is a low-code plugin in Dataverse?<\/strong><\/p>\n<p>A low-code plugin is a Power Fx-based function created in the Dataverse Accelerator App that can be registered as a Generative Action in Copilot Studio. It allows you to query, create, or update Dataverse records through natural language without writing traditional code.<\/p>\n<p><strong>Q2. How does XSendAppNotification work?<\/strong><\/p>\n<p>XSendAppNotification sends an in-app notification to a user in a Model Driven App. It takes 2 parameters &#8211; the notification title (String) and the recipient (User record). The notification appears in the Bell icon in the Model Driven App.<\/p>\n<h3>Conclusion<\/h3>\n<p>Low-code plugins significantly extend CRM Copilot capabilities by enabling Power Fx-based business logic execution directly within the Dataverse runtime &#8211; eliminating the need for C# custom plugins, sandbox assemblies, or external automation layers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>While exploring the capabilities of low-code plug-ins in Dataverse in our previous blog, we experimented with a simple scenario involving billing details calculation. The objective was to implement a small piece of logic that calculates the total bill amount based on values such as price, duration, and user count. During the implementation, you may notice\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.inogic.com\/blog\/2026\/03\/step-by-step-guide-to-creating-low-code-plug-ins-for-copilot\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":15,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2746,2354,2361],"tags":[3322,3323],"class_list":["post-44030","post","type-post","status-publish","format-standard","hentry","category-copilot","category-dataverse","category-technical","tag-low-code","tag-plug-ins"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/44030","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/users\/15"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/comments?post=44030"}],"version-history":[{"count":0,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/posts\/44030\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/media?parent=44030"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/categories?post=44030"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inogic.com\/blog\/wp-json\/wp\/v2\/tags?post=44030"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}