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.
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?
How does it handle allergies and foods a client hates?
Will clients get the same five meals every week?
Why do the five dinners share so many ingredients?
Will this work for clients outside the US and Canada?
How long do the grocery links stay usable?
Related templates
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.
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.
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.
Every weekday morning each student gets one short, friendly email listing everything they still owe across all of their courses.
Every intake form response becomes a Blackboard account, a course enrollment, a welcome email, and a logged row in your intake spreadsheet.
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.
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.