A free drink coupon valid Tuesday through Thursday
This is the smallest useful campaign: take weekend-heavy traffic and nudge it back into weekdays using visit history and day-of-week fit.
Lunch guests who visited within the last 45 days
Restaurant Email Marketing System
Store the email addresses you capture during checkout, then send weekday coupons, event notices, and seasonal menu drops. A lightweight build is enough if Cloudflare Workers calls the Resend or SendGrid API for delivery.
Three Starting Campaigns
Before expanding the program, lock down weekday traffic smoothing, event demand generation, and seasonal-menu reactivation.
This is the smallest useful campaign: take weekend-heavy traffic and nudge it back into weekdays using visit history and day-of-week fit.
Lunch guests who visited within the last 45 days
Do not blast everyone. Send this only to the segment with a strong event response rate. The smaller the event, the more email precision matters.
Regulars who respond well to wine nights and reservation-only events
Use new-menu mail to reactivate guests whose visit reason has gone cold. Image-rich sends are manageable with either Resend or SendGrid.
Existing guests who have not ordered in the last 30 days
Operational Flow
The two most important decisions are when you capture the guest email and how you avoid sending the same message to everyone. Once you have a form, D1, and a delivery API, you can start operating without introducing a heavy CRM first.
A receipt QR, table card, or membership form all work. The first priority is getting opt-in without interrupting the in-store experience.
Do not store the email alone. Keep the minimum useful record: visit date, party size, and ordering patterns. Weekday offers and event offers use different levels of detail.
Split out guests with weak weekday habits, guests with high event response, and guests who have been absent for a while. Do not send the same message to everyone.
A Cloudflare Worker reads the eligible audience from D1 and calls either the Resend or SendGrid API. A separate delivery-log table is enough for an operational first version.
Cloudflare Delivery Stack
Instead of building a large operations app first, isolate only audience selection and delivery logging. The same structure works whether the provider is SendGrid or Resend.
Capture
Collect opt-in through a register-side QR, a post-booking form, or the venue Wi-Fi signup flow.
Store
Store email addresses, visit history, and segment flags in D1. Three tables are enough to start.
Decide
Use a Worker cron or a manual trigger in an admin screen to lock in the audience before delivery.
Deliver
Send signed requests to the Resend or SendGrid API. Start with only three templates.
POST /campaigns/send
-> Worker loads eligible contacts from D1
-> template = weekday | event | seasonal
-> provider = resend | sendgrid
-> write delivery log + unsubscribe-safe status Minimum Launch Scope
Keep
Ship
Build the ability to capture, send, and suppress before you build a full customer-management surface. After that, better segmentation and more templates are enough to make weekday restaurant traffic more predictable.
Back to top