<?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>Forem: SapotaCorp</title>
    <description>The latest articles on Forem by SapotaCorp (@sapotacorp).</description>
    <link>https://forem.com/sapotacorp</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%2F3948393%2F8481b860-d2b5-43c8-9641-4b83c9386e84.png</url>
      <title>Forem: SapotaCorp</title>
      <link>https://forem.com/sapotacorp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sapotacorp"/>
    <language>en</language>
    <item>
      <title>Building a 3-email welcome series in Salesforce Journey Builder</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:59:22 +0000</pubDate>
      <link>https://forem.com/sapotacorp/building-a-3-email-welcome-series-in-salesforce-journey-builder-1ph</link>
      <guid>https://forem.com/sapotacorp/building-a-3-email-welcome-series-in-salesforce-journey-builder-1ph</guid>
      <description>&lt;p&gt;Every Salesforce Marketing Cloud project we ship eventually runs into the same request: "Can you set up a welcome email series for new customers?" The ask sounds simple. The execution has two quiet traps that most first-time Journey Builder users walk straight into.&lt;/p&gt;

&lt;p&gt;Here's how we handled it on a recent retail engagement, including the two pitfalls our team only learned the hard way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Our client - a mid-size retail brand - wanted new customers who signed up for an account to receive a 3-email welcome sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; A welcome email, sent immediately on signup.&lt;/li&gt;
&lt;li&gt; A product highlight email, 3 days later.&lt;/li&gt;
&lt;li&gt; A 10% coupon for their first order, 7 days after signup.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The twist: if the customer had already placed an order before email #3 was due, the coupon should &lt;strong&gt;not&lt;/strong&gt; be sent. No point offering a first-order discount to someone who already converted.&lt;/p&gt;

&lt;p&gt;On the surface, this is the textbook use case for Journey Builder: a conditional email sequence driven by customer behavior. But the "textbook" setup hides a handful of decisions that directly impact cost, deliverability, and how maintainable the Journey will be six months later.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we built it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Picking the right Entry Source
&lt;/h3&gt;

&lt;p&gt;The Entry Source determines when and how a subscriber enters the Journey. SFMC gives you four main options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Data Extension Entry Source&lt;/strong&gt; - Subscriber gets added to a Data Extension → Journey picks them up on the next schedule. Best when you already run an Automation Studio import to populate the DE on a schedule (hourly, daily).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;API Event Entry Source&lt;/strong&gt; - An external system fires an API call into SFMC the moment an event happens (e.g., the customer submits the signup form on your website). This is the real-time path.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;CloudPages Entry Source&lt;/strong&gt; - The customer fills a Smart Capture form hosted on a CloudPage.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Salesforce Entry Source&lt;/strong&gt; - A record in your Salesforce CRM meets a defined condition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a welcome series, two options make sense:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;API Event&lt;/strong&gt; is the right call when you want the welcome email to land seconds after signup. The website calls SFMC's REST API the moment the form is submitted. Highest-intent, highest-impact path.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Data Extension&lt;/strong&gt; works fine when you're comfortable with a short delay (e.g., the website writes signups to a staging table, an hourly Automation imports them into the Journey's source DE).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We went with the API Event on this engagement - the retail brand had a strong "sign up and use immediately" UX, and we didn't want a cold one-hour gap between signup and first email.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Configure Re-entry settings
&lt;/h3&gt;

&lt;p&gt;This is the setting most teams forget to check, and it costs them customer complaints.&lt;/p&gt;

&lt;p&gt;By default, Journey Builder allows a subscriber to re-enter the Journey. That means if the same customer leaves and then re-qualifies - even accidentally - they start receiving the welcome emails again.&lt;/p&gt;

&lt;p&gt;For a welcome series, that's almost never what you want. A customer who unsubscribed and re-subscribed three months later should not be treated like a brand-new signup.&lt;/p&gt;

&lt;p&gt;Go to &lt;strong&gt;Journey Settings → Contact Entry Mode → No Re-entry&lt;/strong&gt;. Do this before you launch. Changing it after customers are already in the Journey is surgery.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: The canvas
&lt;/h3&gt;

&lt;p&gt;The final Journey is straightforward:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Entry Source (API Event on signup)
  └─ Send Email: "Welcome to [Brand]"
  └─ Wait: 3 days
  └─ Send Email: "Meet our bestsellers"
  └─ Wait: 4 days  (7 days total from entry)
  └─ Decision Split: Has the subscriber placed an order?
      ├─ Yes → Exit (skip the coupon)
      └─ No  → Send Email: "10% off your first order"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three emails, one conditional split, one clean exit. Ships in a couple of hours once the DE schema and templates are ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two mistakes we fixed along the way
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Forgetting to set "No Re-entry"
&lt;/h3&gt;

&lt;p&gt;On an earlier engagement, we skipped the Re-entry setting. Customers who unsubscribed and later re-subscribed re-entered the Journey from the beginning and received the entire welcome sequence again. We got complaints the same week.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule we adopted:&lt;/strong&gt; for any welcome series, post-purchase series, or onboarding flow, always set &lt;strong&gt;No Re-entry&lt;/strong&gt; before the Journey goes live. The exceptions (birthday campaigns, renewal nudges) re-enter on purpose - those are rare.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mistake 2: Using Decision Split to check "Has the subscriber unsubscribed?"
&lt;/h3&gt;

&lt;p&gt;Another team we reviewed had added a Decision Split before every Send Email to check whether the subscriber had unsubscribed, "just to be safe." The Journey ballooned into something with twice the blocks it needed and a maintenance headache for anyone else who opened it.&lt;/p&gt;

&lt;p&gt;SFMC already blocks sends to unsubscribed contacts automatically. You don't need to check that manually.&lt;/p&gt;

&lt;p&gt;If you want to remove a subscriber from a Journey based on a &lt;strong&gt;business&lt;/strong&gt; condition (e.g., "they placed an order, don't keep nudging them"), the right tool is &lt;strong&gt;Exit Criteria&lt;/strong&gt; in Journey Settings, not a Decision Split at every node. Set the criterion once, and every subscriber who meets it is exited on the next evaluation. One clean rule beats a forest of splits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;A working welcome series in Journey Builder takes less than a day of build time. What separates a welcome series that runs cleanly for two years from one that racks up complaints is the five minutes you spend on re-entry mode and exit criteria before go-live.&lt;/p&gt;

&lt;p&gt;When you're evaluating a Salesforce Marketing Cloud partner, ask them how they handle re-entry. If they shrug, they'll ship you a Journey that quietly breaks a month after launch.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Stuck on a Journey Builder setup?&lt;/strong&gt; Our Salesforce team ships production-grade Marketing Cloud engagements - from Journey design and segmentation to deliverability and Einstein reporting. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch →&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Double Opt-In in SFMC: When It's Worth the Extra Step</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:59:01 +0000</pubDate>
      <link>https://forem.com/sapotacorp/double-opt-in-in-sfmc-when-its-worth-the-extra-step-1p8l</link>
      <guid>https://forem.com/sapotacorp/double-opt-in-in-sfmc-when-its-worth-the-extra-step-1p8l</guid>
      <description>&lt;p&gt;A retail client we audited had bounce rates three times industry average and a decaying sender reputation nobody could explain. Tracking back, the source was in-store signups: cashiers manually keyed customer emails into the POS ("&lt;a href="mailto:j.smit@gmai.com"&gt;j.smit@gmai.com&lt;/a&gt;"), no validation, no confirmation. Half the list never existed.&lt;/p&gt;

&lt;p&gt;Double Opt-In is the standard answer for this problem. It's friction users accept once in exchange for a list you can actually send to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Single Opt-In vs Double Opt-In
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Single Opt-In (SOI)
&lt;/h3&gt;

&lt;p&gt;Subscriber submits form -&amp;gt; immediately added to the sendable list. Fast, low friction, list grows quickly. No verification that the email works or the submitter owns it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Double Opt-In (DOI / Confirmed Opt-In)
&lt;/h3&gt;

&lt;p&gt;Subscriber submits form -&amp;gt; receives a confirmation email -&amp;gt; must click a link in it to become an active subscriber. Two-step, slower, list grows slower. But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Email address is verified (the confirmation link works only if the address actually receives email)&lt;/li&gt;
&lt;li&gt;  The submitter owns the address (can't add someone else's email maliciously)&lt;/li&gt;
&lt;li&gt;  Bots get filtered out (bots don't click confirmation links en masse)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Result: smaller list, much cleaner. Bounce rate collapses, open rate rises, complaint rate drops.&lt;/p&gt;

&lt;h2&gt;
  
  
  When we turn on DOI
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use DOI when:
- Emails are collected in-store by cashiers (typos rampant)
- The signup form has no CAPTCHA (bot risk)
- The client has EU subscribers (GDPR wants clear consent records)
- The client prioritizes list quality over list size

SOI is acceptable when:
- Form has CAPTCHA + strong validation
- Signups come from trusted flows (checkout, app registration)
- The client needs list volume growth and is willing to clean often
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On any engagement with EU subscribers, we default to DOI regardless of other factors. GDPR's "active, affirmative consent" requirement is clearest when DOI is in place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup in SFMC
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1: Subscriber submits form (CloudPages Smart Capture or API)
        -&amp;gt; Record written to Pending_Subscribers_DE with Status = "Pending"

Step 2: Triggered Send fires the confirmation email
        -&amp;gt; Email contains a unique confirmation link with subscriber token

Step 3: Subscriber clicks the confirmation link
        -&amp;gt; CloudPage receives the token
        -&amp;gt; Moves record to Confirmed_Subscribers_DE (or flips Status = "Confirmed")

Step 4: Only Confirmed subscribers receive marketing email
        -&amp;gt; Main Sendable DE reads from Confirmed_Subscribers_DE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important: the confirmation email itself should be classified &lt;strong&gt;Transactional&lt;/strong&gt;, not Commercial. It's a service email (confirming the subscriber's action), not marketing. Commercial classification would mean sending marketing to someone who hasn't opted in yet - a logical contradiction that also violates CAN-SPAM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three gotchas
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Confirmation email lands in spam
&lt;/h3&gt;

&lt;p&gt;Subscriber submits, never sees the confirmation, abandons. This is especially bad because the subscriber assumed something broke.&lt;/p&gt;

&lt;p&gt;Mitigations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Send confirmations from a dedicated IP with good reputation.&lt;/li&gt;
&lt;li&gt;  Subject line should be transactional-sounding: "Confirm your subscription to [Brand]"&lt;/li&gt;
&lt;li&gt;  Avoid spam trigger words, exclamation marks, all caps.&lt;/li&gt;
&lt;li&gt;  Monitor delivery rate on confirmation sends separately.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Token expiration too aggressive
&lt;/h3&gt;

&lt;p&gt;Setting the confirmation token to expire in 1 hour fails for anyone who checks email next morning. We set tokens to expire after &lt;strong&gt;48 to 72 hours&lt;/strong&gt; by default. The security cost of a longer window is small; the abandonment cost of a short window is real.&lt;/p&gt;

&lt;h3&gt;
  
  
  Not capturing the consent record
&lt;/h3&gt;

&lt;p&gt;GDPR audits (and CAN-SPAM best practice) want proof that consent was given. Capture in a dedicated Consent DE:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Consent_DE&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SubscriberKey&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;EmailAddress&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ConsentDate (timestamp of confirmation click)&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ConsentMethod ("Double Opt-In")&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;IPAddress (if captured)&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;ConfirmationTimestamp&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Written at the moment of confirmation, kept for the retention period the client's legal team specifies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost trade-off
&lt;/h2&gt;

&lt;p&gt;DOI drops conversion at signup by 20-40% typically. The subscribers who don't confirm wouldn't have been real engagement anyway - they're not readers, they're friction at capture. Over 3-6 months, engagement metrics and deliverability on the DOI list materially beat the SOI list despite the smaller numbers.&lt;/p&gt;

&lt;p&gt;If the client pushes back on "losing subscribers" to DOI, reframe: DOI filters out the subscribers who would have been silent anyway, and the deliverability improvement benefits the subscribers who do remain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Double Opt-In is friction you add on purpose. It's worth it when the capture channel is unreliable (in-store, unverified forms) or when compliance (GDPR) demands explicit consent proof. Set reasonable token lifetimes, classify the confirmation email as Transactional, capture the consent record. List quality improvement is immediate; deliverability improvement compounds over months.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Building SFMC subscriber acquisition flows?&lt;/strong&gt; Our Salesforce team implements CloudPages Smart Capture, DOI flows, and Consent DE architectures on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>SFMC Abuse Emails and Bounce Thresholds You Must Respect</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:53:31 +0000</pubDate>
      <link>https://forem.com/sapotacorp/sfmc-abuse-emails-and-bounce-thresholds-you-must-respect-2b2o</link>
      <guid>https://forem.com/sapotacorp/sfmc-abuse-emails-and-bounce-thresholds-you-must-respect-2b2o</guid>
      <description>&lt;p&gt;Team wakes up one morning to an email from &lt;code&gt;abuse@abuse.salesforce.com&lt;/code&gt;. Reads like something a spammer would send, gets deleted. Three days later the account can't send email.&lt;/p&gt;

&lt;p&gt;This actually happens on SFMC engagements. The abuse team's email isn't spam - it's Salesforce warning you that something in the sending pattern tripped their monitoring. Ignoring it leads to account suspension. Here's how to recognize it and what to do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Salesforce sends Abuse emails
&lt;/h2&gt;

&lt;p&gt;Salesforce monitors every SFMC account's sending behavior. Unusual patterns flag for review:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Complaint rate above safe threshold&lt;/li&gt;
&lt;li&gt;  Bounce rate above safe threshold&lt;/li&gt;
&lt;li&gt;  Sudden large send to a cold list&lt;/li&gt;
&lt;li&gt;  Send to known purchased-list indicators&lt;/li&gt;
&lt;li&gt;  Reports from ISPs (Gmail, Outlook) about the sender&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When flagged, the Salesforce Abuse team emails the account admin with a description of what they saw and expected response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The sender address is &lt;code&gt;abuse@abuse.salesforce.com&lt;/code&gt;.&lt;/strong&gt; It looks odd. It's legitimate. Check the email headers if in doubt.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thresholds that matter
&lt;/h2&gt;

&lt;p&gt;Metric&lt;/p&gt;

&lt;p&gt;Safe&lt;/p&gt;

&lt;p&gt;Action required&lt;/p&gt;

&lt;p&gt;Bounce rate per send&lt;/p&gt;

&lt;p&gt;&amp;lt; 2%&lt;/p&gt;

&lt;p&gt;Clean list immediately, investigate source&lt;/p&gt;

&lt;p&gt;Bounce rate per send&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;10%&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Urgent - IP may be blocklisted&lt;/p&gt;

&lt;p&gt;Spam complaint rate&lt;/p&gt;

&lt;p&gt;&amp;lt; 0.1%&lt;/p&gt;

&lt;p&gt;Above: review list source + content&lt;/p&gt;

&lt;p&gt;Unsubscribe rate per send&lt;/p&gt;

&lt;p&gt;&amp;lt; 0.5%&lt;/p&gt;

&lt;p&gt;Above: review frequency and relevance&lt;/p&gt;

&lt;p&gt;Bounce rate above 10% on a single send is the serious threshold. ISPs may blocklist the sending IP, and once an IP is blocklisted, each ISP requires a separate delisting request. That process takes weeks, sometimes months.&lt;/p&gt;

&lt;p&gt;Complaint rate above 0.5% on a recurring basis is similar - ISP-level reputation damage, expensive to repair.&lt;/p&gt;

&lt;h2&gt;
  
  
  Response playbook
&lt;/h2&gt;

&lt;p&gt;When an Abuse email arrives:&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Read carefully
&lt;/h3&gt;

&lt;p&gt;The email states the specific issue (complaint rate too high, hard bounce spike, purchased list suspicion). Extract the concrete data point - don't skim.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Investigate same day
&lt;/h3&gt;

&lt;p&gt;Pull tracking data for the last 7-14 days. Look at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Which sends had the spike&lt;/li&gt;
&lt;li&gt;  Which segment / DE was the source&lt;/li&gt;
&lt;li&gt;  What the content was&lt;/li&gt;
&lt;li&gt;  Whether the list contained newly-imported subscribers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The root cause is almost always one of: list hygiene failure, purchased list import, aggressive new campaign, or a deliverability issue (auth misconfigured, content-filtered).&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Reply within 24-48 hours
&lt;/h3&gt;

&lt;p&gt;Don't send "we'll investigate." Reply with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Root cause identified&lt;/li&gt;
&lt;li&gt;  Specific remediation steps (what's being removed, what's being paused)&lt;/li&gt;
&lt;li&gt;  Timeline for implementation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Salesforce's abuse team wants to see you understand the issue and have a concrete fix, not an abstract promise. Replies like "we will clean the list and send better email" aren't sufficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Execute the fix
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  Clean the list: remove hard bounces, suppress non-engagers.&lt;/li&gt;
&lt;li&gt;  Remove any purchased contacts entirely.&lt;/li&gt;
&lt;li&gt;  Pause sends to the affected segment until metrics normalize.&lt;/li&gt;
&lt;li&gt;  Turn on Double Opt-In if signup channels are suspect.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 5: Follow up
&lt;/h3&gt;

&lt;p&gt;After remediation, email the abuse team with what was done and ask them to review. Open communication keeps the account in good standing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preventive monitoring
&lt;/h2&gt;

&lt;p&gt;So you don't receive Abuse emails in the first place:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;After every send:
  [ ] Complaint rate &amp;lt; 0.1%
  [ ] Bounce rate &amp;lt; 2%
  [ ] Unsubscribe rate &amp;lt; 0.5%

Monthly:
  [ ] Unengaged subscribers removed (6-month dormancy rule)
  [ ] Hard bounces cleaned from all sendable DEs
  [ ] All acquisition channels use DOI or CAPTCHA

During onboarding:
  [ ] status.salesforce.com in the team's bookmarks
  [ ] SPF / DKIM / DMARC configured
  [ ] Never import purchased lists
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Most accounts that receive Abuse emails had 2-3 of these checks failing for months.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do if the account gets suspended
&lt;/h2&gt;

&lt;p&gt;If you ignore the Abuse email and the account is suspended:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Open a Salesforce Support case immediately.&lt;/li&gt;
&lt;li&gt; Provide the abuse email thread if one exists.&lt;/li&gt;
&lt;li&gt; Explain root cause and remediation steps.&lt;/li&gt;
&lt;li&gt; Expect the reinstatement process to take days to weeks.&lt;/li&gt;
&lt;li&gt; Scheduled campaigns are blocked during the suspension.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Faster to respond when the warning arrives than to recover from suspension.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;An email from &lt;code&gt;abuse@abuse.salesforce.com&lt;/code&gt; is real and urgent. Bounce rate above 10% and complaint rate above 0.1% are the specific thresholds that trigger it. The response is measured investigation + specific fix + timely reply. Ignoring the warning gets accounts suspended, which is much harder to recover from than just replying in time.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Received an abuse notice on SFMC?&lt;/strong&gt; Our Salesforce team runs deliverability audits, list hygiene remediation, and engagement recovery on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>SFMC Email Frequency and Spam Filters: Send Enough, Not Too Much</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:39:45 +0000</pubDate>
      <link>https://forem.com/sapotacorp/sfmc-email-frequency-and-spam-filters-send-enough-not-too-much-4o73</link>
      <guid>https://forem.com/sapotacorp/sfmc-email-frequency-and-spam-filters-send-enough-not-too-much-4o73</guid>
      <description>&lt;p&gt;A retail client we advised decided to quadruple email frequency - from one send per week to four - believing more sends would mean more revenue. Within a month:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Unsubscribe rate tripled.&lt;/li&gt;
&lt;li&gt;  Complaint rate crossed the 0.1% threshold.&lt;/li&gt;
&lt;li&gt;  Open rate dropped 30%.&lt;/li&gt;
&lt;li&gt;  Revenue stayed flat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The ISPs noticed too. Inbox placement on subsequent sends degraded. The account spent six weeks recovering deliverability after three weeks of over-sending.&lt;/p&gt;

&lt;p&gt;Email frequency has rules, and they're not flexible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core rule
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Send what the subscriber expected when they opted in.&lt;/strong&gt; If the signup form said "weekly newsletter," weekly is the promise. Daily isn't aggressive growth; it's a broken contract that triggers unsubscribes and complaints.&lt;/p&gt;

&lt;p&gt;Subscribers opt in with a mental model of what they'll receive and how often. Violating that model produces two outcomes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Unsubscribe (best case).&lt;/li&gt;
&lt;li&gt; Spam complaint (worst case - damages sender reputation).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Three questions before every additional send
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Is this content genuinely relevant to the subscriber?
2. Does the subscriber expect to receive this category of email?
3. Is this the right time (not a bad moment, not too close to the last send)?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If any answer is "no," don't send. "The campaign deadline is tomorrow" isn't a good enough reason to break the frequency promise.&lt;/p&gt;

&lt;h2&gt;
  
  
  Einstein Engagement Frequency
&lt;/h2&gt;

&lt;p&gt;If the client's account has Einstein, use Engagement Frequency instead of guessing. It analyzes each subscriber's historical engagement to predict:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The ideal email volume per week for this subscriber&lt;/li&gt;
&lt;li&gt;  Whether the subscriber is currently being over-contacted (at risk of unsubscribe)&lt;/li&gt;
&lt;li&gt;  Whether the subscriber could absorb one more email this week without harm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Output: per-subscriber recommended frequency. Use it to filter the audience on high-volume sends - skip anyone flagged "over-contacted" to protect retention.&lt;/p&gt;

&lt;p&gt;Einstein Engagement Frequency is bundled with Marketing Cloud Advanced editions - check if the client has access before promising its use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Spam filter content signals to avoid
&lt;/h2&gt;

&lt;p&gt;Spam filters look at content patterns regardless of sender reputation. Avoid:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;All-caps subject lines&lt;/strong&gt;: "50% OFF TODAY ONLY!!!"&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Excessive exclamation marks&lt;/strong&gt; anywhere in the email&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Spam trigger words&lt;/strong&gt;: "Free," "Guaranteed," "No risk," "Click here," "Act now"&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Image-heavy with little text&lt;/strong&gt;: images without enough accompanying text read as spam camouflage&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Missing text version&lt;/strong&gt;: HTML-only emails are downgraded by many filters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ironically, the content that's "most aggressive marketing" is also the content that triggers the most spam filters. Copy that reads naturally tends to deliver better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Volume-based ISP flags
&lt;/h2&gt;

&lt;p&gt;ISPs also watch sending behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Sudden large volumes from a new IP&lt;/strong&gt; (before IP warming completed) - flagged as suspicious sender.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;High bounce rate&lt;/strong&gt; on a send - flagged immediately by receiving ISPs.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;High complaint rate&lt;/strong&gt; - flagged; reputation damage persists.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Low engagement across many sends&lt;/strong&gt; - gradual downgrade to Promotions / Spam.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ramping a new dedicated IP requires a warming plan - a few thousand sends on day 1, gradually doubling, across weeks. Going from 0 to 500k overnight on a new IP is instantly suspicious.&lt;/p&gt;

&lt;h2&gt;
  
  
  Content Detective in SFMC
&lt;/h2&gt;

&lt;p&gt;Before sending, run the email through &lt;strong&gt;Content Detective&lt;/strong&gt;. It scans for spam-filter patterns and flags potential issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Trigger words&lt;/li&gt;
&lt;li&gt;  Excessive punctuation&lt;/li&gt;
&lt;li&gt;  Image-to-text imbalance&lt;/li&gt;
&lt;li&gt;  Bad HTML patterns&lt;/li&gt;
&lt;li&gt;  Broken links&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Content Detective isn't perfect - some filtered content will still deliver, some clean content gets filtered - but running it is a five-minute safety check that catches the worst offenders.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "good frequency" looks like
&lt;/h2&gt;

&lt;p&gt;Mid-market B2C retail, healthy setup:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  1 newsletter per week&lt;/li&gt;
&lt;li&gt;  2-4 promotional sends per month (seasonal / sale events)&lt;/li&gt;
&lt;li&gt;  Triggered emails (welcome, cart abandon, post-purchase) on event&lt;/li&gt;
&lt;li&gt;  Total: 4-8 emails per month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Subscribers who want more can be offered higher-frequency segments (daily deals, VIP tier) via Publication Lists. Subscribers who want less can downshift the same way. Granular preferences reduce unsubscribes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Frequency isn't a lever to pull for more revenue; it's a contract with subscribers. Violate it and short-term revenue gains are wiped out by long-term deliverability damage. Use Einstein Engagement Frequency if available, Content Detective every send, and publication-level preferences for granular opt-in. Respect the promise you made at signup.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Balancing revenue goals with deliverability constraints?&lt;/strong&gt; Our Salesforce team advises on send cadence, Einstein features, and content optimization on production SFMC engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Sender Profile vs Delivery Profile vs Send Classification</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:39:24 +0000</pubDate>
      <link>https://forem.com/sapotacorp/sender-profile-vs-delivery-profile-vs-send-classification-45j8</link>
      <guid>https://forem.com/sapotacorp/sender-profile-vs-delivery-profile-vs-send-classification-45j8</guid>
      <description>&lt;p&gt;New client onboarding, typical request: "Make sure emails send from &lt;a href="mailto:orders@company.com"&gt;orders@company.com&lt;/a&gt;, show From as Company Store, use a separate IP for transactional email, and follow CAN-SPAM Transactional rules."&lt;/p&gt;

&lt;p&gt;Four requirements. Three different SFMC settings in three different screens to satisfy them. It's the single most confusing area for engineers new to Marketing Cloud.&lt;/p&gt;

&lt;p&gt;Here's what each setting controls and where it lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sender Profile - what the subscriber sees
&lt;/h2&gt;

&lt;p&gt;Sender Profile defines the &lt;strong&gt;From Name&lt;/strong&gt; and &lt;strong&gt;From Email Address&lt;/strong&gt; - the identity the subscriber sees in their inbox.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight email"&gt;&lt;code&gt;&lt;span class="nt"&gt;From Name&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt;  Company Store&lt;/span&gt;
&lt;span class="nt"&gt;From Email&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt; orders@company.com&lt;/span&gt;
&lt;span class="nt"&gt;Reply-To&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="na"&gt;   support@company.com (can differ from From Email)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An account can have multiple Sender Profiles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  One for marketing (&lt;code&gt;newsletter@company.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;  One for transactional (&lt;code&gt;orders@company.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;  One per brand, if the client operates multiple brands&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced pattern:&lt;/strong&gt; if the client wants From Name to vary per subscriber (show the assigned sales rep's name), the Sender Profile can be configured as dynamic and populated by AMPscript at send time.&lt;/p&gt;

&lt;p&gt;Lives at: Email Studio &amp;gt; Admin &amp;gt; Sender Profiles&lt;/p&gt;

&lt;h2&gt;
  
  
  Delivery Profile - what the ISP sees
&lt;/h2&gt;

&lt;p&gt;Delivery Profile defines the &lt;strong&gt;IP address&lt;/strong&gt; and &lt;strong&gt;sending domain&lt;/strong&gt; used for the send - the infrastructure underneath that the subscriber doesn't see but every ISP does.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;IP Pool&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;        &lt;span class="s"&gt;Dedicated IP&lt;/span&gt; &lt;span class="c1"&gt;#2 (for transactional)&lt;/span&gt;
&lt;span class="na"&gt;Sending Domain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;orders.company.com&lt;/span&gt;
&lt;span class="na"&gt;Header/Footer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;Custom per-email footer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why multiple Delivery Profiles? Because most clients have at least two classes of email with different reputation profiles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Commercial&lt;/strong&gt; (newsletters, promotions): high volume, variable engagement, uses one IP&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Transactional&lt;/strong&gt; (order confirmations, password resets): high open rate, near-zero complaints, deserves a separate IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Separating IPs prevents commercial reputation problems from dragging down transactional deliverability. If commercial gets throttled, transactional still lands inboxes.&lt;/p&gt;

&lt;p&gt;Lives at: Email Studio &amp;gt; Admin &amp;gt; Delivery Profiles&lt;/p&gt;

&lt;h2&gt;
  
  
  Send Classification - the combined bundle
&lt;/h2&gt;

&lt;p&gt;Send Classification packages a Sender Profile + Delivery Profile + a CAN-SPAM classification into a single selectable unit used at send time.&lt;/p&gt;

&lt;p&gt;CAN-SPAM classification is either:&lt;/p&gt;

&lt;p&gt;Commercial&lt;/p&gt;

&lt;p&gt;Transactional&lt;/p&gt;

&lt;p&gt;Purpose&lt;/p&gt;

&lt;p&gt;Marketing, promotion&lt;/p&gt;

&lt;p&gt;Confirm transaction, service communication&lt;/p&gt;

&lt;p&gt;Unsubscribe link&lt;/p&gt;

&lt;p&gt;Required&lt;/p&gt;

&lt;p&gt;Not required&lt;/p&gt;

&lt;p&gt;Can send to unsubscribed subscribers&lt;/p&gt;

&lt;p&gt;No&lt;/p&gt;

&lt;p&gt;Yes (if genuinely transactional)&lt;/p&gt;

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

&lt;p&gt;Newsletter, flash sale&lt;/p&gt;

&lt;p&gt;Order confirmation, password reset&lt;/p&gt;

&lt;p&gt;When setting up a Send Classification for order confirmations, choose &lt;strong&gt;Transactional&lt;/strong&gt;. SFMC will then deliver to contacts who have previously unsubscribed - which is what you want for receipts and service notifications.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mental model
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sender Profile    -&amp;gt; From Name, From Email (subscriber-facing)
Delivery Profile  -&amp;gt; IP, Sending Domain (ISP-facing)
Send Classification -&amp;gt; wraps both + CAN-SPAM type
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At actual send time, you only pick a Send Classification. It pulls in the Sender + Delivery automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three mistakes we still see
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Trying to change the IP from Sender Profile
&lt;/h3&gt;

&lt;p&gt;Team wants a different IP for a specific send, opens Sender Profile looking for an IP field. There isn't one. IP lives in Delivery Profile. Took most of a morning for one engineer to find this the first time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mistake 2: Commercial classification on order confirmations
&lt;/h3&gt;

&lt;p&gt;Order confirmation email goes out with &lt;code&gt;Commercial&lt;/code&gt; classification. Unsubscribed customers don't receive their receipts. Client's customer service team fields complaints for two days before the root cause is found.&lt;/p&gt;

&lt;p&gt;Transactional emails - receipts, shipping notifications, password resets, OTPs - need a Send Classification marked &lt;code&gt;Transactional&lt;/code&gt;. Create one during onboarding; don't reuse the default &lt;code&gt;Commercial&lt;/code&gt; classification for anything service-related.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mistake 3: Unverified From Address
&lt;/h3&gt;

&lt;p&gt;Team builds a campaign sending from &lt;code&gt;orders@company.com&lt;/code&gt;. The send fails because the domain hasn't been verified in &lt;strong&gt;From Address Management&lt;/strong&gt;. SFMC requires domain verification before any new From address can be used.&lt;/p&gt;

&lt;p&gt;Setup: Email Studio &amp;gt; Admin &amp;gt; From Address Management. Verify domains early in onboarding so this doesn't block go-live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Three settings, three purposes, three screens. Sender Profile is what the subscriber sees; Delivery Profile is what the ISP sees; Send Classification is what you actually pick at send time. Get them right during onboarding - retrofitting transactional/commercial separation after volume is live is harder than setting it up day one.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Setting up SFMC sending infrastructure?&lt;/strong&gt; Our Salesforce team configures Sender Profiles, Delivery Profiles, and classification strategy on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>IP Warming in SFMC: The Four-Week Ramp That Protects Reputation</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:33:58 +0000</pubDate>
      <link>https://forem.com/sapotacorp/ip-warming-in-sfmc-the-four-week-ramp-that-protects-reputation-2132</link>
      <guid>https://forem.com/sapotacorp/ip-warming-in-sfmc-the-four-week-ramp-that-protects-reputation-2132</guid>
      <description>&lt;p&gt;A retail client wanted to separate their transactional email onto a dedicated IP for better reputation isolation. They bought the IP on Monday and on Tuesday wanted to blast 500,000 emails through it.&lt;/p&gt;

&lt;p&gt;Don't do this.&lt;/p&gt;

&lt;p&gt;ISPs (Gmail, Outlook, Yahoo) track every sending IP they see. A new IP has zero history and zero reputation. Blasting high volume from it immediately makes the IP look like a spammer's throwaway server. Result: heavy filtering, spam folder placement, possible blocklisting.&lt;/p&gt;

&lt;p&gt;The fix is IP warming - ramping volume gradually over weeks while ISPs learn the IP is a legitimate sender.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four-week ramp we use
&lt;/h2&gt;

&lt;p&gt;Starting point is the engaged cohort - the 20% of subscribers who open consistently. These sends get high engagement signals, which is exactly what ISPs are using to judge the new IP.&lt;/p&gt;

&lt;p&gt;Week&lt;/p&gt;

&lt;p&gt;Volume per day&lt;/p&gt;

&lt;p&gt;Week 1&lt;/p&gt;

&lt;p&gt;500 - 1,000&lt;/p&gt;

&lt;p&gt;Week 2&lt;/p&gt;

&lt;p&gt;2,000 - 5,000&lt;/p&gt;

&lt;p&gt;Week 3&lt;/p&gt;

&lt;p&gt;10,000 - 20,000&lt;/p&gt;

&lt;p&gt;Week 4&lt;/p&gt;

&lt;p&gt;50,000+&lt;/p&gt;

&lt;p&gt;By week 4 the IP has enough engagement history that full-list sends can run safely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rules during warming
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Only send to engaged subscribers.&lt;/strong&gt; The first 2-3 weeks are the most important moment in the IP's life - every bounce and complaint goes straight into the reputation model. Use the cleanest segment you have: subscribers who opened in the last 30 days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoid low-engagement cohorts.&lt;/strong&gt; Warming the IP with a list that hasn't been cleaned in two years is self-sabotage. High bounce rate on week 1 permanently damages the IP's starting position.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitor daily.&lt;/strong&gt; Track bounce rate and complaint rate every day. If either spikes, pause the ramp and investigate before continuing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Email Performance by Domain&lt;/strong&gt; in Email Studio. Delivery rate varies by ISP - Gmail might be 98% while Yahoo is 70%. Per-domain visibility tells you which ISP is the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  When a dedicated IP is worth it
&lt;/h2&gt;

&lt;p&gt;Dedicated IPs are not free and not always the right choice. Our rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Under 250,000 emails/month&lt;/strong&gt;: shared IP (cheaper, SFMC manages reputation across clients).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;250,000 - 500,000/month&lt;/strong&gt;: either, depends on complexity.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Over 500,000/month, or high reputation sensitivity&lt;/strong&gt;: dedicated IP.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Shared IP means the client's reputation is partially influenced by other SFMC customers sharing that IP pool. For most volumes that's fine. For high-volume or high-sensitivity senders, dedicated isolates the reputation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two mistakes we've seen
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Blasting full volume on day one
&lt;/h3&gt;

&lt;p&gt;IP gets blocklisted by Yahoo and Outlook in the first week. Takes 2-3 weeks to request delisting from each ISP and complete the warming from scratch. Every campaign scheduled in that window misses.&lt;/p&gt;

&lt;p&gt;Cost of doing it right the first time: 4 weeks of ramp. Cost of doing it wrong: 4 weeks of ramp plus 2-3 weeks of delisting plus reputation damage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Warming with an inactive list
&lt;/h3&gt;

&lt;p&gt;Using a 2-year-old uncleaned list to warm a new IP. Bounce rate on week 1 is 8%. ISPs immediately flag the new IP as suspicious. The warming completes, but the IP carries below-average reputation permanently.&lt;/p&gt;

&lt;p&gt;Always warm with the engaged, recently-active segment. If the engaged segment is small, the ramp starts smaller - that's fine. Don't pad volume with dormant subscribers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Send Throttling helps during warming
&lt;/h2&gt;

&lt;p&gt;Send Throttling (covered separately) limits per-hour send volume. Use it during warming to avoid dumping the daily allocation in the first five minutes. A smooth hourly rate looks more natural to ISPs than a burst.&lt;/p&gt;

&lt;p&gt;Example: week 3 allocation of 20,000 emails, throttle to 2,000/hour. Send runs 10 hours. Looks like a legitimate large sender, not a blast.&lt;/p&gt;

&lt;h2&gt;
  
  
  When warming fails
&lt;/h2&gt;

&lt;p&gt;If bounce or complaint rate spikes mid-warming:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Stop the ramp at current volume. Don't escalate further.&lt;/li&gt;
&lt;li&gt; Investigate - was the data source bad? Was content off-brand?&lt;/li&gt;
&lt;li&gt; Fix the root cause.&lt;/li&gt;
&lt;li&gt; Resume at current volume for a few more days before continuing to ramp.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not repeat the original mistake of going fast. ISPs remember the first few weeks of an IP's life for months.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;IP warming is a four-week commitment that protects reputation for the life of the IP. Start with your most engaged subscribers, ramp volume gradually, monitor per-ISP delivery daily, and use Send Throttling to avoid bursts. The alternative - going fast and recovering from blocklists - is always slower and more expensive.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Standing up a new dedicated IP in SFMC?&lt;/strong&gt; Our Salesforce team runs IP warming programs and deliverability optimization on production Marketing Cloud engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Send Throttling in SFMC: Protect the Website from Your Own Email</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:33:37 +0000</pubDate>
      <link>https://forem.com/sapotacorp/send-throttling-in-sfmc-protect-the-website-from-your-own-email-fb</link>
      <guid>https://forem.com/sapotacorp/send-throttling-in-sfmc-protect-the-website-from-your-own-email-fb</guid>
      <description>&lt;p&gt;A retail client's flash-sale email was their best-performing campaign of the quarter. 500,000 customers, 38% open rate, 12% click rate. First time they ran it, their website's checkout service crashed.&lt;/p&gt;

&lt;p&gt;Half a million emails landed in inboxes within four minutes. Fifty thousand customers clicked the link within the next two. The checkout service hadn't been sized for that kind of traffic spike. Conversion crashed with the checkout.&lt;/p&gt;

&lt;p&gt;The IT team asked for "some way to stop the email from creating these spikes." SFMC Send Throttling is exactly that.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Send Throttling works
&lt;/h2&gt;

&lt;p&gt;In the Send Definition (or Guided Send), set a per-hour send rate. SFMC will pace the send at that rate instead of dispatching everything at once.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total audience: 500,000
Throttle:       50,000 per hour
Send duration:  10 hours
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same 500k customers receive the email, but spread across ten hours instead of four minutes. The website traffic is smoothed, the checkout service handles it, and the conversion rate actually comes in higher because nothing's breaking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to configure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  Guided Send wizard (Email Studio &amp;gt; Interactions &amp;gt; Send)&lt;/li&gt;
&lt;li&gt;  Send Definition inside an Automation or Journey (Send Email Activity settings)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The UI lets you specify either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Maximum emails per hour&lt;/strong&gt; (explicit rate), or&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Total time window&lt;/strong&gt; (SFMC computes the rate)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both produce the same result; pick whichever the stakeholder is more comfortable thinking about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use cases beyond flash sales
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Flash sales, limited-stock promotions
&lt;/h3&gt;

&lt;p&gt;Covered above. Protects the checkout and inventory systems from their own marketing success.&lt;/p&gt;

&lt;h3&gt;
  
  
  Time-zone respect
&lt;/h3&gt;

&lt;p&gt;Send scheduled for 9am local time, but your subscribers span four time zones. Without throttling, everyone receives the email at once - which means 9am for some, 6am for others, noon for others. Throttling combined with per-subscriber timezone data can approximate a "9am their time" delivery.&lt;/p&gt;

&lt;h3&gt;
  
  
  IP warming
&lt;/h3&gt;

&lt;p&gt;Covered in the warming post. When ramping a new IP, throttling spreads the daily allocation across hours instead of dumping it in the first minute. Looks natural to ISPs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reducing reply volume spikes
&lt;/h3&gt;

&lt;p&gt;Some automated replies generate customer service load (people hitting "reply" to newsletters even though the From is no-reply). Throttling spreads those replies over more hours, giving the CS team time to triage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Capacity-constrained downstream systems
&lt;/h3&gt;

&lt;p&gt;Any downstream system that processes a spike poorly benefits from throttled upstream sends. CRM sync, loyalty point crediting, chatbot handoffs - all can get overwhelmed by 500k simultaneous triggers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side effects to consider
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Open rate distribution changes
&lt;/h3&gt;

&lt;p&gt;Subscribers opening early in the throttled window see the email fresh; subscribers opening late in the window see an email that's been waiting in their inbox for hours. Competition from subsequent emails in the inbox can reduce open rate for the later subscribers.&lt;/p&gt;

&lt;p&gt;Trade-off: smoother downstream load vs. potentially lower open rate on the tail end. For flash sales where the offer is time-boxed, a throttled send is usually still the right call because the alternative is a broken checkout.&lt;/p&gt;

&lt;h3&gt;
  
  
  Latency for transactional
&lt;/h3&gt;

&lt;p&gt;Don't throttle transactional emails (password reset, OTP, order confirmation). Those need to arrive immediately. Throttling them introduces delay customers notice and complain about.&lt;/p&gt;

&lt;h3&gt;
  
  
  Delay in closing the campaign
&lt;/h3&gt;

&lt;p&gt;A 10-hour send won't finish at 9am. If you need the full send completed by a specific time, backward-calculate: start time minus total-window = required launch time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Typical throttle rates
&lt;/h2&gt;

&lt;p&gt;Per-hour rates we use on different send types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Flash sale / high-CTR campaign: 25k-50k/hour (protects web infra)&lt;/li&gt;
&lt;li&gt;  Newsletter: usually no throttle (engagement is spread naturally)&lt;/li&gt;
&lt;li&gt;  IP warming: 500-2,000/hour on the new IP during week 1-2&lt;/li&gt;
&lt;li&gt;  Low-risk promotional: 100k+/hour if infra can handle it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Start conservative on a new campaign type and loosen once you have evidence the downstream can absorb the volume.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Send Throttling is an often-skipped feature that prevents an entirely self-inflicted class of outage. Any send that drives concentrated downstream traffic - flash sales, stock launches, checkout-heavy promotions - should have throttling configured. Five minutes of setup saves the day the email over-performs.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sizing an SFMC campaign with downstream infra limits?&lt;/strong&gt; Our Salesforce team configures throttling, schedule windows, and infrastructure coordination on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>SFMC Reply Mail Management: Auto-Handle Unsubscribe Replies</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:28:11 +0000</pubDate>
      <link>https://forem.com/sapotacorp/sfmc-reply-mail-management-auto-handle-unsubscribe-replies-4624</link>
      <guid>https://forem.com/sapotacorp/sfmc-reply-mail-management-auto-handle-unsubscribe-replies-4624</guid>
      <description>&lt;p&gt;Mid-market client we worked with sent a Friday newsletter to 200k subscribers. Monday morning, their marketing team would spend 2-3 hours each week sorting through the replies that had accumulated over the weekend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Hundreds of out-of-office autoreplies&lt;/li&gt;
&lt;li&gt;  Dozens of "please unsubscribe me" manual requests&lt;/li&gt;
&lt;li&gt;  Occasional product questions&lt;/li&gt;
&lt;li&gt;  Spam replies from compromised subscriber accounts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The manual unsubscribe requests were the critical ones. Miss one and you're out of CAN-SPAM compliance. &lt;strong&gt;Reply Mail Management (RMM)&lt;/strong&gt; is SFMC's automated handler for this.&lt;/p&gt;

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

&lt;p&gt;RMM is enabled at the account level. When enabled, it can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Auto-reply&lt;/strong&gt; to incoming replies with a standard message ("Thank you for your email. This inbox is not monitored. For support, please contact &lt;a href="mailto:support@company.com"&gt;support@company.com&lt;/a&gt;.")&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Keyword-based unsubscribe detection&lt;/strong&gt; - if the reply subject or body contains terms like "unsubscribe," "opt out," "remove me," RMM automatically unsubscribes the subscriber and records the event.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Forward&lt;/strong&gt; replies to a monitored team inbox when the reply doesn't match auto-handling rules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Configure at: Email Studio &amp;gt; Admin &amp;gt; Reply Mail Management.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "RMM" unsubscribe reason in tracking
&lt;/h2&gt;

&lt;p&gt;When a subscriber's unsubscribe comes through RMM's keyword detection, the unsubscribe is recorded with reason &lt;strong&gt;"RMM"&lt;/strong&gt; in the tracking data.&lt;/p&gt;

&lt;p&gt;Confusing case: the account doesn't have RMM enabled, but "RMM" still shows up as a reason in unsubscribe tracking. This happens because some email clients (Gmail, Apple Mail) auto-include a &lt;strong&gt;List-Unsubscribe header&lt;/strong&gt; in every message. When a subscriber clicks the client's built-in unsubscribe UI (one-click, no landing page), SFMC receives the request via this header and logs it as "RMM."&lt;/p&gt;

&lt;p&gt;If you see RMM reasons but haven't configured RMM, it's the List-Unsubscribe header doing its job. Don't panic; it's a legitimate unsubscribe channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration patterns
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Auto-reply on
&lt;/h3&gt;

&lt;p&gt;Useful when From addresses are &lt;code&gt;noreply@&lt;/code&gt; style but clients still want to acknowledge replies gracefully. Message should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Confirm receipt&lt;/li&gt;
&lt;li&gt;  Route to the right support channel&lt;/li&gt;
&lt;li&gt;  Not promise a human response if none will come&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Keyword detection on
&lt;/h3&gt;

&lt;p&gt;Default keyword list covers "unsubscribe," "stop," "opt out," "remove," and variations. Can be extended.&lt;/p&gt;

&lt;p&gt;Keep in mind: aggressive keyword detection can trigger on legitimate conversation. "Please don't stop sending me these, they're great!" contains "stop." Review tracking occasionally for false-positive unsubscribes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forward on
&lt;/h3&gt;

&lt;p&gt;Replies that don't match auto-handling rules forward to a monitored team inbox. Set this to a distribution list (&lt;code&gt;marketing-replies@company.com&lt;/code&gt;) rather than an individual's inbox.&lt;/p&gt;

&lt;h2&gt;
  
  
  List-Unsubscribe header
&lt;/h2&gt;

&lt;p&gt;Modern email clients add a one-click unsubscribe at the top of emails (outside the message body). SFMC supports the List-Unsubscribe header automatically for commercial sends.&lt;/p&gt;

&lt;p&gt;When a subscriber uses the client's built-in unsubscribe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  SFMC receives an email-based unsubscribe request on a reserved address&lt;/li&gt;
&lt;li&gt;  RMM processes it (even without a configured RMM profile)&lt;/li&gt;
&lt;li&gt;  Subscriber is unsubscribed, logged as "RMM"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This header has become a deliverability signal. Gmail specifically favors senders who support it cleanly. If for some reason a client wants to disable it, deliverability may suffer. Don't disable it without a strong reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common issues
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hundreds of autoreply bounces filling the Reply folder
&lt;/h3&gt;

&lt;p&gt;"Out of office" replies from thousands of subscribers clog the reply processing. RMM can auto-delete these based on subject patterns like "Out of Office" or "Auto Reply."&lt;/p&gt;

&lt;h3&gt;
  
  
  Unsubscribe keyword triggers on support questions
&lt;/h3&gt;

&lt;p&gt;Customer emails: "Can you stop sending me weekly? I only want monthly." The word "stop" triggers RMM unsubscribe, customer intended to downgrade frequency, not unsubscribe entirely.&lt;/p&gt;

&lt;p&gt;Mitigation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Offer a Preference Center in the email footer (many will use it instead of replying)&lt;/li&gt;
&lt;li&gt;  Periodically review unsubscribes in tracking for false positives&lt;/li&gt;
&lt;li&gt;  Consider disabling the most ambiguous keywords if false positives become common&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reply-To on a no-reply address
&lt;/h3&gt;

&lt;p&gt;If Reply-To is set to &lt;code&gt;noreply@company.com&lt;/code&gt; and that address isn't monitored, genuine customer questions vanish. Even if RMM auto-replies, the original question isn't answered.&lt;/p&gt;

&lt;p&gt;Use a monitored Reply-To (e.g. &lt;code&gt;support@company.com&lt;/code&gt;) separate from the From Name. Subscriber experience improves without marketing having to field every reply.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;RMM saves marketing teams from manually processing hundreds of weekly email replies and ensures manual unsubscribe requests are honored within the 10-day CAN-SPAM window. Turn it on during onboarding, configure keyword detection with a sanity-check pass for false positives, and forward ambiguous replies to a monitored distribution list. The "RMM" entries in tracking might come from RMM itself or from the List-Unsubscribe header; both are legitimate.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Setting up SFMC reply handling workflows?&lt;/strong&gt; Our Salesforce team configures RMM, List-Unsubscribe headers, and reply triage on production Marketing Cloud engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Three Unsubscribe Levels in SFMC: Global, Account, Publication</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:27:50 +0000</pubDate>
      <link>https://forem.com/sapotacorp/three-unsubscribe-levels-in-sfmc-global-account-publication-50cm</link>
      <guid>https://forem.com/sapotacorp/three-unsubscribe-levels-in-sfmc-global-account-publication-50cm</guid>
      <description>&lt;p&gt;Client reports: "I can't get email to send to subscriber X. Their record in the DE is there, Active status, email address correct. What's wrong?"&lt;/p&gt;

&lt;p&gt;You check the DE - subscriber is there. You check the sendable setting - correct. You check the email address - valid. Nothing obviously wrong, yet email doesn't arrive.&lt;/p&gt;

&lt;p&gt;The cause is almost always one of SFMC's three unsubscribe levels, and knowing which one saves you the hour we wasted the first time we hit this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Level 1: Global Unsubscribe
&lt;/h2&gt;

&lt;p&gt;The subscriber has opted out of &lt;strong&gt;every Marketing Cloud account that uses SFMC&lt;/strong&gt;. Not just this brand - every brand.&lt;/p&gt;

&lt;p&gt;Example: Subscriber A globally unsubscribed from Cloud Kicks's emails a year ago. Cloud Kicks uses SFMC. Later, Northern Trail Outfitters (different company, different SFMC account) imports Subscriber A and tries to send. SFMC blocks the send.&lt;/p&gt;

&lt;p&gt;This is the most confusing case because the subscriber is "Active" in your account's records - but Global Unsubscribe is platform-level and overrides the account-level view.&lt;/p&gt;

&lt;p&gt;How to check: there's no direct UI for "is this subscriber globally unsubscribed." You can verify via tracking records - if Sent count is 0 and the subscriber is Active, Global Unsubscribe is a strong candidate. Open a support case with Salesforce to confirm.&lt;/p&gt;

&lt;p&gt;Global Unsubscribe is rare. If it turns out to be the cause, there's no override - it's the subscriber's platform-level decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Level 2: Primary (Account-level) Unsubscribe
&lt;/h2&gt;

&lt;p&gt;The subscriber has opted out of &lt;strong&gt;every email from this brand/account&lt;/strong&gt;, but may still receive email from other brands using SFMC.&lt;/p&gt;

&lt;p&gt;This is the most common unsubscribe, triggered when a subscriber clicks "Unsubscribe from all" in a Preference Center or the email footer.&lt;/p&gt;

&lt;p&gt;Status in &lt;strong&gt;All Subscribers&lt;/strong&gt; flips to &lt;code&gt;Unsubscribed&lt;/code&gt;. Future marketing sends skip this subscriber entirely. Transactional sends can still reach them if they're in a Send Classification marked Transactional.&lt;/p&gt;

&lt;p&gt;How to check: Email Studio &amp;gt; Subscribers &amp;gt; All Subscribers &amp;gt; search by Subscriber Key or email. If Status shows &lt;code&gt;Unsubscribed&lt;/code&gt;, you found it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Level 3: List Unsubscribe (Publication List)
&lt;/h2&gt;

&lt;p&gt;The subscriber has opted out of &lt;strong&gt;one specific communication category&lt;/strong&gt; but still receives others from the same brand.&lt;/p&gt;

&lt;p&gt;Example: unsubscribed from "Weekly Promotions" Publication List, but still receives "Monthly Newsletter" and "Order Confirmations."&lt;/p&gt;

&lt;p&gt;Set up via &lt;strong&gt;Publication Lists&lt;/strong&gt; (Email Studio &amp;gt; Subscribers &amp;gt; Publication Lists). Each send is associated with a specific Publication List, and the subscriber's opt-out per-list is honored automatically.&lt;/p&gt;

&lt;p&gt;How to check: look at the Publication List associated with the send, see if the subscriber is unsubscribed from it. Can also check tracking - &lt;code&gt;_ListSubscribers&lt;/code&gt; or the Publication List detail UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Diagnosis flow
&lt;/h2&gt;

&lt;p&gt;When a subscriber should be receiving email but isn't:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Is the DE sendable?&lt;/strong&gt; Check Is Sendable flag and Send Relationship.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Is the subscriber status Active in All Subscribers?&lt;/strong&gt; If not, Primary Unsubscribe - they unsubscribed from the account.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Is the send's Publication List excluding them?&lt;/strong&gt; Check Publication List memberships.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Is it possibly a Global Unsubscribe?&lt;/strong&gt; Rare, but check via Salesforce support if the first three check out.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;90% of cases resolve at step 2 or 3.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference summary
&lt;/h2&gt;

&lt;p&gt;Level&lt;/p&gt;

&lt;p&gt;Scope&lt;/p&gt;

&lt;p&gt;Where it's tracked&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Global&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every SFMC platform account&lt;/p&gt;

&lt;p&gt;Global Unsubscribe list (platform-level)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Primary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This entire account / brand&lt;/p&gt;

&lt;p&gt;All Subscribers - status: &lt;code&gt;Unsubscribed&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;List&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One Publication List&lt;/p&gt;

&lt;p&gt;Publication List membership&lt;/p&gt;

&lt;h2&gt;
  
  
  When to set up Publication Lists
&lt;/h2&gt;

&lt;p&gt;If the client wants granular unsubscribe (subscribers opt out of weekly promos but keep monthly newsletter), Publication Lists are required. Without them, every unsubscribe is an all-or-nothing Primary Unsubscribe.&lt;/p&gt;

&lt;p&gt;For B2C with multiple communication categories, set up Publication Lists early:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Weekly Newsletter&lt;/li&gt;
&lt;li&gt;  Promotional Offers&lt;/li&gt;
&lt;li&gt;  Product Updates&lt;/li&gt;
&lt;li&gt;  Birthday Campaigns&lt;/li&gt;
&lt;li&gt;  Survey Invitations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each send gets assigned to a Publication List at send time. Subscribers who opt out of one still receive the others.&lt;/p&gt;

&lt;h2&gt;
  
  
  The CAN-SPAM compliance note
&lt;/h2&gt;

&lt;p&gt;All three unsubscribe levels must process requests within &lt;strong&gt;10 business days&lt;/strong&gt; per CAN-SPAM. SFMC processes near-instantly by default; custom Preference Centers that stage requests asynchronously need to respect this window.&lt;/p&gt;

&lt;p&gt;Test before production: submit a test unsubscribe, verify the subscriber's status changes in All Subscribers within minutes, and confirm the next test send skips them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;When a subscriber isn't receiving email they should, SFMC is almost always respecting an unsubscribe somewhere - just not the level you looked at. Walk through Primary (All Subscribers status) first, then Publication List membership, then Global as a last resort. Five minutes of checklist work versus an afternoon of random hypothesizing.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Debugging SFMC send failures on specific subscribers?&lt;/strong&gt; Our Salesforce team runs audits, consent tracing, and Preference Center implementations on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Marketing Cloud Connect: When You Need It, When You Don't</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:22:24 +0000</pubDate>
      <link>https://forem.com/sapotacorp/marketing-cloud-connect-when-you-need-it-when-you-dont-5g1j</link>
      <guid>https://forem.com/sapotacorp/marketing-cloud-connect-when-you-need-it-when-you-dont-5g1j</guid>
      <description>&lt;p&gt;On new engagements where the client runs both Salesforce CRM and Marketing Cloud, one of the first architecture decisions is: install &lt;strong&gt;Marketing Cloud Connect&lt;/strong&gt; (MC Connect) or build a custom integration?&lt;/p&gt;

&lt;p&gt;MC Connect is the official bridge - data flows from CRM to SFMC as Synchronized Data Extensions, actions in SFMC can update CRM records. It's the "correct" path for most cases, but not all. Here's how we decide.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MC Connect actually does
&lt;/h2&gt;

&lt;p&gt;Once installed in the Salesforce CRM and configured in SFMC:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;CRM data flows into SFMC&lt;/strong&gt; as Synchronized Data Extensions - readable by Journey Builder, Automation Studio, and AMPscript.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;SFMC actions can update CRM records&lt;/strong&gt; - a Salesforce Activity in a Journey can flip a Contact field, create a Task, or log an event.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Journeys can be triggered from CRM events&lt;/strong&gt; - "Opportunity closed won" kicks off an onboarding sequence.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Distributed Marketing&lt;/strong&gt; lets sales reps send SFMC templates from within the CRM UI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No custom code, no webhooks, no external integration layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  When MC Connect is the right call
&lt;/h2&gt;

&lt;p&gt;Requirement&lt;/p&gt;

&lt;p&gt;MC Connect?&lt;/p&gt;

&lt;p&gt;Client uses Salesforce CRM and wants Contact/Lead data in email personalization&lt;/p&gt;

&lt;p&gt;Yes&lt;/p&gt;

&lt;p&gt;Trigger Journey from CRM events (Opportunity stage change, Case created)&lt;/p&gt;

&lt;p&gt;Yes&lt;/p&gt;

&lt;p&gt;Update CRM records when a subscriber takes action in email&lt;/p&gt;

&lt;p&gt;Yes&lt;/p&gt;

&lt;p&gt;Sales reps sending branded templates from within the CRM&lt;/p&gt;

&lt;p&gt;Yes&lt;/p&gt;

&lt;p&gt;If any of these are in scope, MC Connect is almost always cheaper than building a custom integration.&lt;/p&gt;

&lt;h2&gt;
  
  
  When you don't need MC Connect
&lt;/h2&gt;

&lt;p&gt;Scenario&lt;/p&gt;

&lt;p&gt;MC Connect?&lt;/p&gt;

&lt;p&gt;Client uses SFMC standalone, no Salesforce CRM&lt;/p&gt;

&lt;p&gt;No&lt;/p&gt;

&lt;p&gt;Client has a CRM but syncs data via existing file drops or a custom API&lt;/p&gt;

&lt;p&gt;No - don't replace a working integration&lt;/p&gt;

&lt;p&gt;Client wants only one-way data flow with real-time requirements beyond MC Connect's sync cycles&lt;/p&gt;

&lt;p&gt;No - API pattern is better&lt;/p&gt;

&lt;p&gt;Client uses a non-Salesforce CRM (HubSpot, Dynamics)&lt;/p&gt;

&lt;p&gt;No - MC Connect is Salesforce-CRM-specific&lt;/p&gt;

&lt;p&gt;For clients on other CRMs, the integration is either custom (REST API against SFMC's Fuel REST API), file-based (nightly exports from the CRM, SFTP to SFMC), or through a middleware platform (MuleSoft, Boomi, Workato).&lt;/p&gt;

&lt;h2&gt;
  
  
  Discovery questions to ask
&lt;/h2&gt;

&lt;p&gt;Before deciding, we ask the client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ ] Do you currently use Salesforce Sales/Service/Experience Cloud?
[ ] If yes, is MC Connect already installed and configured?
[ ] Is integration with CRM in scope for this project?
[ ] What's the expected frequency of CRM-to-SFMC data sync?
    - Near real-time (minutes)?
    - Hourly?
    - Daily is enough?
[ ] Any requirement to trigger SFMC actions from CRM events?
[ ] Any requirement to push data from SFMC back into CRM?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Answers determine both whether to use MC Connect and how to configure it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What MC Connect doesn't solve
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Real-time requirements below the sync cycle.&lt;/strong&gt; Synchronized DEs typically refresh every 15 minutes to a few hours. If the email needs current-account-balance data that can't be stale by 10 minutes, use a direct API lookup at send time, not Synchronized DE.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Non-Salesforce data.&lt;/strong&gt; If the client's loyalty data lives in a third-party loyalty platform, MC Connect doesn't help. That data arrives via file or API, not through the MC Connect bridge.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Complex transformations.&lt;/strong&gt; MC Connect maps CRM object fields 1:1 into Synchronized DEs. Complex joins or reshaping happen downstream via SQL Query Activity on SFMC's side.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cost consideration
&lt;/h2&gt;

&lt;p&gt;MC Connect itself is a feature of Marketing Cloud licensing - no separate cost for most editions. The cost is time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Install the MC Connect package in Salesforce CRM (straightforward).&lt;/li&gt;
&lt;li&gt;  Configure the Integration User with the right permissions (most setup time).&lt;/li&gt;
&lt;li&gt;  Set up the Object and Field syncs for each CRM object in scope.&lt;/li&gt;
&lt;li&gt;  Test the sync in a sandbox before production.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Typical setup: 1-3 days of configuration + testing for a straightforward case (Contact + Lead sync). More if there are many custom objects or permissions take multiple iterations to get right.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;MC Connect is the default choice when Salesforce CRM is in the picture and any of the integration use cases apply. Skip it only when the client's CRM isn't Salesforce, when an existing integration is working fine, or when requirements exceed what MC Connect can do. Answer the discovery questions early so this decision doesn't get remade mid-build.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Scoping an SFMC + Salesforce CRM integration?&lt;/strong&gt; Our Salesforce team sets up MC Connect, Synchronized Data Extensions, and hybrid integrations on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Synchronized Data Extensions: Reading Salesforce CRM Data in SFMC</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:22:03 +0000</pubDate>
      <link>https://forem.com/sapotacorp/synchronized-data-extensions-reading-salesforce-crm-data-in-sfmc-2384</link>
      <guid>https://forem.com/sapotacorp/synchronized-data-extensions-reading-salesforce-crm-data-in-sfmc-2384</guid>
      <description>&lt;p&gt;On a typical engagement with Marketing Cloud Connect installed, the most common need is: send an email that personalizes with the customer's name, their assigned sales rep, and their account information. That data all lives in Salesforce CRM Contact and Account objects. Without MC Connect you'd export and re-import it daily. With MC Connect, it flows automatically into a &lt;strong&gt;Synchronized Data Extension&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here's how to configure it and the mistakes we still fix on audits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration: Contact Builder &amp;gt; Data Sources &amp;gt; Salesforce Objects
&lt;/h2&gt;

&lt;p&gt;Once MC Connect is installed, go to &lt;strong&gt;Contact Builder &amp;gt; Data Sources &amp;gt; Salesforce Objects&lt;/strong&gt; in SFMC. Pick which CRM objects to sync and which fields to include:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Salesforce Contact Object
  Fields synced:
  - Id              -&amp;gt; ContactID
  - FirstName       -&amp;gt; FirstName
  - LastName        -&amp;gt; LastName
  - Email           -&amp;gt; EmailAddress
  - AccountName     -&amp;gt; CompanyName
  - Owner.Name      -&amp;gt; SalesRepName
  - Contract_Type__c -&amp;gt; ContractType  (custom field)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SFMC creates a Synchronized Data Extension for each object you enable. The DE name is usually the object name prefixed with an underscore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reading Synchronized DE data in an email
&lt;/h2&gt;

&lt;p&gt;AMPscript reads values from Synchronized DEs just like any other DE:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%%[
SET @repName = AttributeValue("SalesRepName")
SET @company = AttributeValue("CompanyName")
]%%

Hi %%FirstName%%,

Your account manager at %%=v(@company)=%% is %%=v(@repName)=%%.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the Synchronized DE is used as the Journey's entry source or the Send's audience, the subscriber's CRM data is available via Personalization Strings or AMPscript at send time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three mistakes we still see
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Trying to edit the Synchronized DE manually
&lt;/h3&gt;

&lt;p&gt;Synchronized DEs are read-only from SFMC's perspective. You can't add fields, change data types, or manually edit rows. Any change attempts either fail silently or get overwritten on the next sync cycle.&lt;/p&gt;

&lt;p&gt;The change path is always:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Add the field to the CRM object (or enable an existing field).&lt;/li&gt;
&lt;li&gt; Update the Synchronized DE sync config in Contact Builder to include the new field.&lt;/li&gt;
&lt;li&gt; Wait for the next sync cycle.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Teams that try to shortcut by adding a column directly to the Synchronized DE are surprised when it vanishes. Not a bug - expected behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mistake 2: Field needed but sync not enabled
&lt;/h3&gt;

&lt;p&gt;Journey Builder or Email personalization shows the field empty. Check the sync configuration - is the field checked in Contact Builder? Just because it exists on the CRM object doesn't mean it syncs. Fields must be explicitly selected.&lt;/p&gt;

&lt;p&gt;Rule of thumb on new setup: sync only the fields you actually need, not "sync everything just in case." Too-wide syncs clutter the schema and slow cycles.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mistake 3: Relying on sync cycles for real-time data
&lt;/h3&gt;

&lt;p&gt;Synchronized DE sync runs on a cycle - typically 15 minutes to a few hours depending on configuration and volume. Not real-time.&lt;/p&gt;

&lt;p&gt;Use cases that need true real-time data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Account balance lookups (bank apps).&lt;/li&gt;
&lt;li&gt;  Order status at send time (confirmation email for an order placed 2 minutes ago).&lt;/li&gt;
&lt;li&gt;  Loyalty point balance at send time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these, don't use Synchronized DE - do an API lookup at send time or have upstream systems push to a non-synchronized DE via REST API.&lt;/p&gt;

&lt;h2&gt;
  
  
  The data flow direction
&lt;/h2&gt;

&lt;p&gt;Synchronized DE is &lt;strong&gt;CRM -&amp;gt; SFMC only&lt;/strong&gt;. Changes in the Synchronized DE don't flow back to the CRM. If you need bidirectional updates (email unsubscribe -&amp;gt; update CRM Contact's Email_Opt_Out field), that's a separate mechanism using &lt;strong&gt;Salesforce Activity&lt;/strong&gt; inside a Journey (covered in a separate post).&lt;/p&gt;

&lt;h2&gt;
  
  
  Which objects are most commonly synced
&lt;/h2&gt;

&lt;p&gt;CRM Object&lt;/p&gt;

&lt;p&gt;Why sync&lt;/p&gt;

&lt;p&gt;Contact&lt;/p&gt;

&lt;p&gt;Primary subscriber data: name, email, company, rep&lt;/p&gt;

&lt;p&gt;Lead&lt;/p&gt;

&lt;p&gt;Pre-conversion prospects who should receive nurture emails&lt;/p&gt;

&lt;p&gt;Account&lt;/p&gt;

&lt;p&gt;Company-level data for account-based personalization&lt;/p&gt;

&lt;p&gt;Opportunity&lt;/p&gt;

&lt;p&gt;Deal-stage triggers for onboarding / upsell campaigns&lt;/p&gt;

&lt;p&gt;Case (Service Cloud)&lt;/p&gt;

&lt;p&gt;Customer service follow-up emails&lt;/p&gt;

&lt;p&gt;Custom objects&lt;/p&gt;

&lt;p&gt;Loyalty tiers, product preferences, industry-specific data&lt;/p&gt;

&lt;p&gt;Start small - Contact + Lead - on a new engagement. Add more objects as campaigns require them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Planning sync frequency
&lt;/h2&gt;

&lt;p&gt;Contact Builder lets you configure sync frequency per object. Trade-offs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;More frequent&lt;/strong&gt;: fresher data, higher API call consumption, more background load.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Less frequent&lt;/strong&gt;: staler data, lower load.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Default for most Contact syncs: 15 minutes. Enough for daily campaigns and most triggered sends. Adjust down only if latency matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Synchronized DEs are the main value prop of MC Connect. Configure with the minimum field set you need, never edit them manually in SFMC, and pair with direct API lookups if you need true real-time freshness. Everything else in your Journey and email personalization just works once this is in place.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Configuring an SFMC + Salesforce CRM sync?&lt;/strong&gt; Our Salesforce team sets up Synchronized Data Extensions and field mapping strategies on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
    <item>
      <title>Triggering SFMC Journeys from Salesforce CRM Events</title>
      <dc:creator>SapotaCorp</dc:creator>
      <pubDate>Sun, 24 May 2026 12:16:36 +0000</pubDate>
      <link>https://forem.com/sapotacorp/triggering-sfmc-journeys-from-salesforce-crm-events-48po</link>
      <guid>https://forem.com/sapotacorp/triggering-sfmc-journeys-from-salesforce-crm-events-48po</guid>
      <description>&lt;p&gt;When Sales Cloud marks an Opportunity as "Closed Won," the customer should immediately receive the first email in an onboarding series. No marketing team middleman. No nightly export job.&lt;/p&gt;

&lt;p&gt;That's exactly what &lt;strong&gt;Salesforce Entry Source&lt;/strong&gt; in Journey Builder is for - trigger the Journey when a CRM record matches a filter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration
&lt;/h2&gt;

&lt;p&gt;In Journey Builder, create a new Journey, choose &lt;strong&gt;Salesforce&lt;/strong&gt; as the Entry Source:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Journey Builder -&amp;gt; New Journey -&amp;gt; Entry Source: Salesforce
  Object: Opportunity
  Filter: Stage = "Closed Won"
  Related Contact: Opportunity -&amp;gt; Contact (lookup)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When any Opportunity's Stage changes to Closed Won, SFMC receives the event via MC Connect, resolves the associated Contact via the lookup, and adds the Contact to the Journey.&lt;/p&gt;

&lt;p&gt;That Contact then flows through the Journey's Send Email, Wait, and Decision Split steps like any other subscriber.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common triggers by Salesforce Cloud
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Sales Cloud
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Opportunity Stage = "Closed Won"   -&amp;gt; Onboarding series for new customer
Lead Status = "Qualified"          -&amp;gt; Nurture sequence
Contract signed                    -&amp;gt; Activation series
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Service Cloud
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Case created                       -&amp;gt; Confirmation email with case number
Case Status = "Resolved"           -&amp;gt; Closure email + satisfaction survey
Case escalated                     -&amp;gt; Apology + update email
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Experience Cloud (Community)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User registers in portal           -&amp;gt; Welcome series
Post without reply after 48h       -&amp;gt; Reminder to moderator
Member inactive 30 days            -&amp;gt; Re-engagement
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each of these is a standard pattern we've shipped on engagements. The trigger object and filter change; the Journey structure is roughly the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two mistakes that bite first-time builders
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mistake 1: Forgetting the Contact lookup path
&lt;/h3&gt;

&lt;p&gt;The trigger object might be Opportunity or Lead - not always Contact directly. Journey Builder needs to resolve the subscriber's email, so there must be a path from the trigger object to a Contact with an Email field.&lt;/p&gt;

&lt;p&gt;Opportunity -&amp;gt; Primary Contact -&amp;gt; Email. Lead -&amp;gt; Email is direct. Case -&amp;gt; Contact -&amp;gt; Email.&lt;/p&gt;

&lt;p&gt;Forgetting to configure the lookup leaves the Journey with no target subscriber. Behavior varies: sometimes Journey sends nothing, sometimes it errors, rarely is the message obvious.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mistake 2: Re-entry on CRM state churn
&lt;/h3&gt;

&lt;p&gt;Opportunity flips between Closed Won and Reopened multiple times (common during contract negotiations). Each time it hits Closed Won, the Contact re-enters the Journey and receives the onboarding series again.&lt;/p&gt;

&lt;p&gt;Fix: &lt;strong&gt;Journey Settings &amp;gt; Contact Entry Mode &amp;gt; No Re-entry&lt;/strong&gt;. Set this before launch. Once the Contact has entered this Journey, re-triggering doesn't add them again.&lt;/p&gt;

&lt;p&gt;Exception: if the Journey is designed to repeat (annual renewal reminder), you want Re-entry on - but that's a deliberate choice, not a default.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the CRM user sees
&lt;/h2&gt;

&lt;p&gt;Salesforce CRM users don't interact with Journey Builder directly. The flow looks like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Sales rep marks the Opportunity as Closed Won.&lt;/li&gt;
&lt;li&gt; MC Connect fires the event to SFMC.&lt;/li&gt;
&lt;li&gt; Journey Builder adds the Contact.&lt;/li&gt;
&lt;li&gt; Customer receives the first onboarding email within minutes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From the sales rep's perspective, it "just happens" - no additional action required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing before going live
&lt;/h2&gt;

&lt;p&gt;Always test in a Salesforce sandbox connected to an SFMC sandbox/non-production BU:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;[ ] Create a test Opportunity with a Contact that has a deliverable email.
[ ] Change the Opportunity Stage to the trigger condition.
[ ] Verify in Journey Builder: the Contact appears in the Journey.
[ ] Verify the email arrives.
[ ] Repeat with edge cases: Opportunity without Primary Contact, Contact with missing Email field, Contact that's already unsubscribed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only after the full sandbox cycle passes is it safe to flip to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaway
&lt;/h2&gt;

&lt;p&gt;Triggering from CRM events is the key integration pattern MC Connect unlocks. Configure the trigger object + filter + Contact lookup carefully, set No Re-entry unless repetition is intentional, and test every edge case in sandbox before production. Once wired, Sales and Service teams get automated customer communication without any new process to learn.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Building CRM-triggered Journeys?&lt;/strong&gt; Our Salesforce team configures Salesforce Entry Sources, Journey logic, and sandbox testing on production engagements. &lt;a href="https://www.sapotacorp.vn/contact" rel="noopener noreferrer"&gt;Get in touch -&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See our full &lt;a href="https://www.sapotacorp.vn/service" rel="noopener noreferrer"&gt;platform services&lt;/a&gt; for the stack we cover.&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
  </channel>
</rss>
