Send weekly meal plans with one-click grocery ordering

Every Monday, each nutrition client gets a personalized five-dinner plan, shoppable recipe links, and one grocery list they can order in a single click.

Agentic Task
InstacartAirtableGmailOperationsEmail AutomationContent Generation
PromptCreate

Every Monday at 6am, build and send each of my active nutrition coaching clients a personalized week of dinners with one-click grocery ordering. Use a cron trigger.

Start with Airtable List Records against my clients table, filtered to clients whose status is active. For each client read their email address, postal code, household size, daily calorie target, macro targets (protein, carbs, fat), allergies, dislikes, weekly grocery budget, and the log of what was sent to them last week.

Then work through the clients one at a time. For each client, plan five dinners that fit their calorie and macro targets and scale the ingredient quantities to their household size. Treat allergies and dislikes as hard filters: an ingredient that touches an allergy or a listed dislike must never appear in a dinner or in the grocery list, and there is no substituting around it with a trace amount. Rotate proteins and cuisines against whatever was sent the previous week so nobody gets chicken stir fry two Mondays in a row. Deliberately overlap ingredients across the five dinners so the client buys fewer distinct items and wastes less food, and keep the total basket inside their weekly grocery budget.

For each of the five dinners, call Instacart Create Recipe Page to produce a shoppable recipe page with its ingredients and cooking instructions. Recipe ingredients use the measurements field. Then call Instacart Create Shopping List Page once per client to produce a single consolidated list covering all five dinners, with duplicate ingredients merged into one line item at the combined quantity. Shopping list line items use line_item_measurements, not measurements, so do not reuse the recipe payload shape here.

Stick to the supported measurement units: each, lb, oz, g, kg, ml, L, cup, tbsp, tsp, and gallon. Any other unit is rejected with a 4xx error, so convert to the nearest supported unit before sending. Where a client has a dietary tag that maps onto a supported health filter such as VEGAN, GLUTEN_FREE, KOSHER, or ORGANIC, set it on the generated pages. Set expires_in generously, around 365 days, so a client who opens the email late still gets working links. Both create calls return a products_link_url, which is the shareable page. Hold onto those URLs rather than regenerating them.

Call Instacart Get Nearby Retailers with the client's postal code so the email can name the specific stores that actually deliver to them. This only covers US five digit ZIP codes and Canadian postal codes, so check the format first. If a client's postal code is neither, skip the retailer lookup for that client and send the email without the store section rather than failing the run.

Email each client with Gmail Send a Message. The email should include the week's plan with each dinner named and its calorie and macro breakdown, the five individual recipe links, the single one-click shopping list link called out as the fastest way to order everything at once, and the list of stores that deliver to them. Write it in a warm coaching voice, not a system notification.

Finally, call Airtable Update Record on that client's row to log the date the plan was sent and the five dinners used, so next week's run can rotate against them. Handle clients independently: if one client fails, for example because of a bad postal code or a missing target, log the problem and carry on with the rest of the roster instead of aborting the whole run.

Additional information

What does this prompt do?
  • Pulls your active clients from Airtable every Monday morning and reads each person's calorie and macro targets, allergies, dislikes, household size, postal code, and weekly grocery budget.
  • Plans five dinners per client that hit their targets, treating allergies and dislikes as absolute no-gos and rotating proteins and cuisines away from what you sent last week.
  • Builds a shoppable page for each dinner plus one combined grocery list for the whole week, and looks up the stores that actually deliver to that client's postal code.
  • Emails every client their plan, recipe links, one-click grocery list, and store options, then logs the send date and the dinners used back to Airtable.
What do I need to use this?
  • An Airtable base with a client table holding email, postal code, household size, calorie and macro targets, allergies, dislikes, weekly grocery budget, an active or inactive status, and columns to log what was sent
  • An Instacart developer account for creating the shoppable recipe and grocery list pages
  • A Gmail account you send client email from
  • Clients with US or Canadian postal codes, since grocery delivery and store lookup cover those two countries
How can I customize it?
  • Move the schedule to Sunday evening or any other day and time that fits how your clients shop.
  • Change how many dinners you plan per client, or how many past weeks the rotation looks at before a protein or cuisine can repeat.
  • Add your own coaching note, branding, or check-in question to the email, and send yourself a copy before anything reaches clients.

FAQs

Do my clients need an Instacart account?
Only when they are ready to check out. The plan, the recipe pages, and the grocery list all open in a browser for anyone. Your client picks a store and signs in or creates an account at the point of ordering, and they can also just use the list as a printed shopping list.
How does it handle allergies and foods a client hates?
Both are treated as hard rules, not preferences. Anything a client is allergic to or has listed as a dislike is excluded from every dinner and never appears in the grocery list. Keep those fields in Airtable current and the plans follow them automatically.
Will clients get the same five meals every week?
No. Each run reads what was sent the previous week from Airtable and deliberately rotates to different proteins and cuisines, so a client who got chicken and Italian last week gets something else this week.
Why do the five dinners share so many ingredients?
That is on purpose. The dinners are planned to overlap on ingredients so your client buys fewer distinct items, spends less, and throws away less half-used produce at the end of the week.
Will this work for clients outside the US and Canada?
Grocery delivery and the store lookup cover the US and Canada only. Clients with other address formats are handled safely: they still get their meal plan and recipes, just without the delivery store suggestions.
How long do the grocery links stay usable?
The links are generated with a long expiry so a client who opens the email late in the week still gets a working list. You can extend that window up to a year if you want clients to revisit older plans.

Related templates

Chase past-due JobNimbus invoices with escalating emails

Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.

JobNimbus
Gmail
Slack Bot
Agentic Task
Turn every completed roofing job into a review request

Every evening we find the jobs you just finished, email each customer a personal review request, and log it on the job so nothing slips.

JobNimbus
Gmail
Agentic Task
Chase overdue ERPNext invoices with escalating reminders

Every weekday morning, review your unpaid ERPNext invoices, email each customer a reminder that gets firmer as the debt ages, and brief finance in Slack.

ERPNext
Gmail
Slack
Agentic Task
Weekday Blackboard reminders for work due in the next 48 hours

Every weekday morning each student gets one short, friendly email listing everything they still owe across all of their courses.

Blackboard
Gmail
Google Sheets
Agentic Task
Enroll new student intake form responses in Blackboard

Every intake form response becomes a Blackboard account, a course enrollment, a welcome email, and a logged row in your intake spreadsheet.

Blackboard
Google Forms
Gmail
+1
Deterministic Code
Chase unapproved Jobber quotes with personalized follow-ups

Every weekday morning, quotes that have gone quiet get a personal follow-up email that references the actual work you priced, so pending jobs stop slipping away.

Jobber
Gmail
Slack Bot
Agentic Task

Stop rebuilding meal plans and grocery lists by hand every week.

Give every client a personalized week of dinners they can order in one click, while you keep your Monday mornings.