Email Setup (Resend)
Set up transactional email via Resend — booking confirmations, tour reminders, review requests, and recovery emails.
Why Resend?
Resend is a developer-friendly transactional email service with excellent deliverability. The free tier allows 3,000 emails/month and 100/day — more than enough to start. Emails land in inbox (not spam) when your domain is properly verified.
Free tier
3,000 emails/month
Paid from
$20/month (50k emails)
Setup time
~15 minutes
Step 1: Create a Resend Account
- Go to resend.com and sign up
- Verify your email address
- On the dashboard, click Domains → Add Domain
- Enter
bestphuketguide.com - Resend will show you DNS records to add to Cloudflare
Step 2: Verify Your Domain (DNS Setup)
Add these DNS records to your Cloudflare DNS panel for bestphuketguide.com:
SPF record (TXT):
Type: TXT
Name: @ (or bestphuketguide.com)
Value: v=spf1 include:amazonses.com ~allDKIM record (TXT) — Resend provides the exact values:
Type: TXT
Name: resend._domainkey
Value: (provided by Resend — copy exactly)Optional: custom MAIL FROM (improves deliverability):
Type: MX
Name: send.bestphuketguide.com
Value: feedback-smtp.us-east-1.amazonses.com
Priority: 10Step 3: Create an API Key
- In Resend dashboard, go to API Keys → Create API Key
- Name it
bestphuketguide-production - Set permission: Full access
- Copy the key (starts with
re_) - Add it to your Cloudflare Worker secrets:
wrangler secret put RESEND_API_KEY
# Paste the key when promptedEmail Templates Overview
The platform sends these automated emails:
Booking Confirmation
To: CustomerTrigger: When a booking is confirmed (payment received)
Content: Booking ref, tour name, date, guests, total paid, meeting point, departure time, what to bring
Booking Notification
To: Admin (your email)Trigger: When a new booking is created
Content: Same booking details — so you see every new booking immediately
Tour Reminder
To: CustomerTrigger: Day before the tour at 6 PM Phuket time
Content: Reminder of tour details, meeting point, what to bring, contact number
Review Request
To: CustomerTrigger: 24 hours after the tour date
Content: Thank you message + link to review page
Booking Recovery
To: CustomerTrigger: When a customer abandons checkout (Stripe session expired)
Content: Reminder of the tour they were looking at + booking link
Email From Address
Emails are sent from your verified domain. Configure the from address in Settings → Notifications:
From: Best Phuket Guide <bookings@bestphuketguide.com>
Reply-To: info@bestphuketguide.combookings@bestphuketguide.com for transactional email so replies to booking emails go to your main inbox.Testing Email Delivery
- Go to Settings → Notifications
- Find the Test Email section
- Enter your email address and select a template (e.g. Booking Confirmation)
- Click Send Test
- Check your inbox — should arrive within 30 seconds
- Also check spam folder on first test — if it lands there, check DNS records
Check delivery logs in:
- •Resend dashboard → Emails — see all sent emails and delivery status
- •Admin → Emails — the email log page shows all notifications sent by the platform
Troubleshooting
Emails landing in spam?
- • Check that SPF and DKIM DNS records are correctly set and verified in Resend
- • Make sure the from address uses your verified domain
- • Avoid spam trigger words in subject lines (FREE, URGENT, CLICK HERE)
- • Ask a few early customers to mark the email as "not spam" — this improves domain reputation
Emails not sending at all?
- • Check the Email Log page — if status is "dev mode", RESEND_API_KEY is not set
- • Run
wrangler secret listto verify the secret exists - • Check Resend dashboard for API errors
Hit the free tier limit?
Upgrade to Resend's paid plan ($20/month for 50,000 emails). With 1,000+ bookings per month you'll hit the 3,000/month free limit. Budget ~$20/month for email.
Related Guides