Repository navigation
fix(website): correct Resend, Brevo, Postmark and Mailgun facts; SES pricing for the calculator's markdown - #252
Merged
Merged
Conversation
…er name Resend's API default is 10 requests per second per team on every plan, raisable for trusted senders on request, not 2 per second that no plan lifts (resend.com/docs/api-reference/rate-limit). Resend sends from four regions (resend.com/docs/dashboard/domains/regions) while account data stays in the US, so the 'no region choice' points now say that instead. Brevo's public tier is Standard, not Business (brevo.com/pricing, brevo.com/pricing.md); Starter's 100K price is also corrected. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…nt on main The committed /versus/amazon-ses-vs-resend rationale was stale: versus.ts already carried the Forge MTA wording and search-intent.ts had not been regenerated from it. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
The calculator's agent markdown was the Wraps plans doc. It now describes Amazon SES pricing (plans, band rates, monthly cost by volume, free tier, estimator) rendered from lib/ses-cost.ts, and links to /pricing.md for Wraps' own plans. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
JsonLd rendered JSON.stringify(data) raw inside the script tag, so a `</script>` in any JSON-LD string would end it. The serialized text now writes those characters as \u escapes; JSON.parse reads back the same data. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…e constants as the page SES_PLAN_INCLUDES, SES_VOLUME_BANDS and SES_EXAMPLE_VOLUMES move into lib/ses-cost.ts and both the page and the markdown import them, so the 'What it adds' column no longer disagrees with the page. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…us.ts Covers the consB line that said Resend has no named region, the mailersend FAQ that omitted that Resend account data stays in the US, a missed 'two API calls a second', and a Mailgun pick line that no longer followed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…, overage, inbound, batches) Brevo prices cut to the readings on brevo.com/pricing (Starter from $9, Standard from $18). Resend: a self-serve-plans qualifier for the rate limit (Enterprise has its own), the Batch API (100 emails per request, one request) in place of the 2 rps-sized superlatives, the 10k flash-sale scenario scaled honestly, overage $0.90 down to $0.46 with pay-as-you-go opt-in, inbound emails included on every plan, a missed 'named region' line, Brevo logo add-on wording, and distinct secondary queries per route. Sources: resend.com/pricing.md, resend.com/docs/api-reference/rate-limit.md, brevo.com/pricing.md. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
React 19 already rewrites </script in script text; the serializer is defence in depth for <!--, >, & and U+2028/9. The new assertions fail on the old component. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…between the calculator page and its markdown Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Resend inbound is on every plan, so the sentences that assumed none are rewritten around route matching on recipient, sender or header. SSO is a $150/mo Scale add-on (included on Enterprise), the blog's 100K sender pays $0.90 overage, Brevo's logo add-on and 'double' wording are corrected, the rate limit is qualified to self-serve plans everywhere, batch wording follows Resend's docs (up to 100 emails in a single API call, no attachments yet), and the /versus/resend-vs-sendgrid secondary query matches its FAQ. Sources: resend.com/pricing.md, resend.com/docs/api-reference/emails/send-batch-emails.md, brevo.com/pricing.md. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…, free-tier heading) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…the cost blogs The 30K-fewer table priced every row as pure overage. On a 100K tier the 30K are included volume (Resend saves $0), and Postmark now sells each plan in volume tiers (50K and 125K), so the 100K totals, the Basic-vs-Platform inversion and the spreads change. The Mailgun Foundation row is dropped: its overage is only published as "from $1.30" and no stop sits between 50K and 100K. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
- Resend marketing contacts: "from $40/mo for 5,000", and "in contact tiers" wherever the copy implied a flat per-block rate (the tiers are not linear). - Mailgun log search: the real retention (5 days Foundation, 30 Scale), not "a year". - Brevo dormant lists: the volume tier's contact limit caveat on every "free to keep" sibling on the Brevo pages and alternatives cards. - Brevo logo removal: Standard or Starter's paid add-on. - Resend rate limit: "self-serve" wherever every plan/tier was claimed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
- Brevo free allowance: cut the unsourced daily-cap clause. - Resend batch: "up to 100 emails in a single API call", Resend's own wording, wherever the copy said several/multiple recipients per call. - mailgun-vs-resend: re-angle the bulk rate-limit query to batch size so it no longer targets the resend-vs-sendgrid intent. - Calculator markdown: what the dearer SES plans buy is read from SES_PLAN_INCLUDES, not retyped (managed IPs and validations are Pro). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…12.6x Resend's Enterprise card lists "Enterprise rate limits", so the lines that said no plan raises the default now say no self-serve plan. The blog index card for the cost post still quoted the old 17x spread. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
…revo Starter at 100K, Mailgun log window, Brevo contact-limit caveats Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
wraps.dev made claims about Resend, Brevo, Postmark and Mailgun that their own pricing pages and docs no longer support. Each corrected claim was checked against the vendor's page on 2026-11-03.
Plus three code changes:
Evidence
rg -in "2 ?(rps|req|requests? per second)" apps/websitematched Resend claims in versus.ts, alternatives.ts, search-intent.ts, migrate/resend and compare/resend-vs-wraps.pnpm --filter wraps-website versus:generateon a clean main rewrote the/versus/amazon-ses-vs-resendblock. An agent asking for/tools/ses-calculator.mdgot Wraps pricing.After: no Resend "2 rps" line left;
versus:generateandsitemap:datesleavegit statusclean; the newpricing-agent-surfacetest (calculator markdown carries the SES per-1,000 rate fromses-cost.ts) fails on main and passes here; the newjson-ldtests fail against main's component.pnpm --filter wraps-website typecheck,test(1455/1455) andbuildpass on the head commit. In the build output, all 1139 JSON-LD blocks across 334 pages parse.Merge Danger
Door: two-way. Copy, config data, one serializer and one markdown route; revert is clean.
Blast Radius: copy. The
/versus/*and/alternatives/*pages, two cost blog posts,/compare/resend-vs-wraps,/migrate/resend,/tools/ses-calculator.mdand every page's inline JSON-LD (escaping only; data unchanged). SomesecondaryQuerieschanged to drop the stale number, so those pages target slightly different searches.Merge by rebase from a local checkout, not GitHub's squash or rebase button: the commits are signed, and
sitemap.test.tscheckspage-dates.tsagainst commit dates, which a GitHub rewrite would invalidate. Known leftovers (other unverified competitor claims,next/scriptbreadcrumb JSON-LD, lastmod for config-driven pages) are tracked for a follow-up.🤖 Generated with Claude Code
https://claude.ai/code/session_01GxJAQPhLCuY6ku8FwL8qCq