Bundles & Licensing
Four ways one piece of software earns more than one price tag.
When This Skill Activates
- A portfolio developer asks how apps can sell each other ("bundle my apps?")
- Deciding whether to enable Family Sharing on a subscription or purchase
- Exploring partnerships with complementary indie apps
- Schools, clinics, or businesses keep asking "how do we buy 30 seats?"
- The store-growth audit flags P8.5, P8.6, or P8.7
1. Own-app bundles (available now)
App bundles group up to 10 of your own paid apps — or apps sharing a subscription — at a bundle
price, with Complete My Bundle crediting what a user already paid.
- ✅ Portfolio play: your catalog cross-sells itself on every member app's product page — a
discovery surface, not just a discount (pairs with the checkbox-storefront and portfolio
tactics in
app-store/marketing-strategy).
- ✅ Price the bundle at "second app ~half off, third+ nearly free" — the goal is basket size
and page presence, not margin per unit.
- ❌ Bundling apps with no shared audience; the bundle card confuses both product pages.
- Mechanics: paid apps only (or one subscription spanning the bundle); free apps can't bundle.
2. Family Sharing (available now — chronically under-enabled)
A checkbox per IAP/subscription in ASC, plus StoreKit handling for shared entitlements. One
purchase covers up to 5 additional family members — 6 entitlements, "6 for the price of 1".
- ✅ Enable for subscriptions whose job is shareable (utilities, education, health, home) —
"the whole family for one price" beats a 6× cheaper feel at maybe 1.5× usage cost, and it's a
paywall differentiator against non-sharing competitors.
- ✅ Drive paywall copy off
isFamilyShareable rather than hardcoding "share with your family".
- ✅ Distinguish
ownershipType — PURCHASED vs FAMILY_PURCHASED — to tailor onboarding;
the family member never saw your paywall or purchase flow.
- ✅ Family entitlements arrive outside any purchase flow, and after a deliberate delay (the
purchaser gets a window to disable sharing first) — listen on
Transaction.updates, and
check entitlement before merchandising (a family member may already be covered).
- ✅ Handle
revocationDate + the REVOKE server notification by re-deriving entitlements from
the full transaction history; test the revoked-from-family path.
- ❌ Enabling it on a per-seat B2B-ish product where sharing cannibalizes real seats — that's
what volume licensing (below) is for.
- One-way door: enabling takes effect within hours for new and existing customers and is
irreversible — turning it off only affects new purchases.
3. Cross-developer bundles & suites
Combined subscriptions spanning apps from different developers — the "indie suite" model
(several complementary tools, one subscription).
- The unlock: each partner's install base becomes the others' warm audience — distribution
cheaper than any paid channel.
- ✅ Partner selection: same buyer, adjacent jobs, no feature overlap (writing tool + reference
manager + focus timer, not three writing tools). Draft revenue-share on attribution of the
acquiring app, not equal splits.
- ✅ Verify current ASC mechanics before promising a ship date — cross-developer suites are a
recent capability and terms/tooling are still settling; the fallback is coordinated own-app
pricing + mutual offer codes (
generators/offer-codes-setup).
- ❌ Partnering with an app whose rating or privacy posture you wouldn't put your name on — a
suite shares reputational blast radius (run
app-store/originality-check thinking on partners).
4. Group Purchases & Volume Purchasing — institutional sales
Live for all auto-renewable subscriptions using StoreKit 2 (StoreKit 2 required). ON by default
for most new and existing StoreKit 2 subscriptions — but Family Sharing-enabled subscriptions
are opted OUT by default. Configure per subscription in ASC.
Two sale paths, same seat pool:
- In-app group purchases — a customer buys N seats, shares an invite link, and accepters are
auto-assigned to seats.
- Volume purchasing through Apple Business Manager / Apple School Manager — the
institutional channel for schools, clinics, and businesses.
Mechanics:
- Volume pricing = up to 5 price bands, with full control of seat thresholds and each band's
price. The default is every seat at the current price — no discount exists until you configure
bands (e.g., $19.99 → $13.99 at 21–40 seats → $10.99 at 41+; a 50-seat purchase then averages
~20% off).
- ✅ Prefer the built-in seat management (invites, acceptance tracking, seat lifecycle) unless
you already run member management — then use the App Store Server API group endpoints instead.
- ✅ Merchandise the group value in-app — buyers won't discover multi-seat pricing on their own.
- ✅ Education/health apps: this often outearns consumer conversion optimization by an order of
magnitude — one district buys more seats than a year of paywall A/B tests adds.
- ❌ Building custom seat management UI before validating a single institutional buyer exists —
the built-in flow covers the first sale.
- Custom Apps via Apple Business Manager remain the path for bespoke B2B distribution; Group
Purchases brings multi-seat to the mainstream store — different tools, same buyer.
- Reference: the WWDC26 session on group purchases and volume purchasing.
Decision sketch
| You have |
Reach for |
| 2+ paid apps, shared audience |
Own-app bundle |
| A shareable-job subscription |
Family Sharing on |
| A complementary indie peer with real traffic |
Cross-developer suite (or mutual offer codes today) |
| Institutions asking to buy seats |
Group Purchases / volume price bands (live — configure in ASC) |
Output Format
Portfolio: bundle-eligible apps? bundle live? Complete-My-Bundle pricing sane?
Family Sharing: enabled where the job is shareable? entitlement handling tested?
Partnerships: candidate named? terms sketched?
Institutional: demand evidence? seats model drafted? volume price bands configured?
Each gap routed to the numbered section above; StoreKit implementation to
generators/subscription-lifecycle, offer distribution to generators/offer-codes-setup.
References
1---2name: bundles-and-licensing3description: Revenue beyond the single-app price tag — own-app bundles, Family Sharing as a conversion lever, cross-developer bundles & suites, and institutional licensing via Group Purchases / Apple School & Business Manager. Use when a developer has multiple apps, a subscription worth sharing, complementary indie partners, or school/clinic/business buyers.4---5
6# Bundles & Licensing
7
8Four ways one piece of software earns more than one price tag.
9
10## When This Skill Activates
11
12- A portfolio developer asks how apps can sell each other ("bundle my apps?")
13- Deciding whether to enable Family Sharing on a subscription or purchase
14- Exploring partnerships with complementary indie apps
15- Schools, clinics, or businesses keep asking "how do we buy 30 seats?"
16- The store-growth audit flags P8.5, P8.6, or P8.7
17
18## 1. Own-app bundles (available now)
19
20App bundles group up to 10 of your own paid apps — or apps sharing a subscription — at a bundle
21price, with **Complete My Bundle** crediting what a user already paid.
22
23- ✅ Portfolio play: your catalog cross-sells itself on every member app's product page — a
24 discovery surface, not just a discount (pairs with the checkbox-storefront and portfolio
25 tactics in `app-store/marketing-strategy`).
26- ✅ Price the bundle at "second app ~half off, third+ nearly free" — the goal is basket size
27 and page presence, not margin per unit.
28- ❌ Bundling apps with no shared audience; the bundle card confuses both product pages.
29- Mechanics: paid apps only (or one subscription spanning the bundle); free apps can't bundle.
30
31## 2. Family Sharing (available now — chronically under-enabled)
32
33A checkbox per IAP/subscription in ASC, plus StoreKit handling for shared entitlements. One
34purchase covers up to 5 additional family members — 6 entitlements, "6 for the price of 1".
35
36- ✅ Enable for subscriptions whose *job* is shareable (utilities, education, health, home) —
37 "the whole family for one price" beats a 6× cheaper feel at maybe 1.5× usage cost, and it's a
38 paywall differentiator against non-sharing competitors.
39- ✅ Drive paywall copy off `isFamilyShareable` rather than hardcoding "share with your family".
40- ✅ Distinguish `ownershipType` — `PURCHASED` vs `FAMILY_PURCHASED` — to tailor onboarding;
41 the family member never saw your paywall or purchase flow.
42- ✅ Family entitlements arrive *outside* any purchase flow, and after a deliberate delay (the
43 purchaser gets a window to disable sharing first) — listen on `Transaction.updates`, and
44 check entitlement before merchandising (a family member may already be covered).
45- ✅ Handle `revocationDate` + the REVOKE server notification by re-deriving entitlements from
46 the full transaction history; test the revoked-from-family path.
47- ❌ Enabling it on a per-seat B2B-ish product where sharing cannibalizes real seats — that's
48 what volume licensing (below) is for.
49- One-way door: enabling takes effect **within hours for new and existing customers** and is
50 irreversible — turning it off only affects new purchases.
51
52## 3. Cross-developer bundles & suites
53
54Combined subscriptions spanning apps from *different* developers — the "indie suite" model
55(several complementary tools, one subscription).
56
57- The unlock: each partner's install base becomes the others' warm audience — distribution
58 cheaper than any paid channel.
59- ✅ Partner selection: same buyer, adjacent jobs, no feature overlap (writing tool + reference
60 manager + focus timer, not three writing tools). Draft revenue-share on *attribution of the
61 acquiring app*, not equal splits.
62- ✅ Verify current ASC mechanics before promising a ship date — cross-developer suites are a
63 recent capability and terms/tooling are still settling; the fallback is coordinated own-app
64 pricing + mutual offer codes (`generators/offer-codes-setup`).
65- ❌ Partnering with an app whose rating or privacy posture you wouldn't put your name on — a
66 suite shares reputational blast radius (run `app-store/originality-check` thinking on partners).
67
68## 4. Group Purchases & Volume Purchasing — institutional sales
69
70Live for all auto-renewable subscriptions using StoreKit 2 (StoreKit 2 required). ON by default
71for most new and existing StoreKit 2 subscriptions — but Family Sharing-enabled subscriptions
72are opted OUT by default. Configure per subscription in ASC.
73
74Two sale paths, same seat pool:
75- **In-app group purchases** — a customer buys N seats, shares an invite link, and accepters are
76 auto-assigned to seats.
77- **Volume purchasing** through **Apple Business Manager / Apple School Manager** — the
78 institutional channel for schools, clinics, and businesses.
79
80Mechanics:
81- **Volume pricing = up to 5 price bands**, with full control of seat thresholds and each band's
82 price. The default is every seat at the current price — no discount exists until you configure
83 bands (e.g., $19.99 → $13.99 at 21–40 seats → $10.99 at 41+; a 50-seat purchase then averages
84 ~20% off).
85- ✅ Prefer the built-in seat management (invites, acceptance tracking, seat lifecycle) unless
86 you already run member management — then use the App Store Server API group endpoints instead.
87- ✅ Merchandise the group value in-app — buyers won't discover multi-seat pricing on their own.
88- ✅ Education/health apps: this often outearns consumer conversion optimization by an order of
89 magnitude — one district buys more seats than a year of paywall A/B tests adds.
90- ❌ Building custom seat management UI before validating a single institutional buyer exists —
91 the built-in flow covers the first sale.
92- Custom Apps via Apple Business Manager remain the path for bespoke B2B distribution; Group
93 Purchases brings multi-seat to the mainstream store — different tools, same buyer.
94- Reference: the WWDC26 session on group purchases and volume purchasing.
95
96## Decision sketch
97
98| You have | Reach for |
99|---|---|
100| 2+ paid apps, shared audience | Own-app bundle |
101| A shareable-job subscription | Family Sharing on |
102| A complementary indie peer with real traffic | Cross-developer suite (or mutual offer codes today) |
103| Institutions asking to buy seats | Group Purchases / volume price bands (live — configure in ASC) |
104
105## Output Format
106
107```
108Portfolio: bundle-eligible apps? bundle live? Complete-My-Bundle pricing sane?
109Family Sharing: enabled where the job is shareable? entitlement handling tested?
110Partnerships: candidate named? terms sketched?
111Institutional: demand evidence? seats model drafted? volume price bands configured?
112```
113
114Each gap routed to the numbered section above; StoreKit implementation to
115`generators/subscription-lifecycle`, offer distribution to `generators/offer-codes-setup`.
116
117## References
118
119- https://developer.apple.com/help/app-store-connect/create-an-app-bundle/
120- https://developer.apple.com/documentation/storekit/supporting-family-sharing-in-your-app
121- https://support.apple.com/guide/apple-business-manager/welcome/web
122- Related skills: `monetization` (pricing/tiers), `generators/subscription-lifecycle`, `generators/offer-codes-setup`, `growth/store-growth-audit`