Portion for Shopify · Documentation
Launch Your Meal Prep Store.
Portion is built for meal prep kitchens, ready-meal brands and food subscriptions. Customers build a box of meals, see the calories and macros of everything they pick, and check out as a one-off order or a subscription.
Contents
Start here
Getting started
- In your Shopify admin, go to Online Store → Themes and add Portion from the Theme Store.
- Click Customize to open the theme editor. Everything in this guide is done there or in your product settings, with no code.
- Work through this guide in order: your meal products first, then the box builder page, then the home page.
- When you're happy, click Publish on the Themes page.
The quickest setup
Create a collection of your meals, add the nutrition metafields to each meal, then create a page using the build-a-box template. That gets a working box builder live in under an hour.
Step 1
Setting up your meals
Each meal is a normal Shopify product. Portion reads its nutrition, ingredients and allergens from product metafields, so the same numbers show on meal cards, the product page and in the box builder.
Create the metafield definitions
Go to Settings → Custom data → Products and click Add definition for each row below. Use the namespace custom unless you change it in theme settings.
| Name | Namespace and key | Type | Shows |
|---|---|---|---|
| Calories | custom.calories | Integer | kcal on cards, product page and box totals |
| Protein | custom.protein | Integer | Grams of protein |
| Carbs | custom.carbs | Integer | Grams of carbohydrate |
| Fat | custom.fat | Integer | Grams of fat |
| Portion weight | custom.portion_weight | Integer | Portion size in grams on the product page |
| Ingredients | custom.ingredients | Multi-line text | Ingredients tab |
| Allergens | custom.allergens | Multi-line text | Allergens tab |
| Heating instructions | custom.heating_instructions | Multi-line text | Heating instructions tab |
Then open each meal in Products, scroll to Metafields and fill them in. Leave any you don't use empty and Portion hides them.
Dietary tags
Add product tags such as High protein, Vegan, Gluten free or Low carb. These power the filter chips in the weekly menu and box builder, and can show as a label on the meal photo. The tag text must match the filter names in the section settings exactly.
Sizes and variants
A meal can have variants, such as Regular and Large. The product page shows a size picker and the price updates as customers switch. In the box builder, each card adds the first available variant.
Allergen information is your responsibility
Portion displays whatever you enter. Make sure your allergen information is accurate and meets your local food labelling rules.
Step 2
The box builder
The box builder lets customers pick meals for each delivery day, see a running total and their average daily macros, add extras, then review and check out in one step.
Create the page
- Go to Online Store → Pages → Add page and call it something like "Build your box".
- Under Theme template, choose
build-a-boxand save. You don't need any page content. - In the theme editor, choose Pages → build-a-box from the top dropdown and click the Box builder section.
- Choose your Meals collection, then add the page to your main menu in Content → Menus.
How customers build
Flexible
Customers pick any number of meals between your Minimum meals and Maximum meals. Best for most kitchens.
Plans
Customers first choose a box size, such as 5, 10 or 15 meals. Add a Plan block for each size, with a title, bullet points, an optional badge, and a highlight for your most popular plan.
Delivery days
Enter your delivery days separated by commas, for example Sunday, Wednesday. Customers get a tab for each day and choose meals for each one, and the day is saved on each cart line. Leave it empty for a single delivery.
Cut-off and countdown
Set your Cut-off day and Cut-off hour, and add a message such as "Order by Friday 5pm for Sunday delivery". Show countdown displays the real time left until that cut-off. Only turn it on if your cut-off is accurate: Shopify doesn't allow fake urgency.
Extras step
Add an Extras step block to offer breakfasts, snacks or drinks after the meals step, and choose a collection for it. You can add more than one.
Macros panel
Show "A day from this box" divides the box's calories and macros by Days a box covers, so customers can see what a typical day looks like. Set the number of days to match how you sell, for example 5 for a working week.
Other options
- Start with one of each meal fills the box with one of every meal, for small menus.
- Go straight to checkout skips the cart after the review step.
- Delivery note shows under the total, for example your delivery charge.
- Show dietary filters and Filter tags control the filter chips.
Step 3 (optional)
Subscriptions
Portion works with any subscription app that uses Shopify selling plans, including Shopify Subscriptions, Appstle, Recharge and Seal. Once your meals have a selling plan, a One-off / Subscribe and save choice appears automatically in the box builder and on product pages, with subscription prices on every card.
- Install your subscription app and create a plan, such as "Weekly, 10% off".
- Add every meal, and any extras you want included, to that plan in the app.
- That's it: the choice appears. If your meals have more than one plan, use the settings below to choose which one the box builder uses.
| Setting | Use it when |
|---|---|
| Subscription plan ID | You want one exact plan for every meal. Paste the plan's ID, which your subscription app shows in its plan settings. |
| Subscription plan name contains | Your plans share a word, such as Weekly, and you don't have the ID. |
| Neither | Each meal uses its first plan. |
On the product page, the Purchase options block shows the same choice. Turn on Subscribe by default to pre-select it.
Meal pages
The meal product page
The product page is built from blocks you can reorder or remove in the theme editor (Products → Default product).
| Block | What it does |
|---|---|
| Back link | A link back to your box builder, for example "Back to build your box". |
| Dietary tags | Shows matching product tags as labels. |
| Title, Description, Text | The meal name, a short or full description, and any extra text. |
| Price | Price with sale badge and tax note. |
| Macros | Calories, protein, carbs and fat per meal, with portion weight. Can highlight protein. |
| Variant picker | Buttons or a dropdown for sizes. |
| Purchase options | One-off or subscribe, when the meal has a selling plan. |
| Buy buttons | Quantity, add to basket and the Buy it now button. Supports gift card recipients. |
| Build a box link | A prompt to build a full box instead of buying one meal. |
| Collapsible tab | Ingredients, allergens, heating instructions (from metafields), a page, or your own text. |
| Pickup availability, Share, Custom Liquid, Apps | Local pickup, share links, your own code, and app blocks such as reviews. |
Building pages
Sections
Add these to any page from the theme editor. Most have a colour scheme setting: default, surface, primary or accent.
Meal prep
Hero, Weekly menu, Box builder, Featured product, Featured collection, Product recommendations.
Story & trust
Image with text, Multicolumn (great for "how it works"), Testimonials, Logo list, Collapsible content for FAQs.
Content
Rich text, Image banner, Video, Collection list, Blog posts, Newsletter, Contact form, Custom Liquid.
The header and footer are section groups. The footer has brand, menu and newsletter blocks. The header supports a sticky option, dropdown menus, country and language selectors, and an announcement bar.
Your brand
Theme settings
Open Theme settings (the cog icon) in the editor.
| Group | Settings |
|---|---|
| Logo | Logo image, logo width and favicon. |
| Typography | Heading font, body font and heading size. |
| Layout | Page width, page margin, card corner radius and input corner radius. |
| Colours | Background, surface, text, primary (buttons and accents) and accent colours, each with a matching text colour. |
| Meals | The metafield namespace for nutrition. Change it if your meal data already uses a different namespace. |
| Cart | Cart drawer or cart page. |
| Search | Turn search suggestions on or off. |
| Social media | Links shown in the footer. |
Ordering
Cart & checkout
Meals from the box builder arrive in the cart grouped by delivery day, with the day saved as a line item property you'll see on every order. Customers can change quantities in the cart drawer or on the cart page. Delivery charges, local delivery and pickup are set in Settings → Shipping and delivery.
Help
Troubleshooting
Macros aren't showing
Check the metafield definitions use the exact keys above, with the custom namespace (or the one set in theme settings), and that the type is Integer.
The Subscribe and save option doesn't appear
The meals must be added to a selling plan in your subscription app, and the app must be enabled. If you've set a Subscription plan ID, check it matches a plan the meals belong to.
Filter chips don't filter anything
The filter names in the section settings must match your product tags exactly, including capitals and spaces.
The box builder is empty
Choose a collection in the section's Meals collection setting, and make sure its products are active and available on the Online Store.
The countdown shows the wrong time
The countdown uses your store's time zone (Settings → General) and the cut-off day and hour in the section settings.
I want to change the theme's code
Custom code changes aren't covered by support. Duplicate your theme first (Online Store → Themes → … → Duplicate) so you can always go back, or get a quote and I'll make the change for you.
Get in touch
Support
Portion is made and supported by Lewis at CreatedByLewis, who builds meal prep stores on Shopify for a living.
Send a support request
Use the support form. Add your store address and a screenshot, and you'll get an email confirming it arrived. I reply within two working days (UK time).
Support covers setting up the theme's features, questions about its settings and fixing theme bugs. It doesn't cover custom design changes or third-party apps.