<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Roshan Jonnalagadda</title>
    <description>The latest articles on DEV Community by Roshan Jonnalagadda (@roshan_jonnalagadda_ced3c).</description>
    <link>https://dev.to/roshan_jonnalagadda_ced3c</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3951564%2F70ecdbb3-83a8-47d3-bd85-a54db6cf8d47.png</url>
      <title>DEV Community: Roshan Jonnalagadda</title>
      <link>https://dev.to/roshan_jonnalagadda_ced3c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/roshan_jonnalagadda_ced3c"/>
    <language>en</language>
    <item>
      <title>Sendmux CLI: email inbox API in your terminal</title>
      <dc:creator>Roshan Jonnalagadda</dc:creator>
      <pubDate>Thu, 18 Jun 2026 10:10:54 +0000</pubDate>
      <link>https://dev.to/roshan_jonnalagadda_ced3c/sendmux-cli-email-inbox-api-in-your-terminal-5emc</link>
      <guid>https://dev.to/roshan_jonnalagadda_ced3c/sendmux-cli-email-inbox-api-in-your-terminal-5emc</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8o1rz3nbjxmlyldst3wx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8o1rz3nbjxmlyldst3wx.png" alt="Install Sendmux CLI" width="800" height="783"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of agent email testing starts with the same awkward loop: send a message, refresh a dashboard, copy JSON, then guess what your agent will see.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sendmux.ai/docs/cli" rel="noopener noreferrer"&gt;Sendmux CLI&lt;/a&gt; cuts that loop down to the terminal.&lt;/p&gt;

&lt;p&gt;It gives developers and AI agents direct access to Sendmux: an email inbox API for AI agents and SaaS platforms. You can create and manage mailboxes, search inbound mail, send email, inspect API responses, and script the same workflows your app or agent will run later.&lt;/p&gt;

&lt;p&gt;If your AI agent needs to receive email, triage messages, search an inbox, reply to a thread, or send outbound mail through a controlled email sending API, the CLI is the fastest way to prove the flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Sendmux does
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://sendmux.ai" rel="noopener noreferrer"&gt;Sendmux&lt;/a&gt; gives software and AI agents a proper email layer.&lt;/p&gt;

&lt;p&gt;Instead of stitching together a sending provider, IMAP access, inbound parsing, webhooks, API keys, mailbox storage, and agent tooling by hand, Sendmux puts those surfaces behind one API platform.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;complete email API platform&lt;/strong&gt; includes the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://sendmux.ai/product/inboxes/#agent-mailboxes" rel="noopener noreferrer"&gt;Email Inbox API&lt;/a&gt; for receiving, searching, reading, and managing agent inboxes&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sendmux.ai/product/sending/#multi-provider-routing" rel="noopener noreferrer"&gt;Sending API&lt;/a&gt; for outbound email from a mailbox&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sendmux.ai/product/platform/#multi-tenancy" rel="noopener noreferrer"&gt;Management API&lt;/a&gt; for teams, domains, mailboxes, API keys, routing, and platform controls&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sendmux.ai/docs/sdks" rel="noopener noreferrer"&gt;SDKs&lt;/a&gt; for TypeScript, Python, Go, PHP, and Ruby&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sendmux.ai/docs/guides/mcp" rel="noopener noreferrer"&gt;MCP&lt;/a&gt; for authorised AI agent access&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://sendmux.ai/docs/cli" rel="noopener noreferrer"&gt;CLI&lt;/a&gt; for terminal workflows, scripts, debugging, and automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That means Sendmux can act as an email inbox API, inbound email API, email sending API, SMTP API, and agent mailbox layer from one system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the CLI exists
&lt;/h2&gt;

&lt;p&gt;Email infrastructure gets painful when the first question is, "Where do I test this?"&lt;/p&gt;

&lt;p&gt;With Sendmux CLI, the terminal becomes the control surface.&lt;/p&gt;

&lt;p&gt;You can list mailboxes, inspect messages, search snippets, send test emails, and verify API behaviour in the same environment where your agent, scripts, or CI jobs already run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's why that matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can test an agent inbox before wiring it into an app&lt;/li&gt;
&lt;li&gt;You can search inbound email without building a UI&lt;/li&gt;
&lt;li&gt;You can send a controlled outbound email from a mailbox&lt;/li&gt;
&lt;li&gt;You can debug API responses with machine-readable JSON&lt;/li&gt;
&lt;li&gt;You can manage Sendmux resources in scripts&lt;/li&gt;
&lt;li&gt;You can validate scoped API keys before handing them to an agent&lt;/li&gt;
&lt;li&gt;You can prototype email workflows before moving them into an SDK&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;sendmux/tap/sendmux
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @sendmux/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then configure local profiles so you do not pass keys on every command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sendmux profiles:set management &lt;span class="nt"&gt;--api-key&lt;/span&gt; smx_root_...
sendmux profiles:set mailbox &lt;span class="nt"&gt;--api-key&lt;/span&gt; smx_mbx_...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Management commands use &lt;code&gt;smx_root_&lt;/code&gt; keys. Mailbox and sending commands use &lt;code&gt;smx_mbx_&lt;/code&gt; keys.&lt;/p&gt;

&lt;p&gt;The CLI checks key prefixes before making the API call, so the wrong key type fails early instead of hitting the network.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three workflows that show the shape of it
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5l0xyr593o1gu11k6kk4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5l0xyr593o1gu11k6kk4.png" alt="listing Sendmux mailboxes from the terminal" width="799" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. List agent mailboxes
&lt;/h3&gt;

&lt;p&gt;A platform or agent operator can list the mailboxes available in a Sendmux workspace.&lt;/p&gt;

&lt;p&gt;This helps before assigning inboxes to agents, checking mailbox provisioning, or confirming a management key can see the expected resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5ohf1q25m68c36oeat38.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5ohf1q25m68c36oeat38.png" alt="searching an inbox with the email inbox API" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Search inbound email
&lt;/h3&gt;

&lt;p&gt;Agents need more than raw email delivery. They need searchable, structured access to messages.&lt;/p&gt;

&lt;p&gt;With the Email Inbox API through the CLI, you can search snippets in an agent inbox and return clean JSON for another process to read.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The result:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find the latest invoice email&lt;/li&gt;
&lt;li&gt;Search unread support messages&lt;/li&gt;
&lt;li&gt;Pull matching messages into a triage script&lt;/li&gt;
&lt;li&gt;Check whether an external service sent a verification email&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8gy9wly34k5zx6ly4f04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8gy9wly34k5zx6ly4f04.png" alt="sending email from a Sendmux mailbox" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Send outbound mail
&lt;/h3&gt;

&lt;p&gt;Sendmux also handles outbound email.&lt;/p&gt;

&lt;p&gt;From the CLI, you can send through the Sending API using a mailbox-scoped key. You can include idempotency keys for safer retries and use JSON output when another tool needs to process the result.&lt;/p&gt;

&lt;p&gt;This fits agent replies, transactional email tests, workflow notifications, and scripted operational mail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built for humans and agents
&lt;/h2&gt;

&lt;p&gt;The CLI is designed for developers at a terminal and agents that need predictable output.&lt;/p&gt;

&lt;p&gt;By default, API commands print readable JSON. Add &lt;code&gt;--json&lt;/code&gt; when you need machine-readable output for scripts, agent tools, or automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The CLI also supports practical API flags:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--body&lt;/code&gt; for inline JSON request bodies&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--body-file&lt;/code&gt; for request payloads from disk&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--query&lt;/code&gt; for query parameters&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--path&lt;/code&gt; for path parameters&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--header&lt;/code&gt; for extra headers&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--idempotency-key&lt;/code&gt; for safer send retries&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--if-match&lt;/code&gt; and &lt;code&gt;--if-none-match&lt;/code&gt; where supported by the API operation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The command set is generated from Sendmux public API surfaces. The current CLI includes 95 generated API operation commands: 40 Mailbox commands, 52 Management commands, and 3 Sending commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where CLI fits beside MCP and SDKs
&lt;/h2&gt;

&lt;p&gt;Sendmux gives you a few ways to work, depending on where the task lives.&lt;/p&gt;

&lt;p&gt;Use MCP when an AI agent should call authorised Sendmux tools directly. Sendmux has Documentation MCP for searching docs and Product MCP for authorised Management, Mailbox, and Sending tools.&lt;/p&gt;

&lt;p&gt;Use SDKs when you are building application code. Sendmux SDKs are available for TypeScript, Python, Go, PHP, and Ruby.&lt;/p&gt;

&lt;p&gt;Use CLI when you want terminal control: one-off checks, local testing, scripts, CI jobs, debugging, and agent-friendly JSON workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A simple way to choose:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MCP is for agent tool access&lt;/li&gt;
&lt;li&gt;SDKs are for application code&lt;/li&gt;
&lt;li&gt;CLI is for terminal workflows&lt;/li&gt;
&lt;li&gt;APIs are the underlying contract&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this matters for AI agents
&lt;/h2&gt;

&lt;p&gt;AI agents increasingly need to deal with real-world systems that still use email.&lt;/p&gt;

&lt;p&gt;Verification emails. Invoices. Support threads. Customer replies. Vendor notices. Billing alerts. Operational messages.&lt;/p&gt;

&lt;p&gt;A normal inbox is built for a human with a mouse. An AI agent needs an API.&lt;/p&gt;

&lt;p&gt;Sendmux gives agents a programmable inbox, outbound email, webhooks, Server-Sent Events for mailbox updates, scoped API keys, MCP tools, and SDKs. The CLI gives developers the quickest way to inspect and prove those workflows before shipping them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Install the CLI, create a mailbox-scoped key, and run a small workflow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;List a mailbox&lt;/li&gt;
&lt;li&gt;Search for a message&lt;/li&gt;
&lt;li&gt;Send a test email&lt;/li&gt;
&lt;li&gt;Repeat the same flow from an SDK or MCP-enabled agent&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the point of Sendmux CLI: email infrastructure you can see, test, script, and hand to agents without leaving the terminal.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>email</category>
      <category>agents</category>
      <category>api</category>
    </item>
    <item>
      <title>We Built a Feedback Widget That Ships Submissions Straight to Your Inbox</title>
      <dc:creator>Roshan Jonnalagadda</dc:creator>
      <pubDate>Tue, 26 May 2026 04:14:50 +0000</pubDate>
      <link>https://dev.to/roshan_jonnalagadda_ced3c/we-built-a-feedback-widget-that-ships-submissions-straight-to-your-inbox-44ie</link>
      <guid>https://dev.to/roshan_jonnalagadda_ced3c/we-built-a-feedback-widget-that-ships-submissions-straight-to-your-inbox-44ie</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz7naplpgkhj96njbyxw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxz7naplpgkhj96njbyxw.gif" alt="Animated Sendmux Feedback Widget flow showing category selection, compose, and success states" width="800" height="653"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Most feedback widgets are dead ends. A user fills out a form, hits submit, and the data lands in a dashboard no one checks. Two weeks later someone remembers to log in, scrolls through 47 entries, and gives up.&lt;/p&gt;

&lt;p&gt;Sendmux Feedback Widget is a drop-in Web Component that turns website and in-app feedback into structured JSON you can route to a webhook or an inbox. It is built for teams who want user input to trigger work instead of sitting in a database.&lt;/p&gt;

&lt;p&gt;Here is how it works.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does the widget do?
&lt;/h2&gt;

&lt;p&gt;It is a single custom element called . Drop it into React, Vue, Svelte, or plain HTML. It renders a floating button and a modal for collecting feedback. The user picks a category, writes a message, and hits send. Your server receives clean JSON with the message, page URL, category, and any user context you pass in.&lt;/p&gt;

&lt;p&gt;One line to install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm add @sendmux/feedback-widget
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One line to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;sendmux-feedback&lt;/span&gt;
  &lt;span class="na"&gt;endpoint=&lt;/span&gt;&lt;span class="s"&gt;"/api/feedback"&lt;/span&gt;
  &lt;span class="na"&gt;position=&lt;/span&gt;&lt;span class="s"&gt;"bottom-right"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&amp;lt;/sendmux-feedback&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Zero framework dependencies. Shadow DOM styles so it won't fight your site's CSS. SSR-safe import for Next.js or Nuxt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why email-first?
&lt;/h2&gt;

&lt;p&gt;Here is the thing: email is the universal API every team already knows how to read. Support tools, agent frameworks, and automation platforms can all consume an inbox. So instead of building yet another dashboard, we made the widget deliver structured data to a webhook or a secure relay that turns it into email. From there your agents can classify it, group duplicates by URL or user, summarise threads, or open GitHub issues automatically.&lt;/p&gt;

&lt;p&gt;The widget itself does not ship the agent. It ships the collection layer and the payload contract. You build the workflow on top.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about accessibility?
&lt;/h2&gt;

&lt;p&gt;The modal traps focus, supports keyboard navigation, labels every control, and respects prefers-reduced-motion. Dark mode is automatic if your site already sets it. The component uses system fonts by default but accepts a Google Font if your brand requires one.&lt;/p&gt;

&lt;p&gt;Too many open-source UI components ship with accessibility as an afterthought. We treated it as a requirement from the first commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick look at the payload
&lt;/h2&gt;

&lt;p&gt;When a user submits feedback, your endpoint receives this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bug"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The export button does nothing on mobile"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mysite.com/dashboard"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"user"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user_123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"email"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"customer@example.com"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"metadata"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"plan"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"pro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"account_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"acct_456"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can pass user context and metadata from your app without exposing secrets in the DOM. The widget reads from a global config object if you prefer that over HTML attributes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is this for?
&lt;/h2&gt;

&lt;p&gt;If you run a SaaS product and you want user feedback to trigger actual work, this is for you. If you are building agent workflows that consume email as input, this gives you a frontend collection layer that outputs exactly the structured data you need.&lt;/p&gt;

&lt;p&gt;If you just want a free alternative to Canny or UserVoice without the overhead, this also works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to get it
&lt;/h2&gt;

&lt;p&gt;The repo is open-source on GitHub: &lt;a href="https://github.com/Sendmux/website-feedback-widget" rel="noopener noreferrer"&gt;https://github.com/Sendmux/website-feedback-widget&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We ship a package install today. A CDN bundle via unpkg is coming after the next release. Documentation and a live demo are in the README.&lt;/p&gt;

&lt;p&gt;If you try it, open an issue or start a discussion. We are actively using this as the collection layer for Sendmux itself, so it will keep improving.&lt;/p&gt;

&lt;p&gt;What would you hook a feedback widget up to? A support queue? A GitHub Action? Something we have not thought of yet? I would genuinely like to know.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webcomponents</category>
      <category>opensource</category>
      <category>sideprojects</category>
    </item>
  </channel>
</rss>
