Skip to content

Food & beverage · ecommerce growth

Coffee roaster marketing agency

A roastery's best customer buys the same 340 g bag every two weeks and checks the roast date before the price. They search by origin, process and roast level, they want the grind to match the brewer on their counter, and they will subscribe once they trust that the bag ships within days of roasting. We build the store around that rhythm: origin and process collections that hold their rankings after a lot sells out, a feed that treats grind and bag size correctly, subscription cadences that match how fast a household drinks, and a wholesale channel that stays out of your retail numbers.

The buyer, in brief

Consideration
Minutes for a repeat bag, a week or two for a first order while they read the current offering list
Purchase frequency
A 340 g bag every one to two weeks for a daily drinker, monthly for occasional brewers, weekly cases for wholesale accounts
Seasonality
Fresh-crop arrivals drive spring and autumn releases, cold brew carries the summer, and gifting plus cold-weather brewing lift the fourth quarter
Price band
Mid to premium per bag, with micro-lots and competition lots well above; wholesale pricing sits below retail behind a login
Return risk
Almost none; the failure modes are a wrong grind or a stale bag, and both are handled with a replacement rather than a return
Coffee beans in a drum roaster in Thailand with the Karen, specialty coffee roasters ecommerce
Specialty coffee roastersHome brewers who own a grinder and have an opinion on washed versus natural, plus cafes and offices buying by the case. Before trusting a roastery online they look for the roast date policy, the origin and process on each bag, and grind options that name their brewer.

How specialty coffee roasters makes money

Four levers, and what limits each one here

Revenue is traffic times conversion rate times order value times purchase frequency. In this niche each lever has its own ceiling.

Traffic

Traffic: origin, process and roast level carry the demand

Coffee shoppers type the origin, the process or the roast level, not the roastery name: Ethiopian natural coffee beans, washed Colombian, medium roast espresso beans, Swiss Water decaf whole bean. Most roastery sites list this week's lots in one grid on the homepage and a single Coffee collection behind it, so every one of those queries lands on a marketplace or a large retailer. The traffic work is a catalog that gives each origin, process, roast level and brew method its own indexable collection with real copy, offering pages that survive a sold-out lot by pointing to the next one, and brew guides for named brewers that earn links from the people who own them.

Conversion

Conversion: freshness proof and grind confidence

A first-time buyer has two doubts: will the bag be fresh when it lands, and will the grind suit their machine. The product page has to answer both above the fold. That means the roast schedule stated plainly (roasted Monday and Thursday, shipped the same day), the roast date policy, a grind selector that names brewers rather than particle sizes, tasting notes written for someone who has not tasted it, and a brew recipe for the chosen grind. Sellers that hide the roast policy in a FAQ or offer whole bean only lose the buyers who lack a grinder, and those buyers are the majority of new coffee drinkers online.

Order value

Order value: the second bag and the bigger bag

Shipping a single 340 g bag eats a large share of its margin, so order value in this niche is about getting the cart to two bags or to one larger bag. A free-shipping threshold set just above one bag, a two-bag pairing on every product page (an espresso and a filter, or this week's two lots), and 1 kg and 2 lb sizes with visible per-100 g pricing all move the average. Brewing gear is the other route: filters, a kettle or a scale added to a coffee order raise value without discounting the coffee, and they are the items a subscriber eventually buys somewhere.

Frequency

Frequency: the cadence has to match consumption

A subscription that ships every four weeks to a household that finishes a bag in ten days gets cancelled, and one that ships weekly to a two-cup-a-day drinker piles up on the counter. Frequency work starts with cadence options at one, two and four weeks, a pause and skip control that does not require an email to support, and a choice between roaster's pick and a fixed coffee. For one-time buyers, the replenishment nudge lands around the time the bag is running low, sized by what they bought. Wholesale accounts run their own cadence, usually a fixed weekly order day, and need a reorder reminder rather than marketing.

Search visibility

Search demand for roasted coffee: origin, process, roast level and brewer

Coffee ranks on catalog structure that mirrors how people describe what they drink. The buying queries name an origin (Ethiopian, Colombian, Sumatran), a process (washed, natural, honey, anaerobic), a roast level (light, medium, dark), a brew method (espresso, filter, cold brew) or a constraint (decaf, organic, fair trade). Each of those needs a collection page with a few hundred words of real copy, a product grid filtered by that attribute, and links from the products that carry it. We build them as collections inside the platform rather than filter parameters so they are indexable and stable.

Offering pages are the second layer and the one roasteries get wrong. A single-origin lot sells out in weeks, and if the page goes with it the rankings go too. We keep the lot page live with harvest, producer, elevation and cupping notes, mark it unavailable with the correct structured data, and link to the current lot from the same origin. Brew guides for named brewers (a V60 recipe for a light roast, an espresso recipe for the house blend) rank for informational queries and feed authority into the product pages.

Technically, grind and bag size are variants of one product with one URL, not separate products. Wholesale pricing must not be exposed to crawlers, and local pickup queries for the roastery's own city deserve a page with hours, address and a pickup option in checkout.

Queries that matter

  • ethiopian natural coffee beans
  • medium roast espresso beans canada
  • swiss water decaf whole bean
  • coffee subscription roasted to order
  • single origin vs blend for espresso
  • coffee roaster near me
  • light roast filter coffee 1kg

Origin, process and roast-level collections with real copy, lot pages with harvest and cupping notes, and brewer-specific guides rank. A homepage grid of this week's coffees, where sold-out lots disappear, holds no rankings for anything.

AI answers

What assistants get asked about buying coffee online

People ask an assistant which grind to pick for an AeroPress, whether a roastery ships within days of roasting, what a natural process tastes like compared with a washed one, and which Canadian roasters offer a light-roast subscription. The roasteries that get named are the ones whose product pages state roast schedule, process, elevation, tasting notes and grind options in plain text, whose brew guides answer one question each, and whose Organization markup says where the roastery is and what it does. We write the offering and guide pages answer-first, keep the roast policy on every product page rather than in one FAQ, and make sure the pages are served as plain HTML to the crawlers behind the major assistants.

What grind should I choose for an AeroPress from this roastery?
Does this roaster ship coffee within a few days of roasting?
What does a natural process Ethiopian taste like compared with a washed one?
Which roasters offer a light-roast coffee subscription that ships to Canada?

Questions shoppers put to assistants. A store gets named when its pages answer them in plain text.

Google Shopping and Merchant Center

Shopping listings for coffee: grind variants, bag sizes and unit price

Roasted coffee rarely carries a manufacturer barcode, so identifier_exists must be set to false on own-roasted products rather than leaving gtin blank and collecting warnings. Grind and bag size are variants that share an item_group_id; the feed should carry each size with its own price and unit_pricing_measure and unit_pricing_base_measure so Shopping can show a per-100 g comparison, and the grind can stay a single listing if the price does not change with it. Titles should read origin, process, roast level, whole bean or grind, and size, because those are the words in the query. Product_type should follow the catalog (Coffee, Single origin, Ethiopia) and google_product_category should sit at the Coffee node.

The policy risk in coffee is not claims but drift. A lot that sells out on Wednesday and stays available in the feed until the next fetch produces availability mismatches, and a subscription price shown on the page while the feed carries the one-time price produces price mismatches. We set the feed to update on inventory change and keep the one-time price as the listed price with the subscription as a page-only option. Wholesale variants and case sizes are excluded from the feed entirely.

Campaigns split by role: current lots and blends bid to margin, subscription-eligible coffees in their own campaign because a subscriber's value is higher, and free listings on for the whole catalog and reported separately.

Feed attributes that decide eligibility

  • identifier_exists set to false for own-roasted coffee
  • item_group_id for bag sizes
  • unit_pricing_measure set per 100 g of coffee
  • product_type mirroring origin and process
  • availability updated on inventory change
  • custom_label for subscription-eligible coffees

Disapprovals we see in this niche

  • Availability mismatch after a lot sells out mid-week
  • Price mismatch when the page shows the subscription price first
  • Missing identifier warnings when identifier_exists is not set
  • Wholesale case prices leaking into the retail feed

Meta and social ads

Meta for coffee roasters: the roast date is the creative

Coffee has no product policy on Meta, so the creative constraint is attention rather than compliance. The work that performs shows the thing a supermarket cannot show: the roaster pulling a batch, the cupping table with notes being written, the bag being sealed with the date stamped, a subscriber grinding at home. Founder-to-camera on why a lot was bought, with the producer named only if you actually bought from them, builds the trust a subscription needs. Grind-choice explainers and brew recipes do well as short video because they answer the first-order doubt.

Audiences begin with subscribers and past buyers for retention and lookalikes, then broad prospecting, since coffee interest targeting is crowded and vague. Catalog ads suit retargeting with clean bag photography and titles that read naturally. Claims move the ad into health review: focus, metabolism or mushroom-coffee benefits are health claims and need the same care as a supplement. Stick to origin, taste and freshness.

  • Roast day filmed end to end, with the date stamped at the finish
  • Cupping table notes explaining why this lot was bought
  • Which grind for which brewer, in thirty seconds
  • A subscriber's counter: grinder, bag, first cup
  • The producer relationship, only where the roastery buys direct

Policy line

Coffee itself is unrestricted; functional claims about caffeine, focus or metabolism fall under health policy, producer stories must be true and specific, and alcohol-adjacent products such as coffee liqueur follow the alcohol rules.

Conversion and the store

Roastery product pages: freshness, grind and the subscribe toggle

The offering page carries the revenue, and it has to settle freshness, grind and taste before the button matters. Roast schedule and ship policy go near the price, the grind selector names brewers (French press, pour-over, espresso, AeroPress, whole bean), tasting notes are written for a first taste, and a short brew recipe sits under the add-to-cart. The subscribe versus one-time toggle belongs on the page with the cadence visible, and the saving stated in dollars per bag rather than a percentage that invites arithmetic. A two-bag pairing and the larger size with per-100 g pricing sit below.

On mobile, grind and size selectors stacked above the price push the button off screen; we collapse them into one line each and keep a sticky add-to-cart. The collection page needs the roast level and process visible on each card so a shopper can choose without opening six pages. Checkout should offer local pickup if the roastery has a door, and the cart should show how far the order is from the free-shipping threshold in bags, not dollars.

Objections the page must answer

  • “Will this bag be fresh when it reaches me”
  • “Which grind do I choose for my machine”
  • “Will the next lot from this origin taste like the one I liked”
  • “What is the actual difference between these two Ethiopians”
  • “Can I pause the subscription when I travel without emailing anyone”

Email, SMS and retention

Retention for coffee: the bag clock, the roast notice and the wholesale reorder

The flows that pay in coffee follow the bag from roaster to empty. A roast-day notice tells the customer their coffee was roasted today and ships now, which is the freshness proof they bought on. A brew guide matched to the grind they chose arrives with the parcel and reduces bad first cups, which are the real cause of churn. The replenishment nudge for one-time buyers lands as the bag runs low, timed by size: sooner for a 340 g bag, later for a kilo, and it offers the subscription with the cadence prefilled from what they actually bought.

Fresh-crop releases and limited lots are the reason a coffee list stays opened; they go to subscribers first and to the full list a day later. When a subscriber pauses, a flow offers a cadence change or a smaller bag before the pause takes effect. Wholesale accounts get a reorder reminder ahead of their order day and nothing else. SMS is limited to roast-day and shipping notices for people who opted in.

  1. Roast-day notice

    The day the order is roasted and shipped

  2. Brew guide by grind

    On delivery, matched to the grind selected

  3. Bag clock replenishment

    Around day ten for a 340 g bag, later for larger sizes

  4. Fresh-crop release

    Subscribers first, full list the following day

  5. Pause rescue

    When a subscriber schedules a pause, before it takes effect

  6. Wholesale reorder

    Two days before each account's usual order day

Where revenue leaks

The leaks we find in specialty coffee roasters stores

The Growth Analysis ranks these against your own numbers and says which to close first.

Get a Growth Analysis for your roastery
  • Sold-out lots that take their URL with them

    Every single-origin page that is deleted when the lot runs out resets the rankings for that origin, so the roastery starts from zero each harvest.

  • Wholesale reorders counted as ad-driven revenue

    Cafes reorder through the same storefront the ads track, so ROAS looks strong while new retail customers are barely growing.

  • The subscription offer that never arrives on the second bag

    A customer who liked the first bag buys a second at full price and hears nothing; the third bag is bought from whoever sends an email first.

  • Whole bean only, or a grind menu nobody can decode

    Grind options labelled fine to coarse instead of by brewer produce wrong grinds, bad first cups and quiet churn that never reaches support.

Platform notes

Where the platform changes the work

Shopify

Origin, process, elevation and roast schedule live in metafields that render on the product page and populate product_detail in the feed. Selling plans handle one, two and four week cadences with pause and skip. Wholesale belongs in B2B on Shopify Plus or a separate password-protected channel so cafe pricing never reaches the retail feed or the retail reports.

WooCommerce

Grind and size as variation attributes multiply quickly; keep grind as a non-price attribute where possible and use global attributes for origin and process so their archive pages can be set to index. A subscriptions extension handles cadence, and the feed plugin must send only retail variations.

Headless

A live roast schedule and current-lot availability pulled from inventory at render time keep offering pages accurate without manual edits, and the sold-out lot page can be kept indexable with structured data that marks it out of stock and links the successor.

Questions

Specialty coffee roasters owners ask us

By CartKernel · Last reviewed

Should our wholesale cafes order through the same store as our retail customers?

Through the same platform, not the same reports. Wholesale needs its own price list, net terms and a login, which Shopify Plus B2B or a separate channel provides. Kept inside the retail store without separation, cafe reorders inflate ad attribution, distort average order value and can leak case pricing into the Shopping feed. We split the channels and report them as separate lines.

How do we keep coffee pages ranking when our lots sell out every few weeks?

Keep the lot page live. Mark it out of stock with correct structured data, keep the harvest and cupping notes, and link to the current lot from the same origin or a similar profile. The origin and process collections above it stay stable and carry the rankings, so a new lot inherits demand rather than starting again.

Can Google Shopping list a coffee that we mainly sell by subscription?

Yes, as long as the feed carries the one-time price and the page shows that price clearly, with the subscription as an option rather than the default. Shopping compares the listed price with what a shopper sees on arrival, so a page that defaults to the discounted subscription price creates mismatches. We set the one-time price as the listing and present the subscription on the page.

What subscription cadence options should a roastery offer?

One, two and four weeks, with a choice of bag size and a choice between roaster's pick and a fixed coffee. Pause and skip must work without contacting support. The cadence prefilled at signup should come from what the customer already bought and how fast they reordered, which the replenishment flow can carry, rather than a default that suits the roastery's schedule.

Do we need barcodes on our bags to run Shopping ads for roasted coffee?

No. Own-roasted coffee usually has no manufacturer GTIN, and Google accepts that when identifier_exists is set to false on those products. What you must not do is invent a code or reuse one across bag sizes. If you later print retail barcodes for grocery distribution, add the real GTINs and the listings become eligible for more surfaces.

How do you handle grind size in the feed and on the product page?

On the page, grind is a selector labelled by brewer so nobody has to translate coarse or fine. In the feed, grind stays within a single listing when the price does not change, while bag sizes are separate variants sharing an item_group_id with unit pricing. That keeps the listing count sane and stops Shopping from splitting impressions across five identical grinds.

Grow your specialty coffee roasters store.

A free Growth Analysis ranks what your store should fix first, by revenue at stake, in about a week.