GroundCut + Resend

Resend powers every email GroundCut sends — booking confirmations, day-before reminders, invoice sends, payment receipts, weather delays, owner alerts, and more. Templates are per-tenant overridable with {{variable}} placeholders. Delivery webhooks (verified via Svix) keep the notification log accurate so you can see exactly what reached whom.

What the integration does

  • Sends transactional email for the same 22+ event types as the SMS layer.
  • Renders branded HTML emails with tenant logo, brand color, and customer-friendly layouts.
  • Streams server-rendered PDF invoices on /api/invoices/[id]/pdf for the email and download flows.
  • Receives Resend webhooks (Svix-signed) for delivered / bounced / complained / delayed status.
  • Customer email_opt_out flag set on Resend unsubscribe-link clicks.

What’s automated

  • Booking confirmation email fires alongside the SMS on booking success.
  • Recurring invoice receipts emit on invoice.payment_succeeded webhook from Stripe.
  • Manual invoice sends from /admin/invoices route through Resend.
  • Invoice-overdue cron at 17:00 UTC sends reminders for unpaid manual invoices, deduped to one per 48h.
  • Resend webhook verification rejects payloads older than 5 minutes — replay protection.

Setup steps

  1. 1Resend is preconfigured at the platform level. The platform sender domain is used for all sends; per-tenant domains aren’t set up yet.
  2. 2Per-event toggles in /admin/settings → Notifications let you turn each email event on or off.
  3. 3Customize email templates per event with subject + body in /admin/settings → Notifications. Variables: {{customer_name}}, {{service_name}}, {{date}}, {{time}}, {{tenant_name}}, {{track_url}}, {{booking_url}}.
  4. 4Set business_address, business_phone, and business_email in /admin/settings → Invoice template — these appear in the footer of every invoice email.

Related GroundCut features

  • Notifications system (Resend is the email half).
  • Invoice portal and PDF generation.
  • Customer email_opt_out via unsubscribe link.
  • NotificationTimeline showing per-message delivery status.

Resend integration FAQs

Can I send from my own domain (e.g. service@mylawnbusiness.com)?+
Not at the moment. All emails send from the platform Resend domain. The customer sees the email as coming from GroundCut on behalf of your business name (the From line includes {{tenant_name}}). Per-tenant DKIM/SPF setup is a real ask — let us know on the contact form so we can prioritize it.
How can I be sure emails are actually being delivered?+
Two places. (1) /admin/customers → click a customer → NotificationTimeline shows every send with delivery status, updated by Resend webhooks. (2) The audit log in /admin/bookkeeping export captures notification events. Bounces and complaints are surfaced clearly. If you spot a bounce, check the email field on the customer record — typos are the #1 cause.
Are invoices actually delivered as PDFs?+
Invoice emails contain an HTML rendering plus a "Download PDF" link. The PDF is generated on demand at /api/invoices/[id]/pdf using @react-pdf/renderer — same component as the web invoice and email rendering, so the three are visually identical. We don’t attach PDFs to outbound emails because attachments hurt deliverability; the link in the email loads the PDF on demand.
How does email opt-out work?+
Every customer email contains a Resend unsubscribe link in the footer. Clicking it triggers a Resend webhook that flips email_opt_out=true on the customer record (opt_out_source="email_unsubscribe"). Marketing-category notifications (reengagement) gate on this flag. Transactional emails (booking confirmations, invoices for active engagements) still send — that’s the standard regulatory split. To completely silence a customer, set both sms_opt_out and email_opt_out and they get no automated communication.
What about the receipt emails Stripe sends?+
GroundCut sends its own receipt via Resend (branded with your logo and brand color) on every successful charge. Stripe’s default receipt is suppressed where possible. The reason is consistency — every customer-facing email comes from one branded source rather than alternating between GroundCut, Stripe, and your fallback.

Try GroundCut + Resend free for 14 days

Pro features unlocked during the trial. Connect on day one and see it work with your real data.

14-day free trial · No card required · Cancel any time