An 8-year-old bubble-tea chain owner laid three logins in front of me: the website built by Agency A, the ordering app by Agency B, and inventory on a packaged SaaS. Every day store managers reconcile three systems by hand; month-end revenue-and-inventory matching alone eats two full days. His question was simple: "Can these three become one?" That's the classic starting point for "website + app + admin" integration — not wanting new features, but being unable to stand systems that disagree with each other.
When it fits vs when it doesn't
- Fits: the same product/member/order data must appear across website, app, and admin; you already reconcile too many systems by hand; you plan to expand locations or SKUs within 1–2 years and need a single source of truth.
- Fits: you want orders placed on the website to show in the app and decrement inventory in admin in real time; you want unified loyalty points across channels.
- Doesn't fit: the business model is still being validated and products/flows change monthly — forcing integration welds down "things not yet settled."
- Doesn't fit: you have a single channel (e.g., website only) with no cross-system reconciliation pain; or budget covers only one piece, so a full stack leaves each piece shallow.
Alternatives matrix
| Option | Pros | Cons | Cost tier |
|---|---|---|---|
| Separate packaged SaaS per channel | Fast, monthly entry | Siloed data, limited customization, fees compound over time | Low–mid (NT$3,000–30,000+/mo) |
| iPaaS gluing existing systems (Zapier / Make / n8n) | Keeps current tools, quick wiring | "Glue" not "integration"; consistency via polling, brittle | Mid (tool fees + integration hours) |
| Custom integrated stack (shared backend API) | Single source of truth, evolvable, real-time cross-channel sync | Higher upfront, longer build | High (from NT$300k, scope-dependent) |
ScriptWalker uses one Laravel backend API as the shared core; the website (Web) and app (one Flutter codebase across iOS/Android) share the same data and business logic, and admin is the management UI of the same permission system.
Full process breakdown (with tools and deliverables)
- Phase 1: Requirements & data model (1–2 weeks) — Deliverables: cross-channel data dictionary (how member/product/order/inventory are shared), draft API spec. Tools: Figma (flows), Notion (specs).
- Phase 2: Backend API & database (3–5 weeks) — Deliverables: Laravel API + MySQL schema, permission model, API docs. This is the heart of the stack.
- Phase 3: Website & admin (3–4 weeks) — Deliverables: public site, admin UI (inventory, orders, members).
- Phase 4: Flutter app (4–6 weeks) — Deliverables: iOS/Android app sharing the same API.
- Phase 5: Integration testing & launch (2–3 weeks) — Deliverables: cross-system sync test report, payment integration (ECPay/Stripe), go-live. Tools: UptimeRobot (monitoring), Sentry (error tracking).
Full real-cost breakdown
- Development: integration from NT$300k; with an app, typically NT$600k–1.5M.
- Payment fees (hidden): ECPay credit card ~2.75%–3%, Stripe ~3.4% + fee; the more cross-channel volume, the bigger this gets.
- Store fees (hidden): Apple Developer US$99/yr, Google Play one-time US$25.
- Infrastructure (hidden): server/cloud monthly, SSL (mostly free now), CDN, SMS/push.
- Ongoing maintenance (most overlooked): OS updates, API changes, security patches — budget 15%–20% of dev cost per year.
Reality vs client imagination
- Clients think "merging three systems is just wiring screens together"; reality: you unify the data model first, screens come last — if data isn't aligned, no pretty UI reconciles.
- Clients think "the app does the same as the website, so it takes similar time"; reality: dual-platform review, push, and offline handling usually make the app take more hours.
- Clients think "launch once and done"; reality: iOS/Android force annual updates; an unmaintained app gets delisted or uninstallable within 1–2 years.
Common traps and how to avoid them
- Trap: build the app first, backfill the backend. Fix: always define the shared API and data model first; app and website are its consumers.
- Trap: inventory counted separately on web and app. Fix: store inventory in one place on the backend; all channels read the same number live.
- Trap: member systems don't talk across channels. Fix: one identity (SSO/single user table); points and orders consistent everywhere.
- Trap: payment hard-wired to one provider. Fix: abstract a payment interface so switching ECPay/Stripe/TapPay doesn't touch business logic.
- Trap: no staging, change production directly. Fix: route every change through staging with automated tests before launch.
Success metrics + 90-day roadmap
- Day 30: cross-system reconciliation time down (target: from 2 days/month to 0), zero data-consistency errors.
- Day 60: app installs, cross-channel repeat-login rate, order-source split (web vs app).
- Day 90: average order value and repurchase rate (do cross-channel points lift repurchase?), admin-hours reduction — decide the next phase (auto-replenishment, push marketing).
Decision checklist
- ☐ My member/product/order data is manually synced across 2+ systems
- ☐ I spend more than 1 day/month on cross-system reconciliation
- ☐ I plan to expand locations or SKUs within 1–2 years
- ☐ I need customers to see the same live inventory on web and app
- ☐ My business processes are largely settled (not changing monthly)
- ☐ My budget covers the core backend + at least one front-end channel
- ☐ I understand the app needs long-term maintenance (annual OS updates)
- ☐ I'm willing to invest in the data model before pretty screens
- ☐ I need consistent cross-channel loyalty points
- ☐ I have staff or a partner to keep operating the system post-launch
6+ checks: integration pays off; fewer than 4: nail your most painful single channel first.
FAQ
Must integration include the app?
No. The core is "shared backend API + single source of truth." You can do website + admin first, designing the API to accept an app later; add the Flutter app when channel demand matures.
I already have a website and a SaaS admin — can I still integrate?
Yes, but first assess whether the existing systems expose APIs. If the SaaS is closed and can't export live data, integration becomes brittle polling; rebuilding a shared backend often costs less long-term than forcing glue.
After integrating, do I change all three systems to edit one feature?
The opposite. A shared backend means business logic changes in one place and reflects across website, app, and admin. Siloed systems need three edits — exactly the problem integration solves.
How long to launch?
A full stack with an app usually takes 4–6 months; doing website + admin first with the app later, phase one launches in ~2–3 months, depending on product complexity and payment/logistics integration.
Call to action
Want to know whether your three systems should become one — and what it costs? We offer a free 30-minute integration assessment to map your data flows and real costs.
- Email: [email protected]
- Phone: 0916-224-047
- LINE: @ufv9089p