<?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: Amrita Labs</title>
    <description>The latest articles on DEV Community by Amrita Labs (@amrita-labs).</description>
    <link>https://dev.to/amrita-labs</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%2F1709008%2Ff136279e-81bc-4d52-ad35-1865b804eaf2.png</url>
      <title>DEV Community: Amrita Labs</title>
      <link>https://dev.to/amrita-labs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amrita-labs"/>
    <language>en</language>
    <item>
      <title>Pinterest Pin Scorer: Feed Score vs Pin Detail Score vs Pin Doctor</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Wed, 07 Oct 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/pinterest-pin-scorer-feed-score-vs-pin-detail-score-vs-pin-doctor-4fh7</link>
      <guid>https://dev.to/amrita-labs/pinterest-pin-scorer-feed-score-vs-pin-detail-score-vs-pin-doctor-4fh7</guid>
      <description>&lt;h1&gt;
  
  
  Pinterest Pin Scorer: Feed Score vs Pin Detail Score vs Pin Doctor
&lt;/h1&gt;

&lt;p&gt;A Pinterest Pin can look different depending on where you inspect it. In the feed, you see a compact card. In the closeup, you can review more of the Pin's details. In Create Pin, you are working on a draft that you can still change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://amrita-labs.com/pinello/?utm_source=amrita-labs&amp;amp;utm_medium=owned-content&amp;amp;utm_campaign=pinello_launch_2026-10&amp;amp;utm_content=feed-detail-score-pin-doctor" rel="noopener noreferrer"&gt;Pinello&lt;/a&gt; is a free Chrome extension that scores Pinterest pins across 5 dimensions — image, board fit, title, description, and hashtags — in real time.&lt;/strong&gt; It places three related surfaces around those three moments: Feed Score while you browse, Pin Detail Score when you open a Pin, and Pin Doctor while you prepare your own Pin.&lt;/p&gt;

&lt;p&gt;These surfaces belong to one workflow, but they are not interchangeable. Each one answers a different question: Which Pins are worth a closer look? What can I learn from this Pin's fuller context? What should I fix in my own draft before publishing?&lt;br&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%2F4wb53jui92dfek3ha95c.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%2F4wb53jui92dfek3ha95c.png" alt="Pinello Feed Score badges displayed on Pinterest feed cards" width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pinello surface&lt;/th&gt;
&lt;th&gt;Where you see it&lt;/th&gt;
&lt;th&gt;What it is for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Feed Score&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pinterest feed cards&lt;/td&gt;
&lt;td&gt;A quick signal while you browse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pin Detail Score&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The Pin closeup&lt;/td&gt;
&lt;td&gt;A fuller inspection using the information available there&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pin Doctor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pinterest Create Pin&lt;/td&gt;
&lt;td&gt;Pre-publish checks and guidance on the next fix&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The numbers can differ because the surfaces have different inputs. That is not a bug, and it is not a promise that one number is the "real Pinterest score." These are Pinello's own quality-review signals based on the information available at that moment.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Feed Score: a quick signal while you browse
&lt;/h2&gt;

&lt;p&gt;Feed Score is designed for speed. As you browse Pinterest, Pinello adds score badges to feed cards so you can decide which Pins deserve a closer look.&lt;/p&gt;

&lt;p&gt;This is useful when you are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collecting inspiration for a new Etsy listing&lt;/li&gt;
&lt;li&gt;Reviewing Pins in a niche before designing your own&lt;/li&gt;
&lt;li&gt;Looking for examples of title and description patterns&lt;/li&gt;
&lt;li&gt;Comparing several Pins without opening every one&lt;/li&gt;
&lt;li&gt;Saving promising Pins to local Favorites for later&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The feed card does not always expose every field available inside the Pin closeup. A Feed Score is therefore a browse-time signal, not a complete inspection.&lt;/p&gt;

&lt;p&gt;The surrounding context still matters. Depending on what Pinterest exposes, Pinello can show creator and board context, visible stats, and other details that help you understand what you are looking at. Those details are useful for research, but they should not be treated as an official Pinterest measurement or as an explanation of future distribution.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use Feed Score
&lt;/h3&gt;

&lt;p&gt;Use Feed Score when you are moving quickly through a feed and want a compact way to prioritize what to inspect next. You do not need to stop and analyze every Pin. Start with the Pins that are relevant to your topic, then open the ones that contain useful examples or context.&lt;/p&gt;

&lt;p&gt;For example, an Etsy seller planning a nursery-art collection might browse several related searches, note which Pins are visually clear, and save a few useful references. Feed Score helps keep that first pass lightweight.&lt;/p&gt;

&lt;p&gt;Do not copy another creator's wording or assume that a score explains why a Pin received attention. Use the feed view to collect examples and questions for your own publishing workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Pin Detail Score: inspect the closeup
&lt;/h2&gt;

&lt;p&gt;Pin Detail Score appears when you open a Pin. The closeup can expose fuller information than the feed card, such as the title, description, board, image dimensions, creator context, visible stats, and other available Pin metadata.&lt;/p&gt;

&lt;p&gt;With that fuller view, Pinello can recompute its score using more inputs. A Pin that received a partial Feed Score may receive a different Pin Detail Score simply because more information is now available.&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%2F54vf549yuc0r5uz6vhcm.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%2F54vf549yuc0r5uz6vhcm.png" alt="Pinello Pin Detail Score and Pin context shown in the Pinterest closeup" width="497" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use the closeup to ask better questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does the title actually say?&lt;/li&gt;
&lt;li&gt;Does the description add useful context?&lt;/li&gt;
&lt;li&gt;Which board is attached?&lt;/li&gt;
&lt;li&gt;Are the image dimensions and presentation what you expected?&lt;/li&gt;
&lt;li&gt;What creator and board context is visible?&lt;/li&gt;
&lt;li&gt;Which details are supplied by Pinterest, and which are Pinello checks?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also save the Pin to local Favorites. Favorites keep useful research in your browser, where you can filter or sort saved Pins by available score and review them later. This creates a reference set without turning a score into a claim about what will happen next.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Feed Score and Pin Detail Score may not match
&lt;/h3&gt;

&lt;p&gt;Imagine a feed card with a strong image and a short visible title. Feed Score may use that limited information. When you open the Pin, the closeup may reveal a blank description, a different board context, or additional metadata. Pin Detail Score can account for the fuller view.&lt;/p&gt;

&lt;p&gt;The reverse can happen too. A field may be unavailable, incomplete, or exposed inconsistently. Pinello shows the score it can calculate from the current evidence and uses source labels where the distinction matters.&lt;/p&gt;

&lt;p&gt;The practical interpretation is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Feed Score&lt;/strong&gt; is a quick browse-time check.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pin Detail Score&lt;/strong&gt; is a fuller closeup check.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither one is an official Pinterest ranking score, and neither one predicts reach, saves, clicks, or future performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Pin Doctor: improve your own draft
&lt;/h2&gt;

&lt;p&gt;Pin Doctor is the creation-side surface. It appears inside Pinterest's Create Pin workflow, where you can still edit the image, title, description, topics, and board.&lt;/p&gt;

&lt;p&gt;Instead of helping you choose what to inspect, Pin Doctor helps you decide what to fix next. Depending on the available fields and the current draft, it includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Image checks&lt;/li&gt;
&lt;li&gt;Title checks&lt;/li&gt;
&lt;li&gt;Description checks&lt;/li&gt;
&lt;li&gt;Topic and hashtag checks&lt;/li&gt;
&lt;li&gt;Board-related checks&lt;/li&gt;
&lt;li&gt;SEO Audit&lt;/li&gt;
&lt;li&gt;A publish-status chip&lt;/li&gt;
&lt;li&gt;Focus next for the most important issue&lt;/li&gt;
&lt;li&gt;Before-and-after rescore after you revise the draft&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%2Flnfx445iw3g45tp8qlqi.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%2Flnfx445iw3g45tp8qlqi.png" alt="Pinello Pin Doctor showing SEO Audit and the pre-publish review workflow" width="400" height="799"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The distinction is important. Feed Score and Pin Detail Score help you inspect Pins you are browsing. Pin Doctor is for the Pin you are preparing to publish.&lt;/p&gt;

&lt;h3&gt;
  
  
  When to use Pin Doctor
&lt;/h3&gt;

&lt;p&gt;Open Pin Doctor after you have chosen the Pin's direction and are ready to review the draft. Start with SEO Audit and Focus next rather than trying to change everything at once.&lt;/p&gt;

&lt;p&gt;If the title is vague, rewrite it so the topic is clearer. If the description is empty, add useful context in natural language. If the selected board does not fit the Pin, review the board choice and run the explicit Board Match check when appropriate.&lt;/p&gt;

&lt;p&gt;When you use an AI action, Pinello returns a copy-only suggestion to your clipboard. You choose whether to paste it, edit it, or ignore it. Pinello does not publish the suggestion for you, and the final wording remains your decision.&lt;/p&gt;

&lt;p&gt;After making a change, review the draft again. The before-and-after rescore helps you see whether the change improved the checks that were available for that draft.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical browse-to-publish workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Browse with Feed Score
&lt;/h3&gt;

&lt;p&gt;Start on Pinterest and look for Pins relevant to the topic, audience, and format you are researching. Use Feed Score to prioritize which examples deserve more attention. Save useful references to Favorites rather than opening every card immediately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Inspect promising Pins with Pin Detail Score
&lt;/h3&gt;

&lt;p&gt;Open a small set of Pins and compare their closeup details. Look at titles, descriptions, boards, image treatment, and visible creator or board context.&lt;/p&gt;

&lt;p&gt;You are building a better brief for your own Pin: what is clear, what is missing, and which decisions seem intentional. Pinello can help you inspect those fields. It does not tell you that another Pin will win or that your version will receive a particular result.&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%2F49s2y5h8f82k0mihr68q.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%2F49s2y5h8f82k0mihr68q.png" alt="Pinello comparison view showing the transition from a feed signal to fuller Pin detail" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Improve your own draft with Pin Doctor
&lt;/h3&gt;

&lt;p&gt;Create your Pin, select the board, and open Pin Doctor. Start with the highest-priority issue, make a focused revision, and review the result again.&lt;/p&gt;

&lt;p&gt;This order keeps research and creation separate. You can learn from the context around existing Pins without copying them, then apply the useful lessons to a draft that belongs to you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Source labels keep the scores understandable
&lt;/h2&gt;

&lt;p&gt;Pinello uses plain labels to distinguish what you are seeing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;From Pinterest&lt;/strong&gt; — information exposed by Pinterest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pinello check&lt;/strong&gt; — a local or rule-based review&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI suggestion&lt;/strong&gt; — copy generated only after you request an action&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not provided by Pinterest&lt;/strong&gt; — information the platform does not expose to Pinello&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This distinction is especially useful when reviewing Board Match or a copy suggestion. Those are Pinello tools for decision support, not official Pinterest judgments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which surface should you use?
&lt;/h2&gt;

&lt;p&gt;Use &lt;strong&gt;Feed Score&lt;/strong&gt; when you are moving quickly through a feed and want a compact signal.&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;Pin Detail Score&lt;/strong&gt; when a Pin is worth opening and you want fuller context.&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;Pin Doctor&lt;/strong&gt; when the Pin belongs to you and you can still edit it before publishing.&lt;/p&gt;

&lt;p&gt;You do not need to choose one surface forever. A creator can browse for inspiration, inspect a saved example, and then switch to Pin Doctor for the actual publishing workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What none of these scores means
&lt;/h2&gt;

&lt;p&gt;None of these surfaces predicts reach, virality, ranking, saves, clicks, timing, or future performance. Pinterest's own systems and user behavior include information outside the fields a browser extension can inspect.&lt;/p&gt;

&lt;p&gt;Pinello's narrower promise is more practical: it makes visible checks easier before you publish. You can improve a vague title because it is vague. You can choose a board because it fits the Pin. You can repair an incomplete description because it leaves out the point. Those are decisions you can make before publishing without pretending to know the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try the full inspect-to-improve workflow
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://amrita-labs.com/pinello/?utm_source=amrita-labs&amp;amp;utm_medium=owned-content&amp;amp;utm_campaign=pinello_launch_2026-10&amp;amp;utm_content=feed-detail-score-pin-doctor" rel="noopener noreferrer"&gt;See the Pinello workflow for browsing, inspecting, and improving Pins&lt;/a&gt;. The landing page shows where Feed Score, Pin Detail Score, and Pin Doctor fit without asking you to treat any one number as a guarantee.&lt;/p&gt;

</description>
      <category>pinterest</category>
      <category>marketing</category>
    </item>
    <item>
      <title>How to Tell If Your Pinterest Pin Will Perform (Before You Post)</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/how-to-tell-if-your-pinterest-pin-will-perform-before-you-post-1fdn</link>
      <guid>https://dev.to/amrita-labs/how-to-tell-if-your-pinterest-pin-will-perform-before-you-post-1fdn</guid>
      <description>&lt;p&gt;Some Pinterest pins feel dead on arrival.&lt;/p&gt;

&lt;p&gt;You post them, maybe give them a day, and it is obvious they are not going anywhere. Then another pin — sometimes one you spent less time on — keeps getting impressions, saves, and clicks for weeks. That used to feel random to me. The more pins I watched, the less random it looked.&lt;/p&gt;

&lt;p&gt;A lot of the difference shows up before the pin is even published. Pinterest gets an immediate set of signals from the image, the board, the title, the description, and then the first wave of engagement. If those signals are weak, the pin rarely gets much room to recover.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/kmelegdnljikegoemigfgnpcbllmkije" rel="noopener noreferrer"&gt;Pinello&lt;/a&gt; is a free Chrome extension that scores Pinterest pins across 5 dimensions — image, board fit, title, description, and keywords — in real time, directly on pinterest.com.&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%2Fmibtt0jwaz11gjusi9b7.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%2Fmibtt0jwaz11gjusi9b7.png" alt="Pinterest pin scoring checklist — 5 dimensions to check before posting" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the pre-publish check I use when I want a pin to have a better shot.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first 24 hours matter more than people think
&lt;/h2&gt;

&lt;p&gt;Pinterest is not purely chronological, but early signals still matter.&lt;/p&gt;

&lt;p&gt;If a pin gets a decent first impression — people stop, save, or click — Pinterest has a reason to keep showing it. If the pin looks confusing, mismatched, or under-optimized, it often stalls before it gets that chance.&lt;/p&gt;

&lt;p&gt;That is why I care so much about the stuff that is fixable &lt;em&gt;before&lt;/em&gt; I post.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5 signals I look at before posting a pin
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Will the image stop the scroll?
&lt;/h3&gt;

&lt;p&gt;Before I think about keywords, I do the thumbnail test.&lt;/p&gt;

&lt;p&gt;Pinterest is visual, and the image gets judged fast. I usually stick to &lt;strong&gt;2:3 vertical format (1000×1500px)&lt;/strong&gt; because it fills the feed cleanly without weird cropping. Then I ask a few blunt questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the pin readable on a phone?&lt;/li&gt;
&lt;li&gt;Is there one clear focal point?&lt;/li&gt;
&lt;li&gt;Does the text overlay help, or is it fighting the image?&lt;/li&gt;
&lt;li&gt;Does the topic make sense in a second or less?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the thumbnail looks muddy or crowded, the rest of the pin has to work too hard.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Does the board make the topic obvious?
&lt;/h3&gt;

&lt;p&gt;The board is not just a folder. It is context.&lt;/p&gt;

&lt;p&gt;A pin about weeknight recipes belongs on a board that sounds like weeknight recipes, not a vague catch-all board with a cute name. The stronger the board context, the easier it is for Pinterest to understand what audience the pin belongs with.&lt;/p&gt;

&lt;p&gt;I want the board to do three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;use a searchable topic phrase&lt;/li&gt;
&lt;li&gt;already contain enough related pins to feel coherent&lt;/li&gt;
&lt;li&gt;make the new pin feel obviously on-theme&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When I save a great pin to a lazy board, I usually regret it later.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Does the title carry the keyword early enough?
&lt;/h3&gt;

&lt;p&gt;A good Pinterest title does not need to be fancy. It needs to be legible, specific, and front-loaded.&lt;/p&gt;

&lt;p&gt;Only part of the title gets real attention in the feed, especially on mobile, so I try to get the key phrase near the front. Titles like these do a clearer job:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Minimalist Bedroom Ideas for Small Spaces"&lt;/li&gt;
&lt;li&gt;"25 Modern Bathroom Ideas Under $500"&lt;/li&gt;
&lt;li&gt;"2026 Wedding Color Trends"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What I avoid are titles that waste the opening on filler: "Check this out," "I love this," "Great tips," and so on. They may sound friendly, but they do not help Pinterest or the reader understand the pin.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Does the description give Pinterest enough context?
&lt;/h3&gt;

&lt;p&gt;This is where a lot of pins quietly underperform.&lt;/p&gt;

&lt;p&gt;If the description is blank, Pinterest has less text to work with. If the description is robotic, it feels stuffed. I want something in the middle: enough context to reinforce the topic, but still readable.&lt;/p&gt;

&lt;p&gt;Usually that means &lt;strong&gt;100-300 characters&lt;/strong&gt; and 2-3 natural sentences.&lt;/p&gt;

&lt;p&gt;I also do not waste space on hashtag stuffing here. On Pinterest, that space is better spent on plain-language keywords that actually describe the pin.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Easy 30-minute chicken stir fry recipe with vegetables. A simple weeknight dinner idea for busy families who still want something healthy. Save this for your next meal prep day."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That does not try too hard. It just tells Pinterest, and the reader, what the pin is for.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Am I giving the pin a decent first-day chance?
&lt;/h3&gt;

&lt;p&gt;This is the signal people skip because it feels less tangible.&lt;/p&gt;

&lt;p&gt;The first 24 hours still matter. Saves are strong. Clicks help. Even just stopping the scroll matters more than a pin getting tossed into the void at a random time.&lt;/p&gt;

&lt;p&gt;So before I post, I try to think about distribution too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Am I posting when my audience is actually around?&lt;/li&gt;
&lt;li&gt;Is this going to the most relevant board first?&lt;/li&gt;
&lt;li&gt;Do I have a reason to expect early saves or clicks?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I do not obsess over timing hacks, but I do not pretend timing is irrelevant either.&lt;/p&gt;

&lt;h2&gt;
  
  
  My pre-publish Pinterest pin checklist
&lt;/h2&gt;

&lt;p&gt;Before every pin, I run through this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;✅ Ready to post&lt;/th&gt;
&lt;th&gt;❌ Fix first&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Image&lt;/td&gt;
&lt;td&gt;2:3 ratio, bright, readable at thumbnail&lt;/td&gt;
&lt;td&gt;Square/landscape, dark, tiny text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Board&lt;/td&gt;
&lt;td&gt;Keyword title, 10+ pins, topically matched&lt;/td&gt;
&lt;td&gt;Creative name, empty, random mix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Title&lt;/td&gt;
&lt;td&gt;Keyword in first 40 chars, specific&lt;/td&gt;
&lt;td&gt;Vague, starts with filler words&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;100-300 chars, 2-3 keywords, CTA&lt;/td&gt;
&lt;td&gt;Empty, one sentence, hashtag spam&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timing&lt;/td&gt;
&lt;td&gt;Peak hours for your audience&lt;/td&gt;
&lt;td&gt;Random time, no thought to scheduling&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If even one row feels weak, I usually fix it. That is much easier than trying to diagnose a flop afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I automate now
&lt;/h2&gt;

&lt;p&gt;You can absolutely do this checklist manually. I still do, sometimes.&lt;/p&gt;

&lt;p&gt;But if you are publishing a lot of pins, the easy mistakes pile up. Wrong board. Weak title. Empty description. Image resized badly in a rush. That is why we built Pinello to score those dimensions directly on pinterest.com while the pin is still in front of you.&lt;/p&gt;

&lt;p&gt;The main benefit is not that it predicts the future perfectly. It is that it catches the obvious misses before they become performance problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  The few changes that fix most weak pins
&lt;/h2&gt;

&lt;p&gt;If I had to simplify all of this down to the handful of fixes that matter most, it would be these:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Use vertical 2:3 images.&lt;/strong&gt; This is still the easiest win.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put the keyword early in the title.&lt;/strong&gt; Do not bury the topic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write a real description.&lt;/strong&gt; Empty descriptions are usually wasted upside.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose the board on purpose.&lt;/strong&gt; Context matters more than a lot of creators assume.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That will not guarantee a viral pin. It will give the pin a fairer chance, which is usually the more useful goal.&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%2F632ynfuvkltk6yde70ih.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%2F632ynfuvkltk6yde70ih.png" alt="Pinello scoring a Pinterest pin — showing image, board fit, title, description, and keyword scores" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Score your next pin before posting
&lt;/h2&gt;

&lt;p&gt;Before you hit publish, give the pin one last check. &lt;a href="https://chromewebstore.google.com/detail/kmelegdnljikegoemigfgnpcbllmkije" rel="noopener noreferrer"&gt;Install Pinello from the Chrome Web Store&lt;/a&gt; — it's free, works directly on pinterest.com, and scores your pins across all 5 dimensions before you post. No signup needed.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at Amrita Labs. We build browser tools that help creators optimize before publishing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>pinterest</category>
      <category>seo</category>
      <category>socialmedia</category>
      <category>contentmarketing</category>
    </item>
    <item>
      <title>How I Set Up PostHog in a Chrome Extension (MV3, Content Script + Background Worker)</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Tue, 28 Jul 2026 10:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/how-i-set-up-posthog-in-a-chrome-extension-mv3-content-script-background-worker-5ale</link>
      <guid>https://dev.to/amrita-labs/how-i-set-up-posthog-in-a-chrome-extension-mv3-content-script-background-worker-5ale</guid>
      <description>&lt;p&gt;Every analytics tutorial I found assumed I was building a normal web app. One runtime. One page lifecycle. One obvious place to initialize the SDK.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A Chrome extension in V3 is not that polite.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Manifest V3, you have a background service worker that goes to sleep, content scripts living inside tabs, and little UI surfaces like the popup that vanish the second someone clicks away. The first time I tried to add PostHog to that setup, I realized the usual advice was not going to help much.&lt;/p&gt;

&lt;p&gt;So this is the setup I ended up with for a Chrome extension: simple enough to maintain, anonymous by default, and good enough to answer the only questions I actually care about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The first decision: where PostHog should live
&lt;/h2&gt;

&lt;p&gt;This is the part that matters most.&lt;/p&gt;

&lt;p&gt;You &lt;em&gt;can&lt;/em&gt; initialize PostHog in the background service worker. You get one shared place, which is nice. But the background worker cannot see the DOM, and most of the interesting product moments in my extensions happen where the user is typing or looking at something inside the page.&lt;/p&gt;

&lt;p&gt;You &lt;em&gt;can&lt;/em&gt; initialize it in the popup or options page too. That is easy, but it only works while that UI is open. For actual product usage, that felt too narrow.&lt;/p&gt;

&lt;p&gt;I ended up initializing PostHog in the &lt;strong&gt;content script&lt;/strong&gt;. That puts it closest to the real user action. In MV3, content scripts run in an isolated world, so PostHog's CDN setup is workable there as long as the project API key is available at build time.&lt;/p&gt;

&lt;p&gt;I still use the background worker for extension plumbing. I just do not make it the main analytics home.&lt;/p&gt;

&lt;h2&gt;
  
  
  The small build-time trick that makes this workable
&lt;/h2&gt;

&lt;p&gt;The PostHog project API key is public anyway, so I stopped overthinking it and baked it into the build:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// wxt.config.ts — bake the key at build time&lt;/span&gt;
&lt;span class="c1"&gt;// Set VITE_POSTHOG_PROJECT_API_KEY in your CI secrets&lt;/span&gt;

&lt;span class="c1"&gt;// telemetry.ts&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;POSTHOG_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VITE_POSTHOG_PROJECT_API_KEY&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That avoided adding another config fetch or permission dance. For a Chrome extension, fewer moving parts is usually the right answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  I use an anonymous device ID, not a user ID
&lt;/h2&gt;

&lt;p&gt;I did not want email addresses, names, or anything else that would make the privacy story messy. Privacy of my users as important to me as my own privacy while using products.&lt;/p&gt;

&lt;p&gt;So on install, I generate a random UUID and keep it in &lt;code&gt;chrome.storage.local&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getOrCreateDeviceId&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;stored&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;local&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;deviceId&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;stored&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deviceId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;stored&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deviceId&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;crypto&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;randomUUID&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;local&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;deviceId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That becomes PostHog's &lt;code&gt;distinct_id&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It is enough to answer questions like "Did this person install and come back?" without turning the extension into a surveillance project.&lt;/p&gt;

&lt;h2&gt;
  
  
  I track fewer events than I thought I would
&lt;/h2&gt;

&lt;p&gt;My first instinct was to track everything. That would have been a mistake.&lt;/p&gt;

&lt;p&gt;In practice, four events told me almost everything I needed to know:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Install (once)&lt;/span&gt;
&lt;span class="nx"&gt;posthog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;capture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;install&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;runtime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getManifest&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Core value action (the moment they get value)&lt;/span&gt;
&lt;span class="nx"&gt;posthog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;capture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;subject_scored&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;dimension&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Monetization trigger&lt;/span&gt;
&lt;span class="nx"&gt;posthog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;capture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;paywall_shown&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;tier&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;free&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;scores_used&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Expansion action&lt;/span&gt;
&lt;span class="nx"&gt;posthog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;capture&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rewrite_requested&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;dimension&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is it.&lt;/p&gt;

&lt;p&gt;Those four events tell me whether people are installing, reaching the value moment, hitting the limit, and asking for the "do it for me" feature. I can always add more later, but starting small kept the data readable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging got easier once I stopped putting it in the UI
&lt;/h2&gt;

&lt;p&gt;For development, I auto-enable debug mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;debugEnabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MODE&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;development&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And if I need to turn on extra logging manually, I can do it from DevTools:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;chrome&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;storage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;local&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;debugLogging&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I briefly considered a user-facing debug toggle. Then I imagined normal users seeing it and wondering whether something was broken. That was enough to kill the idea.&lt;/p&gt;

&lt;h2&gt;
  
  
  The dashboard I actually check
&lt;/h2&gt;

&lt;p&gt;This part is refreshingly unglamorous.&lt;/p&gt;

&lt;p&gt;I set up one funnel insight:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install&lt;/li&gt;
&lt;li&gt;Core action&lt;/li&gt;
&lt;li&gt;Paywall shown&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Then I filter by &lt;code&gt;app&lt;/code&gt; and look at daily trends.&lt;/p&gt;

&lt;p&gt;That is basically the whole analytics system. I do not need 19 dashboards. I need a quick answer to: are people using the thing, and where do they stop?&lt;/p&gt;

&lt;h2&gt;
  
  
  The privacy part I did not want to get wrong
&lt;/h2&gt;

&lt;p&gt;A few rules I kept from day one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Anonymous UUID only — no PII&lt;/li&gt;
&lt;li&gt;✅ No page content in events, only counts and categories&lt;/li&gt;
&lt;li&gt;✅ Privacy policy discloses anonymous usage events&lt;/li&gt;
&lt;li&gt;✅ Chrome Web Store data disclosure does &lt;strong&gt;not&lt;/strong&gt; claim personally identifiable information&lt;/li&gt;
&lt;li&gt;✅ Even if a UUID is often treated differently from direct personal data, I still disclose it plainly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gave me a setup I could defend without squirming.&lt;/p&gt;

&lt;h2&gt;
  
  
  If I were helping a friend do this tomorrow
&lt;/h2&gt;

&lt;p&gt;I would not start with "How do I instrument everything?"&lt;/p&gt;

&lt;p&gt;I would start with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one place to initialize PostHog&lt;/li&gt;
&lt;li&gt;one anonymous identifier&lt;/li&gt;
&lt;li&gt;four or five events that map to the funnel&lt;/li&gt;
&lt;li&gt;one dashboard you will actually open&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That gets you useful telemetry in a Chrome extension without letting analytics become its own side project.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at Amrita Labs. We build Chrome extensions with privacy-first analytics.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>chrome</category>
      <category>analytics</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Built a Chrome Extension That Scores Your Gmail Subject Lines — Here's What I Learned</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/i-built-a-chrome-extension-that-scores-your-gmail-subject-lines-heres-what-i-learned-1ade</link>
      <guid>https://dev.to/amrita-labs/i-built-a-chrome-extension-that-scores-your-gmail-subject-lines-heres-what-i-learned-1ade</guid>
      <description>&lt;p&gt;A few months ago I was sending cold emails for a side project. Personalized openers, clear asks, short paragraphs — I thought the emails were good. But my reply rate was garbage. Like, 1-2% garbage.&lt;/p&gt;

&lt;p&gt;I started digging into why. Turns out most of my emails weren't even being opened. They were landing in spam or getting ignored at the subject line.&lt;/p&gt;

&lt;p&gt;The frustrating part? I'd spend 20 minutes writing a thoughtful email body, then slap on a subject line in 5 seconds. "Quick question." "Following up." "Hey!" Basically handing Gmail's spam filter a reason to bury me.&lt;/p&gt;

&lt;p&gt;So I did what any engineer would do when annoyed enough — I built something.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I actually built
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;EmailSubjectScore Pro&lt;/a&gt; is a Chrome extension that sits inside Gmail's compose window. As you type a subject line, it scores it on three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spam risk&lt;/strong&gt; — are you triggering filters without realizing it?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clarity&lt;/strong&gt; — does the recipient know what this email is about?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Urgency&lt;/strong&gt; — is there a reason to open it now vs. never?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your subject scores poorly, you hit "Suggest rewrite" and the AI proposes alternatives. You pick one, it drops into the subject field. Done.&lt;/p&gt;

&lt;p&gt;No external tabs. No copy-pasting. It just... sits there in Gmail and tells you when your subject line sucks.&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%2F4mp8mscdo78sv9ccxanq.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%2F4mp8mscdo78sv9ccxanq.png" alt="EmailSubjectScore Pro scoring a subject line inside Gmail compose — green score means ready to send" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The three things I learned about subject lines
&lt;/h2&gt;

&lt;p&gt;Building the scoring engine forced me to study what actually works. Most subject line advice online is recycled fluff. But three patterns kept showing up in the data:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spam triggers are sneakier than you think.&lt;/strong&gt; Everyone knows to avoid "FREE" and "ACT NOW." But "just checking in" and "quick question" are also flagged now — they've been so overused by sales automation that Gmail treats them as spam signals. The extension catches these in real time, which is something I didn't expect to be so useful for myself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specific beats clever, every time.&lt;/strong&gt; "Thought you'd find this interesting" tells the recipient nothing. "Your onboarding flow has a 60% drop-off at step 3" tells them exactly why they should care. The best subject lines make a promise so specific that the person can decide in 2 seconds whether it's worth opening. No mystery, no games.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Front-load or die.&lt;/strong&gt; On a phone lock screen, you see maybe 30-35 characters of a subject line. If your important words come after "Hey [Name], I just wanted to reach out because..." — nobody will ever see them. The extension penalizes subjects where the keywords are buried past character 40. Sounds obvious, but I was doing it constantly before I had a score staring me in the face.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before and after
&lt;/h2&gt;

&lt;p&gt;Some real examples from my own emails:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"Quick question"&lt;/td&gt;
&lt;td&gt;"Can you review these 3 vendor proposals by Friday?"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Following up"&lt;/td&gt;
&lt;td&gt;"The pricing expires June 30 — here's the breakdown"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Hey!"&lt;/td&gt;
&lt;td&gt;"Your AWS bill is 3x higher than similar companies"&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The befores aren't terrible emails written by terrible people. They're what happens when you're in a rush and don't think about it. The afters are what happens when something nudges you for 5 seconds.&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%2Fbke4k0712d0lemwomfbw.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%2Fbke4k0712d0lemwomfbw.png" alt="EmailSubjectScore Pro showing rewrite suggestions for a weak subject line" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it's at
&lt;/h2&gt;

&lt;p&gt;100 + installs within a month so far, organic CWS traffic. It's early but also tells me that it is a common problem.&lt;/p&gt;

&lt;p&gt;The free tier gives you 50 AI scores per month and 10 per day. Enough to cover a normal person's important emails without hitting a wall.&lt;/p&gt;

&lt;p&gt;If you try it and something feels off — a score that doesn't make sense, a rewrite that sounds weird, a bug where it doesn't show up in compose — genuinely tell us. We're building this for people who send emails that matter, and the best feedback comes from people actually using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;→ &lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;Install EmailSubjectScore Pro (free)&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at Amrita Labs. We build browser tools for people who send important emails.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>tutorial</category>
      <category>email</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Azure Functions ESM Imports: The Silent Bug That Deploys Fine and Registers 0 Endpoints</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/azure-functions-esm-imports-the-silent-bug-that-deploys-fine-and-registers-0-endpoints-1fn6</link>
      <guid>https://dev.to/amrita-labs/azure-functions-esm-imports-the-silent-bug-that-deploys-fine-and-registers-0-endpoints-1fn6</guid>
      <description>&lt;p&gt;I had one of those deploys that makes you question your own eyesight. &lt;code&gt;func azure functionapp publish&lt;/code&gt; said everything was fine. Azure Portal showed a healthy Function App. My local tests passed. The build passed. Then I ran &lt;code&gt;az functionapp function list&lt;/code&gt; and got... nothing.&lt;/p&gt;

&lt;p&gt;Not broken endpoints. Not one broken endpoint. Zero endpoints registered.&lt;/p&gt;

&lt;p&gt;I lost about four hours to this before the fix turned out to be one boring, insulting detail: I was missing &lt;code&gt;.js&lt;/code&gt; on a relative import.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup looked healthy
&lt;/h2&gt;

&lt;p&gt;This was the stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure Functions v4&lt;/li&gt;
&lt;li&gt;Node.js 22&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"type": "module"&lt;/code&gt; in &lt;code&gt;package.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clean local runs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which is exactly why this bug is so annoying. Everything around the app looks healthy. Azure uploads the code just fine. The runtime is what falls over.&lt;/p&gt;

&lt;h2&gt;
  
  
  The actual ESM import problem in Azure Functions
&lt;/h2&gt;

&lt;p&gt;In Node ESM, relative imports need file extensions. Every time. TypeScript does not magically exempt you from that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ❌ Looks fine in dev, fails in production Node ESM&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;logLlmCall&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../telemetry&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// ✅ What the runtime actually needs&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;logLlmCall&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../telemetry.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That mismatch was the whole issue.&lt;/p&gt;

&lt;p&gt;TypeScript compiled happily. Vitest ran happily. My editor did not complain. But once Azure tried to load the compiled JavaScript, Node followed ESM rules strictly, hit &lt;code&gt;ERR_MODULE_NOT_FOUND&lt;/code&gt;, and the Functions host never finished registering the app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Azure Functions feels silent when this breaks
&lt;/h2&gt;

&lt;p&gt;This is the part that made the whole thing feel cursed.&lt;/p&gt;

&lt;p&gt;The deploy command can still succeed because the package upload is fine. The Function App can still start. The failure happens during cold start, when the runtime walks your module graph. If one import is wrong, the app crashes before Azure registers any functions.&lt;/p&gt;

&lt;p&gt;So from the outside, it looks like a successful deployment with a mysteriously empty Function App. The real error usually lives in Application Insights, not in the publish output.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I finally diagnosed it
&lt;/h2&gt;

&lt;p&gt;The first useful command was this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;az functionapp &lt;span class="k"&gt;function &lt;/span&gt;list &lt;span class="nt"&gt;--name&lt;/span&gt; your-func-app &lt;span class="nt"&gt;--resource-group&lt;/span&gt; your-rg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that returns an empty array right after a "successful" deploy, I would assume cold-start failure until proven otherwise.&lt;/p&gt;

&lt;p&gt;From there, Application Insights told the truth. In &lt;strong&gt;Traces&lt;/strong&gt;, filtering for &lt;code&gt;ERR_MODULE_NOT_FOUND&lt;/code&gt; made the problem obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix was annoyingly simple
&lt;/h2&gt;

&lt;p&gt;I went through every relative import in my TypeScript source and added &lt;code&gt;.js&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;coherenceScore&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./scoring.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;logLlmCall&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../telemetry.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;CACHE_TTL&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;../../shared/constants.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yes, importing &lt;code&gt;.js&lt;/code&gt; from a &lt;code&gt;.ts&lt;/code&gt; file feels wrong the first time you do it.&lt;/p&gt;

&lt;p&gt;Yes, it is still the right thing to do for Node ESM.&lt;/p&gt;

&lt;p&gt;After that, the exact same deployment registered endpoints normally.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would check before every Azure Functions ESM deploy now
&lt;/h2&gt;

&lt;p&gt;If I were doing this from scratch again, I would add a quick pre-deploy check for imports missing &lt;code&gt;.js&lt;/code&gt; in the built output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-rn&lt;/span&gt; &lt;span class="s2"&gt;"from &lt;/span&gt;&lt;span class="se"&gt;\"\.\.&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; dist/ | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="s2"&gt;js&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="s2"&gt;"node_modules"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If that returns anything, I would stop there and fix it before touching Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two other Azure Functions + ESM gotchas I hit
&lt;/h2&gt;

&lt;p&gt;While I was in this rabbit hole, two more sharp edges showed up:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;func azure functionapp publish&lt;/code&gt; needs &lt;code&gt;FUNCTIONS_WORKER_RUNTIME&lt;/code&gt;&lt;/strong&gt; either in &lt;code&gt;local.settings.json&lt;/code&gt; or via the &lt;code&gt;--javascript&lt;/code&gt; flag. Without it, you get "Can't determine project language."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The npm-installed &lt;code&gt;func&lt;/code&gt; CLI can break on newer Node versions&lt;/strong&gt;. On Node 26+, I had better luck with &lt;code&gt;winget install Microsoft.Azure.FunctionsCoreTools&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you are deploying a Chrome extension backend or any small Node service to Azure Functions, this is worth checking early. When ESM imports are wrong, Azure does not always scream. Sometimes it just smiles, deploys, and gives you an app with no functions.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at Amrita Labs. We build Chrome extensions powered by serverless backends on Azure.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>node</category>
      <category>typescript</category>
      <category>serverless</category>
    </item>
    <item>
      <title>How to Write Subject Lines That Actually Get Opened</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/how-to-write-subject-lines-that-actually-get-opened-2h0g</link>
      <guid>https://dev.to/amrita-labs/how-to-write-subject-lines-that-actually-get-opened-2h0g</guid>
      <description>&lt;p&gt;I have ruined plenty of decent emails with lazy subject lines.&lt;/p&gt;

&lt;p&gt;Not because the email body was bad. Usually the opposite. I would spend 20 minutes writing a careful message, tweaking the ask, trimming the paragraphs, making sure it sounded human — and then I would type something like "Quick question" in five seconds and call it done.&lt;/p&gt;

&lt;p&gt;That is such a bad trade.&lt;/p&gt;

&lt;p&gt;The subject line is the first decision point. Before someone reads your opener, before they notice your CTA, before they appreciate how thoughtful your email is, they make a snap call about whether this message deserves attention at all.&lt;/p&gt;

&lt;p&gt;If you write outreach from Gmail, &lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;EmailSubjectScore Pro&lt;/a&gt; is a free Chrome extension that scores your subject lines for spam risk, clarity, and urgency in real time — right inside the compose window.&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%2Fbke4k0712d0lemwomfbw.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%2Fbke4k0712d0lemwomfbw.png" alt="Subject line formulas and examples for cold email outreach" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I look back at the subject lines that consistently work better, they are rarely "clever." They usually just do three jobs well.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 things every great subject line does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. It creates urgency from context, not from hype
&lt;/h3&gt;

&lt;p&gt;A lot of bad subject lines try to manufacture urgency with volume: caps, exclamation marks, pressure words, fake scarcity.&lt;/p&gt;

&lt;p&gt;That is not the kind of urgency people trust.&lt;/p&gt;

&lt;p&gt;The versions that work better usually point to something real:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Your trial expires Friday — here is what changes"&lt;/li&gt;
&lt;li&gt;"Before your board meeting Thursday"&lt;/li&gt;
&lt;li&gt;"Quick thought before your launch next week"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those feel urgent because there is an actual reason to pay attention now. "URGENT!!!" feels urgent because the sender is yelling.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. It is specific enough to feel like it belongs to one person
&lt;/h3&gt;

&lt;p&gt;Generic subject lines used to get away with more. Not anymore.&lt;/p&gt;

&lt;p&gt;"Quick question," "Checking in," and "Thought you would find this interesting" all blur together now. They do not give the recipient a reason to believe the email is about &lt;em&gt;them&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Specificity is what changes that.&lt;/p&gt;

&lt;p&gt;Compare these:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bad: "Quick question"&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better: "Question about your Q3 hiring plan"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bad: "Thought you would find this interesting"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better: "Your competitor just launched a free tier — one thing stood out"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I like one simple test here: could you send this exact subject line to 100 people without changing anything? If yes, it is probably too generic.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. It survives the phone screen test
&lt;/h3&gt;

&lt;p&gt;A lot of emails are first seen on mobile, which means your subject line is fighting for maybe 30-40 visible characters.&lt;/p&gt;

&lt;p&gt;That is why front-loading matters so much.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bad: "I wanted to reach out because your team is hiring..."&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better: "Your dev team is hiring — one candidate idea"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bad: "Following up on our conversation from the conference..."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better: "SaaStr follow-up: the pricing tool I mentioned"&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the valuable part of the subject only shows up after character 45, a lot of people will never see it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Subject line formulas I keep coming back to
&lt;/h2&gt;

&lt;p&gt;I do not believe in one magic template, but there are a few patterns I reach for repeatedly because they sound natural and give the recipient a reason to open.&lt;/p&gt;

&lt;h3&gt;
  
  
  [Their thing] + question
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;"Your podcast episode on pricing — quick follow-up"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This works when there is a genuine trigger. It shows you are replying to something specific, not spraying a template.&lt;/p&gt;

&lt;h3&gt;
  
  
  Specific number + benefit
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;"Cut your support tickets by 40%?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This can work well when the number is real and the benefit is understandable in one glance. If the number feels made up, it backfires fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mutual context
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;"Sarah suggested I reach out"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Warm context still beats cold context. The trick is to use it naturally, not like borrowed credibility.&lt;/p&gt;

&lt;h3&gt;
  
  
  Observation + curiosity
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;"Noticed your pricing page skips enterprise"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I like this one because it feels grounded. You saw something. You have a reason for the email. That is enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time-anchored
&lt;/h3&gt;

&lt;p&gt;Example: &lt;strong&gt;"Before your Series B announcement"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This works best when the timing is real. If the deadline is fake, the whole email starts to smell fake too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Subject lines I have mostly stopped using
&lt;/h2&gt;

&lt;p&gt;There are a few subject lines I almost never use now, even though they used to feel harmless.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Quick question"&lt;/strong&gt; — too generic, too overused, and too closely associated with automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Following up"&lt;/strong&gt; — fine inside a real ongoing thread, weak as a standalone subject because it gives the recipient nothing new to care about.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Hope you are doing well"&lt;/strong&gt; — better as a sentence in the body than as the headline for the entire email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fake &lt;code&gt;RE:&lt;/code&gt; or &lt;code&gt;FW:&lt;/code&gt;&lt;/strong&gt; — not worth it. Even if a filter misses it, the recipient notices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;[Their company] x [Your company]&lt;/code&gt;&lt;/strong&gt; — unless the relationship is obvious already, it usually reads like partnership-template filler.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I test subject lines before sending
&lt;/h2&gt;

&lt;p&gt;I do not have a dramatic process for this. I just try not to trust my first draft too much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-time scoring.&lt;/strong&gt; If I am writing in Gmail, I want feedback while the email is still open in front of me. That is why EmailSubjectScore Pro shows spam risk, clarity, and urgency beneath the subject field as I type.&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%2F4mp8mscdo78sv9ccxanq.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%2F4mp8mscdo78sv9ccxanq.png" alt="EmailSubjectScore Pro showing spam, clarity, and urgency scores below a Gmail subject line" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A/B testing in small batches.&lt;/strong&gt; If two subject lines seem equally good, I split the send and see which one gets better replies. Not forever. Just enough to stop pretending I can always guess right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The phone test.&lt;/strong&gt; I look at the subject the way a recipient probably will: as a tiny line on a crowded phone screen. If the important words are buried, I rewrite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask one other human.&lt;/strong&gt; This sounds almost too simple, but it works. Show someone two or three options and ask which one they would open first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common mistakes by email type
&lt;/h2&gt;

&lt;p&gt;A few patterns show up over and over.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cold outreach
&lt;/h3&gt;

&lt;p&gt;People try to be mysterious. Usually it is better to be clear.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow-ups
&lt;/h3&gt;

&lt;p&gt;People reuse "Following up" when they should be adding a new reason to care.&lt;/p&gt;

&lt;h3&gt;
  
  
  Networking emails
&lt;/h3&gt;

&lt;p&gt;People force the connection too hard instead of sounding like a normal person.&lt;/p&gt;

&lt;h3&gt;
  
  
  Internal emails
&lt;/h3&gt;

&lt;p&gt;People go vague on the emails that actually need clarity most. If there is a deadline or decision, put it in the subject.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 60-second subject line audit
&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%2Fbke4k0712d0lemwomfbw.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%2Fbke4k0712d0lemwomfbw.png" alt="Subject line formulas and examples for cold email outreach" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before I send an important email, I try to give the subject line one quick pass:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Character count&lt;/strong&gt; — does the important part show up early?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spam phrases&lt;/strong&gt; — anything that sounds like automation?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specificity&lt;/strong&gt; — could this only belong to this person or company?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Urgency&lt;/strong&gt; — is there a real reason to open now?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gut check&lt;/strong&gt; — if a stranger sent this to me, would I open it?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That one minute is usually worth more than another ten minutes polishing the body.&lt;/p&gt;

&lt;h2&gt;
  
  
  Score your next subject line
&lt;/h2&gt;

&lt;p&gt;Before your next important email, give the subject line a quick score. &lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;Install EmailSubjectScore Pro&lt;/a&gt; — it's free, works inside Gmail, and shows you exactly what feels weak before you hit send. No signup, no copy-pasting to external tools.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at Amrita Labs. We build tools for people who send emails that matter.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>email</category>
      <category>coldemail</category>
      <category>productivity</category>
      <category>gmail</category>
    </item>
    <item>
      <title>Why Your Cold Emails Go to Spam (And How to Fix It)</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/why-your-cold-emails-go-to-spam-and-how-to-fix-it-23cc</link>
      <guid>https://dev.to/amrita-labs/why-your-cold-emails-go-to-spam-and-how-to-fix-it-23cc</guid>
      <description>&lt;p&gt;The hardest part about cold email is not rejection. Rejection is information. Silence is the part that messes with your head.&lt;/p&gt;

&lt;p&gt;You send 50 emails, maybe 100 if you are feeling ambitious. You refresh your inbox. Nothing. At first you start rewriting the offer in your head. Then you blame the list. Then you wonder whether your CTA was too soft. Eventually you have to admit the more annoying possibility: maybe the emails never really made it to the inbox in the first place.&lt;/p&gt;

&lt;p&gt;That is a big part of cold outreach. Even when everything is going well, reply rates usually live in the low single digits. So if your deliverability is off, the whole campaign can look dead before a human ever sees it.&lt;/p&gt;

&lt;p&gt;If you write outreach from Gmail, &lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;EmailSubjectScore Pro&lt;/a&gt; is a free Chrome extension that scores your subject lines for spam risk, clarity, and urgency in real time — right inside the compose window.&lt;br&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%2Fbke4k0712d0lemwomfbw.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%2Fbke4k0712d0lemwomfbw.png" alt="Email subject line scoring tools comparison — real-time scoring vs web-based checkers" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot of "my cold email is not working" turns out to be "my email setup and subject line are quietly working against me." These are the five problems I keep seeing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why cold emails go to spam
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Your subject line sounds like automation
&lt;/h3&gt;

&lt;p&gt;This one has gotten worse over the last few years.&lt;/p&gt;

&lt;p&gt;Everyone already knows to avoid obvious spam language like "Free," "Guaranteed," or "Act now." But the modern trap is subtler: subject lines that sound like they came from a sales sequence.&lt;/p&gt;

&lt;p&gt;"Quick question."&lt;br&gt;
"Following up."&lt;br&gt;
"Just checking in."&lt;/p&gt;

&lt;p&gt;None of those are outrageous on their own. They are just exhausted. Spam filters have seen them millions of times, and so have recipients. Even if your email body is thoughtful, the subject line can frame the whole thing as low-effort automation before the message is opened.&lt;/p&gt;

&lt;p&gt;The fix is not to become clever. It is to become specific. A subject like "Question about your Q3 hiring plan" feels more human because it clearly belongs to someone, somewhere, for a reason.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Your domain has no reputation yet
&lt;/h3&gt;

&lt;p&gt;I see founders do this all the time: buy a domain on Monday, start sending cold email on Tuesday, and then act shocked when Gmail treats them like a stranger.&lt;/p&gt;

&lt;p&gt;A new domain has no trust history. To mailbox providers, that can look a lot like spam.&lt;/p&gt;

&lt;p&gt;If you are starting fresh, you need a warm-up period. Send low-volume emails first. Have real back-and-forth conversations. Get replies. Let the domain build a normal-looking history before you turn it into an outreach engine.&lt;/p&gt;

&lt;p&gt;It is annoying because it feels slow. It is still faster than getting flagged and spending a month trying to recover deliverability.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The body looks promotional instead of personal
&lt;/h3&gt;

&lt;p&gt;Cold email works best when it still feels like email.&lt;/p&gt;

&lt;p&gt;The moment you stuff the message with links, tracking URLs, images, and extra formatting, you start drifting toward newsletter territory. Spam filters notice that, and recipients do too.&lt;/p&gt;

&lt;p&gt;The link count matters more than people think. One link is usually fine. Two can be okay. Three or more, especially with tracking wrappers, starts to feel like marketing automation.&lt;/p&gt;

&lt;p&gt;For a first-touch email, I like to keep it boring on purpose: plain text, one link max, no tracking pixel, no image, no fancy signature circus.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Your sending volume jumps too fast
&lt;/h3&gt;

&lt;p&gt;Mailbox providers care about patterns. Humans are messy but consistent. Spammers spike.&lt;/p&gt;

&lt;p&gt;If your account usually sends 8 emails a day and suddenly sends 200, that is not subtle. It looks like either a compromised account or a brand-new campaign from a domain that has not earned the right to do that yet.&lt;/p&gt;

&lt;p&gt;A gradual ramp is painfully unsexy, but it works better. Increase volume slowly. Let the domain prove it can send outreach without triggering alarms.&lt;/p&gt;

&lt;p&gt;This is one of those things that feels conservative until you have to dig yourself out of a deliverability hole. Then it feels obvious.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. You skipped SPF, DKIM, and DMARC
&lt;/h3&gt;

&lt;p&gt;These are not glamorous settings, but skipping them is one of the easiest ways to sabotage yourself.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SPF&lt;/strong&gt; tells receiving servers which systems are allowed to send on behalf of your domain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DKIM&lt;/strong&gt; signs the email so it can be verified in transit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DMARC&lt;/strong&gt; tells receiving servers what to do when those checks fail.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you skip them, you are asking inbox providers to trust a message that is harder to verify. Some will. Many will not.&lt;/p&gt;

&lt;p&gt;Setting them up is not complicated, but forgetting them is expensive.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I check a subject line before sending
&lt;/h2&gt;

&lt;p&gt;Once the technical setup is decent, the subject line is the part I want feedback on before I launch anything.&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%2F4mp8mscdo78sv9ccxanq.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%2F4mp8mscdo78sv9ccxanq.png" alt="EmailSubjectScore Pro scoring a subject line for spam risk inside Gmail compose" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few ways I do that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-time scoring.&lt;/strong&gt; If I am drafting inside Gmail, I would rather see spam-risk feedback while I am typing than after a campaign underperforms. That is why we built EmailSubjectScore Pro in the first place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small-batch testing.&lt;/strong&gt; If two subject lines both seem reasonable, I send small batches and let replies break the tie.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The phone screen test.&lt;/strong&gt; Most people first see your email on a phone. If the important words are buried after character 40, they may never be seen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are complicated. They just catch problems early, which is most of the battle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Subject line patterns that feel safer and more human
&lt;/h2&gt;

&lt;p&gt;I trust these more than the usual "quick question" template language:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Specific + relevant&lt;/strong&gt; — "Saw your talk at SaaStr — question about pricing"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observation + curiosity&lt;/strong&gt; — "Noticed something on your onboarding page"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct value&lt;/strong&gt; — "Cut your onboarding time by 30%"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Time-anchored context&lt;/strong&gt; — "Before your Q4 planning next week"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What they have in common is simple: they read like a person had a reason to send them.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick deliverability checklist before a campaign
&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%2Fbke4k0712d0lemwomfbw.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%2Fbke4k0712d0lemwomfbw.png" alt="Email subject line scoring tools comparison — real-time scoring vs web-based checkers" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before sending a batch of cold emails, this is the boring checklist I would rather run than regret:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Domain is warmed up and has some reply history&lt;/li&gt;
&lt;li&gt;[ ] SPF, DKIM, and DMARC are configured&lt;/li&gt;
&lt;li&gt;[ ] Subject line has been checked for spammy phrasing&lt;/li&gt;
&lt;li&gt;[ ] Body uses one link max on first touch&lt;/li&gt;
&lt;li&gt;[ ] No tracking pixel unless there is a very good reason&lt;/li&gt;
&lt;li&gt;[ ] Sending volume is consistent with recent history&lt;/li&gt;
&lt;li&gt;[ ] Important words appear early enough to make sense on mobile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If that list is clean and the campaign still flops, then I will start questioning the offer. But I try not to blame the copy before I have ruled out deliverability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start scoring before sending
&lt;/h2&gt;

&lt;p&gt;Most cold email mistakes are preventable. You do not need a giant deliverability stack to catch the obvious ones. You just need a way to notice the problems before you hit send.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;Install EmailSubjectScore Pro from the Chrome Web Store&lt;/a&gt; — it's free, works inside Gmail, and takes about 5 seconds to install. Score your next subject line before you send it.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article is by the team at Amrita Labs. We build tools for people who send important emails.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>email</category>
      <category>gmail</category>
      <category>coldemail</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Pinterest SEO Checklist: Score Your Pins Before Posting</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/pinterest-seo-checklist-score-your-pins-before-posting-55lj</link>
      <guid>https://dev.to/amrita-labs/pinterest-seo-checklist-score-your-pins-before-posting-55lj</guid>
      <description>&lt;p&gt;The easiest way to get disappointed on Pinterest is to treat it like Instagram.&lt;/p&gt;

&lt;p&gt;You make a pretty graphic, post it, wait for engagement, and then wonder why the pin dies with 12 impressions. I did that too at first. The annoying part is that the pin itself may be fine. It is just not packaged in a way Pinterest understands.&lt;/p&gt;

&lt;p&gt;Pinterest is much closer to a search engine than a traditional social platform. A pin is a search result. A board is context. The title and description are metadata. Once that clicks, the whole platform makes more sense.&lt;/p&gt;

&lt;p&gt;And the payoff is different too. A decent Instagram post disappears quickly. A well-optimized Pinterest pin can keep surfacing for months. Some of the pins we have posted keep getting impressions long after we stopped thinking about them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/kmelegdnljikegoemigfgnpcbllmkije" rel="noopener noreferrer"&gt;Pinello&lt;/a&gt; is a free Chrome extension that scores Pinterest pins across 5 dimensions — image, board fit, title, description, and keywords — in real time.&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%2Fmibtt0jwaz11gjusi9b7.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%2Fmibtt0jwaz11gjusi9b7.png" alt="Pinterest pin scoring checklist — 5 dimensions to check before posting" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the checklist I keep coming back to before I post anything important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Pinterest SEO matters more than followers
&lt;/h2&gt;

&lt;p&gt;One thing I like about Pinterest is that it gives smaller creators a better shot than most platforms do.&lt;/p&gt;

&lt;p&gt;A lot of Pinterest searches are unbranded. People search for things like "minimalist living room ideas" or "easy meal prep recipes," not specific creator handles. That means a small account can still win if the pin lines up with what people are actually searching for.&lt;/p&gt;

&lt;p&gt;That is also why SEO matters so much here. If the board, title, description, and image all reinforce the same topic, Pinterest has a much easier time deciding where your pin belongs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 5 parts of a Pinterest SEO checklist
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Start with the image, because Pinterest does
&lt;/h3&gt;

&lt;p&gt;Pinterest is visual first. If the image does not stop the scroll, the rest of the optimization does not get much of a chance.&lt;/p&gt;

&lt;p&gt;I stick to the boring best practice here: &lt;strong&gt;2:3 ratio, usually 1000×1500px&lt;/strong&gt;. It gives you good feed presence without awkward cropping.&lt;/p&gt;

&lt;p&gt;A few image habits that help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;keep text overlay short enough to read on a phone&lt;/li&gt;
&lt;li&gt;use contrast that survives thumbnail size&lt;/li&gt;
&lt;li&gt;avoid clutter when one focal point will do&lt;/li&gt;
&lt;li&gt;make sure the image actually signals the topic fast&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I have to squint at the thumbnail to understand the pin, I assume everyone else will keep scrolling too.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The board tells Pinterest what kind of pin this is
&lt;/h3&gt;

&lt;p&gt;This one gets missed constantly.&lt;/p&gt;

&lt;p&gt;A strong board name gives Pinterest topic context. "Healthy Dinner Recipes" is useful context. "Yum Yum" is not. Same pin, different board, very different signal.&lt;/p&gt;

&lt;p&gt;I try to keep boards boring in the best possible way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;board title uses a searchable phrase&lt;/li&gt;
&lt;li&gt;board description includes a few related keyword variations&lt;/li&gt;
&lt;li&gt;board already has enough on-topic pins to feel coherent&lt;/li&gt;
&lt;li&gt;the new pin genuinely belongs there&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I would be embarrassed to explain why a pin lives on a certain board, I take that as a sign the board choice is wrong.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. The title needs to front-load the keyword
&lt;/h3&gt;

&lt;p&gt;Pinterest gives you room for a long title, but users do not see all of it. On mobile, the useful part is often whatever appears in the first 30-40 characters.&lt;/p&gt;

&lt;p&gt;So I try to get the main phrase in early.&lt;/p&gt;

&lt;p&gt;Good titles tend to be specific:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Minimalist Bedroom Ideas for Small Spaces"&lt;/li&gt;
&lt;li&gt;"15 Easy Meal Prep Recipes for Beginners"&lt;/li&gt;
&lt;li&gt;"2026 Wedding Color Trends"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Weak titles tend to sound like placeholders:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Check This Out!"&lt;/li&gt;
&lt;li&gt;"Bathroom Inspo"&lt;/li&gt;
&lt;li&gt;"Cute Ideas"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The difference is not subtle. One helps Pinterest categorize the pin. The other just fills space.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The description is where a lot of pins quietly lose
&lt;/h3&gt;

&lt;p&gt;A lot of people leave the description blank or write one lazy sentence. That is usually wasted opportunity.&lt;/p&gt;

&lt;p&gt;I do not try to turn pin descriptions into essays. I just want 2-3 natural sentences that give Pinterest more context and give the reader one reason to care.&lt;/p&gt;

&lt;p&gt;The sweet spot for me is usually &lt;strong&gt;100-300 characters&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A useful rhythm is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;first sentence: primary keyword + what the pin gives them&lt;/li&gt;
&lt;li&gt;second sentence: related keyword variation + who it helps&lt;/li&gt;
&lt;li&gt;third sentence: light CTA if it fits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Easy 30-minute chicken stir fry recipe with vegetables. Great for busy weeknights when you want something healthier than takeout. Save this for your next meal prep day."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That reads like a person wrote it, but it still gives Pinterest plenty of relevant context.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Keywords still matter, but they need to sound natural
&lt;/h3&gt;

&lt;p&gt;The best Pinterest SEO advice is usually less glamorous than people want.&lt;/p&gt;

&lt;p&gt;Hashtags are not doing the job they used to on Pinterest. I do not treat them as meaningful SEO anymore. What matters more is whether your title, board, and description all reinforce the same search intent without sounding stuffed.&lt;/p&gt;

&lt;p&gt;When I need ideas, I usually look in three places:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pinterest search suggestions&lt;/li&gt;
&lt;li&gt;Pinterest Trends for seasonality&lt;/li&gt;
&lt;li&gt;the titles and descriptions of pins already ranking for the term&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the keyword strategy makes the description sound robotic, I back off. Pinterest still needs text signals, but readers do too.&lt;/p&gt;

&lt;h2&gt;
  
  
  My quick Pinterest SEO checklist before posting
&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%2F2rv0kiszvgi7jvmp8z1f.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%2F2rv0kiszvgi7jvmp8z1f.png" alt="Pinello scoring a Pinterest pin — showing image, board fit, title, description, and keyword scores" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before posting any pin, I run through this table:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;✅ Good (post it)&lt;/th&gt;
&lt;th&gt;❌ Bad (fix first)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Image&lt;/td&gt;
&lt;td&gt;2:3 ratio, bright, text readable on mobile&lt;/td&gt;
&lt;td&gt;Square/landscape, dark, tiny text&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Board&lt;/td&gt;
&lt;td&gt;Keyword title, 10+ pins, topically matched&lt;/td&gt;
&lt;td&gt;Creative name, empty, random mix&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Title&lt;/td&gt;
&lt;td&gt;Keyword in first 40 chars, specific&lt;/td&gt;
&lt;td&gt;Vague, too short, clickbait&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Description&lt;/td&gt;
&lt;td&gt;100-300 chars, 2-3 keywords, CTA&lt;/td&gt;
&lt;td&gt;Empty, one sentence, hashtag spam&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keywords&lt;/td&gt;
&lt;td&gt;Natural phrases in description + title&lt;/td&gt;
&lt;td&gt;Hashtags only, or none&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If one row looks weak, I usually fix it before posting. That five-minute cleanup is cheaper than guessing later why the pin stalled.&lt;/p&gt;

&lt;h2&gt;
  
  
  When manual scoring stops being fun
&lt;/h2&gt;

&lt;p&gt;If you only post occasionally, this checklist is manageable.&lt;/p&gt;

&lt;p&gt;If you are batch-creating pins for a business, it gets tedious fast. That is where automation helps. Pinello scores those same five dimensions directly on pinterest.com, which is mostly useful because it catches the boring mistakes I miss when I am rushing.&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%2F632ynfuvkltk6yde70ih.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%2F632ynfuvkltk6yde70ih.png" alt="Pinello scoring a Pinterest pin — showing image, board fit, title, description, and keyword scores" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The practical benefit is not "AI magic." It is just fewer avoidable misses: wrong board, weak title, empty description, off-ratio image.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 80/20 changes that move the needle fastest
&lt;/h2&gt;

&lt;p&gt;If this all feels like a lot, these are the three adjustments I would make first:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Use 2:3 images consistently.&lt;/strong&gt; Feed presence matters more than people think.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write real descriptions.&lt;/strong&gt; Two thoughtful sentences beats an empty field every time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rename vague boards.&lt;/strong&gt; Searchable board titles help every future pin on that board.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those three changes are not flashy, but they do more for Pinterest SEO than most hacks people chase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start scoring before posting
&lt;/h2&gt;

&lt;p&gt;Your next pin might quietly compound traffic for months, or it might disappear before anyone really sees it. The difference is often a few minutes of optimization before you hit publish.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/kmelegdnljikegoemigfgnpcbllmkije" rel="noopener noreferrer"&gt;Install Pinello from the Chrome Web Store&lt;/a&gt; — it's free, works directly on pinterest.com, and scores your pins across all 5 dimensions before you post. No signup needed.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Written by the team at Amrita Labs. We build browser tools that help creators optimize before publishing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>pintrest</category>
      <category>seo</category>
      <category>social</category>
      <category>media</category>
    </item>
    <item>
      <title>Chaty Alternative for Shopify: Free Forever, No Tracking, No Visitor Cap (2026)</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/chaty-alternative-for-shopify-free-forever-no-tracking-no-visitor-cap-2026-57g5</link>
      <guid>https://dev.to/amrita-labs/chaty-alternative-for-shopify-free-forever-no-tracking-no-visitor-cap-2026-57g5</guid>
      <description>&lt;p&gt;&lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget&lt;/a&gt; is a free Shopify chat button that competes directly with Chaty. This is a technical comparison of both apps, published by the team that ships Amrita Chat Widget — bias disclosed up front. Each claim is a fair comparison and where Chaty is stronger, or &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget&lt;/a&gt; we say so.&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%2F956l8dek1mli3n05jvcd.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%2F956l8dek1mli3n05jvcd.png" alt="Amrita Chat Widget for Shopify — one button, 9 messaging channels (WhatsApp, Messenger, Instagram, SMS, Email, LINE, Viber, Telegram, phone)" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Amrita Chat Widget on a Shopify storefront — one button opens 9 channels: WhatsApp, Facebook Messenger, Instagram, SMS, Email, LINE, Viber, Telegram, phone.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Amrita Chat Widget&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Chaty Free&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Chaty Paid&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Free forever&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free up to 500 visitors/mo&lt;/td&gt;
&lt;td&gt;$15 / $39 / $79 per month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visitor cap&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;500/mo&lt;/td&gt;
&lt;td&gt;10K / 50K / 150K per month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cookies set on storefront&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5 (including a persistent visitor ID)&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External scripts loaded&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1 (&lt;code&gt;cdn.chaty.app/pixel.js&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shadow DOM isolation (prevents theme CSS collisions)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Channels supported&lt;/td&gt;
&lt;td&gt;9 (WhatsApp, Messenger, Instagram, SMS, Email, LINE, Viber, Telegram, phone)&lt;/td&gt;
&lt;td&gt;20+&lt;/td&gt;
&lt;td&gt;20+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;App Store listing languages&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;8&lt;/strong&gt; (EN, ES, FR, PT-BR, DE, IT, NL, JA)&lt;/td&gt;
&lt;td&gt;1 (EN)&lt;/td&gt;
&lt;td&gt;1 (EN)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Admin features (agent avatars, business hours, country targeting, merge tags, live chat + AI via Chatway integration)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Short version:&lt;/strong&gt; Amrita Chat Widget is the right pick for stores that want a lightweight, private-by-default chat button that stays free at any traffic level. Chaty is the right pick for stores that need agent avatars, business hours scheduling, 20+ channels including WeChat/Skype/TikTok, or live chat plus AI. Chaty is more mature and has been shipping longer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where Chaty Free is stronger today:&lt;/strong&gt; page targeting, click triggers, an attention-pulse animation, and a contact-form channel are all in Chaty's free plan. &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget&lt;/a&gt; does not ship these YET. Stores that need any of them today are better served by Chaty Free up to the 500 visitor/month cap.&lt;/p&gt;




&lt;h2&gt;
  
  
  When to pick which
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Choose Amrita Chat Widget&lt;/strong&gt; if the store has exceeded Chaty's 500 visitor/month free cap and paid tiers are not justified, if the storefront's theme has previously been affected by widget CSS bleed, or if the store sells internationally — &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget&lt;/a&gt; App Store listing and widget both localize into 8 languages, Chaty's listing is English only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay on Chaty&lt;/strong&gt; if the store needs agent-side workflows (avatars, business hours scheduling, country targeting, merge tags), if it specifically requires WeChat, Skype (which Microsoft retired in 2025), TikTok, or Poptin, or if it needs live chat plus AI via the &lt;a href="https://chaty.app/chat-button/chatway" rel="noopener noreferrer"&gt;Chatway&lt;/a&gt; integration.&lt;/p&gt;

&lt;p&gt;Both apps solve the same top-level problem: a chat button on a Shopify storefront. The differences are in the engineering trade-offs behind that button.&lt;/p&gt;




&lt;h2&gt;
  
  
  Amrita Chat Widget at a glance
&lt;/h2&gt;

&lt;p&gt;Amrita Chat Widget installs from the Shopify App Store in under 5 minutes. Setup happens entirely inside the theme editor — no external dashboard, no separate account.&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%2Fbouxzehh7lii8w7wdum7.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%2Fbouxzehh7lii8w7wdum7.png" alt="Amrita Chat Widget theme editor setup — enable App Embed, add channels, save" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Setup: enable the App Embed in the theme editor, enter the messaging channels in use for the store, save. No code required.&lt;/em&gt;&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%2F1m4iueagq75b9lntkgdr.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%2F1m4iueagq75b9lntkgdr.png" alt="Amrita Chat Widget feature panel — 9 messaging channels for Shopify: WhatsApp, Messenger, Instagram, SMS, Email, LINE, Viber, Telegram, phone" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;9 channels supported: WhatsApp, Facebook Messenger, Instagram, SMS, Email, LINE, Viber, Telegram, phone. Merchants enable the channels their team actively replies on and hide the rest.&lt;/em&gt;&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%2Fz1b1y0o41lmqqm4ffghk.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%2Fz1b1y0o41lmqqm4ffghk.png" alt="Amrita Chat Widget WhatsApp pre-fill — messages open with the merchant's pre-written greeting" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Preset greeting for WhatsApp: a customer taps the chat button, WhatsApp opens with the merchant's pre-written message already in the compose box. The same pre-fill behavior is supported for SMS and Email.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amrita Chat Widget in six bullets:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free at any traffic level.&lt;/strong&gt; No visitor cap, no upgrade prompts, no gated features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;9 messaging channels&lt;/strong&gt; in a single button: WhatsApp, Facebook Messenger, Instagram DM, SMS, Email, LINE, Viber, Telegram, and click-to-call phone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero cookies set&lt;/strong&gt; on the storefront. Zero third-party scripts. No data leaves the browser.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shadow DOM isolated.&lt;/strong&gt; The theme's CSS cannot affect the widget, and the widget's CSS cannot affect the theme.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;8-language admin.&lt;/strong&gt; English, Spanish, French, Portuguese (BR), German, Italian, Dutch, Japanese. The widget itself auto-localizes to the storefront language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Under 5 minutes to install&lt;/strong&gt; from the &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Shopify App Store&lt;/a&gt;. No account signup, no billing screen.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What Chaty does to the storefront (as of 2026-07)
&lt;/h2&gt;

&lt;p&gt;The findings below were captured by loading Chaty's demo store inspection. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. No Shadow DOM isolation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;*&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;el&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;shadowRoot&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;
&lt;span class="c1"&gt;// → 0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every element the Chaty widget renders lives in the main document. Chaty's stylesheet loads into the customer theme &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; HTML. This is why some merchants report Chaty rendering incorrectly on specific themes. If you don't want to break your themes use &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amrita Chat Widget mounts inside a &lt;code&gt;#shadow-root&lt;/code&gt;. The theme's CSS cannot reach the widget, and the widget's CSS cannot affect the theme — an isolation model designed to avoid theme CSS collisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. External tracking script loads on every page
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://cdn.chaty.app/pixel.js?id=ebjpftyjrx&amp;amp;shop=chaty-demo.myshopify.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Third-party origin. The filename is &lt;code&gt;pixel.js&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget's&lt;/a&gt; JavaScript ships from Shopify's own CDN as an app embed. No third-party origin, no additional entries required in a Content Security Policy allowlist. This matters for stores that maintain a strict CSP for security and &lt;strong&gt;privacy.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Six global functions leak into &lt;code&gt;window&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;launch_chaty&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;close_chaty&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;open_chaty_whatsapp_popup&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;close_chaty_whatsapp_popup&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;open_chaty_contact_form&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;close_chaty_contact_form&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Programmatic access is useful for triggering the chat from a custom button. It also creates a namespace-collision risk if another app or the store's theme defines a &lt;code&gt;launch_*&lt;/code&gt; global.&lt;/p&gt;

&lt;p&gt;Amrita Chat Widget exposes no globals on &lt;code&gt;window&lt;/code&gt; by default. When programmatic control is needed, a single scoped API can be enabled instead of six top-level functions.&lt;/p&gt;




&lt;p&gt;None of the findings above indicate Chaty is doing anything wrong. These are engineering choices — perfectly valid for a chat widget. But they are choices, and merchants selecting a chat widget should evaluate them against their own storefront requirements.&lt;/p&gt;




&lt;h2&gt;
  
  
  Pricing model
&lt;/h2&gt;

&lt;p&gt;Chaty's four tiers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Visitor cap&lt;/th&gt;
&lt;th&gt;New features unlocked&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;500/mo&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;td&gt;$15/mo&lt;/td&gt;
&lt;td&gt;10,000/mo&lt;/td&gt;
&lt;td&gt;Agents Pop Up, page targeting, scheduling, country targeting, merge tags&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$39/mo&lt;/td&gt;
&lt;td&gt;50,000/mo&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Growth&lt;/td&gt;
&lt;td&gt;$79/mo&lt;/td&gt;
&lt;td&gt;150,000/mo&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Chaty's Pro and Growth tiers ship identical feature sets to Basic. The only variable across the three paid tiers is the visitor cap. At $79/month, the additional cost purchases traffic allowance, not additional widget capability. A store doing 200,000 pageviews pays $79/month for the same widget a store doing 12,000 pageviews pays $15/month for.&lt;/p&gt;

&lt;p&gt;This model is a rational fit for businesses with per-visitor serving costs. &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget&lt;/a&gt; has none — the widget is a static asset served from Shopify's own CDN. Pricing reflects that architecture: Amrita Chat Widget is &lt;strong&gt;free&lt;/strong&gt; at any traffic level. &lt;/p&gt;




&lt;h2&gt;
  
  
  Language coverage
&lt;/h2&gt;

&lt;p&gt;Chaty's App Store listing is available only in English. Merchants browsing the German, Japanese, or Brazilian Shopify App Store see "This app is not translated into your language" at the top of the Chaty listing — a friction point during evaluation from non-English markets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Amrita Chat Widget&lt;/a&gt; App Store listing ships in 8 languages: English, Spanish, French, Portuguese (Brazil), German, Italian, Dutch, and Japanese. &lt;/p&gt;




&lt;h2&gt;
  
  
  Migrating from Chaty in five minutes
&lt;/h2&gt;

&lt;p&gt;Migration completes in five steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Uninstall Chaty&lt;/strong&gt; from Shopify Admin → Apps. The storefront reloads without the widget on the next request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clear the residual cookies&lt;/strong&gt; in a test browser (Chrome → F12 → Application → Cookies → right-click the five &lt;code&gt;chaty_*&lt;/code&gt; entries → Delete). Real visitors' cookies expire on their own schedule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Install Amrita Chat Widget&lt;/strong&gt; from &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;the Shopify App Store&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable the App Embed&lt;/strong&gt; in the theme editor (Theme customize → App embeds → toggle "Amrita Chat Widget" on).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enter the channels in use&lt;/strong&gt; — WhatsApp number, Messenger page, Instagram handle, and any others the team replies on. Save.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Amrita Chat Widget does not present a billing screen, a visitor-cap warning, or an upgrade prompt at any point during setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is Amrita Chat Widget really free?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, at any traffic level — no visitor cap, no gated features. The widget is served from Shopify's CDN, so Amrita Chat Widget has no per-visitor infrastructure cost. A free tier will remain part of the product; any change to the pricing model would be disclosed on the App Store listing before it took effect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does it work with every theme?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The widget renders inside a Shadow DOM, a browser-native isolation mechanism. The theme's CSS cannot reach into the widget, and the widget's CSS cannot affect the theme. Amrita Chat Widget renders identically on Dawn, Prestige, Impulse, Warehouse, and every custom theme it has been tested against.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens above 500 visitors per month?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nothing. Amrita Chat Widget does not implement a visitor cap.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the performance cost?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amrita Chat Widget's JavaScript ships from Shopify's CDN as an app embed. It loads no third-party scripts, sets no cookies, and runs no analytics. The performance cost is a single same-origin script tag.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are WeChat, Skype, TikTok, or Poptin supported?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not currently. Amrita Chat Widget supports 9 channels: WhatsApp, Facebook Messenger, Instagram, SMS, Email, LINE, Viber, Telegram, and phone. Channel additions are prioritized by merchant demand — three or more merchant requests for a specific channel typically trigger implementation. Requests can be sent via Reddit DM (&lt;code&gt;/u/sukhmeet2390&lt;/code&gt;) or as a GitHub issue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can the widget language differ from the storefront language?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The widget reads &lt;code&gt;&amp;lt;html lang&amp;gt;&lt;/code&gt;, the attribute Shopify sets when a language is assigned to a domain or path. A Japanese storefront served at &lt;code&gt;/ja/&lt;/code&gt; renders the widget in Japanese automatically — no merchant configuration required.&lt;/p&gt;




&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;Chaty is great if the store needs agent-side workflows (avatars, business hours scheduling, country targeting, merge tags), and if it needs live chat plus AI via the &lt;a href="https://chaty.app/chat-button/chatway" rel="noopener noreferrer"&gt;Chatway&lt;/a&gt; integration.&lt;/p&gt;

&lt;p&gt;Amrita Chat Widget ships a different product: 9 channels, zero cookies, zero third-party scripts, Shadow DOM isolation, an 8-language admin, and a permanent free tier at any traffic level. Stores that prioritize a lighter storefront footprint and predictable pricing over channel breadth and agent workflows should use Amrita Chat Widget.&lt;/p&gt;

&lt;p&gt;Both apps solve the same top-level problem through different engineering trade-offs. The right choice depends on the store's requirements.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Amrita Chat Widget is built and maintained by &lt;a href="https://amrita-labs.com" rel="noopener noreferrer"&gt;Amrita Labs&lt;/a&gt;, an independent studio building focused Shopify apps. &lt;a href="https://apps.shopify.com/chat-widget-1" rel="noopener noreferrer"&gt;Install Amrita Chat Widget on the Shopify App Store&lt;/a&gt; — free forever, under five minutes to set up.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>shopify</category>
      <category>chat</category>
      <category>chatyalternative</category>
      <category>chatty</category>
    </item>
    <item>
      <title>How to Hide Slack Messages During Screen Sharing: 6 Practical Options</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/how-to-hide-slack-messages-during-screen-sharing-6-practical-options-16oh</link>
      <guid>https://dev.to/amrita-labs/how-to-hide-slack-messages-during-screen-sharing-6-practical-options-16oh</guid>
      <description>&lt;p&gt;You've probably had this moment: you're sharing your screen, talking through a project update, and then you notice Slack sitting there with a private message preview, a sensitive channel name, or a thread you definitely didn't mean to show the whole room.&lt;/p&gt;

&lt;p&gt;If you need a fix fast, &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/privacy-blur-for-slack/cejmffebfhdnhbjkhiobaecdohheimkj" rel="noopener noreferrer"&gt;Privacy Blur for Slack&lt;/a&gt;&lt;/strong&gt; is the most practical option because it lets you keep Slack open while hiding the parts you don't want coworkers or clients to see. But it's not the only way to reduce the risk.&lt;/p&gt;

&lt;p&gt;This guide walks through the best ways to hide Slack messages during screen sharing, ranked by how well they protect your privacy without slowing down your meeting. Some methods are perfect if Slack needs to stay visible. Others work better if you just want the safest possible setup before you click Share.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Slack doesn't have a built-in solution
&lt;/h2&gt;

&lt;p&gt;Slack gives you lots of control over notifications, status, and window layout, but it still doesn't offer a true presenter mode that hides message content while you share your screen. That means there is no native Slack setting that blurs existing chats, masks channel names, or hides media previews in the main interface.&lt;/p&gt;

&lt;p&gt;Slack's own Do Not Disturb tools help with &lt;strong&gt;new&lt;/strong&gt; interruptions, not &lt;strong&gt;existing&lt;/strong&gt; content already visible on your screen. So if your sidebar includes confidential channels, your DMs contain employee information, or a thread has customer details in plain view, you need a workaround before the meeting starts.&lt;/p&gt;

&lt;p&gt;The good news: you don't need to overhaul your workflow. In most cases, one of the six options below is enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Privacy Blur for Slack — Best if Slack needs to stay on screen
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/privacy-blur-for-slack/cejmffebfhdnhbjkhiobaecdohheimkj" rel="noopener noreferrer"&gt;Install Privacy Blur for Slack&lt;/a&gt;&lt;/strong&gt;&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%2Fou6c1zknv5r1ibdcjsp4.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%2Fou6c1zknv5r1ibdcjsp4.png" alt="Privacy Blur for Slack — messages blurred during screen sharing" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If Slack actually needs to be visible during the meeting, this is the best option because it solves the real problem instead of working around it. Privacy Blur for Slack works on &lt;strong&gt;app.slack.com in Chrome&lt;/strong&gt; and lets you blur the parts of Slack that usually cause embarrassment during screen sharing: messages, names, channels, and media.&lt;/p&gt;

&lt;p&gt;The big advantage is control. Instead of blurring the entire page, you can choose from &lt;strong&gt;9 independent blur zones&lt;/strong&gt; and keep the rest of Slack usable. Need to glance at a message without turning protection off completely? You can &lt;strong&gt;hover to reveal&lt;/strong&gt; specific content when you need it. There's also an &lt;strong&gt;Alt+Shift+B&lt;/strong&gt; shortcut for quick toggling before a call starts.&lt;/p&gt;

&lt;p&gt;It runs &lt;strong&gt;100% client-side with no data collection&lt;/strong&gt;, so your Slack data stays in your browser, and the free plan is enough for most people. The &lt;strong&gt;Pro plan ($3/month)&lt;/strong&gt; adds persistence and rules if you want your preferred blur setup to stick automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the extension from the Chrome Web Store.&lt;/li&gt;
&lt;li&gt;Open Slack Web in Chrome.&lt;/li&gt;
&lt;li&gt;Turn on the blur zones you want before your meeting starts.&lt;/li&gt;
&lt;li&gt;Hover to reveal only what you need while sharing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the most complete choice for managers, recruiters, founders, support teams, and anyone who has to keep Slack open during live calls.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Share only the specific window or tab you're presenting
&lt;/h2&gt;

&lt;p&gt;If you don't actually need Slack on screen, the safest method is simply not to share it. Zoom, Google Meet, and Microsoft Teams all let you share a &lt;strong&gt;specific window&lt;/strong&gt; instead of your full desktop, and Meet also lets you share a single browser tab.&lt;/p&gt;

&lt;p&gt;That means you can present your slide deck, browser tab, design file, or spreadsheet while Slack stays on another part of your computer that viewers never see. For many people, this is the easiest zero-install fix.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open only the file, browser tab, or app you plan to present.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Share&lt;/strong&gt; or &lt;strong&gt;Present&lt;/strong&gt; in your meeting tool.&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Window&lt;/strong&gt; or &lt;strong&gt;Tab&lt;/strong&gt; instead of &lt;strong&gt;Entire Screen&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Double-check the preview before confirming.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This works especially well for status updates, demos, and training sessions where Slack is not part of the presentation. The limitation is obvious: if you need to switch into Slack mid-meeting, you'll either need to stop sharing, reshare a different window, or risk showing it anyway. Great safety, less flexibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Turn on Slack Do Not Disturb or pause notifications
&lt;/h2&gt;

&lt;p&gt;If your main fear is surprise popups, Slack's built-in &lt;strong&gt;Do Not Disturb&lt;/strong&gt; feature is worth using every time you present. It pauses desktop alerts, mobile notifications, and other interruptions for a set amount of time, which immediately lowers the odds of a private message flashing onto your screen at the worst moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In Slack, click your profile picture.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Notifications&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Choose a pause length such as 30 minutes, 1 hour, or a custom time.&lt;/li&gt;
&lt;li&gt;Start your meeting once the snooze icon appears.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is quick, official, and free. It also helps if you're presenting in front of clients, leadership, or a large internal meeting where even a harmless DM preview would feel distracting.&lt;/p&gt;

&lt;p&gt;The downside: Do Not Disturb does &lt;strong&gt;not&lt;/strong&gt; hide existing conversations already open in Slack. Your channel list, message history, names, and media are still visible if Slack itself is on screen. Think of this as a backup layer, not a complete privacy solution. It's best paired with window-only sharing or a blur tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Put Slack on a second virtual desktop
&lt;/h2&gt;

&lt;p&gt;Virtual desktops are a simple middle ground between "close Slack completely" and "leave Slack exposed." On Windows, press &lt;strong&gt;Win+Tab&lt;/strong&gt; to create another desktop. On Mac, you can use &lt;strong&gt;Mission Control&lt;/strong&gt; to add a separate desktop space. Then keep Slack on one desktop and your presentation materials on another.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a second virtual desktop before the meeting.&lt;/li&gt;
&lt;li&gt;Move Slack to that desktop.&lt;/li&gt;
&lt;li&gt;Keep your slides, browser, or demo on the desktop you'll share.&lt;/li&gt;
&lt;li&gt;Switch carefully only when you need to check messages privately.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This method is helpful if you want Slack available without cluttering the workspace you're showing to everyone else. It can also reduce the mental load of constantly minimizing and reopening apps.&lt;/p&gt;

&lt;p&gt;The tradeoff is that it depends on your own discipline. If you accidentally switch desktops while sharing your entire screen, Slack can still appear. It's safer than leaving Slack front and center, but not as foolproof as blurring or sharing a single window. Best for people who multitask heavily and already use multiple desktops every day.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Close or minimize Slack before the meeting starts
&lt;/h2&gt;

&lt;p&gt;This is the least fancy option, but it's still one of the most reliable. If Slack does not need to play any role in the meeting, closing it removes the problem completely. No visible messages, no sidebar, no unread threads, no accidental channel-name reveal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Finish any urgent Slack replies before the call.&lt;/li&gt;
&lt;li&gt;Quit the Slack desktop app, close the Slack browser tab, or at least minimize the window.&lt;/li&gt;
&lt;li&gt;Start screen sharing only after confirming Slack is gone from view.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This works best for short presentations, interviews, webinars, and client walkthroughs where your attention should already be on the call. It's also a good habit when you're tired or rushed and don't want one more thing to remember.&lt;/p&gt;

&lt;p&gt;The downside is convenience. You lose instant access to chats during the meeting, and you may miss something time-sensitive until the presentation ends. Still, for pure risk reduction, "just close Slack" remains surprisingly effective.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Use a generic blur extension like Page Blur or BlurWeb
&lt;/h2&gt;

&lt;p&gt;If you want one privacy tool that works across many websites, a generic blur extension can help. Tools like &lt;strong&gt;Page Blur&lt;/strong&gt; and &lt;strong&gt;BlurWeb&lt;/strong&gt; are designed to blur elements or selected areas on web pages, which means you can use them on Slack, dashboards, CRMs, docs, and other browser-based tools.&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%2Fh3n188es1q6mnfscq2ua.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%2Fh3n188es1q6mnfscq2ua.png" alt="Page Blur extension on Chrome Web Store — generic blur for any website" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That flexibility is the main appeal. If your workday jumps between many tabs with sensitive information, a general-purpose blur tool may fit better than a site-specific extension.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the extension you prefer.&lt;/li&gt;
&lt;li&gt;Open Slack Web or another site with sensitive content.&lt;/li&gt;
&lt;li&gt;Blur the visible areas manually before you present.&lt;/li&gt;
&lt;li&gt;Test the page once to make sure the blur stays where you expect.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The tradeoff is precision and speed. Generic tools are not built specifically for Slack's layout, so they require manual element selection every single time — there's no "toggle Messages on" shortcut. If Slack's interface changes or you switch channels, you'll need to redo the blur setup from scratch. They also cannot automatically detect new messages that arrive mid-call, so content that loads after your initial blur setup may still appear unblurred. For people who screen share Slack often, a Slack-specific tool is usually faster and less error-prone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Hides existing Slack messages?&lt;/th&gt;
&lt;th&gt;Stops new popups?&lt;/th&gt;
&lt;th&gt;Keeps Slack usable during sharing?&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Privacy Blur for Slack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No — pair it with DND&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Daily Slack users who still need Slack open&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Share specific window/tab&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes, by keeping Slack off screen&lt;/td&gt;
&lt;td&gt;Usually, if Slack stays off the shared surface&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Presentations where Slack isn't needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Slack Do Not Disturb&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Preventing surprise notifications&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Virtual desktop&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Partly&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, privately&lt;/td&gt;
&lt;td&gt;Multitaskers who want Slack nearby&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Close or minimize Slack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Short meetings and lowest-risk setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Generic blur extensions&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Usually&lt;/td&gt;
&lt;td&gt;People who need privacy across many websites&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does Privacy Blur for Slack work in the Slack desktop app?
&lt;/h3&gt;

&lt;p&gt;No. Privacy Blur for Slack works on &lt;strong&gt;app.slack.com in Chrome&lt;/strong&gt;. If you mainly use the desktop app, you can switch to Slack Web before a meeting or use one of the non-extension methods in this guide.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Slack Do Not Disturb enough on its own?
&lt;/h3&gt;

&lt;p&gt;Usually no. Do Not Disturb is great for stopping new notification popups, but it does not hide the Slack content that's already sitting on your screen. If Slack will remain visible during the meeting, pair DND with either Privacy Blur for Slack or a window-sharing strategy.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the best setup for people who screen share every day?
&lt;/h3&gt;

&lt;p&gt;If Slack needs to stay open, the most practical setup is &lt;strong&gt;Privacy Blur for Slack + Slack Do Not Disturb&lt;/strong&gt;. That combination protects visible content and reduces the chance of a surprise popup at the same time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The simplest way to avoid an awkward Slack moment
&lt;/h2&gt;

&lt;p&gt;If you screen share often and still need Slack open, use the tool built for that exact problem. &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/privacy-blur-for-slack/cejmffebfhdnhbjkhiobaecdohheimkj" rel="noopener noreferrer"&gt;Install Privacy Blur for Slack&lt;/a&gt;&lt;/strong&gt; and blur messages, names, channels, and media before your next call. It's free forever, works entirely client-side, and takes less than a minute to set up.&lt;/p&gt;

</description>
      <category>slack</category>
      <category>privacy</category>
      <category>remotework</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Write Email Subject Lines That Get Replies</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/how-to-write-email-subject-lines-that-get-replies-oe1</link>
      <guid>https://dev.to/amrita-labs/how-to-write-email-subject-lines-that-get-replies-oe1</guid>
      <description>&lt;p&gt;Your email lives or dies in about 2-3 seconds. Before anyone reads your pitch, proposal, follow-up, or intro, they scan the subject line and make a snap decision: open, ignore, or delete.&lt;/p&gt;

&lt;p&gt;That tiny line carries more weight than most people realize. Cleanlist reports that 47% of recipients open an email based on the subject line alone, while 69% report emails as spam based on the subject line alone (Cleanlist 2026). And because average cold email reply rates sit around 3-5% across 53M+ emails analyzed, small subject-line improvements matter a lot more than they look on paper (Saleshandy 2026).&lt;/p&gt;

&lt;p&gt;If you write outreach from Gmail, tools like &lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;EmailSubjectScore Pro&lt;/a&gt; make this easier by scoring your subject line for spam risk, clarity, and urgency in real time — right inside the compose window, with no copy-paste to external tools.&lt;/p&gt;

&lt;p&gt;Most people obsess over the email body. Smart senders know the subject line decides whether the body gets a chance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why reply rate matters more than open rate
&lt;/h2&gt;

&lt;p&gt;Apple Mail Privacy Protection made open tracking much less reliable in 2021 by preloading email pixels, so opens are no longer the cleanest signal of real interest. Reply rate is harder to fake, which makes it the better metric for judging whether your subject line attracted the right person enough to respond.&lt;/p&gt;

&lt;h2&gt;
  
  
  7 data-backed tips for subject lines that get replies
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Keep it short
&lt;/h3&gt;

&lt;p&gt;The best-performing subject lines are usually &lt;strong&gt;3-7 words and under 45 characters&lt;/strong&gt;. That length works because it is easy to scan on both desktop and mobile, and it forces you to cut filler.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;Quick question about onboarding&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it works:&lt;/strong&gt; It sounds human, specific, and easy to process in one glance. Compare it to something bloated like &lt;code&gt;Following up regarding a possible opportunity to improve your onboarding experience&lt;/code&gt;, which feels heavier before the email is even opened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actionable advice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cut throat-clearing words like "following up," "touching base," and "wanted to reach out"&lt;/li&gt;
&lt;li&gt;Remove anything the recipient can learn in the first sentence of the email instead&lt;/li&gt;
&lt;li&gt;Read your subject line out loud; if it feels long, it is long&lt;/li&gt;
&lt;li&gt;Aim for a focused idea, not a full summary&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A short subject line does not mean vague. It means tight.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Personalize with something real
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Personalized subject lines can lift open rates by 26-50%&lt;/strong&gt;, which is still useful directional evidence even if open rate is no longer the main scoreboard. More important: personalization signals that this email is for &lt;em&gt;them&lt;/em&gt;, not for a list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;Idea for Acme's demo flow&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it works:&lt;/strong&gt; It uses a company name and hints at a relevant topic. That feels more credible than a generic line like &lt;code&gt;Growth idea for your business&lt;/code&gt;, which could have been sent to anyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actionable advice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Personalize with a company name, role, recent launch, or obvious pain point&lt;/li&gt;
&lt;li&gt;Keep the personalized detail near the front&lt;/li&gt;
&lt;li&gt;Use a strong detail, not several weak ones&lt;/li&gt;
&lt;li&gt;Make sure the body matches the promise of the subject line&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good personalization is specific and earned. Bad personalization feels stitched in.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Ask a question
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Question-based subject lines can generate 10-21% higher opens.&lt;/strong&gt; They work because they create a small curiosity gap and feel more conversational than a statement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;Still hiring SDRs?&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it works:&lt;/strong&gt; A real question invites a mental response. The reader can instantly tell whether it is relevant, and if it is, they are more likely to open because the email feels like a direct conversation rather than a broadcast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actionable advice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask simple yes/no or short-answer questions&lt;/li&gt;
&lt;li&gt;Keep the question tied to a real business or personal outcome&lt;/li&gt;
&lt;li&gt;Avoid vague questions like &lt;code&gt;Can I help?&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Use question marks sparingly; one is enough&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Question subjects work especially well for sales outreach, freelancer pitches, recruiting emails, and job search follow-ups.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Avoid spam triggers
&lt;/h3&gt;

&lt;p&gt;This is the easiest win and the most overlooked. If &lt;strong&gt;69% of people report spam based on the subject line alone&lt;/strong&gt;, you cannot afford to sound like a promotion even when your offer is legitimate (Cleanlist 2026).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bad examples:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;FREE OFFER INSIDE!!!&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Last chance to 10x revenue&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Urgent response needed&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Better examples:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Question about your Q3 pipeline&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Idea for reducing no-shows&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Intro from a fellow founder&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Actionable advice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid all caps, excessive punctuation, and hype language&lt;/li&gt;
&lt;li&gt;Be careful with words like "free," "guaranteed," and "urgent" unless they are absolutely necessary&lt;/li&gt;
&lt;li&gt;Skip clickbait phrasing that overpromises&lt;/li&gt;
&lt;li&gt;Write like one person contacting another person&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember the upside and downside together: 47% open based on subject line alone, but 69% may flag spam based on that same line. The subject line is both your first impression and your first filter.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Create urgency without sounding pushy
&lt;/h3&gt;

&lt;p&gt;The goal is not pressure. The goal is relevance &lt;em&gt;now&lt;/em&gt;. Since &lt;strong&gt;58% of replies come from the first email&lt;/strong&gt;, your opening subject line should give the recipient a reason to care today instead of "later," which usually means never.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; &lt;code&gt;Before next week's rollout&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why it works:&lt;/strong&gt; It introduces a timeframe without fake drama. It suggests the email is timely, but it does not scream for attention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actionable advice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tie urgency to a real event: launch, hiring push, renewal, campaign, deadline&lt;/li&gt;
&lt;li&gt;Use calm phrasing like &lt;code&gt;before&lt;/code&gt;, &lt;code&gt;for&lt;/code&gt;, &lt;code&gt;ahead of&lt;/code&gt;, or &lt;code&gt;this week&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Avoid manipulative pressure like &lt;code&gt;final notice&lt;/code&gt; or &lt;code&gt;act now&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Make sure the body quickly explains why the timing matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Strong urgency feels helpful. Weak urgency feels salesy.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. A/B test every campaign
&lt;/h3&gt;

&lt;p&gt;Average cold email reply rates are only &lt;strong&gt;3-5%&lt;/strong&gt;, while the best campaigns break &lt;strong&gt;10%+ reply rate&lt;/strong&gt;. That gap is your reminder not to fall in love with the first subject line you write.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example test:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A: &lt;code&gt;Idea for Acme's onboarding&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;B: &lt;code&gt;Quick question about onboarding&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both are short. Both are clear. But they frame the email differently. One leads with value, the other with conversation. You will not know which angle fits your audience until you test it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actionable advice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test one variable at a time: personalization, question vs statement, or urgency angle&lt;/li&gt;
&lt;li&gt;Keep the email body roughly the same when comparing subject lines&lt;/li&gt;
&lt;li&gt;Use reply rate as the main score, not opens alone&lt;/li&gt;
&lt;li&gt;Save winners and turn them into reusable patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A/B testing does not need to be fancy. It just needs to be consistent.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Time it right
&lt;/h3&gt;

&lt;p&gt;Even a strong subject line can flop if it lands at the wrong moment. &lt;strong&gt;Tuesday and Wednesday mornings&lt;/strong&gt; are consistently strong send windows for cold outreach according to Snov.io's 2026 guidance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; Instead of sending &lt;code&gt;Quick question about your hiring funnel&lt;/code&gt; late Friday afternoon, schedule it for Tuesday morning when inboxes are active but not yet buried in end-of-week cleanup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actionable advice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with Tuesday or Wednesday morning in the recipient's time zone&lt;/li&gt;
&lt;li&gt;Avoid late Friday, weekend, and late-night sends for first-touch cold emails&lt;/li&gt;
&lt;li&gt;Keep timing notes alongside your subject-line test results&lt;/li&gt;
&lt;li&gt;Re-test timing when you change audience segments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Timing will not rescue a bad subject line. But good timing gives a good subject line a fair shot.&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%2F4mp8mscdo78sv9ccxanq.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%2F4mp8mscdo78sv9ccxanq.png" alt="EmailSubjectScore Pro on Chrome Web Store — real-time subject line scoring for Gmail" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to check your subject lines before sending
&lt;/h2&gt;

&lt;p&gt;If you send important emails from Gmail, the fastest habit upgrade is to check the subject line &lt;em&gt;before&lt;/em&gt; you hit send, not after a campaign underperforms.&lt;/p&gt;

&lt;p&gt;That is where &lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;EmailSubjectScore Pro&lt;/a&gt; fits naturally into the workflow. It works directly inside the Gmail compose window and scores your subject line in real time across three practical dimensions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spam risk&lt;/strong&gt; — does this sound promotional, manipulative, or filter-friendly in the wrong way?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clarity&lt;/strong&gt; — will the recipient immediately understand what the email is about?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Urgency&lt;/strong&gt; — is there a believable reason to open now?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your score is weak, the tool gives AI rewrite suggestions right there in Gmail, so you can improve the line without opening another tab or pasting your text into an external analyzer. That matters because convenience drives usage — web-based tools like CoSchedule or SubjectLine.com require you to leave Gmail, copy-paste your subject, and mentally carry the feedback back. By the time you switch tabs, you've lost momentum. An in-Gmail scorer removes that friction entirely.&lt;/p&gt;

&lt;p&gt;Free users get &lt;strong&gt;50 scores per month&lt;/strong&gt;, which is enough for many freelancers, job seekers, consultants, and light outreach workflows. &lt;strong&gt;Pro gives you unlimited scoring&lt;/strong&gt;, so if you are sending a lot of outbound email, you never have to ration checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  10 high-performing subject line templates
&lt;/h2&gt;

&lt;p&gt;Use these as starting points, not copy-and-paste magic bullets. Fill in the bracketed part with something real and relevant.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Quick question about [topic]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Idea for [company]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[Company] + [pain point]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Still working on [goal]?&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Before [event or deadline]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Question about your [process]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;For your [team or role]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Worth trying for [company]?&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Regarding [specific initiative]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;[Name], quick thought on [topic]&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A few notes on using templates well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Favor plain language over cleverness&lt;/li&gt;
&lt;li&gt;Choose the template based on the relationship: cold outreach, follow-up, job search, or client work&lt;/li&gt;
&lt;li&gt;Make the body deliver exactly what the template hints at&lt;/li&gt;
&lt;li&gt;If a template starts feeling generic, rewrite it in your own natural voice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Templates save time, but relevance gets replies.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is a good reply rate for cold email?
&lt;/h3&gt;

&lt;p&gt;A solid benchmark is &lt;strong&gt;3-5% average reply rate&lt;/strong&gt;, according to Saleshandy's 2026 analysis of 53M+ cold emails. The strongest campaigns can reach &lt;strong&gt;10%+&lt;/strong&gt;, which is why improving your subject lines, targeting, and offer is worth the effort.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I optimize for opens or replies?
&lt;/h3&gt;

&lt;p&gt;Optimize for &lt;strong&gt;replies first&lt;/strong&gt;. Opens can still help with rough comparisons, but Apple Mail Privacy Protection made them less trustworthy, while a reply is a real signal that your message connected.&lt;/p&gt;

&lt;h3&gt;
  
  
  How many subject lines should I test?
&lt;/h3&gt;

&lt;p&gt;Start with a small set of clear variations for any meaningful outreach campaign. That gives you enough contrast to learn what works without creating unnecessary complexity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final takeaway
&lt;/h2&gt;

&lt;p&gt;If your subject line is too long, too generic, too pushy, or too spammy, the rest of your email never gets a fair chance. A better subject line will not fix a weak offer, but it will help good emails earn more of the replies they deserve.&lt;/p&gt;

&lt;p&gt;If you want an easy way to check subject lines as you write them, install &lt;strong&gt;&lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;EmailSubjectScore Pro&lt;/a&gt;&lt;/strong&gt;. It works directly inside Gmail, scores spam risk, clarity, and urgency in real time, includes AI rewrite suggestions, and gives you &lt;strong&gt;50 free scores per month&lt;/strong&gt; before you ever need Pro.&lt;/p&gt;

</description>
      <category>email</category>
      <category>gmail</category>
      <category>productivity</category>
      <category>coldemail</category>
    </item>
    <item>
      <title>7 Best Gmail Chrome Extensions for Productivity (2026)</title>
      <dc:creator>Amrita Labs</dc:creator>
      <pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/amrita-labs/7-best-gmail-chrome-extensions-for-productivity-2026-3599</link>
      <guid>https://dev.to/amrita-labs/7-best-gmail-chrome-extensions-for-productivity-2026-3599</guid>
      <description>&lt;p&gt;Gmail is powerful, but the default compose experience is still pretty basic. You can write, attach files, and hit send — but that does not solve the real problems most people deal with every day: weak subject lines, missed follow-ups, repetitive replies, cluttered inboxes, and no easy way to tell what happened after an email went out.&lt;/p&gt;

&lt;p&gt;That is why the right Chrome extension can make Gmail feel like a real productivity tool instead of just an inbox. For this list, I focused on extensions that help professionals, freelancers, sales reps, recruiters, and operators move faster without turning Gmail into a mess.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes a Great Gmail Extension?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It works naturally inside Gmail or right alongside it&lt;/li&gt;
&lt;li&gt;It removes steps instead of adding more tab switching&lt;/li&gt;
&lt;li&gt;It has a free tier you can actually test in real work&lt;/li&gt;
&lt;li&gt;It is useful without demanding a complex setup&lt;/li&gt;
&lt;li&gt;It solves a recurring daily problem: writing, follow-up, tracking, templates, CRM, or focus&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. EmailSubjectScore Pro
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; EmailSubjectScore Pro scores your Gmail subject line in real time as you type. It checks spam risk, clarity, and urgency directly inside the compose window, then offers AI rewrite suggestions when your line is weak. There is no copy-paste step and no need to open a separate subject line testing site.&lt;/p&gt;

&lt;p&gt;That is why it takes the top spot. Most Gmail tools help you send faster or track better, but this one improves the very first thing a recipient sees. If the subject line does not earn the open, the rest of the email barely matters. The free plan includes 50 scores per month, which is enough for most freelancers, sales reps, founders, and job seekers writing important emails every week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best feature:&lt;/strong&gt; Real-time subject line scoring &lt;em&gt;inside&lt;/em&gt; Gmail compose.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; It is focused on subject lines, not full-body writing, CRM, or follow-up automation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free for 50 scores/month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Anyone who sends important emails from Gmail and wants better open-worthy subject lines without changing their workflow.&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%2F4mp8mscdo78sv9ccxanq.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%2F4mp8mscdo78sv9ccxanq.png" alt="EmailSubjectScore Pro on Chrome Web Store" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;Install EmailSubjectScore Pro&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Boomerang for Gmail
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Boomerang helps you schedule emails, set follow-up reminders, and pause your inbox so you can work without constant interruptions. It is one of the most established Gmail productivity tools for a reason: it handles the practical parts of email that people usually try to manage from memory.&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%2Fc1a0829hco2we41o2mao.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%2Fc1a0829hco2we41o2mao.png" alt="Boomerang for Gmail on Chrome Web Store" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you routinely draft client replies late at night, Boomerang lets you write now and send tomorrow morning. If you are waiting on a proposal, invoice, or intro, you can ask Boomerang to remind you when nobody replies. Inbox Pause is also genuinely useful for people who need focused work blocks instead of reacting to every new message all day.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best feature:&lt;/strong&gt; Send later and follow-up reminders in the same workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; It does not help with writing quality or subject line optimization. A perfectly timed email still underperforms if the subject line gets ignored. The free plan is also quite limited at 10 credits/month — most active emailers hit that cap within the first few days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free for 10 credits/month. Paid plans run about $4.98-$14.98/month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Scheduling, follow-up automation, and anyone who wants more control over when email gets sent and seen.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Mailtrack
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Mailtrack adds read tracking to Gmail so you can see when recipients open your emails. For sales reps, recruiters, freelancers, and founders doing outreach, that can be useful context. If someone opened your message three times but never replied, that tells a different story than someone who never opened it at all.&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%2Ft53hzepmsuxttjkr3v2m.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%2Ft53hzepmsuxttjkr3v2m.png" alt="Mailtrack on Chrome Web Store" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The biggest reason people keep using Mailtrack is simplicity. The free version gives you unlimited tracking, and setup is quick. That makes it one of the easiest extensions to add if your main question after sending is, "Did they even read it?" Just keep expectations realistic: open tracking is not perfect anymore, especially after Apple Mail Privacy Protection changed how reliably open data can be interpreted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best feature:&lt;/strong&gt; Free, easy read receipts inside Gmail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; Open tracking is directionally useful but increasingly unreliable — Apple Mail users always show as "opened" regardless. It also does nothing to improve your actual email quality, so knowing someone opened a weak email does not help you get a reply.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free with Mailtrack branding, or paid from about $5/month to remove branding and unlock extras.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; People who care more about post-send visibility than writing assistance.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Grammarly
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Grammarly gives you real-time spelling, grammar, and tone suggestions while you write. Even though it is not Gmail-specific, it is still one of the most useful Chrome extensions for anyone who spends a big part of the day in email. It catches the small mistakes that make fast replies feel sloppy and the tone issues that can make short emails sound harsher than intended.&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%2F7e2ueux0l94ku2lcvfl9.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%2F7e2ueux0l94ku2lcvfl9.png" alt="Grammarly on Chrome Web Store" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For busy professionals, Grammarly is less about perfect grammar and more about shipping cleaner communication faster. If you write proposals, client updates, introductions, support replies, or cold outreach, it helps reduce the friction between "good enough draft" and "ready to send." Because it works beyond Gmail, it also carries over into docs, LinkedIn, and web forms.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best feature:&lt;/strong&gt; Real-time writing improvement everywhere, including Gmail.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; It does not score subject lines specifically — it helps the body but ignores the most important line in the email. It is also not a workflow tool for scheduling, CRM, or templates. The premium tier at $12/month is steep for people who mostly need help with short email messages rather than long documents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free basic plan. Premium starts around $12/month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Overall writing quality and people who want cleaner emails without slowing down.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Text Blaze
&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%2Fdcpwugueh6k2j1ua46gh.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%2Fdcpwugueh6k2j1ua46gh.png" alt="Text Blaze on Chrome Web Store" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Text Blaze turns short keyboard shortcuts into full email snippets, templates, and repeatable responses. If you answer the same kinds of questions all week — pricing, onboarding steps, calendar links, proposal follow-ups, support answers, intro replies — it can save an enormous amount of time.&lt;/p&gt;

&lt;p&gt;What makes Text Blaze especially good in Gmail is that it stays out of the way until you need it. You type a shortcut, your text expands, and you keep moving. On paid plans, dynamic fields make templates more flexible, so one snippet can adapt to names, dates, links, and other variables. That is useful for support teams, agencies, recruiters, and anyone doing semi-personalized email at volume.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best feature:&lt;/strong&gt; Fast snippet expansion for repetitive replies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; Templates save time on repetitive replies, but they do not automatically make your emails more persuasive, clearer, or more likely to be opened. You still need good subject lines and good writing — snippets just make the mechanical parts faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free with unlimited snippets. Pro starts around $2.99/month for dynamic fields and extra features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Repetitive replies, support workflows, and anyone tired of rewriting the same email every day.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. HubSpot Sales
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; HubSpot Sales brings CRM features into Gmail, including email tracking, template support, contact records, and meeting scheduling. If your inbox is tightly connected to pipeline management, this kind of extension can save a lot of tab-switching.&lt;/p&gt;

&lt;p&gt;The value here is not just convenience. It is context. When you open an email, seeing the contact history, company details, or prior interactions can help you respond faster and more intelligently. For sales teams, account managers, and founders running outreach from a CRM-backed workflow, that matters. You spend less time hunting for context and more time moving the conversation forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best feature:&lt;/strong&gt; CRM context inside Gmail for sales and relationship management.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; It can feel like too much tool for solo freelancers or people who just want a lighter, faster Gmail setup. The setup is also heavier than simpler extensions — you're adding a full CRM layer on top of Gmail, which some people find slows down their workflow rather than speeding it up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free CRM and extension available. Paid plans typically start at $20+/month depending on features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Sales teams and operators who already live in a CRM-driven workflow.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Simplify Gmail
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Simplify Gmail cleans up the Gmail interface by hiding distractions like side panels, ads, and extra UI elements you may never use. It is the least flashy tool on this list, but for people who feel mentally crowded by Gmail, it can have an immediate effect.&lt;/p&gt;

&lt;p&gt;A cleaner inbox means fewer visual interruptions and less temptation to bounce between chat, sidebars, and secondary panels when you are trying to process mail or send focused replies. That makes Simplify Gmail especially appealing for people chasing inbox zero or anyone who wants Gmail to feel calmer and more deliberate. It will not improve your writing or automate follow-ups, but it can make the whole environment more usable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best feature:&lt;/strong&gt; A cleaner, more distraction-free Gmail workspace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; It is mainly an interface upgrade, not a writing, tracking, or automation tool. It will not help your emails land better or get more replies — it just makes the inbox itself less visually cluttered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Price:&lt;/strong&gt; Free trial, then about $3/month or $36/year.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Focus, cleaner workflows, and people who want Gmail to feel less noisy.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparison Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Extension&lt;/th&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Works in compose?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;EmailSubjectScore Pro&lt;/td&gt;
&lt;td&gt;Subject line scoring&lt;/td&gt;
&lt;td&gt;Free (50 scores/month)&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Boomerang for Gmail&lt;/td&gt;
&lt;td&gt;Scheduling and follow-ups&lt;/td&gt;
&lt;td&gt;Free plan, paid from $4.98-$14.98/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mailtrack&lt;/td&gt;
&lt;td&gt;Email tracking&lt;/td&gt;
&lt;td&gt;Free, paid from $5+/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grammarly&lt;/td&gt;
&lt;td&gt;Writing quality&lt;/td&gt;
&lt;td&gt;Free, Premium from $12/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text Blaze&lt;/td&gt;
&lt;td&gt;Templates and snippets&lt;/td&gt;
&lt;td&gt;Free, Pro from $2.99/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HubSpot Sales&lt;/td&gt;
&lt;td&gt;CRM and sales workflow&lt;/td&gt;
&lt;td&gt;Free CRM, paid from $20+/mo&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simplify Gmail&lt;/td&gt;
&lt;td&gt;Interface cleanup and focus&lt;/td&gt;
&lt;td&gt;Free trial, then $3/mo or $36/yr&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  How to Stack These Tools
&lt;/h2&gt;

&lt;p&gt;You do not need all seven. In fact, most people are better off with a small stack that covers one writing tool, one workflow tool, and maybe one visibility tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Freelancers and consultants:&lt;/strong&gt; EmailSubjectScore Pro + Boomerang + Text Blaze&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales reps:&lt;/strong&gt; EmailSubjectScore Pro + HubSpot Sales + Mailtrack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-facing professionals:&lt;/strong&gt; Grammarly + Boomerang + Simplify Gmail&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want the simplest high-ROI setup, start with EmailSubjectScore Pro for better subject lines and Boomerang for follow-ups. That combination improves both the front end of the email (getting opened) and the back end (remembering to follow up).&lt;/p&gt;




&lt;h2&gt;
  
  
  The Best Gmail Productivity Extension for Most People
&lt;/h2&gt;

&lt;p&gt;If your goal is to spend less time in Gmail while getting better results from the emails you already send, the best place to start is the compose box itself. That is where subject lines get written, where weak first impressions happen, and where a small improvement can pay off every single day.&lt;/p&gt;

&lt;p&gt;Try &lt;strong&gt;EmailSubjectScore Pro&lt;/strong&gt; if you want real-time feedback on spam risk, clarity, and urgency without leaving Gmail. The free plan gives you 50 scores per month, which is enough for most people to feel the difference quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/dleffnbdjohkmmkbojehdpkgkmpofmgm" rel="noopener noreferrer"&gt;Install EmailSubjectScore Pro on the Chrome Web Store&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gmail</category>
      <category>chrome</category>
      <category>email</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
