Platform specifics
Why own channel is a different dataset
These are the reasons a Restaurant chain own channels dataset needs its own handling rather than a shared retail schema.
Three prices for the same item, and the chain sets two of them
A major chain's item can carry three different prices at once.
- In store — the counter price, which we do not collect because it is not published.
- On the chain's own app or site — set by the chain or its franchisee.
- On a delivery platform — set by the merchant, frequently above own channel to cover commission.
So a chain's "price" depends entirely on which channel you looked at, and a competitive analysis using
platform prices is measuring the platform's economics as much as the chain's.
channel is on every record. Where you also collect the chain on delivery platforms, the gap between
channels is an observation you compute from two records — we do not infer it from one side.
Which makes this the more useful side for some questions
If you are benchmarking a chain's own pricing strategy, the own channel is where the chain's decisions are visible.
Platform prices carry a merchant markup that varies and is not the chain's positioning.
Store-level pricing, and the franchise question
Major chains price by store, not nationally, and the reasons include local costs, local competition and —
critically — whether the store is company-operated or franchised.
- Franchisees frequently set their own prices within a framework.
- So two stores of the same brand in one city can differ, and that is a deliberate arrangement rather than an
error.
- A national price for a chain averages company-operated and franchised stores with different pricing
autonomy.
store_id is mandatory and national figures are computed rollups with the store detail retained —
the same discipline our Edeka page applies to a retail cooperative.
Where a chain publishes whether a store is franchised we record it. Where it does not, we do not assert it
— that is a fact about the business, not something visible on a menu page.
App-exclusive offers
Chains use app-only pricing heavily. Where an offer requires a signed-in account we do not sign in; the field is
null with a reason and we report gated_offer_share per chain, the same position as member pricing on our
Whole Foods page.
Why this is one page and not seven
Your hub list carries rows for several individual chains plus a general "restaurant chain sites and apps" entry.
We have built one page for all of them, and the reason is worth stating.
The data mechanics are identical across chains. Store-level pricing, franchise variation, combos, required
modifiers, app-exclusive offers, channel gap against platforms — every one of those applies to every major
chain in the same way.
Seven pages would be one page written seven times with the brand swapped, which is the thing we have declined to do
throughout this project. A reader arriving from any chain's name gets the same answer, and it is a better answer for
being written once properly.
What differs between chains, and does not need a page
- Menu structure depth — a pizza chain's builder is deeper than a coffee chain's, which changes record
counts rather than mechanics.
- Franchise share — higher in some brands, which changes how much store-level variation you see.
- App offer intensity — which changes the gated share.
All three are scoping variables. None of them is a different argument.