Phase 4 · Markets and data
Apps and Sales Channels: Review Permissions Before Install and Cleanup After Removal
Create app approval, permission, and cost records, audit sales-channel product availability and data sharing, and handle uninstall cleanup for code, webhooks, pixels, and custom apps.
What counts as complete in this lesson
Use Settings > Apps and sales channels to reach the correct page, then configure, save, verify, and record the result. Completion means you can point to the saved state, verification result, and condition that allows the next step—not merely that you opened the page.
- Admin path
- Settings > Apps and sales channels
- Lesson output
- An app and channel register with owner, purpose, permissions, data, cost, trial end, products, pixels, webhooks, privacy impact, uninstall steps, and last review date.
- Continue when
- Every retained item has an owner and job, permissions and cost are explainable, product/event paths are tested, and removed items have residue checks.
- Stop when
- An app has no defined job, asks for excess access, has an ownerless trial, or has unchecked uninstall residue.
Evidence boundary: A saved admin state is not the same as a verified storefront, order path, or downstream result. Check the current store, page title, complete target section/card, and returned result at every step.
Why this lesson comes now
Apps add capability quickly but can also access products, customers, orders, themes, and payment-related data. Uninstalling does not guarantee that theme code, pixels, webhooks, or external data disappear immediately. New custom apps use the current Dev Dashboard path; every app needs a business job, permission boundary, and exit plan.
Prepare before opening the admin
- Complete Billing, Users, Customer privacy, and Customer events foundations.
- List installed apps, channels, theme app embeds, and external accounts.
- Define launch-required capabilities and place the rest in a backlog.

Make the approval record auditable: A grounded-theory single-case study of SAP's shift from an on-premises ERP product-platform ecosystem to a cloud innovation-platform ecosystem traces the 2012-2019 transformation; interviews ran from early 2016 through mid-2019. The formal article was published in 2022, while this page-level review uses the public 2019 author-version PDF. It identifies governance challenges in rebalancing top-down control with bottom-up emergence, re-professionalizing ecosystem participants, and redefining the ecosystem's organizational vision (see the paper). It is one enterprise-software case: it does not transfer across industries and does not prove generic ecommerce outcomes, current Shopify outcomes, merchant outcomes, revenue, conversion, or causality; it also does not prove current Shopify permission, channel, pixel, or webhook behavior. Use it here only as a governance prompt: in addition to purpose, permissions, cost, and exit conditions, record input ownership, approver, rollback method, and which decisions must remain human controlled. Current-store readback remains a separate check: verify the current store's permissions, product publication, pixels, and webhooks with this lesson's Shopify admin and storefront/event checks.
Follow the English admin step by step
After each step, refresh the admin or verify the storefront. A saved state in admin does not automatically prove the customer-facing result.
Create a pre-install approval card
For every app, record the problem, current alternative, success metric, cost, data types, permissions, owner, trial end, and uninstall condition. Do not install an app without a defined job.
Expected result: Have one approval card for this app, not only an open install page or a plan to review it later.
Completion standard: The actual store’s approval card contains the real job, cost, owner, and exit condition and can be reviewed in the record.
If the result is missing or wrong: If the entry, fields, or save response are wrong, confirm the current store and page title, then return through Settings > Apps and sales channels and recheck access, plan, market, and required fields.
Evidence to keep: Record the actual value, verification time, owner, and evidence location. An app list, permission page, or Uninstalled state does not prove that theme code, pixels, webhooks, and external data are gone.
Read permissions and data access
Review installation permissions field by field, especially Customers, Orders, Products, Themes, Marketing, and store settings. When access exceeds the job, ask the developer or choose an alternative.
Expected result: You can explain why each permission is needed and which data surface it reads or changes.
Completion standard: The real permission scope matches the business job, with at least one saved value, page result, storefront behavior, or record as evidence.
If the result is missing or wrong: Do not edit a similarly named page. Return to the complete section/card and recheck account access, plan or market availability, required fields, and the save response.
Evidence to keep: Put permissions, job, owner, and last review date in the register. A permission page proves configuration only; it does not prove the app kept no external data.
Failure handling: If a product is missing from a channel, check channel connection, Markets, Catalog, product availability, policy review, and feed errors instead of repeatedly publishing.
Configure sales channels and product availability
Open Settings > Apps and sales channels and review active channels such as Online Store, Shop, Google, and Meta. Verify account connection, data sharing, market, and product publication; Active in Shopify does not mean available everywhere.
Expected result: Each channel actually in use has its own product-availability and data-sharing result.
Completion standard: Channel connection, market, catalog, and product publication were read back separately with reviewable evidence.
If the result is missing or wrong: If the state looks correct but the storefront or channel preview is wrong, confirm the page title and current store, then check sync timing, market scope, and policy review.
Evidence to keep: Record channel, product, market, returned result, and readback time; “Active” describes only the Shopify-side state.
Inspect app embeds, pixels, and webhooks
After installation, inspect Theme App embeds, Customer events, notifications, and external platform behavior. Record scripts, pixels, webhooks, or order tags, then test performance, consent, and duplicate events before launch.
Expected result: You know which storefront, event, and external-data paths the app affects, not merely that it is installed.
Completion standard: App embeds, pixels, webhooks, performance, consent, and duplicate events each have a check result and owner.
If the result is missing or wrong: If a storefront widget remains after uninstall, inspect Theme App embeds, sections, snippets, script tags, and cache, and validate cleanup on a theme copy.
Evidence to keep: Keep storefront, Customer events, webhook, or external-platform readback together; an admin “saved” state is not proof that an event succeeded.
Failure handling: If a widget or event survives uninstall, pause expansion and complete a residue checklist and theme-copy validation first.
Handle custom apps correctly
For new integrations in 2026, create custom apps through Shopify’s current Dev Dashboard rather than old Develop apps instructions. Record scopes, tokens, rotation, and owner, and never expose a token in storefront code.
Expected result: The register explains the custom app’s scopes, token rotation, owner, and storage location.
Completion standard: The creation path matches the current admin, tokens are not in the storefront, and rotation and revocation ownership are clear.
If the result is missing or wrong: If the old Develop apps entry is missing, do not keep searching for a legacy path. Return to Dev Dashboard and recheck scopes and owner.
Evidence to keep: Record only the app name, scopes, owner, rotation date, and revocation condition; never record a secret.
Complete post-uninstall cleanup and evidence
Export required data and record billing and dependencies before removal. After uninstall, check theme code, app embeds, pixels, webhooks, API tokens, DNS, pages, menus, and external accounts. Confirm charges stop, handle retention or deletion, and close the ticket only after that.
Expected result: Leave a reviewable exit chain: export, uninstall, residue check, charge confirmation, data handling, and closure condition.
Completion standard: An Uninstalled app-list state is only one step; theme, events, external data, charges, and access each have their own result.
If the result is missing or wrong: If any residue or billing state is unclear, do not mark the task complete. Return to that surface, assign an owner, and set the next review date.
Evidence to keep: An app list, permission page, or Uninstalled state does not prove that theme code, pixels, webhooks, and externally stored data are removed.
Failure handling: If the old Develop apps entry is missing, use Shopify Dev Dashboard for new custom apps and record the current path again.

Apply the decision in your store
The steps above explain the mechanism and admin path. Now use one concrete situation to check the decision rather than only remembering the page: an old app shows Uninstalled, but its theme app embed remains and Customer events still contains its pixel. Can you close the task?
Do not treat disappearance from the app list as completion; cleanup must be verified across theme, pixel, webhook, access, and external data.
Use the admin path above, then apply it to one concrete situation.
Use this lesson in your store
By the end, you should have: An app and channel register with owner, purpose, permissions, data, cost, trial end, published products, pixels, webhooks, privacy impact, uninstall steps, and last review date.
Relevant admin path: Settings > Apps and sales channels
Make the decision before reading the reason
Choose the action that solves the problem first, then read the explanation.
Confirm these items in your store
Check each item against the current store; this checklist does not save settings or run tests.
This screen still cannot tell you: An app list, permission page, or Uninstalled state does not prove theme code, pixels, webhooks, and externally stored data are removed
Continue when: every retained item has an owner/job, permissions and cost are explainable, product/event paths are tested, and removed items have residual checks
Stop when: If an app has no job, asks for excess access, has an ownerless trial, or removal residue is unchecked, do not expand
Next: The final lesson uses test orders and launch QA to connect the previous 19 lessons into a reversible release path.
Complete the decision or checks first. When information is missing, a pause is safer than guessing a pass.

Decisions to make in this lesson
Enter the actual values for this store row by row. Do not treat examples or planned values as completed work. Mark a row passed only when the actual value meets the condition and has saved or tested evidence.
| Decision | Recommended setting | Why |
|---|---|---|
| Install condition | Defined job and metric | Potential usefulness is not enough |
| Permissions | Minimum necessary | Reduces customer and order-data exposure |
| Sales channels | Accept individually | Product status does not guarantee channel publication |
| Custom app | Dev Dashboard | Matches the current creation path |
Review every row after filling it in. Missing permission, result, or ownership means return to the relevant step before continuing.

Do not change these blindly
- Do not one-click every recommended app.
- Do not assume uninstall removes all code and external data.
- Do not follow old instructions to create a legacy custom app.
FAQ
Is cleanup complete when billing stops after uninstall?
No. Billing is only the cost boundary; also check theme code, app embeds, pixels, webhooks, API tokens, and external data.
Does Active in Shopify mean every channel can sell the product?
No. Account connection, market, catalog, policy review, and channel publication need separate readback.
What if the old Develop apps entry is missing?
Do not keep searching for the legacy path; use Dev Dashboard and record scopes, rotation, and owner.
Conclusion and continue line
Apps and channels are controlled assets with a business rationale, least privilege, cost boundaries, and verified exit work. Continue only when every retained item has an owner and job, permissions and cost are explainable, product/event paths are tested, and removed items have residue checks.
- • Every app and channel has owner, job, cost, and permission records.
- • Product availability is checked in every used channel.
- • App embeds, pixels, webhooks, and performance are reviewed.
- • Custom apps use the current Dev Dashboard path with protected tokens.
- • Uninstall cleanup covers code, charges, data, and external accounts.