> ## Documentation Index
> Fetch the complete documentation index at: https://docs.parsalink.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Email Tracking & Delivery

> Monitor email opens, clicks, and delivery status. Manage bounce handling and suppression lists to protect your sender reputation.

<div
  style={{ 
background: "linear-gradient(135deg, #143D4E 0%, #1C758A 55%, #30C8CA 100%)",
borderRadius: "24px",
padding: "28px",
marginBottom: "32px",
color: "#FFFFFF",
boxShadow: "0 24px 60px rgba(20, 61, 78, 0.25)",
position: "relative",
overflow: "hidden",
border: "1px solid rgba(255,255,255,0.08)"
}}
>
  <div
    style={{
position: "absolute",
top: "-40px",
right: "-40px",
width: "180px",
height: "180px",
background: "rgba(255,255,255,0.08)",
borderRadius: "999px"
}}
  />

  <div
    style={{
position: "absolute",
bottom: "-60px",
left: "-30px",
width: "160px",
height: "160px",
background: "rgba(255,255,255,0.06)",
borderRadius: "999px"
}}
  />

  <div
    style={{
display: "inline-flex",
alignItems: "center",
background: "rgba(255,255,255,0.15)",
color: "#FFFFFF",
padding: "6px 14px",
borderRadius: "999px",
fontSize: "12px",
fontWeight: "700",
marginBottom: "14px",
letterSpacing: "0.08em",
textTransform: "uppercase"
}}
  >
    EMAIL TRACKING & DELIVERY
  </div>

  <p
    style={{ 
margin: 0, 
fontSize: "16px", 
lineHeight: "1.9",
maxWidth: "760px",
color: "rgba(255,255,255,0.95)"
}}
  >
    Monitor email opens, clicks, and delivery status. Manage bounce handling and suppression lists to protect your sender reputation.
  </p>
</div>

<div
  style={{ 
display: "inline-flex",
alignItems: "center",
gap: "8px",
background: "rgba(28,117,138,0.12)",
padding: "6px 16px",
borderRadius: "999px",
marginBottom: "20px"
}}
>
  <span
    style={{ 
width: "8px", 
height: "8px", 
background: "#30C8CA", 
borderRadius: "999px",
display: "inline-block"
}}
  />

  <span style={{ 
    color: "#1C758A", 
    fontSize: "12px", 
    fontWeight: "700", 
    letterSpacing: "0.08em", 
    textTransform: "uppercase" 
  }}>Tracking</span>
</div>

## Email Tracking

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "18px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>📊</span> ParsaLink tracks the following events for every email sent through the platform:
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
overflowX: "auto",
marginBottom: "20px",
border: "1px solid #E5E7EB",
borderRadius: "20px"
}}
>
  <table style={{ width: "100%", borderCollapse: "collapse" }}>
    <thead>
      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <th style={{ padding: "16px 20px", textAlign: "left", fontWeight: "600", fontSize: "14px" }}>Event</th>
        <th style={{ padding: "16px 20px", textAlign: "left", fontWeight: "600", fontSize: "14px" }}>Description</th>
      </tr>
    </thead>

    <tbody>
      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <td style={{ padding: "14px 20px", fontWeight: "500" }}><strong style={{ color: "#1C758A" }}>Sent</strong></td>
        <td style={{ padding: "14px 20px" }}>Email was accepted by the sending server</td>
      </tr>

      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <td style={{ padding: "14px 20px", fontWeight: "500" }}><strong style={{ color: "#1C758A" }}>Delivered</strong></td>
        <td style={{ padding: "14px 20px" }}>Confirmed delivery to the recipient's inbox</td>
      </tr>

      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <td style={{ padding: "14px 20px", fontWeight: "500" }}><strong style={{ color: "#1C758A" }}>Opened</strong></td>
        <td style={{ padding: "14px 20px" }}>Recipient opened the email (tracked via a 1×1 pixel)</td>
      </tr>

      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <td style={{ padding: "14px 20px", fontWeight: "500" }}><strong style={{ color: "#1C758A" }}>Clicked</strong></td>
        <td style={{ padding: "14px 20px" }}>Recipient clicked a tracked link in the email</td>
      </tr>

      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <td style={{ padding: "14px 20px", fontWeight: "500" }}><strong style={{ color: "#FF6F61" }}>Bounced</strong></td>
        <td style={{ padding: "14px 20px" }}>Email could not be delivered (soft or hard bounce)</td>
      </tr>

      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <td style={{ padding: "14px 20px", fontWeight: "500" }}><strong style={{ color: "#FF6F61" }}>Unsubscribed</strong></td>
        <td style={{ padding: "14px 20px" }}>Recipient clicked the unsubscribe link</td>
      </tr>

      <tr style={{ borderBottom: "1px solid #E5E7EB" }}>
        <td style={{ padding: "14px 20px", fontWeight: "500" }}><strong style={{ color: "#FF6F61" }}>Spam Complaint</strong></td>
        <td style={{ padding: "14px 20px" }}>Recipient marked the email as spam</td>
      </tr>
    </tbody>
  </table>
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "32px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)",
borderLeft: "4px solid #30C8CA"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>✓</span> All events are visible on the contact or lead's <strong>Activity Timeline</strong> in real time.
</div>

***

<div
  style={{ 
display: "inline-flex",
alignItems: "center",
gap: "8px",
background: "rgba(28,117,138,0.12)",
padding: "6px 16px",
borderRadius: "999px",
marginBottom: "20px"
}}
>
  <span
    style={{ 
width: "8px", 
height: "8px", 
background: "#30C8CA", 
borderRadius: "999px",
display: "inline-block"
}}
  />

  <span style={{ 
    color: "#1C758A", 
    fontSize: "12px", 
    fontWeight: "700", 
    letterSpacing: "0.08em", 
    textTransform: "uppercase" 
  }}>Delivery</span>
</div>

## Viewing Delivery Status

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "16px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>📬</span> From the email sending history page (<strong>Email → Sent</strong>), you can see every email sent by your team with its current delivery status. Filter by:
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "16px",
boxShadow: "0 2px 8px rgba(0,0,0,0.02)"
}}
>
  <div style={{ display: "flex", flexWrap: "wrap", gap: "16px" }}>
    <span style={{ display: "flex", alignItems: "center", gap: "8px" }}><span style={{ color: "#30C8CA" }}>•</span> Date range</span>
    <span style={{ display: "flex", alignItems: "center", gap: "8px" }}><span style={{ color: "#30C8CA" }}>•</span> Sent by (team member)</span>
    <span style={{ display: "flex", alignItems: "center", gap: "8px" }}><span style={{ color: "#30C8CA" }}>•</span> Status (opened, bounced, etc.)</span>
    <span style={{ display: "flex", alignItems: "center", gap: "8px" }}><span style={{ color: "#30C8CA" }}>•</span> Template used</span>
  </div>
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "32px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>🔍</span> Click any email row to see the full delivery log including timestamps for each tracking event.
</div>

***

<div
  style={{ 
display: "inline-flex",
alignItems: "center",
gap: "8px",
background: "rgba(28,117,138,0.12)",
padding: "6px 16px",
borderRadius: "999px",
marginBottom: "20px"
}}
>
  <span
    style={{ 
width: "8px", 
height: "8px", 
background: "#FF6F61", 
borderRadius: "999px",
display: "inline-block"
}}
  />

  <span style={{ 
    color: "#1C758A", 
    fontSize: "12px", 
    fontWeight: "700", 
    letterSpacing: "0.08em", 
    textTransform: "uppercase" 
  }}>Bounces</span>
</div>

## Bounce Handling

### Hard Bounces

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "16px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)",
borderLeft: "4px solid #FF6F61"
}}
>
  <span style={{ color: "#FF6F61", fontWeight: "600", marginRight: "12px" }}>⚠️</span> A <strong>hard bounce</strong> means the email address is permanently invalid — the domain doesn't exist, the mailbox doesn't exist, or the address has been permanently blocked. ParsaLink automatically:
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "16px",
boxShadow: "0 2px 8px rgba(0,0,0,0.02)"
}}
>
  <div style={{ display: "flex", flexDirection: "column", gap: "10px" }}>
    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ background: "#FF6F61", color: "#FFFFFF", width: "22px", height: "22px", borderRadius: "999px", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "11px", fontWeight: "bold" }}>1</span>
      <span>Records the bounce on the contact's activity timeline.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ background: "#FF6F61", color: "#FFFFFF", width: "22px", height: "22px", borderRadius: "999px", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "11px", fontWeight: "bold" }}>2</span>
      <span>Marks the contact's email as <strong>invalid</strong>.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ background: "#FF6F61", color: "#FFFFFF", width: "22px", height: "22px", borderRadius: "999px", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "11px", fontWeight: "bold" }}>3</span>
      <span>Adds the email address to the <strong>suppression list</strong> to prevent future sends.</span>
    </div>
  </div>
</div>

<div
  className="dark:bg-black dark:border-white/10"
  style={{
background: "rgba(255,111,97,0.08)",
border: "1px solid rgba(255,111,97,0.2)",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "24px"
}}
>
  <span style={{ color: "#FF6F61", fontWeight: "600", marginRight: "10px" }}>⚠️</span>
  <span style={{ fontSize: "14px" }}>Hard bounces are a serious deliverability signal. A high bounce rate (above 2%) will damage your sender reputation with ISPs and may get your sending domain or IP flagged. Keep your contact lists clean.</span>
</div>

### Soft Bounces

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "32px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>🔄</span> A <strong>soft bounce</strong> indicates a temporary delivery failure — the recipient's mailbox is full, the server was temporarily unavailable, or the message was too large. ParsaLink retries soft bounces automatically. After 3 failed retries, the email is marked as permanently bounced.
</div>

***

<div
  style={{ 
display: "inline-flex",
alignItems: "center",
gap: "8px",
background: "rgba(28,117,138,0.12)",
padding: "6px 16px",
borderRadius: "999px",
marginBottom: "20px"
}}
>
  <span
    style={{ 
width: "8px", 
height: "8px", 
background: "#30C8CA", 
borderRadius: "999px",
display: "inline-block"
}}
  />

  <span style={{ 
    color: "#1C758A", 
    fontSize: "12px", 
    fontWeight: "700", 
    letterSpacing: "0.08em", 
    textTransform: "uppercase" 
  }}>Suppression</span>
</div>

## Suppression Lists

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "16px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>🚫</span> The suppression list is a set of email addresses that ParsaLink will never send to, regardless of what automations or bulk sends are triggered.
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "16px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>➕</span> Addresses are automatically added to the suppression list when:
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "20px",
boxShadow: "0 2px 8px rgba(0,0,0,0.02)"
}}
>
  <div style={{ display: "flex", flexWrap: "wrap", gap: "12px" }}>
    <span style={{ display: "flex", alignItems: "center", gap: "8px" }}><span style={{ color: "#FF6F61" }}>•</span> A hard bounce occurs</span>
    <span style={{ display: "flex", alignItems: "center", gap: "8px" }}><span style={{ color: "#FF6F61" }}>•</span> The recipient clicks an unsubscribe link</span>
    <span style={{ display: "flex", alignItems: "center", gap: "8px" }}><span style={{ color: "#FF6F61" }}>•</span> A spam complaint is received</span>
  </div>
</div>

**Managing the suppression list:**

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "32px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>⚙️</span> Go to <strong>Email → Suppression List</strong> to view all suppressed addresses. You can:
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "32px",
boxShadow: "0 2px 8px rgba(0,0,0,0.02)"
}}
>
  <div style={{ display: "flex", flexDirection: "column", gap: "12px" }}>
    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ color: "#30C8CA", fontSize: "16px" }}>✓</span>
      <span><strong>Search</strong> for a specific email address to check if it's suppressed.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ color: "#30C8CA", fontSize: "16px" }}>✓</span>
      <span><strong>Remove</strong> an address from the suppression list if it was added in error (e.g., a temporary server issue caused a false hard bounce). Use caution — re-adding a truly invalid address will just bounce again.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ color: "#30C8CA", fontSize: "16px" }}>✓</span>
      <span><strong>Add manually</strong> — Add a specific email address to suppress proactively (e.g., a competitor or internal address).</span>
    </div>
  </div>
</div>

***

<div
  style={{ 
display: "inline-flex",
alignItems: "center",
gap: "8px",
background: "rgba(28,117,138,0.12)",
padding: "6px 16px",
borderRadius: "999px",
marginBottom: "20px"
}}
>
  <span
    style={{ 
width: "8px", 
height: "8px", 
background: "#FF6F61", 
borderRadius: "999px",
display: "inline-block"
}}
  />

  <span style={{ 
    color: "#1C758A", 
    fontSize: "12px", 
    fontWeight: "700", 
    letterSpacing: "0.08em", 
    textTransform: "uppercase" 
  }}>Unsubscribe</span>
</div>

## Unsubscribe Handling

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "16px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>📧</span> Any email template that includes <code style={{ background: "rgba(0,0,0,0.05)", padding: "4px 8px", borderRadius: "6px" }}>{'{{unsubscribeLink}}'}</code> provides recipients with a one-click opt-out. When someone unsubscribes:
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "16px",
boxShadow: "0 2px 8px rgba(0,0,0,0.02)"
}}
>
  <div style={{ display: "flex", flexDirection: "column", gap: "10px" }}>
    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ background: "#FF6F61", color: "#FFFFFF", width: "22px", height: "22px", borderRadius: "999px", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "11px", fontWeight: "bold" }}>1</span>
      <span>Their email is added to the suppression list.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ background: "#FF6F61", color: "#FFFFFF", width: "22px", height: "22px", borderRadius: "999px", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "11px", fontWeight: "bold" }}>2</span>
      <span>The contact's <code style={{ background: "rgba(0,0,0,0.05)", padding: "2px 6px", borderRadius: "4px" }}>emailOptOut</code> field is set to <code style={{ background: "rgba(0,0,0,0.05)", padding: "2px 6px", borderRadius: "4px" }}>true</code> in the CRM.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ background: "#FF6F61", color: "#FFFFFF", width: "22px", height: "22px", borderRadius: "999px", display: "inline-flex", alignItems: "center", justifyContent: "center", fontSize: "11px", fontWeight: "bold" }}>3</span>
      <span>A note is added to their activity timeline recording the opt-out event.</span>
    </div>
  </div>
</div>

<div
  className="dark:bg-black dark:border-white/10"
  style={{
background: "rgba(48,200,202,0.08)",
border: "1px solid rgba(48,200,202,0.2)",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "32px"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "10px" }}>📌</span>
  <span style={{ fontSize: "14px" }}>ParsaLink does not automatically add unsubscribe links to transactional or individual emails. You control where the unsubscribe link appears. For marketing and bulk emails, always include it — it's a legal requirement in most jurisdictions (CAN-SPAM, GDPR, CASL).</span>
</div>

***

<div
  style={{ 
display: "inline-flex",
alignItems: "center",
gap: "8px",
background: "rgba(28,117,138,0.12)",
padding: "6px 16px",
borderRadius: "999px",
marginBottom: "20px"
}}
>
  <span
    style={{ 
width: "8px", 
height: "8px", 
background: "#FF6F61", 
borderRadius: "999px",
display: "inline-block"
}}
  />

  <span style={{ 
    color: "#1C758A", 
    fontSize: "12px", 
    fontWeight: "700", 
    letterSpacing: "0.08em", 
    textTransform: "uppercase" 
  }}>Spam</span>
</div>

## Spam Complaint Handling

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "16px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>🚨</span> If a recipient marks your email as spam (via Gmail or Outlook's "Report Spam" button), ParsaLink receives a feedback loop notification (when configured with SES or compatible SMTP providers). The recipient is automatically added to the suppression list and their <code style={{ background: "rgba(0,0,0,0.05)", padding: "2px 6px", borderRadius: "4px" }}>emailOptOut</code> field is set to <code style={{ background: "rgba(0,0,0,0.05)", padding: "2px 6px", borderRadius: "4px" }}>true</code>.
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "32px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#FF6F61", fontWeight: "600", marginRight: "12px" }}>⚠️</span> Spam complaint rates above 0.1% are treated seriously by email providers. If you see a rising complaint rate:
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "32px",
boxShadow: "0 2px 8px rgba(0,0,0,0.02)"
}}
>
  <div style={{ display: "flex", flexDirection: "column", gap: "12px" }}>
    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ color: "#30C8CA", fontSize: "16px" }}>✓</span>
      <span>Review your email content for spam trigger words.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ color: "#30C8CA", fontSize: "16px" }}>✓</span>
      <span>Ensure your recipient list is opted in and engaged.</span>
    </div>

    <div style={{ display: "flex", alignItems: "center", gap: "12px" }}>
      <span style={{ color: "#30C8CA", fontSize: "16px" }}>✓</span>
      <span>Make unsubscribe links easy to find and use.</span>
    </div>
  </div>
</div>

***

<div
  style={{ 
display: "inline-flex",
alignItems: "center",
gap: "8px",
background: "rgba(28,117,138,0.12)",
padding: "6px 16px",
borderRadius: "999px",
marginBottom: "20px"
}}
>
  <span
    style={{ 
width: "8px", 
height: "8px", 
background: "#30C8CA", 
borderRadius: "999px",
display: "inline-block"
}}
  />

  <span style={{ 
    color: "#1C758A", 
    fontSize: "12px", 
    fontWeight: "700", 
    letterSpacing: "0.08em", 
    textTransform: "uppercase" 
  }}>Tracking Pixel</span>
</div>

## Tracking Pixel and Link Tracking

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "16px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>🖼️</span> Open tracking uses an invisible 1×1 pixel image embedded in HTML emails. When the recipient's email client loads the image, an open event is recorded.
</div>

<div
  className="bg-white dark:bg-black dark:border-white/10 dark:text-white [&_*]:dark:text-white"
  style={{
border: "1px solid #E5E7EB",
borderRadius: "20px",
padding: "20px 24px",
marginBottom: "20px",
boxShadow: "0 4px 12px rgba(0,0,0,0.03)"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "12px" }}>🔗</span> Link tracking replaces your URLs with ParsaLink tracking URLs. When a recipient clicks, ParsaLink records the click and redirects them to the original URL within milliseconds.
</div>

<div
  className="dark:bg-black dark:border-white/10"
  style={{
background: "rgba(48,200,202,0.08)",
border: "1px solid rgba(48,200,202,0.2)",
borderRadius: "16px",
padding: "16px 20px",
marginBottom: "20px"
}}
>
  <span style={{ color: "#30C8CA", fontWeight: "600", marginRight: "10px" }}>ℹ️</span>
  <span style={{ fontSize: "14px" }}>Some email clients (including Apple Mail with Mail Privacy Protection enabled) pre-fetch tracking pixels, which can inflate open rates. Click tracking is generally more reliable as a signal of genuine engagement.</span>
</div>

***

## Per-Template Analytics

Every email template carries a dedicated analytics page at **CRM → Emails → Analytics → \[Template]**. It rolls up sends from that template across every contact and surfaces:

* **Stats cards** — sent / delivered / opened / clicked / bounced / complained / replied, with rates
* **Time-series chart** — opens, clicks, and replies plotted by day across the lookback window
* **Recent Sends list** — the last 25 sends with per-recipient delivery state
* **Bounced Recipients** + **Complained Recipients** — quickly find who flagged the template
* **Health Badge** — a single-glance summary (Healthy / At-Risk / Damaging) computed from bounce + complaint rates against your sender reputation

### AI Review

Click **Get AI Review** on any template's analytics page. ParsaLink runs an LLM analysis over the template body, the actual recipient interactions, and the bounce / complaint data, then returns:

* What's likely working (subject line, CTA placement, length, tone)
* What's likely costing you opens or clicks
* Concrete rewrite suggestions you can copy into a new version

The review is grounded in the data you actually have — not generic email-marketing advice — so it's useful even when the template has only a few dozen sends.

***

## The SES Event Pipeline (Workspaces on SES)

Workspaces sending through Amazon SES get a richer feed than basic SMTP can offer.

When SES is configured with a Configuration Set that publishes to SNS, ParsaLink ingests:

1. **Delivery** events → the email reached the recipient's mail server
2. **Bounce** events (hard / soft / transient) → automatically flips affected contacts onto the suppression list for hard bounces
3. **Complaint** events → suppressed immediately + flagged in the per-template analytics
4. **Open** events → tracking pixel rendered in the recipient's client
5. **Click** events → recipient clicked a tracked link

Set up is `Settings → Workspace Email → Advanced → Configuration Set`. The events feed both the per-template analytics page and the contact's activity timeline, so you can drill in from either angle.

***

## Inbound Events from `parsa-assistant@`

Replies routed through your workspace's `parsa-assistant@` address are captured by SES → SNS → ParsaLink. Each inbound email:

* Logs to the matched contact's timeline
* Triggers any active `email_received` automation rules
* Falls back to alerting the contact's assigned user if no automation matches

For larger inbound mail (over 150 KB), SES first stages the raw message in an S3 bucket; ParsaLink fetches the full body from there, processes it, then discards the S3 object. Smaller messages ride entirely in the SNS notification.
