BURGER KING®
Restaurant app with vouchers, finder content, and campaign surfaces.
- Google Play installs
- 14.3M
- Store rating
- 3.9
Upload the web layer of your ordering app from CI when the promotion goes live. Route it by market or brand with channels, start with a pilot, and roll it back if ordering breaks.
14-day unlimited free trial. No credit card required
Enterprise needs? Talk to our team
Why restaurant teams add a live update lane
A limited-time item goes live on a set date. On launch morning, QA finds that it does not show in the app menu.
The fix is in the web layer, but a store-only process means a new binary and store review, which is often 24–48 hours, sometimes much longer.
Even after approval, customers still have to install the update, and in-store kiosks need their own update path.
A limited-time offer starts when the campaign starts. A web-layer fix should not wait for a store release.
Each brand app and each market can need different menus, promotions, and legal text from the same codebase.
A new ordering flow should run in one market or a few test devices before it goes everywhere.
A broken ordering screen at lunch needs a way back that does not depend on a store release.
Use cases
Fix order and checkout screens in the web layer and ship menu display changes without a new binary.
Update reward screens, point displays, and redemption flows. Point values that come from your backend change there.
Update store information screens, pickup instructions, and curbside options in the web layer.
Launch promo banners, offer pages, and campaign entry points on your date. Pilot them on one channel first.
Kiosk apps can stay open all day. Apply updates during periodic checks, or when the kiosk returns to its idle screen.
Keep every brand app in one Capgo organization, each with its own app ID, channels, and release history.
What Capgo gives restaurant teams
Capgo has no release scheduler. Your CI triggers the upload: on merge, on a manual run, or on a cron schedule you set for the launch.
# .github/workflows/capgo-launch.yml
on:
workflow_dispatch:
schedule:
- cron: '0 6 15 11 *' # 06:00 UTC on 15 Nov, your launch time
jobs:
upload:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- run: npm ci && npm run build
- run: npx @capgo/cli@latest bundle upload --channel production --delta
env:
CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
# one app ID per brand, same web codebase
npx @capgo/cli@latest bundle upload com.yourgroup.brand-a --channel production
npx @capgo/cli@latest bundle upload com.yourgroup.brand-b --channel production
Each brand app is its own app in Capgo, with its own channels and release history. Manage them in one organization with roles per team member.
Create a channel for each market, region, or pilot group. The app joins with setChannel() on channels that allow self-assignment, and your team can pin a device with an override.
// in the app, after the user or kiosk picks a market
import { CapacitorUpdater } from '@capgo/capacitor-updater'
await CapacitorUpdater.setChannel({ channel: 'market-uk' })
// capacitor.config.ts
CapacitorUpdater: { autoUpdate: 'onlyDownload' }
// kiosk app
let next
CapacitorUpdater.addListener('updateAvailable', ({ bundle }) => {
next = bundle
})
// when the kiosk is back on its idle screen
if (next) await CapacitorUpdater.set({ id: next.id })
The default mode applies updates when the app goes to the background, which a kiosk rarely does. Download updates automatically and apply them when the kiosk is idle.
How it works
A typical flow for a promotion that starts in one market. Every command below is from the Capgo CLI docs.
Allow self-assignment so the app can join the channel for the market the user or kiosk is in.
npx @capgo/cli@latest channel add market-uk --self-assign
Channels docs
Run this from CI at launch time. The rollout sends the bundle to a share of devices on the channel while the rest stay on stable.
npx @capgo/cli@latest bundle upload --channel market-uk --delta --rollout 10
Progressive rollouts docs
When ordering works as expected, promote the bundle to every device on the channel.
npx @capgo/cli@latest channel set market-uk --rollout-promote
Progressive rollouts docs
If ordering breaks, send the rollout back to stable, or pick the previous bundle from the channel history in the console.
npx @capgo/cli@latest channel set market-uk --rollout-rollback
Rollbacks docs
Apps built with Capacitor
Quick-service restaurant apps can update promotions, restaurant finder content, ordering notices, and regional campaign entry points without waiting for store approval.
Restaurant app with vouchers, finder content, and campaign surfaces.
Ordering app where menu, rewards, and checkout guidance can change quickly.
Restaurant app where loyalty and food-ordering paths need frequent polish.
Customer proof
Founder, NuTriQ
“Being able to push production OTA updates instantly without waiting for full App Store review cycles has been a massive operational advantage.”
Lead Developer, drivolino GmbH
“The Capgo Capacitor Updater plugin completely transformed how we ship updates. What used to take days now takes just minutes.”
Developer, Webincode
“Being able to add Device ID's to certain groups and push the changes to only certain groups is a life saver.”
FAQ
Timing, kiosks, markets, and what a live update can change.
Capgo does not have a release scheduler. Trigger the upload from your CI at the time you choose, for example with a scheduled GitHub Actions workflow or a manual run on launch morning. If the new UI must stay hidden until a date, gate it in your app or backend.
GitHub Actions guideIn the default mode, updates apply when the app goes to the background, which a kiosk rarely does. Set autoUpdate to 'always' to apply updates during the periodic check (every 10 minutes by default), or to 'onlyDownload' and call set() when the kiosk returns to its idle screen.
Update behavior docsYes. Give each brand its own app ID in Capgo, and give each market or pilot group its own channel. Devices join a channel with setChannel() when self-assignment is allowed, or through a device override.
Channels docsRoll back the progressive rollout or pick the previous bundle from the channel history. If the new bundle fails to start and never calls notifyAppReady(), the device returns to the last working bundle by itself.
Rollbacks docsPrices usually come from your backend or POS integration, so change them there. A live update changes the web screens that display the menu and prices. Native plugins, payment SDKs, and Capacitor upgrades need a store release.
Native compatibility docsSet up market channels and a CI upload on your own app during the trial.
human support from Martin
14-day unlimited free trial. No credit card required
Enterprise needs? Talk to our team