Declare telemetry and privacy disclosures
Checkout Kit records a small set of anonymous diagnostic metrics — internal errors, event decode failures, navigation retries, and checkout load durations — and sends them to Shopify to monitor the reliability of the SDK. Telemetry is enabled by default, contains no personal data and no stable identifiers, and can be turned off with a single configuration flag. This page describes what's collected, how to opt out, how to control local logging, and what to declare in your App Store and Google Play privacy disclosures.
This page exists because of the app stores, not the law: the App Store privacy label and PrivacyInfo.xcprivacy on iOS, and the Data safety form on Google Play, require you to declare the data any SDK in your app collects, so you need to know exactly what Checkout Kit sends. If you'd rather not declare it, you can turn diagnostic telemetry off.
Anchor to RequirementsRequirements
- Checkout Kit installed in your app.
Anchor to What Checkout Kit collectsWhat Checkout Kit collects
Diagnostic telemetry is limited to six aggregate metrics:
- Errors: a counter of failures observed by the SDK, tagged with a bounded category (such as
http,navigation, orprotocol), a lifecycle stage, and a platform-independent error code. - Protocol decode failures: a counter of checkout events that couldn't be decoded, tagged with the event method and failure type. The raw message and the decoder error are never recorded.
- Navigation retries: a counter of the SDK's automatic retry decisions and their outcomes.
- Checkout load duration: a histogram of the initial checkout navigation time, tagged with the result and whether checkout was preloaded.
- Ready duration: a histogram of the time from the first navigation until checkout reports it's ready, tagged with
readyornot_readyand whether checkout was preloaded. - Confirmation reached: a counter recorded when a checkout presentation ends after a completion message or on the order confirmation page, tagged with whether the completion message was delivered. iOS and Android only.
Every attribute is a closed, low-cardinality value — the SDK can't attach arbitrary data. Diagnostic telemetry never includes:
- Checkout, cart, order, shop, customer, or payment identifiers
- Your app's bundle or package identifier, or any stable device identifier
- URLs, origins, query parameters, HTTP bodies, or headers
- Raw checkout protocol messages or decoded payload content
- Exception text, error descriptions, or stack traces
On React Native, diagnostic telemetry is recorded and sent by the underlying native SDK.
Anchor to Turn telemetry offTurn telemetry off
Telemetry is enabled by default. Set the telemetry configuration to opt out. Turn it off before the SDK first runs and nothing is recorded or sent. Turning it off at runtime discards queued measurements and stops new ones, but an upload already in flight can still arrive.
Disable diagnostic telemetry
Swift
ShopifyCheckout.configure {
$0.telemetry.enabled = false
}Kotlin
ShopifyCheckout.configure {
it.telemetry = Telemetry { enabled = false }
}React Native
<ShopifyCheckoutProvider configuration={{ telemetry: false }}>
{children}
</ShopifyCheckoutProvider>If your privacy program treats diagnostics as non-essential data that requires consent in some regions, invert the default: disable telemetry at startup and enable it only after the user has consented.
Anchor to Control local loggingControl local logging
Independent of telemetry, the SDK writes diagnostic logs to the device's local log output (Console on iOS, Logcat on Android). These logs stay on the device and are never sent to Shopify. Telemetry itself writes nothing to the local log at any level — the metrics are recorded and sent silently — so the log shows the SDK's own diagnostics, not what telemetry collects. The default level is warn on every platform, which surfaces warnings and errors only. Use logLevel to control verbosity — the default is warn; set it to none to silence the SDK's native logs, or debug while integrating. On React Native, logLevel controls the native SDK's output; the JavaScript layer can still print its own warnings and errors to the console.
Set the log level
Swift
ShopifyCheckout.configure {
$0.logLevel = .debug
}Kotlin
ShopifyCheckout.configure {
it.logLevel = LogLevel.DEBUG
}React Native
<ShopifyCheckoutProvider configuration={{ logLevel: LogLevel.debug }}>
{children}
</ShopifyCheckoutProvider>Anchor to Declare diagnostics in your store listingsDeclare diagnostics in your store listings
App store review requires you to disclose the data that your app — including the SDKs it embeds — collects. With telemetry enabled, account for Checkout Kit's diagnostics in your app's privacy disclosures. If you disable telemetry, the SDK sends no diagnostic data and there's nothing to declare for it.
This section covers only the data Checkout Kit's diagnostics send. Your app's full disclosure depends on everything else it collects — confirm your store listings and policies with your privacy or legal team.
This section covers only the data Checkout Kit's diagnostics send. Your app's full disclosure depends on everything else it collects — confirm your store listings and policies with your privacy or legal team.
Anchor to App Store (iOS)App Store (i OS)
In your app's App Privacy details in App Store Connect, declare the Diagnostics data types Performance Data and Other Diagnostic Data, used for App Functionality, not linked to the user's identity, and not used for tracking.
If your app maintains a privacy manifest (PrivacyInfo.xcprivacy), add the same data types to your app-level manifest's NSPrivacyCollectedDataTypes, with NSPrivacyCollectedDataTypeLinked and NSPrivacyCollectedDataTypeTracking set to false:
Checkout Kit's diagnostics don't use tracking or the advertising identifier, so they don't require an App Tracking Transparency prompt.
Anchor to Google Play (Android)Google Play (Android)
In the Data safety form in Play Console, declare collection under App info and performance → Diagnostics: collected (not shared with other organizations for their own use), encrypted in transit, used for Analytics — Google Play's purpose for data collected to monitor how an app or SDK performs, which is what these metrics do. Diagnostics are retained for monitoring, so don't mark them as processed ephemerally. If you expose an in-app setting that lets users turn telemetry off, you can declare the collection as optional.
Checkout Kit requires no Android permissions beyond INTERNET, which your app already declares to present checkout.
Anchor to Your privacy policy and termsYour privacy policy and terms
Disclose in your privacy policy that your app sends anonymous diagnostic and performance data to Shopify to operate and improve the checkout SDK. Because the data carries no personal information or identifiers, it generally doesn't require user consent — but if your program or the regions you operate in treat diagnostics as consent-gated, turn telemetry off until consent is captured.
Buyer consent for checkout itself — cookies, marketing, and data processing preferences — is a separate concern handled through your storefront's consent flow. See Privacy compliance.