Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion content/docs/platform/integrations/email/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,21 @@
</Tab>
</Tabs>

<Callout type="info">By default, Novu merges override `to` addresses with the subscriber email. Set `replaceToRecipient: true` to send only to the override recipients and omit the subscriber email from `to`. When `replaceToRecipient` is `true`, include at least one of `to`, `cc`, or `bcc` in the email override. If `to` is empty but `cc` or `bcc` is set, Novu uses the `from` address as `to`.</Callout>
<Callout type="info">

**`replaceToRecipient`**

- By default, Novu merges override `to` addresses with the subscriber email.

Check warning on line 209 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L209

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 209, "column": 1}}}, "severity": "WARNING"}
- Set `replaceToRecipient: true` to send only to override recipients. The subscriber email is omitted from `to`. `to` is replaced with the `from` address.

Check warning on line 210 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L210

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 210, "column": 1}}}, "severity": "WARNING"}

Check notice on line 210 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L210

[Google.Passive] In general, use active voice instead of passive voice ('is omitted').
Raw output
{"message": "[Google.Passive] In general, use active voice instead of passive voice ('is omitted').", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 210, "column": 92}}}, "severity": "INFO"}

Check warning on line 210 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L210

[write-good.Passive] 'is omitted' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is omitted' may be passive voice. Use active voice if you can.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 210, "column": 92}}}, "severity": "WARNING"}

Check notice on line 210 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L210

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 210, "column": 92}}}, "severity": "INFO"}

Check notice on line 210 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L210

[Google.Passive] In general, use active voice instead of passive voice ('is replaced').
Raw output
{"message": "[Google.Passive] In general, use active voice instead of passive voice ('is replaced').", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 210, "column": 119}}}, "severity": "INFO"}

Check notice on line 210 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L210

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 210, "column": 119}}}, "severity": "INFO"}

Check warning on line 210 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L210

[write-good.Passive] 'is replaced' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is replaced' may be passive voice. Use active voice if you can.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 210, "column": 119}}}, "severity": "WARNING"}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 The sentence "to is replaced with the from address" is a remnant of the old (now-corrected) behaviour and directly contradicts the fix this PR documents. The bug fix removed the fallback-to-from behaviour: on SMTP, Novu now uses undisclosed-recipients:; instead. Leaving this sentence implies the old fallback still applies, which will confuse readers trying to understand what changed.

Suggested change
- Set `replaceToRecipient: true` to send only to override recipients. The subscriber email is omitted from `to`. `to` is replaced with the `from` address.
- Set `replaceToRecipient: true` to send only to override recipients. The subscriber email is omitted from `to`.
Prompt To Fix With AI
This is a comment left during a code review.
Path: content/docs/platform/integrations/email/index.mdx
Line: 210

Comment:
The sentence "`to` is replaced with the `from` address" is a remnant of the old (now-corrected) behaviour and directly contradicts the fix this PR documents. The bug fix removed the fallback-to-`from` behaviour: on SMTP, Novu now uses `undisclosed-recipients:;` instead. Leaving this sentence implies the old fallback still applies, which will confuse readers trying to understand what changed.

```suggestion
- Set `replaceToRecipient: true` to send only to override recipients. The subscriber email is omitted from `to`.
```

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Cursor

- When `replaceToRecipient` is `true`, include at least one of `to`, `cc`, or `bcc`.

Check warning on line 211 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L211

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 211, "column": 1}}}, "severity": "WARNING"}

Check notice on line 211 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L211

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 211, "column": 29}}}, "severity": "INFO"}

**Empty `to` with cc/bcc (Custom SMTP only)**

Check notice on line 213 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L213

[Google.Parens] Use parentheses judiciously.
Raw output
{"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 213, "column": 26}}}, "severity": "INFO"}

Check notice on line 213 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L213

[Google.Acronyms] Spell out 'SMTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SMTP', if it's unfamiliar to the audience.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 213, "column": 34}}}, "severity": "INFO"}

- Setting `to: []` with `cc` or `bcc` is supported only on **Custom SMTP (Nodemailer)**.

Check warning on line 215 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L215

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 215, "column": 1}}}, "severity": "WARNING"}

Check warning on line 215 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L215

[write-good.Passive] 'is supported' may be passive voice. Use active voice if you can.
Raw output
{"message": "[write-good.Passive] 'is supported' may be passive voice. Use active voice if you can.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 215, "column": 39}}}, "severity": "WARNING"}

Check notice on line 215 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L215

[write-good.E-Prime] Try to avoid using 'is'.
Raw output
{"message": "[write-good.E-Prime] Try to avoid using 'is'.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 215, "column": 39}}}, "severity": "INFO"}

Check notice on line 215 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L215

[Google.Passive] In general, use active voice instead of passive voice ('is supported').
Raw output
{"message": "[Google.Passive] In general, use active voice instead of passive voice ('is supported').", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 215, "column": 39}}}, "severity": "INFO"}

Check notice on line 215 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L215

[Google.Acronyms] Spell out 'SMTP', if it's unfamiliar to the audience.
Raw output
{"message": "[Google.Acronyms] Spell out 'SMTP', if it's unfamiliar to the audience.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 215, "column": 69}}}, "severity": "INFO"}

Check notice on line 215 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L215

[Google.Parens] Use parentheses judiciously.
Raw output
{"message": "[Google.Parens] Use parentheses judiciously.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 215, "column": 74}}}, "severity": "INFO"}
- Novu normalizes an empty `to` to `undisclosed-recipients:;` so the message sends without exposing addresses in the To field.

Check warning on line 216 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L216

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 216, "column": 1}}}, "severity": "WARNING"}
- Other email providers do not support this pattern.

Check warning on line 217 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L217

[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).
Raw output
{"message": "[Novu.BulletStyle] Prefer '*' over '-' for bullet points (ignore inside code fences).", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 217, "column": 1}}}, "severity": "WARNING"}

Check notice on line 217 in content/docs/platform/integrations/email/index.mdx

View workflow job for this annotation

GitHub Actions / vale

[vale] content/docs/platform/integrations/email/index.mdx#L217

[Google.Contractions] Use 'don't' instead of 'do not'.
Raw output
{"message": "[Google.Contractions] Use 'don't' instead of 'do not'.", "location": {"path": "content/docs/platform/integrations/email/index.mdx", "range": {"start": {"line": 217, "column": 25}}}, "severity": "INFO"}

</Callout>

### Targeting a specific provider

Expand Down
Loading