<?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: Dzenana Kajtaz</title>
    <description>The latest articles on DEV Community by Dzenana Kajtaz (@dzenanakajtaz).</description>
    <link>https://dev.to/dzenanakajtaz</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1177953%2F7654463b-ac62-4913-b2e9-c39f81785eda.jpeg</url>
      <title>DEV Community: Dzenana Kajtaz</title>
      <link>https://dev.to/dzenanakajtaz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dzenanakajtaz"/>
    <language>en</language>
    <item>
      <title>What Is Email List Segmentation &amp; How to Segment Your Email List</title>
      <dc:creator>Dzenana Kajtaz</dc:creator>
      <pubDate>Tue, 29 Oct 2024 09:24:01 +0000</pubDate>
      <link>https://dev.to/dzenanakajtaz/what-is-email-list-segmentation-how-to-segment-your-email-list-3dd</link>
      <guid>https://dev.to/dzenanakajtaz/what-is-email-list-segmentation-how-to-segment-your-email-list-3dd</guid>
      <description>&lt;p&gt;In this post, I explain what email marketing segmentation is, how to segment your email database, and what best practices to follow. I also show you many examples from my personal inbox. So if you want to engage your subscribers with highly relevant, personalized messages that strengthen brand loyalty and increase ROI, keep on reading.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is email list segmentation
&lt;/h2&gt;

&lt;p&gt;Email list segmentation is the practice of dividing your subscribers into smaller, targeted groups based on specific characteristics or features. This allows you to create and send highly relevant messages that generate significantly more engagement than generic emails.&lt;/p&gt;

&lt;p&gt;Common characteristics used in digital marketing to segment email lists include gender, location, age, occupation, purchase history, engagement level, etc. For a complete list, click here.&lt;/p&gt;

&lt;p&gt;Compare these two emails:&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.amazonaws.com%2Fuploads%2Farticles%2F7noi8bh1v1isjjkanyuo.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.amazonaws.com%2Fuploads%2Farticles%2F7noi8bh1v1isjjkanyuo.png" alt="Image description" width="800" height="665"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The email from Semrush, an SEO marketing platform, is an example of a &lt;a href="https://mailtrap.io/blog/broadcast-email/" rel="noopener noreferrer"&gt;broadcast email&lt;/a&gt; typically sent to all or nearly all email subscribers. &lt;/p&gt;

&lt;p&gt;In contrast, the email from H&amp;amp;M is an example of a targeted email, sent exclusively to a specific audience segment — registered members only.&lt;/p&gt;

&lt;h2&gt;
  
  
  Email list segmentation examples
&lt;/h2&gt;

&lt;p&gt;There are many approaches marketers use to segment emails. In retail, businesses send different emails that nudge customers to go back to their website, view more products, or reopen their abandoned shopping cart. &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.amazonaws.com%2Fuploads%2Farticles%2Fzpggrfihowc1o8yzh0ct.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.amazonaws.com%2Fuploads%2Farticles%2Fzpggrfihowc1o8yzh0ct.png" alt="Image description" width="800" height="1320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sephora abandoned cart reminder&lt;/p&gt;

&lt;p&gt;Mobile apps and SaaS companies segment users based on their usage of the product and its features. For instance, Strava, a fitness app, sends welcome emails to new users after they sign up, along with additional emails that help them in onboarding and maximizing their experience with the app.&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.amazonaws.com%2Fuploads%2Farticles%2Fgz541ndtll6xpgunz6mj.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.amazonaws.com%2Fuploads%2Farticles%2Fgz541ndtll6xpgunz6mj.png" alt="Image description" width="800" height="879"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Strava app requests health-related data from a new user to complete the onboarding&lt;/p&gt;

&lt;p&gt;Among the most effective targeted emails are ones that offer bonuses, coupons, special deals, or discounts to loyal customers or clients who make frequent purchases.&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.amazonaws.com%2Fuploads%2Farticles%2Fcpbmhgwzdeqapss665ir.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.amazonaws.com%2Fuploads%2Farticles%2Fcpbmhgwzdeqapss665ir.png" alt="Image description" width="800" height="1051"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Audible special offer to a loyal customer&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you segment your email marketing contact list?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Engaged subscribers&lt;/strong&gt;. When you have segmented lists, tailored content that’s actually relevant, and added inspiring call-to-actions, you’re taking people, who have shown some interest in your business (“warm” prospects), and making them even more engaged using personalized content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Satisfied customers&lt;/strong&gt;. Tailored email content that directly addresses clients’ desires or problems helps them fulfill their needs and achieve their goals. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lower unsubscribe rate&lt;/strong&gt;. When customers see their name in an email subject line or when they get educational materials, tools, or goods they were looking for, they are incentivised to click and discover more rather than unsubscribe, unless you bombard your subscribers with highly personalized emails too often, which can give them a feeling that you’re stalking them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better conversions&lt;/strong&gt;. Relevant emails, product recommendations, and personal offers capture more attention and drive higher conversion rates than generic messages, which often miss the mark. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Higher deliverability&lt;/strong&gt;. A lower unsubscribe rate and high engagement (open and click-through rate) with your emails positively impacts your sender’s reputation and &lt;a href="https://mailtrap.io/blog/email-deliverability/" rel="noopener noreferrer"&gt;deliverability rate&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better campaign results&lt;/strong&gt;. Higher email open rates, more clicks, and better engagement—all help improve your overall email performance. And by tracking what works best for each segment, you can fine-tune your future campaigns for even better outcomes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to segment your email list
&lt;/h2&gt;

&lt;p&gt;Any email list can be segmented in a few straightforward steps, either manually or automatically. To do this effectively, it’s important to have clear objectives for your email campaign, as these will guide you in dividing your audience and tailoring messages for specific results. So the first step should be:&lt;/p&gt;

&lt;h3&gt;
  
  
  Define your email campaign goals and metrics
&lt;/h3&gt;

&lt;p&gt;Begin by clearly defining your goals and the metrics you’ll use to evaluate whether you’ve achieved them. Goals like “I want to improve engagement,” or “I want to reduce unsubscribe rates” are too vague. They have to be specific, measurable, achievable, relevant, and time-bound (&lt;a href="https://en.wikipedia.org/wiki/SMART_criteria" rel="noopener noreferrer"&gt;SMART&lt;/a&gt;).&lt;br&gt;
For example, imagine you have an e-commerce business and you want to increase conversions. Now let’s make this goal SMART:&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.amazonaws.com%2Fuploads%2Farticles%2F0w3rh2purupxen9y44a1.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.amazonaws.com%2Fuploads%2Farticles%2F0w3rh2purupxen9y44a1.png" alt="Image description" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The metrics that can help you track your results include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;conversion rate, &lt;/li&gt;
&lt;li&gt;click-through rate (CTR), &lt;/li&gt;
&lt;li&gt;average order value (AOV) in November to measure the impact of upsell offers. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Gather necessary data
&lt;/h3&gt;

&lt;p&gt;I assume you have begun collecting data through your subscription forms, such as names, email addresses, or even location of your subscribers. This basic data is typically easy for people to share and allows for simple segmentation.&lt;/p&gt;

&lt;p&gt;To gather more data, you need to solve two main challenges associated with data collection these days:&lt;/p&gt;

&lt;h4&gt;
  
  
  Problem 1 – Trust
&lt;/h4&gt;

&lt;p&gt;After so many data breaches, customers are more cautious than ever about sharing personal information. To gain their trust, it’s essential to build transparent relationships and be honest about why you need certain data and how you intend to use it.&lt;/p&gt;

&lt;h4&gt;
  
  
  Solution
&lt;/h4&gt;

&lt;p&gt;Begin with a clear privacy policy that outlines how the data will be used. Ensure that you only ask for the necessary information to avoid overwhelming your subscribers.&lt;/p&gt;

&lt;h4&gt;
  
  
  Problem 2 – Data privacy regulations
&lt;/h4&gt;

&lt;p&gt;With regulations like GDPR (EU), CAN-SPAM (US), CASL (Canada), and PDPA (Singapore, Malaysia), and other international privacy laws, you must ensure that your data collection and &lt;a href="https://mailtrap.io/blog/email-marketing-laws/" rel="noopener noreferrer"&gt;email marketing activities are legally compliant&lt;/a&gt;. This can limit the kind of information you can collect and how you handle it. &lt;/p&gt;

&lt;h4&gt;
  
  
  Solution
&lt;/h4&gt;

&lt;p&gt;Learn about the laws that are applicable in your region and your subscribers’ regions and consider how you will manage them.&lt;/p&gt;

&lt;p&gt;Once you have these two points figured out, you can ask your subscribers for more information. &lt;/p&gt;

&lt;p&gt;Also, over time, their interactions with your landing page / website / app and emails will grow and give you valuable behavioral data. &lt;/p&gt;

&lt;p&gt;This data will help you create even more segments — such as identifying those who have opened your last five emails, or those who consistently click on certain types of offers or products.&lt;/p&gt;

&lt;h3&gt;
  
  
  Segment your list
&lt;/h3&gt;

&lt;p&gt;Let me show you how to manually segment a small email list in Google Sheets, so you get the idea. &lt;/p&gt;

&lt;p&gt;Take a look at my email list that I created with ChatGPT (it would have taken me ages to come up with so many fake names and emails). My table also has columns for Location, Age, and Latest purchase.&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.amazonaws.com%2Fuploads%2Farticles%2F80vrgrsn3b8lrzkgtr1p.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.amazonaws.com%2Fuploads%2Farticles%2F80vrgrsn3b8lrzkgtr1p.png" alt="Image description" width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let’s filter the email addresses by the sum of the last purchase. I’m looking for people who spent under $100 in October. All I need to do is add a filter to the corresponding column and select “&amp;lt; $100” to display only those entries.&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.amazonaws.com%2Fuploads%2Farticles%2F311ifd9e3n21xckx2fgd.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.amazonaws.com%2Fuploads%2Farticles%2F311ifd9e3n21xckx2fgd.png" alt="Image description" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same process happens when you use software but with more advanced filtering. For example, you can create a segment of subscribers who have clicked on any promotional link in your last few campaigns, interacted with specific product categories, or abandoned their shopping carts. &lt;/p&gt;

&lt;p&gt;To achieve the goal of my imaginatory &lt;a href="https://mailtrap.io/blog/targeted-email-marketing/" rel="noopener noreferrer"&gt;targeted email campaign&lt;/a&gt; — increase conversions by 15% in November, I will also need data on the exact purchased item and similar or complementing items I can offer to upsell to each person. Doing it manually for a segmented email list of 21 people is possible, however, in the future (when my theoretical business flourishes), I would rather use automation.&lt;/p&gt;

&lt;p&gt;Email segmentation tools make it easy to create segments by automatically tracking customer interactions, purchase history, and engagement. These tools enable you to build dynamic segments that automatically update as customer behavior changes. You can read more about them in &lt;a href="https://mailtrap.io/blog/email-list-segmentation/#Email-list-segmentation-software" rel="noopener noreferrer"&gt;this section&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Email list segmentation strategies
&lt;/h3&gt;

&lt;p&gt;You can use any trackable feature to segment your email list. Here are the most common segmentation ideas and examples of how businesses use them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demographic segmentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Age;&lt;/li&gt;
&lt;li&gt;Income level;&lt;/li&gt;
&lt;li&gt;Education;&lt;/li&gt;
&lt;li&gt;Gender;&lt;/li&gt;
&lt;li&gt;Geographic location, timezone, season, weather;&lt;/li&gt;
&lt;li&gt;Occupation, job title;&lt;/li&gt;
&lt;li&gt;Organization type (in case you work with businesses).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the minimal set of information every business tries to find out about customers to build initial buyer personas. &lt;/p&gt;

&lt;p&gt;For instance, retailers collect customers’ locations to recommend season-specific products or promote regional offers.&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.amazonaws.com%2Fuploads%2Farticles%2Fah11ndhh5b7jzsiyu31b.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.amazonaws.com%2Fuploads%2Farticles%2Fah11ndhh5b7jzsiyu31b.png" alt="Image description" width="800" height="942"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HM product recommendation based on season&lt;/p&gt;

&lt;p&gt;While B2B companies want to know subscribers’ job titles or organization types they work in to craft the right messages that speak to their role or business needs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Behavioral segmentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Purchase history and patterns&lt;/strong&gt; — what, when, and how often customers make purchases;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sales or &lt;a href="https://mailtrap.io/blog/email-marketing-funnel/" rel="noopener noreferrer"&gt;marketing funnel&lt;/a&gt; stage&lt;/strong&gt; — where customers are in the customer journey;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Considered products&lt;/strong&gt; — what customers are thinking about buying or have viewed;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abandoned shopping cart&lt;/strong&gt; — what items customers left in their shopping cart;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shopping preferences&lt;/strong&gt; — whether customers prefer physical stores or online shopping;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preferred technology&lt;/strong&gt; — what devices and software your customers use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email preferences and interaction&lt;/strong&gt; — how frequently subscribers prefer to receive emails, how often they open them, what types of emails they engage with, which links they click on;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customer motivations&lt;/strong&gt; — why customers make purchases (price sensitivity, seeking convenience, discounts, preference for eco-friendly products, or particular events like the school season or holidays).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E-commerce and subscription services make extensive use of behavioral data. They engage customers with product recommendations, cart abandonment reminders, and exclusive deals and discounts that encourage repeat visits.&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.amazonaws.com%2Fuploads%2Farticles%2Fnczo7ttuusqkq21fu8hs.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.amazonaws.com%2Fuploads%2Farticles%2Fnczo7ttuusqkq21fu8hs.png" alt="Image description" width="800" height="1261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Special deal from a makeup brand Lisa Eldridge&lt;/p&gt;

&lt;h3&gt;
  
  
  Interest-based segmentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subscription source and timing&lt;/strong&gt;—when and how new subscribers join your list (e.g., through a website signup, event registration, or lead magnet);&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Survey responses&lt;/strong&gt;—what customers care about, what their concerns, needs, and preferences are.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Long-sales-cycle companies, SaaS businesses, and some service-based businesses may collect information about clients’ interests to understand the initial intent behind sign-ups as well as each customer’s stage in the sales funnel.&lt;/p&gt;

&lt;p&gt;For instance, a person who subscribed via a lead magnet is likely seeking in-depth information about solving a problem. This is the awareness stage, where companies can nurture leads by sending them more useful and relevant content about the product or their problem.&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.amazonaws.com%2Fuploads%2Farticles%2F1kkj92ezcft6kiov53lf.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.amazonaws.com%2Fuploads%2Farticles%2F1kkj92ezcft6kiov53lf.png" alt="Image description" width="800" height="998"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Educational materials from Productboard&lt;/p&gt;

&lt;p&gt;On the other hand, a subscriber you gained from a promotional offer may already be comparing prices on goods or services. This is the interest stage, where businesses can close a deal by offering a discount, inviting them to a product demo, or providing additional incentives.&lt;/p&gt;

&lt;p&gt;As for survey or sign-up form responses, they let businesses directly understand their audience’s concerns, preferences, or challenges. &lt;/p&gt;

&lt;h3&gt;
  
  
  Engagement segmentation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Membership or subscription type&lt;/strong&gt;—what type of membership or subscription a person has.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event attendance&lt;/strong&gt;—what offline gathering or webinar customers participated in, if it’s their first attendance, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Businesses that offer tiered services collect engagement data to encourage customers to keep paying or upgrade to a higher tier.&lt;/p&gt;

&lt;p&gt;Companies that regularly host events can use data on event attendees to send targeted follow-ups, promote similar future events, or provide relevant resources based on attendance history.&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.amazonaws.com%2Fuploads%2Farticles%2F9st3v1j9y2fnafbqnkhx.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.amazonaws.com%2Fuploads%2Farticles%2F9st3v1j9y2fnafbqnkhx.png" alt="Image description" width="610" height="1448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Event invitation from the Atlassian team&lt;/p&gt;

&lt;p&gt;What data should you collect? This depends on your marketing needs and goals. If you think something is important and can be used in your targeted campaign, go for it. Just don’t get lost down a rabbit hole right away. It’s better to focus on the basics and check the industry best practices I’ve prepared for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Email list segmentation best practices
&lt;/h2&gt;

&lt;p&gt;Before you dive into segmentation, it’s important to get the basics right — starting with a clean email list. Good list hygiene increases your sender’s reputation, improves email deliverability, and helps you comply with regulations. Read more in our &lt;a href="https://mailtrap.io/blog/email-list-cleaning/" rel="noopener noreferrer"&gt;email list cleaning guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once your list is in good shape, it’s time to focus on segmentation. Here are the best practices for effective email segmentation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start small and scale&lt;/strong&gt;. Don’t overwhelm yourself by creating too many segments at once. Begin with 2-3 key lists, send targeted campaigns, analyze the results, and only then expand as you learn more about your audience’s behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus on relevant data&lt;/strong&gt;. All data seems important but it’s not always helpful to collect everything. Only gather the data that is necessary for your segmentation goals. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tailor the content&lt;/strong&gt;. Go beyond simple personalization of a subject line. Give users the information they need—relevant product recommendations, exclusive offers, or valuable insights based on their past interactions and preferences. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test and learn&lt;/strong&gt;. Experimentation is key. Some campaigns will perform well, some will fail, but each experience provides insights. The more you learn, the easier it is to predict the outcome. When learning on smaller groups (&lt;a href="https://mailtrap.io/blog/ab-testing-email/" rel="noopener noreferrer"&gt;A/B testing&lt;/a&gt;), mistakes are not as painful. So use this &lt;a href="https://mailtrap.io/blog/email-marketing-strategy/" rel="noopener noreferrer"&gt;marketing strategy&lt;/a&gt; and always experiment with your content, timing, and frequency to know exactly what your target audience likes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revise the segmentation&lt;/strong&gt;. New customers turn to loyal ones, while loyal ones might churn from you. An updated segmented email list helps you achieve the goals of your targeted campaign.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask about preferences&lt;/strong&gt;. It’s easier to segment subscribers if they tell you about their interests directly. When someone subscribes, ask them to indicate their email preferences, frequency, and types of content they wish to receive from you. Keep the form short, respect their time, and always thank them for their effort.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Email list segmentation software
&lt;/h2&gt;

&lt;p&gt;There are two types of software that can do the job: CRMs and email-sending platforms. CRMs excel at managing detailed customer information and segmenting based on deeper insights. Email-sending platforms focus primarily on delivering, automating, and optimizing your campaigns.&lt;/p&gt;

&lt;p&gt;Here’s a look at the top tools in each category:&lt;/p&gt;

&lt;h3&gt;
  
  
  CRMs to automatically segment your email lists
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HubSpot&lt;/strong&gt;. HubSpot offers a complete set of tools to manage contacts, segment your audience, and automate email marketing campaigns. The criteria you can use to segment your email list include customer lifecycle stage, website interactions, specific user behaviors, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Salesforce Marketing Cloud&lt;/strong&gt;. The platform pulls data from customer interactions across different touchpoints, like email engagement, social media interactions, web behavior, and purchase history. The solution would be ideal for complex, large-scale businesses looking to deeply integrate their sales and &lt;a href="https://mailtrap.io/blog/email-marketing/" rel="noopener noreferrer"&gt;email marketing efforts&lt;/a&gt; through highly detailed segments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zoho CRM&lt;/strong&gt;. Zoho helps businesses segment contacts based on sales funnel stages, interactions, and lead scores. It’s a user-friendly tool to manage email lists and customer data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Email-sending platforms with email segmentation capabilities
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mailchimp&lt;/strong&gt;. The platform is known for its ease of use and wide marketing automation capabilities for email segmentation. It allows marketers to segment subscribers based on demographics, engagement levels, and purchase history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GetResponse&lt;/strong&gt;. This is a versatile platform for both small businesses and enterprises, GetResponse offers segmentation based on demographics, behavior, and engagement data. It also includes email automation features like event-triggered messages and dynamic segments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Omnisend&lt;/strong&gt;. Focused on e-commerce businesses, Omnisend allows segmentation based on shopping behavior, product preferences, and engagement data. It also offers customizable automation workflows to send personalized, targeted messages at key points in the customer journey.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ActiveCampaign&lt;/strong&gt;. With ActiveCampaign, you can target contacts based on behavior, previous campaign interactions, site activity, and past purchases. The platform offers merge tags and dynamic content to better personalize and tailor emails for each audience segment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Klaviyo&lt;/strong&gt;. This is a reasonable choice for e-commerce businesses looking for seamless integration with platforms like Shopify. It allows you to segment your email address database based on browsing behavior, purchase history, and engagement metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What’s next?
&lt;/h2&gt;

&lt;p&gt;After segmenting your email list, it’s essential to make sure that your carefully crafted emails actually reach your subscribers. To do this, you’ll need a reliable email-sending solution that guarantees great deliverability and helps you avoid spam traps and blacklists.&lt;/p&gt;

&lt;p&gt;To explore the best options, check out our detailed &lt;a href="https://mailtrap.io/blog/email-deliverability-tools/" rel="noopener noreferrer"&gt;guide on email deliverability tools&lt;/a&gt;, where we compare the features, prices, pros, and cons of each option.&lt;/p&gt;

&lt;p&gt;We appreciate that you chose this article to know &lt;a href="https://mailtrap.io/blog/email-list-segmentation/" rel="noopener noreferrer"&gt;what is email list segmentation&lt;/a&gt;. Visit Mailtrap blog for more!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Inbox Placement – Beginner Guide</title>
      <dc:creator>Dzenana Kajtaz</dc:creator>
      <pubDate>Mon, 16 Sep 2024 12:28:12 +0000</pubDate>
      <link>https://dev.to/dzenanakajtaz/inbox-placement-beginner-guide-300a</link>
      <guid>https://dev.to/dzenanakajtaz/inbox-placement-beginner-guide-300a</guid>
      <description>&lt;p&gt;When your marketing emails get to Spam, it’s bad. When transactional emails get to the Junk folder — it’s a catastrophe. Simply put, emails that land in Spam waste your resources, worsen your sender’s reputation, and potentially drive your clients away. &lt;/p&gt;

&lt;p&gt;The good news is, that you can influence the number of emails that get to the primary Inboxes. In this post, I will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;help you better understand the intricacies of how email service providers (ESP) assess your emails, &lt;/li&gt;
&lt;li&gt;explain how to calculate your inbox placement rate,&lt;/li&gt;
&lt;li&gt;share the best practices to increase inbox placement,&lt;/li&gt;
&lt;li&gt;and much more.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Buckle up! &lt;/p&gt;

&lt;h2&gt;
  
  
  What does inbox placement mean?
&lt;/h2&gt;

&lt;p&gt;By inbox placement, we usually mean the percentage of emails that is delivered specifically to the Inbox folder against all sent emails.&lt;/p&gt;

&lt;p&gt;Your goal as a trustworthy email sender is to land your letters directly in the primary folder to get the highest accessibility and visibility. This is the most efficient way to ensure your investment returns and doesn’t go to waste.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is inbox placement the same as email deliverability?
&lt;/h3&gt;

&lt;p&gt;When we talk about email deliverability, we can only say if the email was delivered or not. We don’t know the exact placement of a letter. &lt;/p&gt;

&lt;p&gt;The inbox placement, on the other hand, tells us what exact folder an email was delivered to. &lt;/p&gt;

&lt;p&gt;Obviously, inbox placement is a part of email deliverability, and often by improving the second, you’ll improve the first as a bonus. &lt;/p&gt;

&lt;h2&gt;
  
  
  How inbox placement works
&lt;/h2&gt;

&lt;p&gt;There are two main entities responsible for sorting emails between folders: email service providers, like Gmail, Yahoo, Outlook, etc., and users. &lt;/p&gt;

&lt;p&gt;Each ESP has a unique set of algorithms and filters to analyze incoming emails and sort them between Inbox, Spam, Promotions, Updates, and other folders – all to improve user experience and protect them from spam. That’s why the same email sent to various ESPs might end up in different folders. &lt;/p&gt;

&lt;p&gt;ESPs often consider transactional emails as more important than marketing emails. This is because users wait for them as they contain crucial information, like password reset instructions, order confirmations, or shipping updates. That’s why they land in the primary folder more often than other types of emails.&lt;/p&gt;

&lt;p&gt;Marketing emails, such as newsletters, hot offers, or new feature launch announcements are more likely to be sorted into Promotions or Updates.  &lt;/p&gt;

&lt;p&gt;In case you want to know more about spam filters and how they work, check our &lt;a href="https://mailtrap.io/blog/spam-filters/" rel="noopener noreferrer"&gt;dedicated guide&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Users can also influence where emails land. They can create custom folders and manually move emails into them. Additionally, they can train ESP’s filters by marking emails as spam or important, which helps the algorithms learn their preferences over time. This is why it’s so important to have only engaged people in your email list. We’ll get back to this a bit later. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why is inbox placement important?
&lt;/h2&gt;

&lt;p&gt;When your emails go to Spam, all your efforts, hard work, and money are zeroed out. Let me break it down for you.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Low open rate = low conversion rate&lt;/strong&gt;. If your emails go unnoticed, users don’t open them, don’t click on the links, don’t go to your website or app, and don’t convert.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bad email sender’s reputation&lt;/strong&gt;. Letters in Spam don’t get enough interactions. This negatively influences your sender’s reputation which, in turn, leads to even more emails being rejected (a vicious circle you don’t want to get into).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Higher cost of email marketing campaigns&lt;/strong&gt;. With the majority of emails landing in Promotions, Updates, Forums, or Spam folders, your marketing campaign becomes less effective and, as a result, more expensive. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High customer dissatisfaction rate&lt;/strong&gt;. If your marketing emails go unseen it’s half the tragedy, but what if your transactional emails go to Spam? Imagine the feelings of a customer who forgot their password and is trying to reset it. If the letter isn’t there within minutes, this client is lost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I can continue the list, but you’ve got the point – only emails that made it to the primary folder can bring you some return on investment. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74xb57x78jsg6gsisu8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74xb57x78jsg6gsisu8g.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All the things that affect email deliverability also influence the inbox placement rate. These are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/email-sender-reputation/" rel="noopener noreferrer"&gt;Email sender reputation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Email engagement metrics &lt;/li&gt;
&lt;li&gt;Email type and content &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://mailtrap.io/blog/email-verification/" rel="noopener noreferrer"&gt;Email list hygiene&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Sending frequency and timing&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/email-authentication/" rel="noopener noreferrer"&gt;Proper email authentication protocols&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/email-marketing-laws/" rel="noopener noreferrer"&gt;Compliance with regulations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An email service provider of your users will take them into account when deciding where to place your letter. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is the inbox placement rate and how is it measured?
&lt;/h2&gt;

&lt;p&gt;Inbox placement rate is the percentage of all delivered emails that got to the primary folder in relation to all sent emails. To calculate the rate, you need to know the number of delivered emails. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnxtd4556n434q78ovhpw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnxtd4556n434q78ovhpw.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s say, you sent 500 emails, 450 of them were delivered, and 350 landed in the Inbox folder. Here are the calculations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m5lin3j0oz5ihj53rc3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m5lin3j0oz5ihj53rc3.png" alt="Image description" width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But how to assess the calculated rate? &lt;/p&gt;

&lt;h2&gt;
  
  
  Inbox placement rate benchmark
&lt;/h2&gt;

&lt;p&gt;There’s no golden standard for the rate benchmark. The numbers vary depending on the domain, email content, recipient engagement, and more. &lt;/p&gt;

&lt;p&gt;In general, a rate of 80% and higher is considered good, everything from 79 to 70% is okay, and the rate that falls below 70% is poor. If you need industry-specific analytics, check the full &lt;a href="https://www.validity.com/wp-content/uploads/2023/03/2023-Email-Deliverability-Benchmark.pdf" rel="noopener noreferrer"&gt;Email deliverability benchmark report by Validity for 2023&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to test inbox placement?
&lt;/h2&gt;

&lt;p&gt;To use the formula, you need to know the exact number of emails that were sorted to the subscriber’s Inbox folder. Unfortunately, there’s no 100% accurate method to find that out before the actual email sending. &lt;/p&gt;

&lt;p&gt;As I said before, every email service provider uses different spam traps, filters, and algorithms, taking into account your IP and domain reputation, type of emails, and some other factors like &lt;a href="https://mailtrap.io/blog/soft-vs-hard-bounce/" rel="noopener noreferrer"&gt;soft, and hard bounces&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While there’s no perfect method, running inbox placement tests can provide valuable insights.&lt;/p&gt;

&lt;h3&gt;
  
  
  Seed list testing
&lt;/h3&gt;

&lt;p&gt;For this test, you’ll need a list of real email addresses that are not associated with real individuals. The selection should represent different email clients, ISPs, and spam filters to simulate real-world delivery scenarios. &lt;/p&gt;

&lt;p&gt;After sending test emails, you’ll need to monitor where your emails ended up using the email deliverability tools. Based on where they are delivered, you can analyze the results, and identify any deliverability issues. &lt;/p&gt;

&lt;p&gt;Such testing helps you understand how different email clients and ISPs treat your letters and whether they are delivered successfully. &lt;/p&gt;

&lt;p&gt;If the rate is low, you can make adjustments to your email marketing campaigns. Often some simple actions, like tweaking a message or a subject line, can significantly improve deliverability and increase the chances of your emails reaching Inboxes.&lt;/p&gt;

&lt;p&gt;At the same time, seed list testing is an estimate, not a definitive measure. Your actual subscriber base might have different characteristics (e.g., location, engagement history) that could impact real-world inbox placement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-user testing
&lt;/h3&gt;

&lt;p&gt;The flow is the same as in previous testing, however this time, you take a small cohort of real users’ addresses and send them emails.&lt;/p&gt;

&lt;p&gt;The next step would be to analyze the email delivery placement, and either send the emails to the rest of the recipients or tweak your email and repeat your test (with a cohort of other recipients). I think you realize the risks of this Inbox placement test method, right? &lt;/p&gt;

&lt;p&gt;Apart from the actual testing of where your emails appear, I’d suggest you begin with the Inbox placement reports that many ESPs provide, email &lt;a href="https://mailtrap.io/blog/email-testing-for-beginners/#What-email-components-should-be-tested" rel="noopener noreferrer"&gt;content testing&lt;/a&gt;, spam complaints, and engagement metrics monitoring.&lt;/p&gt;

&lt;p&gt;Now, let me tell you about the tools I use to run tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  Inbox testing tools
&lt;/h2&gt;

&lt;p&gt;There are many tools with a broad number of email testing features. I’ll briefly talk about the most popular ones with inbox placement testing capabilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Everest by Validity
&lt;/h3&gt;

&lt;p&gt;Everest now can track how your emails are delivered across different ISPs, email clients, and spam filter services. &lt;/p&gt;

&lt;p&gt;The tool uses seed list addresses (active email accounts that are not associated with real individuals), adding credibility to the testing process. Also, you can check if you were included in a blacklist, and get a range of actionable insights to optimize your email campaigns. &lt;/p&gt;

&lt;h3&gt;
  
  
  Litmus
&lt;/h3&gt;

&lt;p&gt;Litmus offers functionality to track email delivery endpoints across major ISPs, email clients, and spam filter services to help you identify patterns, trends, and problematic areas for improvement. As well as that, Litmus allows you to compare your performance metrics with other sender benchmarks which helps you better assess your marketing efforts compared to your competitors. &lt;/p&gt;

&lt;h3&gt;
  
  
  Allegrow
&lt;/h3&gt;

&lt;p&gt;Designed specifically for outbound business teams, Allegrow helps teams that deal with cold emails grow their IP and domain reputation and improve the placement of their emails. &lt;/p&gt;

&lt;p&gt;The instrument leverages a premium network of real B2B email addresses to measure the percentage of email traffic reaching primary folders on a domain-wide or rep-specific basis.&lt;/p&gt;

&lt;p&gt;When monitoring real-world data, Allegrow promptly notifies you of any authentication issues or deliverability concerns that could impact your ranking.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to increase inbox delivery rate: best practices
&lt;/h2&gt;

&lt;p&gt;The good news is that a lot of the &lt;a href="https://mailtrap.io/blog/email-deliverability/#How-to-improve-email-deliverability-Best-practices-for-your-email-campaigns" rel="noopener noreferrer"&gt;best practices to improve email deliverability&lt;/a&gt; are also applicable to elevate the Inbox email placement and if you’ve been carefully nurturing the first, the latest would also improve. &lt;/p&gt;

&lt;p&gt;Let’s recap the most effective approaches I suggest you start with. In the parentheses, I added a mark (from 5 to 1) to demonstrate the importance of each practice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Diligently oversee your email list (5)
&lt;/h3&gt;

&lt;p&gt;More is not always better. You want to have only engaged recipients in your email list, otherwise you’ll get spam complaints and unsubscribes that would worsen your position. So,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Grow your list naturally&lt;/strong&gt;. Send emails only to recipients who are really interested in your offers. Don’t purchase any email address lists online. This is an almost guaranteed way to get blacklisted. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Segment your list&lt;/strong&gt;. Let users easily subscribe to only part of your marketing campaigns. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make it easy to unsubscribe&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Confirm users’ consent with double opt-in&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Use email authentication (5)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/blog/email-authentication" rel="noopener noreferrer"&gt;Email authentication&lt;/a&gt; is a necessary step if you want to maintain consistently high email delivery rates. Without proper authentication, spoofers and spammers can use your name to get to your users. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use SPF and DKIM&lt;/strong&gt; as a bare minimal protection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure DMARC, Reverse DNS, and BIMI Record checks&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Make sure your emails are compliant with legal regulations (5)
&lt;/h3&gt;

&lt;p&gt;Compliant emails mean a double win: boosted sender reputation and protection from legal headaches. Ask Meta that had to pay a hefty &lt;a href="https://www.statista.com/statistics/1133337/largest-fines-issued-gdpr/#:~:text=Largest%20fines%20issued%20for%20violations%20of%20GDPR%202024&amp;amp;text=Of%20these%2C%20the%20fine%20of,complying%20with%20the%20EU%20regulation." rel="noopener noreferrer"&gt;$1.2 billion issued for GDPR violations&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Comply with relevant anti-spam regulations&lt;/strong&gt;, such as &lt;a href="https://www.ftc.gov/legal-library/browse/rules/can-spam-rule" rel="noopener noreferrer"&gt;CAN-SPAM&lt;/a&gt; (US) or &lt;a href="https://gdpr-info.eu/" rel="noopener noreferrer"&gt;GDPR&lt;/a&gt; (EU), depending on your target audience and location. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Obtain explicit consent from subscribers&lt;/strong&gt; before adding them to your email list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add a simple unsubscribe mechanism&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Maintain the engagement high (4)
&lt;/h3&gt;

&lt;p&gt;ESPs consider your emails as valuable if users often interact with them. The more users open, click on links, and respond to your letters, the better!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Create high-quality content&lt;/strong&gt;. Focus on informative, engaging emails carefully tailored to your subscribers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalize your emails&lt;/strong&gt; – users’ names in the subject line, personalized offers/discounts/content suggestions, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize sending times based on your audience’s preferences&lt;/strong&gt;: Schedule emails for when recipients are most likely to open them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run A/B tests on subject line and content&lt;/strong&gt;.
Test different subject lines, images, and texts to see what options drive the most opens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Check emails on “Spam” (4)
&lt;/h3&gt;

&lt;p&gt;ESPs use spam filters that check your content on “&lt;a href="https://mailtrap.io/blog/email-spam-words/#Urgency-and-scarcity" rel="noopener noreferrer"&gt;spammy vocabulary&lt;/a&gt;” and other things that can signal about the low quality of your email message. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Avoid using Caps Lock, exclamation points, too many links, repetitive content, and misleading subject lines&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maintain a natural, conversational tone&lt;/strong&gt;. Avoid ​​cliché and overly formal, bureaucratic language.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test your emails using our &lt;a href="https://mailtrap.io/email-spam-checker/" rel="noopener noreferrer"&gt;spam checker&lt;/a&gt;&lt;/strong&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Keep the sending volume and schedule consistent (3)
&lt;/h3&gt;

&lt;p&gt;Internet service providers may consider sudden, chaotic spikes in your sending activities as spammy behavior. So focus on sending valuable content at a regular pace, increasing the numbers gradually.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Avoid sudden spikes in email volume&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stick to a regular schedule&lt;/strong&gt;. Don’t overwhelm subscribers with too many emails, and don’t go completely silent for long either.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adjust sending activities based on subscriber engagement&lt;/strong&gt;. Revise your strategy if users keep on ignoring your emails. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Audit email deliverability rate regularly (2):
&lt;/h3&gt;

&lt;p&gt;While audits don’t directly influence inbox rates, they’re crucial for long-term success. With regular audits, you can identify potential issues before they impact future deliverability and inbox placement.&lt;/p&gt;

&lt;p&gt;-** Use deliverability testing tools.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor blacklist status.&lt;/li&gt;
&lt;li&gt;Regularly review bounce rates and spam complaints**.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/aGIqAPtY8RE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping up
&lt;/h2&gt;

&lt;p&gt;In this article, I’ve covered the basics of inbox placement, explaining how email service providers sort your messages and what factors influence where they land. By following the best practices for list hygiene, proper email protection, and content testing, you can dramatically increase the chances of your emails reaching inboxes and boosting your ROI.&lt;/p&gt;

&lt;p&gt;If you want to dive even deeper, then you can watch some useful info on the topic here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/tkQDQ6ua5ZU" rel="noopener noreferrer"&gt;Email List Segmentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/v5mTMCqXHNU" rel="noopener noreferrer"&gt;Email Sender Reputation Audit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/0WlzwEEI7LY" rel="noopener noreferrer"&gt;How to track email performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We appreciate you chose this article to know how to &lt;a href="https://mailtrap.io/blog/inbox-placement/" rel="noopener noreferrer"&gt;define inbox placement rate&lt;/a&gt;. Follow Mailtrap blog to read even more interested articles on related topics!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Send Emails With Google App Script</title>
      <dc:creator>Dzenana Kajtaz</dc:creator>
      <pubDate>Wed, 26 Jun 2024 20:10:13 +0000</pubDate>
      <link>https://dev.to/dzenanakajtaz/how-to-send-emails-with-google-app-script-23pi</link>
      <guid>https://dev.to/dzenanakajtaz/how-to-send-emails-with-google-app-script-23pi</guid>
      <description>&lt;p&gt;If you’re a beginner like me and have spent hours unsuccessfully searching for the right piece of content or GitHub page that covers how to use Google App Script to send email, you’re in the right place!&lt;/p&gt;

&lt;p&gt;In this article, I will take you step by step through the process of sending emails via Google Scripts.&lt;/p&gt;

&lt;p&gt;So hold tight; we’re in for a ride!&lt;/p&gt;

&lt;p&gt;Know your options: MailApp vs GmailApp&lt;br&gt;
During my research on the topic of sending emails with Google Apps Script – the JavaScript cloud scripting language – I noticed two services repeatedly mentioned. Those services are MailApp and GmailApp. &lt;/p&gt;

&lt;p&gt;What I discovered after looking into them was that both are intended to send emails but come with different functionalities and cater to different needs. So, let’s break them down so you can confidently choose the best service for your specific use case!&lt;/p&gt;

&lt;p&gt;Snapshot comparison: &lt;/p&gt;

&lt;p&gt;Use MailApp if your email-sending tasks have minimal requirements and are straightforward. &lt;br&gt;
Use GmailApp when you need to interact with Gmail features and complex email functionalities. &lt;br&gt;
MailApp:&lt;/p&gt;

&lt;p&gt;Great for sending plain text or HTML emails that don’t require you to interact with the full Gmail features&lt;br&gt;
Does not directly interact with the Gmail interface, and emails sent through MailApp don’t appear in the Gmail “Sent” folder&lt;br&gt;
Has an email sending limit based on your Google account type (e.g., free, Google Workspace) and is separate from the Gmail account sending limits&lt;br&gt;
Intended for heavy Gmail users&lt;br&gt;
GmailApp:&lt;/p&gt;

&lt;p&gt;Comes with a rich set of features for completing more complex email-sending tasks, such as sending from aliases, changing the status of an email to read/unread, email search, and label manipulation&lt;br&gt;
Has full integration with the sender’s Gmail account, and emails sent with GmailApp appear in the Gmail “Sent” folder&lt;br&gt;
Provides high flexibility for handling complex email compositions such as rich email formatting and including inline images&lt;br&gt;
Has an email sending limit based on your Gmail account sending limit&lt;br&gt;
Not suitable for bulk email senders and heavy Gmail users&lt;br&gt;
How to send emails using Google Apps Script&lt;br&gt;
To send my emails from Google Apps Script, I decided to go with the GmailApp service. Why? Well, simply because it’s more advanced. So, for the rest of this tutorial and in the code snippets, you’ll see me using this service.&lt;/p&gt;

&lt;p&gt;With that out of the way, let’s get into the email-sending process, starting with plain text emails.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 1 – Get your Google Apps Script Editor ready &lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
To write the code that will facilitate the email sending, you need to head over to the Google Apps Script website and log in with your Google account.&lt;br&gt;
Then, click on New Project to create a new script.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbv876hjmlfc1imdrjy8t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbv876hjmlfc1imdrjy8t.png" alt="Image description" width="518" height="510"&gt;&lt;/a&gt;&lt;br&gt;
*&lt;em&gt;Step 2 – Start writing the script&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The script I used to send emails is pretty simple. &lt;/p&gt;

&lt;p&gt;In the script code, I first set the email recipient and subject. Then, I define the message body before calling the sendEmail function and passing it all the necessary parameters.&lt;/p&gt;

&lt;p&gt;`function sendPlainTextEmailDirectlyWithGmailApp() {&lt;br&gt;
  var emailaddress = '&lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;'; // Replace with the actual recipient's email address&lt;br&gt;
  var subject = 'Test Email Subject'; // Replace with your desired subject&lt;br&gt;
  var message = 'This is a plain text email body.'; // Replace with your plain text message&lt;/p&gt;

&lt;p&gt;// Send the email directly&lt;br&gt;
  GmailApp.sendEmail(emailaddress, subject, message);&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 3 – Save your project and give it a name&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Before you run your code, the project created needs to be saved and named. This can be done by clicking on the good old floppy disk icon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73vdnmsbxh2kklknozmo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73vdnmsbxh2kklknozmo.png" alt="Image description" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 4 – 3, 2, 1…Run the script &lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
And just like that, your code is ready to run! So, now, go into your script editor, select the function you want to run from the dropdown, and click the play (▶️) icon.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjfjkz51nygf7sf193ak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjfjkz51nygf7sf193ak.png" alt="Image description" width="800" height="167"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 5 – Authorize the script &lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If it’s your first time running your script, Google will ask you to give the application authorization for sending on your behalf. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fviud3hv83tvb6wuh2d3d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fviud3hv83tvb6wuh2d3d.png" alt="Image description" width="800" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once this happens, review permissions, choose your account, and grant the permissions necessary for the script to send emails and manage them for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Steps such as opening the script editor, saving and running your project, as well as authorizing the script will be essentially the same for all the other email types I cover in this article. So, to avoid repetition, I will mostly skip including these steps from this point on.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;HTML emails&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
In the previous section, I focussed only on plain text email. Now, I’ll take it a level up by showing you how I sent HTML emails.&lt;/p&gt;

&lt;p&gt;As the code for sending plain text and HTML emails is not that significantly different, I simply modified what I had already written to fit my HTML email-sending needs.&lt;/p&gt;

&lt;p&gt;`function sendHtmlEmailWithGmailApp() {&lt;br&gt;
  var recipient = '&lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;'; // Replace with the actual recipient's email address&lt;br&gt;
  var subject = 'Test HTML Email Subject'; // Replace with your desired subject&lt;/p&gt;

&lt;p&gt;// Define the HTML body of the email&lt;br&gt;
  var htmlBody = '&lt;/p&gt;
&lt;h1&gt;Hello!&lt;/h1&gt;' +&lt;br&gt;
                 '&lt;p&gt;This is an &lt;strong&gt;HTML&lt;/strong&gt; email.&lt;/p&gt;';

&lt;p&gt;// Send the email with the HTML body&lt;br&gt;
  GmailApp.sendEmail(recipient, subject, '', {&lt;br&gt;
    htmlBody: htmlBody&lt;br&gt;
  });&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;When inspecting the modified code above, you will notice that while setting the body of the email, I formatted it as HTML. I then called the same sendEmail function and passed it the four instead of three parameters – recipient, subject, an empty string, and an object. &lt;/p&gt;

&lt;p&gt;The object passed to the function contains a single property called htmlBody, which is set to the variable containing the body of the email. Thanks to this property, GmailApp knows how to use HTML content as the email body.  &lt;/p&gt;

&lt;p&gt;The empty string is passed instead of a regular parameter typically used to set the plain text body of the email, which, in this case, is not necessary.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Emails with attachments&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Adding an attachment when sending an email using Google Apps Script is a two-step process – first, you retrieve the file from Google Drive or another source, and then you attach it to the email message.&lt;/p&gt;

&lt;p&gt;To retrieve the file, I used the following code snippet:&lt;/p&gt;

&lt;p&gt;DriveApp.getFilesByName("Example.pdf").next()&lt;/p&gt;

&lt;p&gt;This snippet uses the DriveApp Google Apps Script service and its getFilesByName function. As the getFilesByName function returns a collection of files that match a specific name, another function, next, is called on the returned object. &lt;/p&gt;

&lt;p&gt;Then, to attach the retrieved file, I passed a fourth parameter to the sendEmail function. This parameter represents an array that can include one or more attachments. &lt;/p&gt;

&lt;p&gt;`GmailApp.sendEmail(recipient, subject, body, {&lt;br&gt;
    attachments: [file.getAs(MimeType.PDF)] // Adjust the MIME type as necessary&lt;br&gt;
  });&lt;br&gt;
In my code, you will also see the getAs function. This function converts an attached file into a specific format. Here are some examples of how to use getAs to complete various file conversions:&lt;/p&gt;

&lt;p&gt;file.getAs(MimeType.MICROSOFT_WORD);&lt;br&gt;
file.getAs(MimeType.PLAIN_TEXT);&lt;br&gt;
file.getAs(MimeType.JPEG);&lt;br&gt;
file.getAs(MimeType.PNG);&lt;br&gt;
file.getAs(MimeType.CSV);&lt;br&gt;
file.getAs(MimeType.HTML);`&lt;/p&gt;

&lt;p&gt;And here is the full email-sending code:&lt;/p&gt;

&lt;p&gt;`function sendEmailWithAttachment() {&lt;br&gt;
  var recipient = "&lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;"; // Replace with the recipient's email address&lt;br&gt;
  var subject = "Email with Attachment"; // Replace with your email subject&lt;br&gt;
  var body = "Please find the attached file."; // Plain text body of the email&lt;br&gt;
  var file = DriveApp.getFilesByName("Example.pdf").next(); // Replace 'Example.pdf' with your file's name&lt;/p&gt;

&lt;p&gt;GmailApp.sendEmail(recipient, subject, body, {&lt;br&gt;
    attachments: [file.getAs(MimeType.PDF)] // Adjust the MIME type as necessary&lt;br&gt;
  });&lt;br&gt;
}`&lt;br&gt;
getFileById route &lt;/p&gt;

&lt;p&gt;Google Apps Script facilitates more than one way of adding an attachment. So, besides the getFilesByName function paired with passing the attachments as an array, there is also the getFileById function and Blob (yes, you read that right :D) combination.&lt;/p&gt;

&lt;p&gt;So, instead of retrieving the file by name, you can also retrieve it by ID. And instead of attaching an array, you can attach a Blob – a binary large object representing data that can be treated as a file. &lt;/p&gt;

&lt;p&gt;Using a Blob is a straightforward way to attach files without needing to adjust or specify the file format explicitly. And this is what it looks like when implemented in my code:&lt;/p&gt;

&lt;p&gt;`function sendEmailWithAttachment() {&lt;br&gt;
  // Define the email parameters&lt;br&gt;
  var recipient = '&lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;';&lt;br&gt;
  var subject = 'Test Email with Attachment';&lt;br&gt;
  var body = 'This is a plain text email with an attachment.';&lt;/p&gt;

&lt;p&gt;// Get the file from Google Drive (replace 'fileId' with the actual file ID)&lt;br&gt;
  var file = DriveApp.getFileById('fileId');&lt;/p&gt;

&lt;p&gt;// Create a blob from the file&lt;br&gt;
  var blob = file.getBlob();&lt;/p&gt;

&lt;p&gt;// Send the email with the attachment&lt;br&gt;
  GmailApp.sendEmail(recipient, subject, body, {&lt;br&gt;
    attachments: [blob]&lt;br&gt;
  });&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;Emails with multiple recipients&lt;br&gt;
HTML content covered, attachments covered, and single-recipient emails covered. But what if you want to share your email with more than one person? For that, I found two options:&lt;/p&gt;

&lt;p&gt;separating the email addresses with commas within a single string &lt;br&gt;
using an array of email addresses and then joining them into a string&lt;br&gt;
Let me show you both!&lt;/p&gt;

&lt;p&gt;When it comes to the first option, you need to modify the recipient variable in your script by setting its value to be a string containing email addresses separated by commas. &lt;/p&gt;

&lt;p&gt;Then, simply pass the variable to the function sendEmail as you did earlier.&lt;/p&gt;

&lt;p&gt;`function sendEmailToMultipleRecipients() {&lt;br&gt;
  var recipients = "&lt;a href="mailto:recipient1@example.com"&gt;recipient1@example.com&lt;/a&gt;,&lt;a href="mailto:recipient2@example.com"&gt;recipient2@example.com&lt;/a&gt;"; // Separate email addresses with commas&lt;br&gt;
  var subject = "Email to Multiple Recipients";&lt;br&gt;
  var body = "This is a test email sent to multiple recipients.";&lt;/p&gt;

&lt;p&gt;GmailApp.sendEmail(recipients, subject, body);&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;The second option also involves modifying the recipient variable in your script. Only this time, the variable’s value will be set to an array of strings, each representing an email address. &lt;/p&gt;

&lt;p&gt;The array is then combined into a single string, separated by commas, using the join function. &lt;/p&gt;

&lt;p&gt;`function sendEmailToArrayOfRecipients() {&lt;br&gt;
  var recipientArray = ["&lt;a href="mailto:recipient1@example.com"&gt;recipient1@example.com&lt;/a&gt;", "&lt;a href="mailto:recipient2@example.com"&gt;recipient2@example.com&lt;/a&gt;", "&lt;a href="mailto:recipient3@example.com"&gt;recipient3@example.com&lt;/a&gt;"]; // An array of email addresses&lt;br&gt;
  var recipients = recipientArray.join(","); // Join the array into a comma-separated string&lt;br&gt;
  var subject = "Email to Multiple Recipients";&lt;br&gt;
  var body = "This is a test email sent to multiple recipients.";&lt;/p&gt;

&lt;p&gt;GmailApp.sendEmail(recipients, subject, body);&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;The latter approach is particularly useful if the list of recipients is dynamic or large.&lt;/p&gt;

&lt;p&gt;CC and BCC recipients&lt;br&gt;
If you want to include CC or BCC recipients in the emails you send from Google Apps Script, at your disposal are the CC and BCC fields in the optional parameters object.&lt;/p&gt;

&lt;p&gt;Here is how I made use of them:&lt;/p&gt;

&lt;p&gt;`function sendEmailWithCCAndBCC() {&lt;br&gt;
  var primaryRecipient = "&lt;a href="mailto:primary@example.com"&gt;primary@example.com&lt;/a&gt;"; // Primary recipient&lt;br&gt;
  var ccRecipients = "&lt;a href="mailto:cc1@example.com"&gt;cc1@example.com&lt;/a&gt;,&lt;a href="mailto:cc2@example.com"&gt;cc2@example.com&lt;/a&gt;"; // CC recipients&lt;br&gt;
  var bccRecipients = "&lt;a href="mailto:bcc1@example.com"&gt;bcc1@example.com&lt;/a&gt;,&lt;a href="mailto:bcc2@example.com"&gt;bcc2@example.com&lt;/a&gt;"; // BCC recipients&lt;br&gt;
  var subject = "Email with CC and BCC";&lt;br&gt;
  var body = "This email is sent with CC and BCC recipients.";&lt;/p&gt;

&lt;p&gt;GmailApp.sendEmail(primaryRecipient, subject, body, {&lt;br&gt;
    cc: ccRecipients,&lt;br&gt;
    bcc: bccRecipients&lt;br&gt;
  });&lt;br&gt;
}`&lt;br&gt;
How to send condition-based emails using Google Apps Script&lt;br&gt;
With manual email-sending out of the way, it’s time for some automation. &lt;/p&gt;

&lt;p&gt;In Google Apps Script, automation is used when sending condition-based emails. What’s particularly interesting about these emails is that they leverage the ability of Google Apps Script to interact with Google Services such as Gmail, Sheets, Docs, etc.&lt;/p&gt;

&lt;p&gt;Personally, I like to use condition-based emails for tasks such as automating email notifications, reminders, or alerts. And here’s how!&lt;/p&gt;

&lt;p&gt;Sending email based on cell value&lt;br&gt;
Let’s imagine you have an Excel or Google spreadsheet containing data on inventory levels. Once those levels drop below a certain threshold, you want to send out an automatic notification or alert to whoever is responsible.&lt;/p&gt;

&lt;p&gt;To do so in Google Apps Script, you’ll need the following code: &lt;/p&gt;

&lt;p&gt;`function checkCellValueAndSendEmail() {&lt;br&gt;
  // ID of the Google Sheet you want to check&lt;br&gt;
  var sheetId = 'YOUR_SHEET_ID_HERE';&lt;br&gt;
  var sheet = SpreadsheetApp.openById(sheetId).getActiveSheet();&lt;/p&gt;

&lt;p&gt;// Assuming the value to check is in cell A1&lt;br&gt;
  var cellValue = sheet.getRange('A1').getValue();&lt;/p&gt;

&lt;p&gt;// Condition to send email&lt;br&gt;
  if (cellValue === 'Send Email') {&lt;br&gt;
    var email = '&lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;'; // Replace with the recipient's email&lt;br&gt;
    var subject = 'Alert from Google Sheet';&lt;br&gt;
    var body = 'The condition to send an email has been met.';&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GmailApp.sendEmail(email, subject, body);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
}&lt;br&gt;
`What this code does is open a sheet based on an ID you define and pass to the openById function. It then selects a data range within the sheet. In the case of my code, that range is specified as “A1”, which refers to the cell located in column A and row 1 of the spreadsheet.&lt;/p&gt;

&lt;p&gt;If the cell value equals “Send Email”, my code then composes and sends an email in the same manner I covered in the previous sections. Cool, huh?&lt;/p&gt;

&lt;p&gt;Automate your script further (Optional)&lt;br&gt;
Within the Google Apps Script editor, you can set a script to run according to a schedule or after an event. &lt;/p&gt;

&lt;p&gt;This is done by: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking on the clock icon (Triggers icon) in the left sidebar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97rrnftqnvl29801qkj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F97rrnftqnvl29801qkj9.png" alt="Image description" width="598" height="624"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking + Add Trigger in the bottom right corner.
Choosing the function you want to run and setting the event source (for the code to run at specific intervals, Time-driven should be the event source)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh99jsr96ln0in6noejn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh99jsr96ln0in6noejn.png" alt="Image description" width="800" height="678"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking Save.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I should note that when you are setting up the script and email triggers, you’ll need to make sure all necessary permissions are granted for the script to run. For the example I provided, these permissions would include accessing Google Sheets data and sending emails.&lt;/p&gt;

&lt;p&gt;Sending email after form submission&lt;br&gt;
Another use case of Google Apps Script that I found particularly cool is the creation of automated emails after a Google Form submission. &lt;/p&gt;

&lt;p&gt;To do so, all you need is to create a trigger that runs a code snippet after each response you receive. The code, you guessed it, will send an email using the GmailApp service.&lt;/p&gt;

&lt;p&gt;This is how I linked my Google Form and email-sending code:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 1 – Retrieve the form ID&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The unique ID of each Google form can be found in its URL. These URLs should have the following format:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/forms/d/e/%5BFORM_ID%5D/viewform"&gt;https://docs.google.com/forms/d/e/[FORM_ID]/viewform&lt;/a&gt;&lt;br&gt;
Once you have the ID, copy and save it, as you’ll need to incorporate it into the code soon.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 2 – Get the code ready &lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The code I used for this task is just slightly different from the code used for plain text email sending. So, along with the standard tasks of defining the recipient, subject, and body as well as calling the sendEmail function, at the top of the code you’ll extract all the form responses and then access a specific response.&lt;/p&gt;

&lt;p&gt;The extracting is done using the getItemResponses function. Accessing a specific response, on the other hand, is done by calling the getResponse function on a variable holding an array of responses from a form submission.&lt;/p&gt;

&lt;p&gt;This is how it all looks in code:&lt;/p&gt;

&lt;p&gt;function sendEmailAfterFormSubmit() {&lt;br&gt;
var form = FormApp.openById(‘TARGET_FORM_ID’);&lt;br&gt;
var responsesCount = form.getResponses().length;&lt;br&gt;
var responses = form.getResponses();&lt;br&gt;
var response = responses[responsesCount-1];&lt;br&gt;
var responseItems = response.getItemResponses();&lt;br&gt;
var firstResponse = responseItems[0].getResponse();&lt;br&gt;
// Email details&lt;br&gt;
var email =&lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;';&lt;br&gt;
var subject = 'New Form Submission';&lt;br&gt;
var body = 'A new form has been submitted. First question response: ' + firstResponse;&lt;br&gt;
GmailApp.sendEmail(email, subject, body);&lt;/p&gt;

&lt;p&gt;If you want to customize the email content further based on a form response, you can do so by accessing different parts of the responses array.&lt;/p&gt;

&lt;p&gt;My form consisted of 3 questions: &lt;/p&gt;

&lt;p&gt;What is your name?&lt;br&gt;
What is your favorite color?&lt;br&gt;
Please provide your feedback.&lt;br&gt;
And to customize my email, I used the following code:&lt;/p&gt;

&lt;p&gt;`function sendCustomEmailAfterFormSubmit() {&lt;br&gt;
  // Access the form responses from the event object&lt;br&gt;
  var form = FormApp.openById(‘TARGET_FORM_ID’);&lt;br&gt;
var responsesCount = form.getResponses().length;&lt;br&gt;
var responses = form.getResponses();&lt;br&gt;
var response = responses[responsesCount-1];&lt;br&gt;
var responseItems = response.getItemResponses();&lt;/p&gt;

&lt;p&gt;// Extracting individual responses&lt;br&gt;
  var nameResponse = responseItems[0].getResponse(); // Response to the first question (name)&lt;br&gt;
  var colorResponse = responseItems[1].getResponse(); // Response to the second question (favorite color)&lt;br&gt;
  var feedbackResponse = responseItems[2].getResponse(); // Response to the third question (feedback)&lt;/p&gt;

&lt;p&gt;// Email details&lt;br&gt;
  var recipient = '&lt;a href="mailto:recipient@example.com"&gt;recipient@example.com&lt;/a&gt;'; // Replace with the actual recipient's email&lt;br&gt;
  var subject = 'Thank You for Your Feedback';&lt;/p&gt;

&lt;p&gt;// Customizing the email body with the form responses&lt;br&gt;
  var body = "Hello " + nameResponse + ",\n\n" +&lt;br&gt;
             "Thank you for submitting your feedback. " +&lt;br&gt;
             "We are glad to know that your favorite color is " + colorResponse + ". " +&lt;br&gt;
             "Here's the feedback we received from you:\n" +&lt;br&gt;
             "\"" + feedbackResponse + "\"\n\n" +&lt;br&gt;
             "We appreciate your input and will get back to you shortly.";&lt;/p&gt;

&lt;p&gt;// Sending the customized email&lt;br&gt;
  GmailApp.sendEmail(recipient, subject, body);&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;Limitations of sending with Google Apps Script&lt;br&gt;
By this point in the article, you’re probably thinking, “Man, you can do a lot with Google Apps Script”. And yes, you’re right, but there are limitations.&lt;/p&gt;

&lt;p&gt;Let me introduce you to the key ones!&lt;/p&gt;

&lt;p&gt;Daily quota – daily quota limits are enforced by Google Apps Script on sending emails and these vary based on the account type (e.g., personal Gmail vs. Google Workspace). Along with the number of emails, these limits also extend to the number of recipients.&lt;br&gt;
Execution time – limits are posed on the total execution time per day for scripts as well as individual script executions. For most accounts, 6 minutes is the maximum execution time per script.&lt;br&gt;
Concurrent executions – the number of scripts that can execute concurrently is limited, affecting scripts designed to handle high volumes of requests or operations simultaneously.&lt;br&gt;
URL fetch calls and external requests – the number of calls and the size of the request, as well as the response, are limited for scripts that make external network calls, such as ones to APIs and web services.&lt;br&gt;
Script project and storage size – Google Apps Script has a maximum size limit for each script and the data stored by it when using various services within the platform (Properties Service, Cache Service, etc.).&lt;br&gt;
Libraries and dependencies – per project, there is a limit on the number and the size of libraries used. &lt;br&gt;
How to send emails with Google Apps Script and email API?&lt;br&gt;
While sending through the Gmail service is pretty simple and effective, I like to have a bit more flexibility and features. For this, the option I gravitate to the most is using an email API.&lt;/p&gt;

&lt;p&gt;In Google Apps Script, HTTP requests to external email APIs are made using the UrlFetchApp service. And I will now show you how to make such a request to a reliable email API offered by Mailtrap Email Sending. &lt;/p&gt;

&lt;p&gt;With Mailtrap Email Sending, you get an email infrastructure with high deliverability rates by design. On top of that, you can expect each email you send through this sending solution to reach a recipient’s inbox in seconds. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Limitations of sending with Google Apps Script&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
By this point in the article, you’re probably thinking, “Man, you can do a lot with Google Apps Script”. And yes, you’re right, but there are limitations.&lt;/p&gt;

&lt;p&gt;Let me introduce you to the key ones!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Daily quota – daily quota limits are enforced by Google Apps Script on sending emails and these vary based on the account type (e.g., personal Gmail vs. Google Workspace). Along with the number of emails, these limits also extend to the number of recipients.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execution time – limits are posed on the total execution time per day for scripts as well as individual script executions. For most accounts, 6 minutes is the maximum execution time per script.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Concurrent executions – the number of scripts that can execute concurrently is limited, affecting scripts designed to handle high volumes of requests or operations simultaneously.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;URL fetch calls and external requests – the number of calls and the size of the request, as well as the response, are limited for scripts that make external network calls, such as ones to APIs and web services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Script project and storage size – Google Apps Script has a maximum size limit for each script and the data stored by it when using various services within the platform (Properties Service, Cache Service, etc.).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Libraries and dependencies – per project, there is a limit on the number and the size of libraries used. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;How to send emails with Google Apps Script and email API?&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Read the full article on the &lt;a href="https://mailtrap.io/blog/google-scripts-send-email/"&gt;Mailtrap blog&lt;/a&gt;! &lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to use Android JavaMail API to Send Emails</title>
      <dc:creator>Dzenana Kajtaz</dc:creator>
      <pubDate>Tue, 27 Feb 2024 10:18:12 +0000</pubDate>
      <link>https://dev.to/dzenanakajtaz/how-to-use-android-javamail-api-to-send-emails-4fnk</link>
      <guid>https://dev.to/dzenanakajtaz/how-to-use-android-javamail-api-to-send-emails-4fnk</guid>
      <description>&lt;p&gt;The quick, and let’s say, easy way to send emails from your Android application is to use Intent. However, it can take you only so far due to the method’s limitations. &lt;/p&gt;

&lt;p&gt;This article explores Android JavaMail API as a more flexible and scalable method to send emails.&lt;/p&gt;

&lt;p&gt;First, I’ll detail the reasons to opt for JavaMail API instead of Intent, then I’ll jump into the implementation tutorials with code examples. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When and why should you send emails without Android Intent?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Simply, it’s all about having more flexibility, reliability, and control in various applications and scenarios. But here’s a more granular overview of why to consider JavaMail integration to send an email from an Android app. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server-side control:&lt;/strong&gt; Using server-side technologies (like SMTP) to send emails gives you more control over the email-sending process. This method is more reliable for automated emails, such as notifications or system-generated messages, where you need confirmation that the email was sent successfully.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customization and formatting:&lt;/strong&gt; Compared to what you can get natively from Android Studio and ‘intent.action_send’, server-side email sending allows for more complex HTML formatting and customization. Proper sending solutions like &lt;a href="https://arc.net/l/quote/utreuaxj"&gt;Mailtrap Email Sending&lt;/a&gt; can offer more robust formatting options.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoiding user interaction:&lt;/strong&gt; Under specific circumstances, you may want to send emails in the background without user intervention or without a dialog box to notify the user. However, Android Intent requires the user to manually complete the email-sending process in an email client. In contrast, server-side sending can happen automatically without user interference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bulk or scheduled emails:&lt;/strong&gt; This isn’t feasible with Android Intent, but server-side solutions can handle bulk emailing and scheduling.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security and privacy:&lt;/strong&gt; Simply, server-side solutions can provide better security measures (e.g. encryption). It helps avoid exposing sensitive content or docs to third-party email clients on the user’s device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoiding email client dependency:&lt;/strong&gt; You’d want to ensure the email functionality is not dependent on the presence of an email client on the user’s device. Some users might not have a default email client set up, which is a requirement for Android Intent-based email sending.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compliance and logging:&lt;/strong&gt; Server-side emailing can offer detailed logs and comply with specific regulations, which is crucial for certain types of applications, especially in business or healthcare sectors.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Keynotes before we continue:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
This tutorial doesn’t tell you how to import Android dependencies within the studio. If you need to set New Intent in the XML file, &lt;a href="https://arc.net/l/quote/fgjstvbv"&gt;check this article&lt;/a&gt;. It covers the Intent method in full. &lt;/p&gt;

&lt;p&gt;Ideally, you should test the flows on an Android device, be it an Android phone or tablet. If you use emulators you need to make sure that the Email app has been set up. Better yet, you’d also configure Gmail (Gmail app) and Microsoft Outlook to have a clear preview over different clients. &lt;/p&gt;

&lt;p&gt;This tutorial covers only email, not the SMS sending functionality. &lt;/p&gt;

&lt;p&gt;Pro tip – don’t use Gmail SMTP to send emails from Android. There are quite stringent throughput limitations and may require additional programming. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Android send email through JavaMail&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
JavaMail API provides a platform and protocol-independent framework to build mail and messaging applications. &lt;/p&gt;

&lt;p&gt;To no surprise, JavaMail API requires careful handling of background operations to ensure top-level security. I’ll guide you through setup and implementation and I’ll be dedicating special attention to the security measures.  &lt;/p&gt;

&lt;p&gt;Note: There’s also an option to set up Android email sending using Kotlin, but this tutorial exclusively uses Java. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Setup&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Step – Adding dependencies &lt;br&gt;
Add the following dependencies to the build.gradle file. &lt;/p&gt;

&lt;p&gt;`implementation 'com.sun.mail:jakarta.mail:2.0.1'&lt;br&gt;
implementation 'com.sun.activation:jakarta.activation:2.0.1'&lt;/p&gt;

&lt;p&gt;Step – Adding internet permission&lt;/p&gt;

&lt;p&gt;JavaMail requires internet access so you need to add the associated permission to AndroidManifest.xml.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;uses-permission android:name="android.permission.INTERNET"/&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Implementation&lt;/p&gt;

&lt;p&gt;The sections further down the article cover detailed implementation (SMTP and API). But here’s a quick overview so you understand the scope.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email session configuration:&lt;/strong&gt; You need to create a method to configure the email session. For example, this involves setting properties like the mail protocol (SMTP), host, port, and authentication details. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Composing the message:&lt;/strong&gt; Use MimeMessage to compose an email. Within that header, you’ll be setting the sender’s email, recipient’s email, subject, and email body. &lt;br&gt;
Sending the message: Finally, you establish the connection with the email server using the Transport.send() command, and then send the message. &lt;/p&gt;

&lt;p&gt;Also, you’ll need to choose a proper sending service like &lt;a href="https://arc.net/l/quote/sumfbyil"&gt;Mailtrap Email Delivery Platform&lt;/a&gt;, which will be featured in this article. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Important Note:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Email sending via JavaMail API should be an asynchronous operation within a background thread. When sending emails from a background thread, you avoid blocking the UI thread. &lt;/p&gt;

&lt;p&gt;Send email in Android with JavaMail and external SMTP&lt;br&gt;
In this quick tutorial, I assume you’ve added the necessary dependencies and the internet permission. The tutorial is also geared towards Mailtrap users. &lt;/p&gt;

&lt;p&gt;Step 1 – Configure Mailtrap SMTP&lt;br&gt;
You can find the SMTP credentials under the “SMTP Settings” section. Within Mailtrap, this is the second step of the Sending Domains setup process. &lt;/p&gt;

&lt;p&gt;Keep in mind that you need to verify and authenticate your domain to be able to send emails. During the verification process, you’ll be asked to add DNS records to your domain provider’s DNS. &lt;/p&gt;

&lt;p&gt;Learn more about DNS records and their importance in our Email deliverability cheatsheet playlist&lt;/p&gt;

&lt;p&gt;That out of the way, here are the exemplary credentials &lt;/p&gt;

&lt;p&gt;Host: live.smtp.mailtrap.io* &lt;br&gt;
Port: 587 (recommended)&lt;br&gt;
Username: api**&lt;br&gt;
Password: Mailtrap password specific to your account&lt;br&gt;
Notes:&lt;/p&gt;

&lt;p&gt;*live.smtp.mailtrap.io is the endpoint for sending transactional emails. If you want to send bulk (marketing) emails, the endpoint is bulk.smtp.mailtrap.io. But first, make sure to accept the terms of service to unlock the Bulk Stream. &lt;br&gt;
**api is the universal username for all Mailtrap Email Sending users. &lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Step 2 – Create an email sender class *&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;br&gt;
import jakarta.mail.Authenticator&lt;br&gt;
import jakarta.mail.BodyPart&lt;br&gt;
import jakarta.mail.Message&lt;br&gt;
import jakarta.mail.MessagingException&lt;br&gt;
import jakarta.mail.Session&lt;br&gt;
import jakarta.mail.Transport&lt;br&gt;
import jakarta.mail.internet.InternetAddress&lt;br&gt;
import jakarta.mail.internet.MimeBodyPart&lt;br&gt;
import jakarta.mail.internet.MimeMessage&lt;br&gt;
import jakarta.mail.internet.MimeMultipart&lt;/p&gt;

&lt;p&gt;val props = System.getProperties()&lt;br&gt;
props["mail.smtp.host"] = ‘sandbox.smtp.mailtrap.io’&lt;br&gt;
                props["mail.smtp.socketFactory.port"] = ‘587’&lt;br&gt;
                props["mail.smtp.socketFactory.class"] = "javax.net.ssl.SSLSocketFactory"&lt;br&gt;
                props["mail.smtp.auth"] = true&lt;br&gt;
                props["mail.smtp.port"] = ‘587’&lt;br&gt;
                props["mail.smtp.starttls.enable"] = true&lt;br&gt;
val session = Session.getInstance(props,&lt;br&gt;
                    object : Authenticator() {&lt;br&gt;
                        //Authenticating the password&lt;br&gt;
                        override fun getPasswordAuthentication(): jakarta.mail.PasswordAuthentication {&lt;br&gt;
                            return jakarta.mail.PasswordAuthentication(smtpUsername, smtpPassword)&lt;br&gt;
                        }&lt;br&gt;
                    })&lt;br&gt;
 // Create a default MimeMessage object.&lt;br&gt;
                    val message = MimeMessage(session)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                // Set From: header field of the header.
                message.setFrom(InternetAddress(‘from@example.com’))
                toRecipients?.forEach { email -&amp;gt;
                    message.addRecipients(
                        Message.RecipientType.TO,
                        InternetAddress.parse(email.trim())
                    )
                }

                // Set Subject: header field
                message.subject = subject

                // Send message
                Transport.send(message)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
Step 3 – Implement the asynchronous email sending&lt;br&gt;
As I mentioned earlier, you should avoid network operations on the main thread and use AsyncTask or a similar action. Here’s the example for the AsyncTask. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;`&lt;br&gt;
new AsyncTask&amp;lt;Void, Void, Void&amp;gt;() {&lt;br&gt;
    @Override&lt;br&gt;
    protected Void doInBackground(Void... voids) {&lt;br&gt;
        new MailtrapEmailSender().sendEmail("your_mailtrap_username", "your_mailtrap_password", "to@example.com", "Subject", "Email Body");&lt;br&gt;
        return null;&lt;br&gt;
    }&lt;br&gt;
}.execute();&lt;br&gt;
`&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 4 – Error handling and security&lt;br&gt;
When creating the email sender class, you can use a catch block for scenarios like no internet connection, incorrect credentials, etc.&lt;/p&gt;

&lt;p&gt;If a MessagingException is caught, the code inside the catch block executes. It throws a new RuntimeException, effectively converting a checked exception (MessagingException) into an unchecked one (RuntimeException). &lt;/p&gt;

&lt;p&gt;Optionally, you can make the handling more granular to improve debugging and user experience. Here’s an example:&lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;br&gt;
catch (MessagingException e) {&lt;br&gt;
    // Log the exception for debugging purposes&lt;br&gt;
    Log.e("MailtrapEmailSender", "Email sending failed", e);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// More user-friendly error handling
// For example, you might notify the user through a UI element
// or send error details to a remote server for analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
As for security, the Authenticator class is used to obtain the credentials.&lt;/p&gt;

&lt;p&gt;When the session needs to authenticate to the SMTP server (as specified by mail.smtp.auth property being true), it calls this getPasswordAuthentication() method to obtain the credentials.&lt;/p&gt;

&lt;p&gt;It’s a safer way to handle credentials that way, as it allows for dynamic retrieval of credentials.&lt;/p&gt;

&lt;p&gt;Now, this particular implementation doesn’t retrieve credentials from a secure server, but it can be modified to do it. &lt;/p&gt;

&lt;p&gt;You only need to replace the return statement inside the getPasswordAuthentication() command with the code to securely fetch credentials from a server or other secure storage. &lt;/p&gt;

&lt;p&gt;For example, I’ll assume you have a secure server endpoint that provides email credentials in response to an authentication request. The modified code is as follows. &lt;/p&gt;

&lt;p&gt;`&lt;code&gt;&lt;/code&gt;&lt;br&gt;
import javax.mail.Authenticator;&lt;br&gt;
import javax.mail.PasswordAuthentication;&lt;br&gt;
import java.net.HttpURLConnection;&lt;br&gt;
import java.net.URL;&lt;br&gt;
import java.util.Scanner;&lt;/p&gt;

&lt;p&gt;public class SecureMailAuthenticator extends Authenticator {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;private String credentialEndpoint;

public SecureMailAuthenticator(String credentialEndpoint) {
    this.credentialEndpoint = credentialEndpoint;
}

@Override
protected PasswordAuthentication getPasswordAuthentication() {
    try {
        URL url = new URL(credentialEndpoint);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        // Add any necessary headers or authentication details to the request

        Scanner scanner = new Scanner(connection.getInputStream());
        if (scanner.hasNext()) {
            String credentials = scanner.nextLine();
            // Assuming credentials are returned in format "username:password"
            String[] parts = credentials.split(":");
            return new PasswordAuthentication(parts[0], parts[1]);
        }
    } catch (Exception e) {
        // Handle exceptions (e.g., network errors, parsing errors)
    }
    return null;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
&lt;code&gt;&lt;/code&gt;`&lt;br&gt;
In this code:&lt;/p&gt;

&lt;p&gt;SecureMailAuthenticator class is a custom Authenticator class that extends javax.mail.Authenticator.&lt;/p&gt;

&lt;p&gt;The constructor takes a URL (credentialEndpoint) pointing to the server endpoint that provides the credentials.&lt;/p&gt;

&lt;p&gt;getPasswordAuthentication override does several things consecutively:&lt;/p&gt;

&lt;p&gt;Opens a connection to the specified URL.&lt;br&gt;
Sends a GET request (you might need to add headers or other authentication mechanisms depending on your server setup).&lt;br&gt;
Reads the response (assumed to be in the format “username:password”).&lt;/p&gt;

&lt;p&gt;Splits the response to extract the username and password.&lt;br&gt;
Returns a new PasswordAuthentication object with the obtained credentials.&lt;/p&gt;

&lt;p&gt;Lastly, if you choose this method, make sure the server endpoint is indeed secure and uses HTTPS. Also, don’t forget to implement proper authentication and authorization on the server itself to safeguard the credentials. &lt;/p&gt;

&lt;p&gt;How to send an HTML email with attachments to multiple recipients&lt;br&gt;
I’ll be tweaking the code to send emails with attachments to multiple recipients via an external SMTP. There’ll be a few changes to the code and I’ll provide explanations right under the example. &lt;/p&gt;

&lt;p&gt;import java.util.Properties;&lt;br&gt;
import javax.mail.&lt;em&gt;;&lt;br&gt;
import javax.mail.internet.&lt;/em&gt;;&lt;/p&gt;

&lt;p&gt;public class MailtrapEmailSender {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public static void main(String[] args) {
    // Mailtrap SMTP configuration
    String host = "live.smtp.mailtrap.io";
    String port = "587";
    String username = "your_mailtrap_username";
    String password = "your_mailtrap_password";

    // Email properties
    Properties prop = new Properties();
    prop.put("mail.smtp.auth", "true");
    prop.put("mail.smtp.starttls.enable", "true");
    prop.put("mail.smtp.host", host);
    prop.put("mail.smtp.port", port);
    prop.put("mail.smtp.ssl.trust", host);

    // Authenticating with Mailtrap
    Session session = Session.getInstance(prop, new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    });

    try {
        // Compose the message
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress("from@example.com"));
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse("recipient1@example.com,recipient2@example.com")); // Multiple recipients
        message.setSubject("Test Email with HTML and Attachments");

        // Create multipart object for email content
        Multipart emailContent = new MimeMultipart();

        // HTML Text
        MimeBodyPart htmlPart = new MimeBodyPart();
        htmlPart.setContent("&amp;lt;h1&amp;gt;This is an HTML Email!&amp;lt;/h1&amp;gt;", "text/html");
        emailContent.addBodyPart(htmlPart);

        // Attachment
        MimeBodyPart attachmentPart = new MimeBodyPart();
        attachmentPart.attachFile("/path/to/file"); // Specify the file path
        emailContent.addBodyPart(attachmentPart);

        // Set content
        message.setContent(emailContent);

        // Send the email
        Transport.send(message);

        System.out.println("Email sent successfully");

    } catch (MessagingException | IOException e) {
        e.printStackTrace();
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;br&gt;
*&lt;em&gt;In this code:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Again, I created a Session object using Mailtrap SMTP settings. &lt;br&gt;
To compose the email, I created a MimeMessage object and set the sender, recipients (multiple), email subject, and body (HTML content).&lt;br&gt;
I used MimeMultipart to structure the email with different parts, such as the main body and the attachments. &lt;br&gt;
The HTML content is added as one part of the email. If necessary, you can also send text/plain email. &lt;br&gt;
For attachments, I created a new part for each file and added it to the email. Yes, the example can handle multiple attachments. &lt;br&gt;
Lastly, the error handling and security are basic here since we already covered a few different options in the previous section. But if you’re curious about increased security for the attachments, check the “Send with attachments” section under email API. &lt;/p&gt;

&lt;p&gt;If you would like to learn how to send emails in Android with JavaMail and email API, how to send HTML email, and how to send it with attachments, &lt;a href="https://mailtrap.io/blog/android-javamail-api/#Send-email-with-attachments"&gt;follow the link&lt;/a&gt; and read the entire article, which was written by Veljko Ristic.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>android</category>
      <category>api</category>
      <category>email</category>
    </item>
    <item>
      <title>7 Automated Software Testing Tools for 2023 + BONUS</title>
      <dc:creator>Dzenana Kajtaz</dc:creator>
      <pubDate>Fri, 16 Feb 2024 12:29:36 +0000</pubDate>
      <link>https://dev.to/dzenanakajtaz/7-automated-software-testing-tools-for-2023-bonus-1cg8</link>
      <guid>https://dev.to/dzenanakajtaz/7-automated-software-testing-tools-for-2023-bonus-1cg8</guid>
      <description>&lt;p&gt;It’s no secret that quality assurance automation is rising in the software development lifecycle. This article offers an overview of the best automated QA testing tools, explores their pros and cons, and offers a glimpse of which tool might be the one that could help you achieve better results in testing. It’s worth noting that it’s still essential to have a robust manual testing process since automation complements, rather than replaces, manual testing. Furthermore, data-driven testing can optimize the process by utilizing varied data sets, making it adaptable and dynamic.&lt;/p&gt;

&lt;p&gt;Automation testing is using software to test another software. If applied correctly, the automation strategy helps reduce costs and improve the overall engineering and testing culture. Playback tools can also streamline the process, although it’s essential to understand the underlying mechanisms.&lt;/p&gt;

&lt;p&gt;However, when choosing the right automation solution, it is easy to get lost in the ocean of modern QA automation software on the market. Here, we have selected some of the top automation testing tools that could help take over the time- and labor-consuming tasks and boost the general performance and functionality of the product.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 4 Questions To Ask Yourself When Choosing a QA Automation Tool
&lt;/h2&gt;

&lt;p&gt;It is always a good idea to start with the four WHs (What, Who, When, Why) when it comes to selecting the proper automation tool that would best fit the needs of the project. So let’s briefly dwell on each of them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHAT&lt;/strong&gt; is being tested?&lt;/p&gt;

&lt;p&gt;The “what” question comes down to whether you are testing web-based, mobile-based, or desktop applications and what layer of the product you are testing: UI, service/integration, units, end-to-end, etc. API testing is crucial to ensure that different software components communicate seamlessly in today’s interconnected world. It doesn’t mean that only one tool can be used to test those, but the question of “what” always comes among the first ones when choosing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHO&lt;/strong&gt; is testing?&lt;/p&gt;

&lt;p&gt;Who is going to work with the automation testing tools? Are we talking about qualified testers only? Or is it a junior in the early stages of their career? Are there non-technical members of the team who should be involved in the testing process and eventually have access to interpreting the results?&lt;/p&gt;

&lt;p&gt;The “who” is also about the language of testing. And the fact that there should be people who know a certain scripting language on the team is a definite priority. Starting with or employing the tool or framework that supports the tester’s abilities is always easier.&lt;/p&gt;

&lt;p&gt;The most popular languages used for automation testing include Java, JavaScript, Ruby, C#, &lt;a href="https://mailtrap.io/blog/python-test-email/"&gt;Python&lt;/a&gt;, and PHP. Within the PHP ecosystem, tools like Codeception not only support web application testing but also provide capabilities for writing unit, functional, and acceptance tests. Additionally, familiarity with platforms and frameworks like .NET can be valuable. Moreover, tools today cater to a broad audience, with some allowing non-coders or even offering codeless solutions to deal with test creation.&lt;/p&gt;

&lt;p&gt;This question is about two important things: how well the tool you work with inscribes itself into the processes of continuous development and integration, and how well it functions together with programmers’ tests. Thus, for example, it is really helpful to know if the tool offers version control and data history if necessary.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY&lt;/strong&gt; is the testing needed?&lt;/p&gt;

&lt;p&gt;This question concerns two important things: how well the tool you work with inscribes itself into continuous development and integration processes and how well it functions with programmers’ tests. Thus, knowing if the tool offers version control and data history, if necessary, is helpful. In general, continuous testing, a part of the DevOps culture, ensures that software is always in a deliverable state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open-Source vs. Commercial QA Automation Software
&lt;/h2&gt;

&lt;p&gt;Another criterion to consider is the software’s value. Free automation tools like Selenium or Protractor are quite popular in the community of testers.&lt;/p&gt;

&lt;p&gt;There are a lot of benefits to using open-source software, such as better pricing for licensing and the ability to create tailored solutions or extended collaboration. &lt;/p&gt;

&lt;p&gt;However, the drawbacks of using open-source automation tools could be quite significant.&lt;/p&gt;

&lt;p&gt;Security is the most important one. Thus, open-source QA automation tools might not be the right fit for projects that pay close attention to security parameters, scalability, robust features, and dedicated support. In this case, an enterprise-grade tool would be a better fit. Other disadvantages of open-source tools include time-consuming setup, limited feature availability, and non-specific or incomprehensible reporting.&lt;/p&gt;

&lt;p&gt;A free automation testing solution can benefit individual testers and small or middle-sized businesses. Still, it’s a good idea to remember that commercial software is big business-oriented, secure, and if wisely chosen, has a full stack of features necessary for the target testing in question.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparative Descriptions of Best QA Automation Tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Selenium
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplf0v4sglje6f9ko952t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplf0v4sglje6f9ko952t.png" alt="Image description" width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xuqij7y4r5287ul8ux6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xuqij7y4r5287ul8ux6.png" alt="Image description" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.selenium.dev/"&gt;Selenium&lt;/a&gt; is still a number one choice among automation testing tools for web applications.&lt;/p&gt;

&lt;p&gt;It’s a powerful drive for cross-browser testing and can be used for many test types, including compatibility, integration, smoke, sanity, end-to-end, and regression testing. It is compatible with all major browsers (Chrome, Firefox, etc.) and platforms, offering cross-platform capabilities, which is crucial in diverse device environments. One could say that Selenium, consisting of WebDriver, IDE, and Grid, is not a single tool but a toolbox for web browser automation.&lt;/p&gt;

&lt;p&gt;Selenium supports the creation of detailed test scripts, enhancing the workflow for a more organized testing process. It is license-free. However, the question of value is a bit tricky with Selenium as, being initially an open-source tool, it might require a workforce to set and maintain it. Here is a comparative chart representing Selenium’s pros and cons:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0uf5m3os1kyfc9wuqjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa0uf5m3os1kyfc9wuqjl.png" alt="Image description" width="800" height="950"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. LambdaTest
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcu84wnqr2yl2bm5l9hkl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcu84wnqr2yl2bm5l9hkl.png" alt="Image description" width="800" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.lambdatest.com/"&gt;LambdaTest&lt;/a&gt; is an online cloud-based cross-browser testing platform for websites. It functions via Selenium Automation Grid. Online and cloud-based might be the keywords here, as it helps to avoid maintaining and running an in-house Selenium infrastructure. It has all the advantages of Selenium Grid, such as running parallel tests in multiple browsers and environments. This includes features for the latest and legacy browsers, and it supports all operating systems, including Microsoft, Linux, and MacOS. &lt;/p&gt;

&lt;p&gt;Another thing about LambdaTest is that it has improved reporting capabilities since it offers not only command screenshots (as happens to be the case with Selenium) but also a video recording of the script execution. It’s one of the best automated performance testing tools for identifying speed and crashes. LambdaTest is also effective in identifying any issues in UI inconsistencies, design responsiveness, and code validation. &lt;/p&gt;

&lt;p&gt;LambdaTest plans start from $15 a month. LambdaTest Lite, which is free, comes with limitations such as 60 minutes/month of real-time browser testing or six sessions of browser testing of 10 minutes each. The free test suite might be a good choice for individual testers or small businesses.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqfadxlr84wtfgc7vw6gb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqfadxlr84wtfgc7vw6gb.png" alt="Image description" width="800" height="812"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Cucumber
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyamkw00k92rggt5gdflh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyamkw00k92rggt5gdflh.png" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cucumber.io/"&gt;Cucumber&lt;/a&gt; is an open-source tool used for cross-browser user interface testing with a BDD (Behavior Driven Development) approach. Regarding BDD, the test scenarios are created before the actual code is written. Everything written in test scenarios must be presented in Given-Then-When-Gherkin syntax. Here’s an example of testing an ATM cash withdrawal scenario from Gherkin Open Studio: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52pn839l5ovyxl55hwqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52pn839l5ovyxl55hwqi.png" alt="Image description" width="713" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As Gherkin presupposes using “simple English sentences” for scenario creation, anyone on the team can read, understand, and contribute to the test case requirements regardless of their technical skills. Thus, due to its specific readable syntax, the Cucumber automation tool connects business and &lt;a href="https://www.toptal.com/qa-analyst"&gt;QA analysts&lt;/a&gt;, software engineers, automation and manual testers, product owners, and developers. Cucumber is relatively easy to use and might be a great tool for junior testers in UI test automation.&lt;/p&gt;

&lt;p&gt;However, using Cucumber creates more dependencies, and parallelization could also become problematic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvf2yt9n09m1778rmzlyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvf2yt9n09m1778rmzlyu.png" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Protractor
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0y0jfqr2riimz9kz60s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe0y0jfqr2riimz9kz60s.png" alt="Image description" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.protractortest.org/#/"&gt;Protractor&lt;/a&gt; is one of the best integration testing tools for Angular and AngularJS applications. Integration testing aims to see how separate subsystems work when integrated into a single system. The legend claims the Google team initially developed Protractor to test Angular apps, and was later released as an open-source framework. &lt;/p&gt;

&lt;p&gt;The most powerful feature of Protractor is that it hosts a combination of effective, smart tools and technologies such as NodeJS, Selenium WebDriver, Jasmine, Cucumber, and Mocha under one roof. Since Protractor was built as a wrapper around Selenium WebDriver, all the features supported in Selenium are supported along with the Angular features. Nowadays, Protractor supports non-angular as well as angular applications. Speaking of Angular-oriented features of Protractor, it can find and manage angular-specific attributes like ng-repeater, ng-controller, ng-model, and others using specific locators. &lt;/p&gt;

&lt;p&gt;Another advantage of Protractor is that while testing, there is no need to add waits or sleeps to the test as it takes the pain of webpage and test synchronization off the tester’s plate. Protractor has been an official end-to-end automation testing tool for the Angular team for many years. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgjkobmcab35iqt0sfch.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffgjkobmcab35iqt0sfch.png" alt="Image description" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Cypress.io
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswu54udnqvd8hvo6dumf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswu54udnqvd8hvo6dumf.png" alt="Image description" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.cypress.io/"&gt;Cypress&lt;/a&gt; is a relatively recent tool for end-to-end testing aimed at front-end developers and testers. One could also create integration and unit tests with this JavaScript-based automation framework. It was developed on top of Mocha, and as their official website claims, “Cypress makes setting up, writing, running, and debugging tests easy.” &lt;/p&gt;

&lt;p&gt;The ability to take snapshots while running the tests, easy debugging, network traffic control, automatic waiting, and code readability make it extremely attractive in the arsenal of end-to-end automation testing. Its visual testing capabilities also ensure the UI appears correctly across different browsers.&lt;/p&gt;

&lt;p&gt;The real jam of Cypress web-based app testing is test execution in the real browser (unlike Selenium executions in the &lt;a href="https://vuestorefront.io/blog/headless-architecture"&gt;headless&lt;/a&gt; ones). This breakthrough adds up to Cypress’s competition with Selenium at the moment. Another important offer from Cypress is that it “has been built so that testing and development can happen simultaneously.” This saves time and speeds up the &lt;a href="https://relevant.software/blog/software-development-process/"&gt;development cycle&lt;/a&gt;. Who would argue this is a major bonus when time is at stake?&lt;/p&gt;

&lt;p&gt;If one were to name the major drawback of Cypress, that would be JavaScript or die 🙂 This calls for advanced JS technical skills, although the creators of the automation tool tend to present it rather as an advantage.&lt;/p&gt;

&lt;p&gt;Cypress could be an ideal tool for front-end cross-browser testing for an experienced JS tester willing to try something new and fast. The free version comes with limitations and could be fairly used for individual or small business purposes, while the team plan starts at $75/month. Additionally, a wide range of comprehensive tutorials are available that ease the learning curve.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5vet7avdin887yli1xh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5vet7avdin887yli1xh.png" alt="Image description" width="800" height="528"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Apache Jmeter
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwk0klanzyp87u1h7y4g9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwk0klanzyp87u1h7y4g9.png" alt="Image description" width="777" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jmeter.apache.org/"&gt;Apache Jmeter&lt;/a&gt; is a star in the sky of automated performance testing tools. It is primarily aimed at analyzing and measuring the speed, responsiveness, and stability of a computer, network, software program, or device. Moreover, testers could use Apache Jmeter for performance evaluation and GUI testing to ensure the interface interacts as expected under various conditions, providing both functionality and usability assurance.&lt;/p&gt;

&lt;p&gt;So what does JMeter do? It simulates how many users send requests to a network or server and then returns the statistics via visual charts.&lt;/p&gt;

&lt;p&gt;One of the striking benefits of JMeter is that if you use their GUI and follow their documentation, you don’t need to know any programming language to write test scenarios. However, since JMeter is a Java-based software, it is desirable to know at least some basics of Java to succeed with JMeter performance testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq79t7icn34t66z4kx9u1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq79t7icn34t66z4kx9u1.png" alt="Image description" width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Appium
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41pivx7ac5xm9x5gad7z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F41pivx7ac5xm9x5gad7z.png" alt="Image description" width="800" height="734"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So what about mobile app automation testing? &lt;a href="https://appium.io/"&gt;Appium&lt;/a&gt; to the rescue. As the official Appium website states, “Appium is an open-source test automation framework for use with native, hybrid, and mobile applications. It drives iOS, Android, and Windows apps using the WebDriver protocol.” And the slogan says that Appium makes mobile testing awesome. Let’s see how awesome (or not) it can get in detail.&lt;/p&gt;

&lt;p&gt;Some of the most attractive characteristics of Appium include the ability to deploy the same app tested across platforms since Appium utilizes Selenium WebDriver API, specifying a client-server protocol that uses vendor-provided frameworks under the hood. Reusing test scripts and components across different test cases enhances efficiency and consistency.  Another great thing about Appium is that it also allows testing on real devices and emulators. This could be crucial for the testing process.&lt;/p&gt;

&lt;p&gt;Some major Appium drawbacks named in the testing community are a tricky setup, time-consuming test management, and a steep learning curve to master the tool. Despite Appium’s few disadvantages, it is still one of the most popular &lt;a href="https://statusbrew.com/insights/social-media-automation/"&gt;automation tools&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhaepbb3no91d7xn0bx7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhaepbb3no91d7xn0bx7m.png" alt="Image description" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Email Functionality Testing with Mailtrap
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://mailtrap.io/"&gt;Mailtrap&lt;/a&gt; is a perfect tool for email testing. The first and biggest advantage of Mailtrap is that it helps you never get embarrassed in front of your real customers by actually sending them your test emails. It uses its own SMTP server that “traps” all the sent emails into a virtual inbox. No more dev junk in your inbox and no more excessive efforts maintaining the scaffolding infrastructure for email testing.&lt;/p&gt;

&lt;p&gt;You can easily run tests with Selenium, Protractor, Cucumber, and other popular web automation testing tools via Mailtrap API. This lets you immediately test, analyze, and fix email-related issues.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7jdibrozwiwxpk2paa8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7jdibrozwiwxpk2paa8.png" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion –  Which Automation Tool Should I Finally Choose?
&lt;/h2&gt;

&lt;p&gt;A straightforward answer to this question would be desirable but misleading. &lt;/p&gt;

&lt;p&gt;First, it’s all about the specific project and environment. Which brings us back to the four WH questions. Once you know exactly what you are testing, what your testing strategy is, and how advanced your testing background is, then you can “choose your poison.”&lt;/p&gt;

&lt;p&gt;Second, if you are new to automation testing and trying to figure out how various tools and frameworks work, it would probably be beneficial to consider the type of testing you are interested in and experiment with a few open source automation tools to see which one seems to catch your fancy in terms of usability and functionality.&lt;/p&gt;

&lt;p&gt;The most popular testing tools are not necessarily the best for a concrete product under consideration. Automation testing is rarely about popularity. Remember, as initially stated, it’s about effectiveness and accuracy.&lt;/p&gt;

&lt;p&gt;Effectiveness and accuracy in automation testing presuppose several testing tools, as there would be at least functional testing and non-functional product testing cycles on the horizon.&lt;/p&gt;

&lt;p&gt;Mike Cohn introduces the test pyramid concept in his book &lt;a href="https://www.amazon.com/Succeeding-Agile-Software-Development-Using/dp/0321579364"&gt;Succeeding with Agile&lt;/a&gt;. This concept amounts to a general 70/20/10 split where 70% goes for unit tests, 20% – for integration tests, and only 10% – for end-to-end testing. Thus, the best automation testing tool would be the one that provides comprehensive test coverage across all layers of testing. This would be the most clear answer to choosing a tool.&lt;/p&gt;

&lt;p&gt;We appreciate the you chose this article to know about &lt;a href="https://mailtrap.io/blog/best-automation-testing-tools/"&gt;QA automation software&lt;/a&gt;. If you want to find more interesting content on related topics, follow Mailtrap blog!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Email Spam Words You Should Avoid</title>
      <dc:creator>Dzenana Kajtaz</dc:creator>
      <pubDate>Mon, 08 Jan 2024 05:22:36 +0000</pubDate>
      <link>https://dev.to/dzenanakajtaz/email-spam-words-you-should-avoid-17o8</link>
      <guid>https://dev.to/dzenanakajtaz/email-spam-words-you-should-avoid-17o8</guid>
      <description>&lt;p&gt;Have you ever made a cake or an amazing meal and then just dropped it on the ground? Remember how disappointing it felt? &lt;/p&gt;

&lt;p&gt;Now imagine perfecting an email campaign just for it to get eaten alive by &lt;a href="https://mailtrap.io/blog/spam-filters/"&gt;spam filters&lt;/a&gt; because of a poor choice of words on your end. The feeling of disappointment would be just as bad, right?&lt;/p&gt;

&lt;p&gt;To help you avoid landing yourself in this situation, the outreach team at Mailtrap and I did some research and testing using our own cold email and regular campaigns and came up with 8 categories of email spam words you should avoid to achieve better e&lt;a href="https://mailtrap.io/blog/email-deliverability/"&gt;mail deliverability&lt;/a&gt; and open rates.&lt;/p&gt;

&lt;p&gt;So, if you’re curious to see our findings, then keep reading!&lt;/p&gt;

&lt;h2&gt;
  
  
  How do email spam words work?
&lt;/h2&gt;

&lt;p&gt;While for many, including myself, spam filters can be a bit of a mystery, understanding email spam trigger words is quite straightforward. &lt;/p&gt;

&lt;p&gt;A spam word, in most cases, is a keyword or phrase used to create urgency or simply grab attention by being sensational, very promotional, or in connection to a sensitive topic. That being said, some very common marketing language can also be seen as spammy when used in the wrong context, but more on that a bit later. &lt;/p&gt;

&lt;p&gt;Who keeps an eye out for spam words? Well, besides spam filters set up by email service providers that are trying to spot gimmicks, overpromises, multi-level marketing, and shady activities, email recipients themselves can be triggered by these words and decide to mark emails containing them as spam folder-worthy.&lt;/p&gt;

&lt;p&gt;Are email subject lines the only part of an email where certain words are deemed as red flags? No, in reality, emails can contain spam words in different elements, including: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;email body &lt;/li&gt;
&lt;li&gt;header information&lt;/li&gt;
&lt;li&gt;hyperlinks and anchor text &lt;/li&gt;
&lt;li&gt;image alt text &lt;/li&gt;
&lt;li&gt;email footer and signature &lt;/li&gt;
&lt;li&gt;email HTML and CSS code &lt;/li&gt;
&lt;li&gt;attachment names or within attached files&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Email spam word categories
&lt;/h2&gt;

&lt;p&gt;As mentioned in the intro, through some research and testing, my outreach team and I have compiled a list of spam words you should avoid using completely or at least be careful with. To make the list more scannable, I divided the words into several categories, and we’ll now go through each one. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: What you’ll see below is not a definite list of words that will trigger spam filters and email recipients. Creating a list of that sort is technically not doable as spammers change their shady strategies and scams often, thus making the list of email spam words ever-growing. So do keep in mind that even though you won’t find every spam word out there on our list, you can use the list to get a general idea of what should be avoided in your email marketing campaigns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Financial and monetary offers:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Earn”&lt;/li&gt;
&lt;li&gt;“Discount”&lt;/li&gt;
&lt;li&gt;“Pure profit”&lt;/li&gt;
&lt;li&gt;“Credit”&lt;/li&gt;
&lt;li&gt;“Investment”&lt;/li&gt;
&lt;li&gt;“Loan”&lt;/li&gt;
&lt;li&gt;“Save”&lt;/li&gt;
&lt;li&gt;“Million dollars”&lt;/li&gt;
&lt;li&gt;“Financial freedom”&lt;/li&gt;
&lt;li&gt;“Get paid”&lt;/li&gt;
&lt;li&gt;“Bankruptcy”&lt;/li&gt;
&lt;li&gt;“Refinance”&lt;/li&gt;
&lt;li&gt;“Money back”&lt;/li&gt;
&lt;li&gt;“Debt”&lt;/li&gt;
&lt;li&gt;“Extra income”&lt;/li&gt;
&lt;li&gt;“No fees”&lt;/li&gt;
&lt;li&gt;“Best rates”&lt;/li&gt;
&lt;li&gt;“Cash bonus”&lt;/li&gt;
&lt;li&gt;“Extra cash”&lt;/li&gt;
&lt;li&gt;“Easy money”&lt;/li&gt;
&lt;li&gt;“Penny stocks”&lt;/li&gt;
&lt;li&gt;“Wealth”&lt;/li&gt;
&lt;li&gt;“No hidden charges”&lt;/li&gt;
&lt;li&gt;“No hidden costs”&lt;/li&gt;
&lt;li&gt;“Be your own boss”&lt;/li&gt;
&lt;li&gt;“Unsecured credit”&lt;/li&gt;
&lt;li&gt;“Lower interest rates”&lt;/li&gt;
&lt;li&gt;“Accept credit cards”&lt;/li&gt;
&lt;li&gt;“Best mortgage rates”&lt;/li&gt;
&lt;li&gt;“Cashback”&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Urgency and scarcity:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Limited offer”&lt;/li&gt;
&lt;li&gt;“Act now”&lt;/li&gt;
&lt;li&gt;“Exclusive”&lt;/li&gt;
&lt;li&gt;“Urgent”&lt;/li&gt;
&lt;li&gt;“Immediate”&lt;/li&gt;
&lt;li&gt;“Deadline”&lt;/li&gt;
&lt;li&gt;“Only a few left”&lt;/li&gt;
&lt;li&gt;“Hurry”&lt;/li&gt;
&lt;li&gt;“Last chance”&lt;/li&gt;
&lt;li&gt;“Today only”&lt;/li&gt;
&lt;li&gt;“Final hours”&lt;/li&gt;
&lt;li&gt;“While supplies last”&lt;/li&gt;
&lt;li&gt;“One time”&lt;/li&gt;
&lt;li&gt;“Expires”&lt;/li&gt;
&lt;li&gt;“Never again”&lt;/li&gt;
&lt;li&gt;“Don’t miss”&lt;/li&gt;
&lt;li&gt;“Rush”&lt;/li&gt;
&lt;li&gt;“Time-sensitive”&lt;/li&gt;
&lt;li&gt;“Offer expires”&lt;/li&gt;
&lt;li&gt;“Instant access”&lt;/li&gt;
&lt;li&gt;“Closing soon”&lt;/li&gt;
&lt;li&gt;“Final call”&lt;/li&gt;
&lt;li&gt;“Once in a lifetime”&lt;/li&gt;
&lt;li&gt;“Limited time”&lt;/li&gt;
&lt;li&gt;“Now or never”&lt;/li&gt;
&lt;li&gt;“Flash sale”&lt;/li&gt;
&lt;li&gt;“Countdown”&lt;/li&gt;
&lt;li&gt;“Last minute deal”&lt;/li&gt;
&lt;li&gt;“Rare opportunity”&lt;/li&gt;
&lt;li&gt;“Ends tonight”&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Marketing and sales promotions:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Offer”&lt;/li&gt;
&lt;li&gt;“Buy now”&lt;/li&gt;
&lt;li&gt;“Free”&lt;/li&gt;
&lt;li&gt;“Serious bargain”&lt;/li&gt;
&lt;li&gt;“Best price”&lt;/li&gt;
&lt;li&gt;“Deal”&lt;/li&gt;
&lt;li&gt;“Special promotion”&lt;/li&gt;
&lt;li&gt;“Winner”&lt;/li&gt;
&lt;li&gt;“Discount”&lt;/li&gt;
&lt;li&gt;“Special offer”&lt;/li&gt;
&lt;li&gt;“Giveaway”&lt;/li&gt;
&lt;li&gt;“Bonus”&lt;/li&gt;
&lt;li&gt;“Cheap”&lt;/li&gt;
&lt;li&gt;“Trial”&lt;/li&gt;
&lt;li&gt;“Free gift”&lt;/li&gt;
&lt;li&gt;“Prize”&lt;/li&gt;
&lt;li&gt;“Coupon”&lt;/li&gt;
&lt;li&gt;“Clearance”&lt;/li&gt;
&lt;li&gt;“Sale”&lt;/li&gt;
&lt;li&gt;“All new”&lt;/li&gt;
&lt;li&gt;“No obligation”&lt;/li&gt;
&lt;li&gt;“Limited time offer”&lt;/li&gt;
&lt;li&gt;“Exclusive deal”&lt;/li&gt;
&lt;li&gt;“Save big”&lt;/li&gt;
&lt;li&gt;“Bargain hunter’s dream”&lt;/li&gt;
&lt;li&gt;“Hurry, while supplies last”&lt;/li&gt;
&lt;li&gt;“Risk-free”&lt;/li&gt;
&lt;li&gt;“Act now”&lt;/li&gt;
&lt;li&gt;“Once-in-a-lifetime”&lt;/li&gt;
&lt;li&gt;“Mega sale”&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Health and pharmaceuticals:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Viagra”&lt;/li&gt;
&lt;li&gt;“Weight loss”&lt;/li&gt;
&lt;li&gt;“Pharmaceuticals”&lt;/li&gt;
&lt;li&gt;“Supplement”&lt;/li&gt;
&lt;li&gt;“Herbal”&lt;/li&gt;
&lt;li&gt;“Cure”&lt;/li&gt;
&lt;li&gt;“Medicine”&lt;/li&gt;
&lt;li&gt;“Natural”&lt;/li&gt;
&lt;li&gt;“Pills”&lt;/li&gt;
&lt;li&gt;“Drugs”&lt;/li&gt;
&lt;li&gt;“Diet”&lt;/li&gt;
&lt;li&gt;“Remedy”&lt;/li&gt;
&lt;li&gt;“Treatment”&lt;/li&gt;
&lt;li&gt;“Healthcare”&lt;/li&gt;
&lt;li&gt;“Therapy”&lt;/li&gt;
&lt;li&gt;“Prescription”&lt;/li&gt;
&lt;li&gt;“Pharmacy”&lt;/li&gt;
&lt;li&gt;“Body”&lt;/li&gt;
&lt;li&gt;“Healing”&lt;/li&gt;
&lt;li&gt;“Wellness”&lt;/li&gt;
&lt;li&gt;“Detox”&lt;/li&gt;
&lt;li&gt;“Clinic”&lt;/li&gt;
&lt;li&gt;“Vaccine”&lt;/li&gt;
&lt;li&gt;“Organic”&lt;/li&gt;
&lt;li&gt;“Fitness”&lt;/li&gt;
&lt;li&gt;“Nutrition”&lt;/li&gt;
&lt;li&gt;“Therapeutics”&lt;/li&gt;
&lt;li&gt;“Supplements”&lt;/li&gt;
&lt;li&gt;“Well-being”&lt;/li&gt;
&lt;li&gt;“Antioxidant”&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Personal and confidential claims:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Private”&lt;/li&gt;
&lt;li&gt;“Confidential”&lt;/li&gt;
&lt;li&gt;“Winner”&lt;/li&gt;
&lt;li&gt;“Selected”&lt;/li&gt;
&lt;li&gt;“Guaranteed”&lt;/li&gt;
&lt;li&gt;“Personal”&lt;/li&gt;
&lt;li&gt;“Secret”&lt;/li&gt;
&lt;li&gt;“Exclusive access”&lt;/li&gt;
&lt;li&gt;“Membership”&lt;/li&gt;
&lt;li&gt;“You have been chosen”&lt;/li&gt;
&lt;li&gt;“Claim”&lt;/li&gt;
&lt;li&gt;“Beneficiary”&lt;/li&gt;
&lt;li&gt;“Award”&lt;/li&gt;
&lt;li&gt;“Pre-approved”&lt;/li&gt;
&lt;li&gt;“Eligible”&lt;/li&gt;
&lt;li&gt;“Certified”&lt;/li&gt;
&lt;li&gt;“Not shared”&lt;/li&gt;
&lt;li&gt;“Sensitive”&lt;/li&gt;
&lt;li&gt;“Protection”&lt;/li&gt;
&lt;li&gt;“Verified”&lt;/li&gt;
&lt;li&gt;“Urgent”&lt;/li&gt;
&lt;li&gt;“Limited time”&lt;/li&gt;
&lt;li&gt;“Priority access”&lt;/li&gt;
&lt;li&gt;“Restricted information”&lt;/li&gt;
&lt;li&gt;“Top secret”&lt;/li&gt;
&lt;li&gt;“Special offer”&lt;/li&gt;
&lt;li&gt;“Confidential deal”&lt;/li&gt;
&lt;li&gt;“Privileged”&lt;/li&gt;
&lt;li&gt;“Exclusive rights”&lt;/li&gt;
&lt;li&gt;“Secure claim”&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Exaggerated claims and hype:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Miracle”&lt;/li&gt;
&lt;li&gt;“Amazing”&lt;/li&gt;
&lt;li&gt;“Incredible”&lt;/li&gt;
&lt;li&gt;“Magic”&lt;/li&gt;
&lt;li&gt;“Once in a lifetime”&lt;/li&gt;
&lt;li&gt;“Revolutionary”&lt;/li&gt;
&lt;li&gt;“Sensational”&lt;/li&gt;
&lt;li&gt;“Unbelievable”&lt;/li&gt;
&lt;li&gt;“Phenomenal”&lt;/li&gt;
&lt;li&gt;“Fantastic”&lt;/li&gt;
&lt;li&gt;“Life-changing”&lt;/li&gt;
&lt;li&gt;“Unmatched”&lt;/li&gt;
&lt;li&gt;“Breakthrough”&lt;/li&gt;
&lt;li&gt;“Top-notch”&lt;/li&gt;
&lt;li&gt;“Stunning”&lt;/li&gt;
&lt;li&gt;“Spectacular”&lt;/li&gt;
&lt;li&gt;“Unparalleled”&lt;/li&gt;
&lt;li&gt;“Outstanding”&lt;/li&gt;
&lt;li&gt;“Extraordinary”&lt;/li&gt;
&lt;li&gt;“Supreme”&lt;/li&gt;
&lt;li&gt;“Astounding”&lt;/li&gt;
&lt;li&gt;“Remarkable”&lt;/li&gt;
&lt;li&gt;“Unprecedented”&lt;/li&gt;
&lt;li&gt;“Jaw-dropping”&lt;/li&gt;
&lt;li&gt;“Breathtaking”&lt;/li&gt;
&lt;li&gt;“Groundbreaking”&lt;/li&gt;
&lt;li&gt;“Mind-blowing”&lt;/li&gt;
&lt;li&gt;“Majestic”&lt;/li&gt;
&lt;li&gt;“Unrivaled”&lt;/li&gt;
&lt;li&gt;“Ultimate”&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Spammy phrases and greetings:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Dear friend”&lt;/li&gt;
&lt;li&gt;“Congratulations”&lt;/li&gt;
&lt;li&gt;“You have been chosen”&lt;/li&gt;
&lt;li&gt;“Hello!”&lt;/li&gt;
&lt;li&gt;“Greetings”&lt;/li&gt;
&lt;li&gt;“Dear beneficiary”&lt;/li&gt;
&lt;li&gt;“Good news”&lt;/li&gt;
&lt;li&gt;“Special for you”&lt;/li&gt;
&lt;li&gt;“Attention”&lt;/li&gt;
&lt;li&gt;“Hi there”&lt;/li&gt;
&lt;li&gt;“To whom it may concern”&lt;/li&gt;
&lt;li&gt;“Special invitation”&lt;/li&gt;
&lt;li&gt;“Dear valued customer”&lt;/li&gt;
&lt;li&gt;“Exclusive invitation”&lt;/li&gt;
&lt;li&gt;“Dear Sir/Madam”&lt;/li&gt;
&lt;li&gt;“Good day”&lt;/li&gt;
&lt;li&gt;“Friendly reminder”&lt;/li&gt;
&lt;li&gt;“Welcome”&lt;/li&gt;
&lt;li&gt;“Important notice”&lt;/li&gt;
&lt;li&gt;“Dear [Name]”&lt;/li&gt;
&lt;li&gt;“Urgent response required”&lt;/li&gt;
&lt;li&gt;“Exciting opportunity”&lt;/li&gt;
&lt;li&gt;“Limited time offer”&lt;/li&gt;
&lt;li&gt;“You’re a winner!”&lt;/li&gt;
&lt;li&gt;“Act now!”&lt;/li&gt;
&lt;li&gt;“Confidential proposal”&lt;/li&gt;
&lt;li&gt;“Exclusive deal”&lt;/li&gt;
&lt;li&gt;“Fantastic offer”&lt;/li&gt;
&lt;li&gt;“Priority access”&lt;/li&gt;
&lt;li&gt;“Selected specially”&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Suspicious attachments and links:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;“Download now”&lt;/li&gt;
&lt;li&gt;“Click here”&lt;/li&gt;
&lt;li&gt;“Attachment”&lt;/li&gt;
&lt;li&gt;“Unsubscribe here”&lt;/li&gt;
&lt;li&gt;“Link”&lt;/li&gt;
&lt;li&gt;“See attachment”&lt;/li&gt;
&lt;li&gt;“Exclusive download”&lt;/li&gt;
&lt;li&gt;“Open this”&lt;/li&gt;
&lt;li&gt;“Click to view”&lt;/li&gt;
&lt;li&gt;“Access here”&lt;/li&gt;
&lt;li&gt;“File attached”&lt;/li&gt;
&lt;li&gt;“Free download”&lt;/li&gt;
&lt;li&gt;“Click below”&lt;/li&gt;
&lt;li&gt;“Video inside”&lt;/li&gt;
&lt;li&gt;“Document”&lt;/li&gt;
&lt;li&gt;“View now”&lt;/li&gt;
&lt;li&gt;“Install now”&lt;/li&gt;
&lt;li&gt;“Activate link”&lt;/li&gt;
&lt;li&gt;“Preview file”&lt;/li&gt;
&lt;li&gt;“Access file”&lt;/li&gt;
&lt;li&gt;“Download attachment”&lt;/li&gt;
&lt;li&gt;“Exclusive link”&lt;/li&gt;
&lt;li&gt;“Open file”&lt;/li&gt;
&lt;li&gt;“Click to open”&lt;/li&gt;
&lt;li&gt;“Secure download”&lt;/li&gt;
&lt;li&gt;“Attached document”&lt;/li&gt;
&lt;li&gt;“Downloadable content”&lt;/li&gt;
&lt;li&gt;“Access attachment”&lt;/li&gt;
&lt;li&gt;“View attachment”&lt;/li&gt;
&lt;li&gt;“Open attachment”&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How to bypass email spam filters?
&lt;/h2&gt;

&lt;p&gt;With the various email spam words covered, it’s time to share with you my “recipe” for bypassing email spam filters.&lt;/p&gt;

&lt;p&gt;But before diving in, it is important to note that this is what worked for my outreach team and me. So, depending on your audience, email practices, and other factors, you can skip some of these tips and/or decide to follow additional ones as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pay attention to context
&lt;/h3&gt;

&lt;p&gt;Context is of great importance as it will help spam filters understand the intentions behind the words used in your email. Take this for example: &lt;/p&gt;

&lt;p&gt;One year, for Black Friday, I worked on a campaign that mentioned some cool offers we had prepared for our customers. In the campaign emails, I used phrases such as “big limited-time promotion” and “special gift”, and still, the email deliverability rate for the campaign was more than satisfactory. &lt;/p&gt;

&lt;p&gt;How is that possible, considering my direct usage of spam words? &lt;/p&gt;

&lt;p&gt;Well, first of all, the words/phrases that could be considered spammy were naturally placed within the email copy. Also, there was no excessive use of exclamation points, emojis, or all caps.&lt;/p&gt;

&lt;p&gt;Along with that, it’s important to mention that the campaign emails were sent to only specific segments of our audience, all of whom completed our double opt-in form and for whom we knew might have an interest in claiming their gift or using our promotion code. &lt;/p&gt;

&lt;p&gt;So, if you find yourself using spam words in emails, don’t sweat it! Instead, just make sure you take the same precautions we did, such as making sure the words are used in the correct context and sending the emails to the right audience segments. The latter will not only help with seeming less spammy, but it will also increase your engagement rates and conversions. Win-win situation, right?&lt;/p&gt;

&lt;h3&gt;
  
  
  Maintain a stellar reputation and good engagement
&lt;/h3&gt;

&lt;p&gt;To keep our promise of providing high deliverability to our users, at Mailtrap, we have experts on the matter who offer consistent support. &lt;/p&gt;

&lt;p&gt;Yaroslav, one of our deliverability experts, shared with me his experience with spam words and spam filters, and here’s what he had to say:&lt;/p&gt;

&lt;p&gt;“Spam filters nowadays are beginning to pay more attention not just to specific spam words as might have been the case previously but also to the overall &lt;a href="https://mailtrap.io/blog/email-sender-reputation/"&gt;reputation of the sender&lt;/a&gt; and the engagement generated by email recipients. So, if you were to use words that are technically considered to be spam in your email body, subject line, etc., but your sender reputation is excellent, and recipients have reacted to your previous emails in a positive way, chances are new emails will be delivered to the inbox and vice versa.&lt;/p&gt;

&lt;p&gt;That being said, spam words can still cause quite an issue. Take this interesting case I encountered:&lt;/p&gt;

&lt;p&gt;Verification emails from one of our users sent from a regular contact form were constantly being marked as spam. In an effort to figure out why, I checked everything from A to Z, and upon taking a more careful look at the content, I saw the following line: &lt;strong&gt;If you notice suspicious activity, please contact our Support Team at &lt;a href="mailto:support@xxx.com"&gt;support@xxx.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even though this line doesn’t necessarily look spammy, I decided to try removing it since the phrase &lt;strong&gt;suspicious activity&lt;/strong&gt; could potentially trigger spam filters.&lt;/p&gt;

&lt;p&gt;And I was right! With the line removed, the same verification emails began landing in the inbox.&lt;/p&gt;

&lt;p&gt;What did this experience teach me? Email marketing and achieving great deliverability involves conducting a large number of tests! Only that way can you know with confidence and certainty whether poor inbox placement can be blamed on a spam word or another element of your email.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Run spam tests on your emails
&lt;/h3&gt;

&lt;p&gt;In the section above, I briefly mentioned the importance of email testing. This is a necessary process that turns knowing whether you’ll trigger spam filters from being a guessing game to a simple task you can complete with the help of a testing tool. For testing my emails, I use &lt;a href="https://mailtrap.io/email-sandbox/"&gt;Mailtrap Email Testing&lt;/a&gt;. Its &lt;a href="https://mailtrap.io/email-spam-checker/"&gt;Spam Checker&lt;/a&gt; tells me what my chances are of landing in the spam folder instead of the inbox by verifying email content and assigning it a specific score with the help of the &lt;a href="https://mailtrap.io/blog/spamassassin-score/"&gt;SpamAssassin filter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A score below 5 is considered optimal, while anything above 5 means spam folder placement is likely. &lt;/p&gt;

&lt;p&gt;Along with assigning a spam score, the checker also gives you information on what HTML/CSS rules contributed to the score, thus allowing you to make the proper fixes in time. &lt;/p&gt;

&lt;p&gt;On the same page as the Spam Checker, Mailtrap Email Testing also offers blacklist reports. These reports will tell you if your IP or domain is present on any popular blacklists. And if so, it will provide you with links to their websites, where you can then initiate the de-listing process.&lt;/p&gt;

&lt;p&gt;To see how the Spam Checker and Mailtrap Email Testing as a whole looks in action, check out the video below:&lt;br&gt;
&lt;a href="https://mailtrap.io/blog/spamassassin-score/"&gt;https://mailtrap.io/blog/spamassassin-score/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://mailtrap.io/register/signup"&gt;Test With Mailtrap&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Want to take more steps to &lt;a href="https://mailtrap.io/blog/avoid-spam-filters/"&gt;avoid being marked as spam&lt;/a&gt; by email service providers or recipients? Then try some of the following extra tips:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maintain a great &lt;a href="https://mailtrap.io/blog/email-domain-reputation/"&gt;domain reputation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Design email templates using clean code and standard fonts&lt;/li&gt;
&lt;li&gt;Use clear “From” Information&lt;/li&gt;
&lt;li&gt;Implement email authentication&lt;/li&gt;
&lt;li&gt;Provide a visible unsubscribe button &lt;/li&gt;
&lt;li&gt;Clean your email list regularly&lt;/li&gt;
&lt;li&gt;Avoid the usage of link shorteners &lt;/li&gt;
&lt;li&gt;Balance your text-to-image ratio&lt;/li&gt;
&lt;li&gt;Send attachments of appropriate size&lt;/li&gt;
&lt;li&gt;Personalize your emails &lt;/li&gt;
&lt;li&gt;Be &lt;a href="https://mailtrap.io/blog/can-spam-cold-emails/"&gt;compliant with rules and regulations&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sign up for &lt;a href="https://mailtrap.io/blog/email-feedback-loop/"&gt;email feedback loops&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Actions speak louder than spam words
&lt;/h2&gt;

&lt;p&gt;Rules change, spam filters change, and spammers change, so while my list will definitely help with achieving better email deliverability, it will take much more than not using specific email spam words to please email service providers and recipients.&lt;/p&gt;

&lt;p&gt;That said, try your best to follow email-sending best practices and fulfill the promises you make in your emails, especially if you’re sending bulk emails/mass emails. Only this way will you increase your chances of being deemed inbox-worthy by the software and the people scanning your emails.&lt;/p&gt;

&lt;p&gt;Want more email spam-related content? Check out these articles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/gmail-spam-filter-not-working/"&gt;Gmail Spam Filter Not Working&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/gmail-spam-filter/"&gt;A Comprehensive Guide to Navigating Gmail’s Spam Filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/why-are-my-emails-going-to-spam/"&gt;13 Reasons &amp;amp; Solutions for Why Your Emails Are Going to Spam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mailtrap.io/blog/salesforce-email-going-to-spam/"&gt;Stop Salesforce Email From Going to Spam&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading this article! to find out more words that trigger email spam filters &lt;a href="https://mailtrap.io/blog/email-spam-words/"&gt;click here&lt;/a&gt;!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>In-Depth Review of Salesforce AppExchange</title>
      <dc:creator>Dzenana Kajtaz</dc:creator>
      <pubDate>Mon, 09 Oct 2023 12:07:48 +0000</pubDate>
      <link>https://dev.to/dzenanakajtaz/in-depth-review-of-salesforce-appexchange-2mh1</link>
      <guid>https://dev.to/dzenanakajtaz/in-depth-review-of-salesforce-appexchange-2mh1</guid>
      <description>&lt;p&gt;Although the Salesforce platform comes with tons of useful features, it’s not able to cover every business process that comes to mind. In situations where the lack of features is present, a business owner can either invest in building a custom software solution to handle a specific business process or find the most suitable existing one on Salesforce AppExchange – a leading enterprise cloud marketplace offering, at the moment of writing, over 7000 apps, components, and consulting services. &lt;/p&gt;

&lt;p&gt;Want to learn more about this marketplace and how it can save you time, money, and effort while extending the functionality of the Salesforce CRM? Keep on reading!&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Salesforce AppExchange?
&lt;/h2&gt;

&lt;p&gt;Famous for providing apps used by Salesforce customers, AppExchange is a cloud computing marketplace launched in 2005. Through the marketplace, you can search for and install applications such as LinkedIn for Salesforce, Salesforce Outlook Integration, and so on. &lt;/p&gt;

&lt;p&gt;What makes this marketplace so much more special than the rest? Well, firstly, the apps on it are customized for Salesforce. Secondly, the marketplace serves as an app ecosystem with millions of downloads and plenty of trusted customer reviews. &lt;/p&gt;

&lt;p&gt;On top of that, if you’re looking for more than just apps, AppExchange offers components, experts, and other solutions all intended to solve business challenges, but more on that in a bit.&lt;/p&gt;

&lt;p&gt;Now, you might be thinking, “But my business challenges are unique. Are you sure AppExchange has what it takes to solve them?”. While we can’t say for certain that this app store will have exactly what you’re looking for, you can rest assured that it hosts apps ranging in departments, industries, and use cases. To browse this vast collection of apps, there are even guides conveniently named “App Guides”, which can help you find customer favorites for specific business challenges or specific departments.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the types of Salesforce AppExchange solutions?
&lt;/h2&gt;

&lt;p&gt;For newbies, Salesforce AppExchange might be a bit overwhelming due to the number of options it offers. So, to make it easier for you to go through everything and find what you’re looking for, we’ll now go through the offered solutions by type.&lt;/p&gt;

&lt;h3&gt;
  
  
  Apps
&lt;/h3&gt;

&lt;p&gt;Apps are simply third-party applications created by the team at Salesforce or AppExchange partners. They are also ready to install and, in some cases, free. &lt;/p&gt;

&lt;h3&gt;
  
  
  Lightning Components
&lt;/h3&gt;

&lt;p&gt;If creating apps or custom pages with no code is what you are looking to do, Salesforce Lightning Components are what you’ll need. These responsive and reusable building blocks can be used through a drag-and-drop mechanism in the Lightning App Builder and enable you to come up with your own custom components for unique uses. The components are built by both Salesforce employees and partners. &lt;/p&gt;

&lt;h3&gt;
  
  
  Bolt Solutions
&lt;/h3&gt;

&lt;p&gt;Bolts represent pre-built templates for Salesforce Communities used to deploy industry solutions and communities quicker. The Bolt Solutions section of AppExchange contains industry process flows, apps, Lightning components, as well as Communities, all built by an ecosystem of partners and seamlessly integrated with Salesforce. &lt;/p&gt;

&lt;h3&gt;
  
  
  Lightning Data
&lt;/h3&gt;

&lt;p&gt;For pre-integrated data solutions that come with real-time updates, you should check out Lightning Data. Using them, you can find the right data and create a connection with it through data enrichment and then give your sales and marketing a supercharge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flow Solutions
&lt;/h3&gt;

&lt;p&gt;Under Flow Solutions, a growing collection of partner-built integrations can be found. These integrations simplify building flows, including flows that connect with and perform actions on third-party systems without any additional code or integration. Examples include adding a video player, accepting payments by card, etc. &lt;/p&gt;

&lt;p&gt;To make flows work, the use of Flow Designer is necessary. &lt;/p&gt;

&lt;h3&gt;
  
  
  Experts/Consultants
&lt;/h3&gt;

&lt;p&gt;Over 1000 experts/consultants, including those providing strategic guidance, technical skills, as well as relevant expertise, are also accessible through AppExchange. These experts/consultants, of course, come from companies that have been authorized and can develop as well as deliver custom solutions, integrations, project implementations, migrations, and more for the Salesforce ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the benefits of AppExchange?
&lt;/h2&gt;

&lt;p&gt;From what we have said about the marketplace thus far, it’s clear that using AppExchange can be beneficial. But what exact benefits does it bring? Quite a few, including:&lt;/p&gt;

&lt;h3&gt;
  
  
  Enabling the optimal use of Salesforce
&lt;/h3&gt;

&lt;p&gt;Through AppExchange, Salesforce users can add more functionalities to the CRM platform and thus tailor it to their needs. This means that instead of having to use separate platforms for different business challenges, users can potentially resort to Salesforce once they enhance it with the right AppExchange apps. And since these apps are made to be seamlessly integrated, a smooth user experience and data consistency are guaranteed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessing ready-made solutions
&lt;/h3&gt;

&lt;p&gt;With AppExchange, Salesforce users don’t have to build custom solutions they require but are not part of Salesforce by default. This can prove to be a safe and cost-effective alternative to creating something from scratch.&lt;/p&gt;

&lt;p&gt;Solutions on AppExchange are distributed in unmanaged or managed packages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reducing costs
&lt;/h3&gt;

&lt;p&gt;AppExchange usage can completely remove development costs, as we’ve already mentioned. But on top of the development costs, maintenance, licensing, support, and other costs can also be avoided by going for an AppExchange app instead of coding your own software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scaling as your business grows
&lt;/h3&gt;

&lt;p&gt;Business needs and challenges change, and with AppExchange, you can accommodate this by adding and installing new apps or even simply upgrading existing ones when necessary. What’s more, if there is a need for customization, doing so is easy in Salesforce, thanks to its intuitive customization and configuration options.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ensuring you are using secure and quality software
&lt;/h3&gt;

&lt;p&gt;Salesforce AppExchange apps all go through rigorous reviews and testing before they can be installed. In other words, all the listed apps fulfill certain quality standards and adhere to security protocols.&lt;/p&gt;

&lt;h3&gt;
  
  
  Having access to community and support
&lt;/h3&gt;

&lt;p&gt;Users, devs, and partners communicate all the time through AppExchange thanks to reviews, ratings, and community forms resulting in valuable feedback, insights, and of course, support for all parties.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploying quickly
&lt;/h3&gt;

&lt;p&gt;Only a few clicks are needed to install an app from AppExchange. This allows big and small businesses to extend Salesforce functionality, adopt new solutions, and solve their business challenges without a lengthy implementation process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reaching millions of users
&lt;/h3&gt;

&lt;p&gt;As a Salesforce Partner Community member, you can publish and manage apps you created through the Salesforce Partner Business Organization. This can provide you with access to a market consisting of millions of verified buyers and potential customers. On top of that, you would be able to track performance metrics for your applications and be featured in AppExchange Digest – a monthly ad for applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Building with pre-made components
&lt;/h3&gt;

&lt;p&gt;For those wanting to publish apps on AppExchange, building from scratch is not the only option. Instead, they can use components, flows, Bolt Solutions, or unmanaged packages to create something unique.&lt;/p&gt;

&lt;h3&gt;
  
  
  Leaving updates up to app providers
&lt;/h3&gt;

&lt;p&gt;Apps installed from AppExchange are cloud-based, and so their updates are provided through the cloud as well. For an app user, this means that when updates are released, all your Salesforce admin/you have to do is accept them. &lt;/p&gt;

&lt;h2&gt;
  
  
  How does Salesforce AppExchange work?
&lt;/h2&gt;

&lt;p&gt;When talking about the ins and outs of Salesforce AppExchange, we have to look at two perspectives – product users/buyers and product listers. &lt;/p&gt;

&lt;h3&gt;
  
  
  Users/Buyers
&lt;/h3&gt;

&lt;p&gt;The process of buying/installing from AppExchange is pretty simple and consists of a few steps: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have a Salesforce production instance &lt;/li&gt;
&lt;li&gt;Narrow your search with the search field, top-of-page filters, navigation tools&lt;/li&gt;
&lt;li&gt;Read reviews to make an informed decision &lt;/li&gt;
&lt;li&gt;Ensure that the AppExchange app has components compatible with your edition of Salesforce&lt;/li&gt;
&lt;li&gt;Ensure that you have access to any external services an app might be referencing &lt;/li&gt;
&lt;li&gt;Give the app a test drive to see its core functionality&lt;/li&gt;
&lt;li&gt;Install the app on Developer Edition or Sandbox Edition by clicking on the “Get It Now” button and further test the app in an environment that mimics your production environment&lt;/li&gt;
&lt;li&gt;Install the app in your production organization once you’re satisfied with the way it functions &lt;/li&gt;
&lt;li&gt;Set permissions on who can access the newly installed app&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Product listers
&lt;/h3&gt;

&lt;p&gt;Listing an app on AppExchange is, as one might assume, a bit more complicated than buying it on the same marketplace. Still, the process can be relatively easy if all the steps outlined below are properly completed: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Coming up with an app idea&lt;/strong&gt; &lt;br&gt;
The ideation stage, like in most projects, is the first and most crucial one. This is where you define the app’s purpose, features, and the target audience. &lt;/p&gt;

&lt;p&gt;Once you have this down, you can then easily proceed to the development process and pitch your idea to Salesforce AppExchange.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Joining the Salesforce Partner Program and signing the agreement&lt;/strong&gt;&lt;br&gt;
Being part of the Salesforce Partner Program is a necessity for creating an AppExchange listing.&lt;/p&gt;

&lt;p&gt;Joining the program is simple and entails: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visiting partners.salesforce.com and clicking “Join”&lt;/li&gt;
&lt;li&gt;Filling up details regarding your business &lt;/li&gt;
&lt;li&gt;Selecting the “Independent Software Vendor (ISV)” option &lt;/li&gt;
&lt;li&gt;Submitting the registration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you’ve joined, you’ll need to sign a partnership agreement defining the terms and conditions of your relationship with Salesforce.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Developing the app&lt;/strong&gt;&lt;br&gt;
This step will vary from business to business but will, in essence, be where your app idea becomes a reality.&lt;/p&gt;

&lt;p&gt;During the app development process, you can use Salesforce development tools such as Apex, Visualforce, and Lightning Web Components, but you must follow security and coding standards and guidelines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Testing the app&lt;/strong&gt; &lt;br&gt;
Prior to listing the app, testing it thoroughly is advised. This means conducting unit, integration, and user acceptance testing for functionality, performance, and usability in order to find bugs or essentially anything that needs improving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Listing the app&lt;/strong&gt;&lt;br&gt;
When you have built and tested your app and feel like it’s ready to be released, it’s time to list it. At this point, you’ll have to provide information about the app (description, screenshots, demo videos, etc.) and its pricing plans. Also, depending on the app, other documents might be necessary, such as a step-by-step guide, solution architecture explanation, etc.&lt;/p&gt;

&lt;p&gt;You’ll also have to pay a listing fee (if any) and sign a listing agreement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Passing the security review process&lt;/strong&gt;&lt;br&gt;
Before the app becomes public, it will have to go through a security review done by Salesforce. During the review, the app’s code will be tested for vulnerabilities along with its compliance with Salesforce security policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Providing regular updates and customer support&lt;/strong&gt; &lt;br&gt;
Your job isn’t over once your app is live. On the contrary, that is when you will take on the tasks of responding to issues raised, bugs reported, and reviews left. Along with that, you’ll have to work on delivering updates regularly to provide new features or simply enhance existing ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  Salesforce AppExchange pricing models
&lt;/h2&gt;

&lt;p&gt;AppExchange apps, like most products, come with varying price tags depending on what they offer. The pricing model is usually set by the app vendor or developer and can be any of the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free &lt;/li&gt;
&lt;li&gt;Freemium &lt;/li&gt;
&lt;li&gt;Paid &lt;/li&gt;
&lt;li&gt;Usage-based &lt;/li&gt;
&lt;li&gt;Custom 
Along with an app’s listed price, it’s important to keep in mind that additional costs might need to be paid, such as consulting, implementation, training, and support costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summing up
&lt;/h2&gt;

&lt;p&gt;Taking Salesforce to the next level and using it to solve business challenges as well as implement process &lt;a href="https://mailtrap.io/blog/salesforce-email-automation/"&gt;automation&lt;/a&gt; becomes easy with AppExchange. &lt;/p&gt;

&lt;p&gt;This marketplace has, since its inception, grown immensely and will surely keep the same momentum by providing new apps and other solutions for organizations of all kinds. So make good use of it, whether it be to publish something of your own or simply upgrade your Salesforce CRM!&lt;/p&gt;

&lt;p&gt;To learn how to get the most from Salesforce AppExchange, make sure to also visit Trailhead – Salesforce’s free online learning platform. And if you’re hungry for more Salesforce content, we suggest reading the following articles from our blog:&lt;br&gt;
&lt;a href="https://mailtrap.io/blog/salesforce-email-relay/"&gt;How to Set up Salesforce Email Relay&lt;/a&gt;&lt;br&gt;
&lt;a href="https://mailtrap.io/blog/salesforce-email-marketing/"&gt;How to Get the Best out of Salesforce Email Marketing&lt;/a&gt;&lt;br&gt;
&lt;a href="https://mailtrap.io/blog/salesforce-mass-email/"&gt;Salesforce Mass Email&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for reading my &lt;a href="https://mailtrap.io/blog/salesforce-appexchange/"&gt;Salesforce AppExchange guide&lt;/a&gt;, which was initially published on the Mailtrap Blog.&lt;/p&gt;

</description>
      <category>salesforce</category>
      <category>appexchange</category>
      <category>review</category>
    </item>
  </channel>
</rss>
