Agency workflows

iOS App Distribution for Agencies

Build a repeatable agency workflow for Apple team ownership, client-device intake, signing, artifact tracking, delivery, support, and project handoff.

iOS app distribution for an agency is an operating process, not a file-transfer task. A reliable process identifies the client-owned Apple team, controls who may sign, verifies every tester device and artifact, delivers one traceable release, and preserves enough evidence to support installation without exposing Apple secrets.

For a single delivery, a developer can sometimes coordinate those facts manually. Across multiple clients and releases, the agency needs a per-client system of record and a repeatable release gate.

One-off delivery versus repeatable agency operations

A one-off client delivery may be manageable when one app, one Apple team, one build, and a small fixed device set are involved. The developer can verify the IPA, register approved devices if needed, refresh the profile, send release-specific instructions, and close the task.

Repeatable agency operations introduce persistent state:

The scalable unit is therefore not “an IPA.” It is one client release record linked to its authorization state, artifact, tester set, and delivery outcome.

1. Establish ownership before accepting a build

For each app, record which legal entity owns the Apple Developer Program membership and which team ID is authoritative. The client’s team should normally own the App ID, distribution certificate, registered devices, and provisioning profiles for the client’s app.

Define named roles:

Apple roles and Certificates, Identifiers & Profiles access are broader than app-only access in important cases. Grant the least access that supports the agreed work, review it periodically, and remove it during offboarding. Do not ask a client to submit an Apple password, P8 key, P12 file, or signing private key through a public form.

2. Classify the build input

The next step depends on what the agency actually controls:

How to Send an IPA to a Client owns the artifact-first delivery decision. The agency model adds the controls needed to repeat that decision safely.

3. Choose TestFlight or known-device Ad Hoc deliberately

TestFlight is often operationally simpler when testers change frequently, feedback continues across many builds, or the agency should not maintain a per-device Ad Hoc list. Apple supports internal and external tester groups, tester invitations, feedback, and builds that remain testable for up to 90 days. External testing may require TestFlight App Review.

Known-device Ad Hoc delivery can fit when:

Ad Hoc is not simply “faster TestFlight.” Every target device must be registered and included in the profile embedded in the delivered IPA. Compare the operational trade-offs in TestFlight vs Ad Hoc and review broader TestFlight alternatives before standardizing a method.

Collect only what the approved workflow needs:

Explain why the identifier is needed, which Apple team will register it, how long the agency retains it, and how support or removal requests are handled. Validate the identifier locally before using it, detect duplicates inside the same team, and keep one device from being silently attached to the wrong client.

Client Device Onboarding owns the tester-facing sequence. For repeated approved intake, Automatic UDID Registration explains the complete automation boundary.

5. Check team context and device capacity before mutation

Do not register a device until the release operator has verified the intended Apple team. The same agency user may have access to several teams, and a successful registration in the wrong one is still an operational failure.

Apple currently limits Apple Developer Program teams to 100 registered devices per product family per membership year. Disabling a device during that year does not restore capacity. Track the constraint before promising large or rotating Ad Hoc cohorts, and use Apple Developer Device Limits for renewal and timing details.

6. Refresh the full authorization chain

For a new Ad Hoc tester, the complete change is:

validated client UDID
  → registered in the correct Apple team
  → selected in the correct Ad Hoc profile
  → refreshed profile synchronized to the signing workflow
  → source rebuilt or existing IPA re-signed with authorization
  → final IPA inspected

Adding the device in the portal does not update a profile or a previously exported IPA. Downloading a refreshed profile also does not modify the old artifact. Keep profile creation under one declared owner—manual portal management, Xcode automatic signing, or a controlled automation path—and verify the final IPA regardless of the method.

7. Keep a per-client release record

Create one immutable release record for every artifact sent to a client. At minimum record:

Also record source revision or archive reference when available, who approved the release, and the verification result. Do not store Apple passwords, two-factor codes, P8 or P12 contents, private keys, or unencrypted signing secrets in this record.

The checksum is important when a stale link or duplicate filename creates doubt. If the downloaded IPA’s checksum differs from the release record, stop debugging that file as though it were the approved build.

8. Gate the artifact before delivery

Before publishing a client link, verify:

  1. the bundle identifier and team are the intended values;
  2. the code signature verifies;
  3. the embedded profile is current and authorizes the signing certificate;
  4. every approved Ad Hoc device is in the embedded profile;
  5. signed entitlements fit the profile;
  6. the IPA checksum matches the release record; and
  7. the installation method matches the build’s distribution type.

Run the check against the final uploaded or hosted artifact, not only the local export. A hosting or copy step can leave an older file at the same URL.

9. Make delivery instructions release-specific

The client message should state:

Avoid generic “try again” guidance. Ask for the physical device reference, iOS version, exact alert, time, install path, and whether the same artifact works on another authorized device. Keep that evidence attached to the release record.

For formal acceptance, iOS UAT Distribution Workflow adds test scope, result ownership, and release closure.

Use immutable release URLs or versioned object paths where possible. If a release must be replaced, create a new record and clearly mark the old one superseded. Do not silently upload a different IPA under the same link while support is comparing outcomes.

Retire expired or revoked links. Keep the client-facing label, IPA checksum, and server object aligned so the agency can prove which artifact a tester received.

11. Track expiry and capacity as planned work

Maintain reminders for:

Do not wait for an installation failure to discover these dates. A certificate or profile renewal produces new signing state; it does not update already delivered Ad Hoc IPAs.

12. Handoff and offboarding

At project close:

  1. transfer source, archive, release records, and current signing-state documentation through the agreed channel;
  2. identify active builds and delivery links the client should retain or retire;
  3. remove agency users and API access no longer required;
  4. revoke or rotate compromised or agency-controlled secrets under the client’s plan;
  5. delete local copies according to the retention agreement; and
  6. document device records, profiles, and certificates that remain in the client’s team.

Do not revoke a shared distribution certificate casually: it may affect other active work owned by the same team. The client approver and signing custodian should own the change.

Where IPAFlow fits

IPAFlow is in Private Beta / In Development. The product direction is to reduce the operational friction around approved IPA handoff, client-device onboarding, provisioning, authorized re-signing, and installation while each customer uses its own Apple Developer account.

IPAFlow does not claim to replace Apple authorization, bypass device limits, or remove the need for accountable signing ownership. If repeated client-device changes and release tracking are the real bottleneck, review the product boundaries and join Early Access.

Related next steps

Next step. Join IPAFlow Early Access if registered-device onboarding and repeat client delivery are recurring operational bottlenecks.

Sources