> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trueorigin.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Troubleshooting

> When an install does not show up, or does not match.

Turn on SDK logging first: `options.logging = true` in Swift, `logging: true` in React
Native. The SDK logs to the unified logging system under the subsystem `dev.trueorigin.sdk`;
filter for it in Console.app or the Xcode console.

<AccordionGroup>
  <Accordion title="The status is failed">
    The install could not be reported. Either the device had no network for the whole
    `reportTimeout` (six hours by default), or the SDK key was rejected. Check that the key
    starts with `to_` and has not been rotated since the build was made: rotating in
    **Settings → SDK key** stops the old key at once, and builds still using it stop
    reporting.
  </Accordion>

  <Accordion title="The test install shows as unmatched">
    * Tap the tracking link on the **same iPhone** you install and open the app on, and open
      the app soon after installing.
    * Use a link from **Tracking links** that shows as **Live**. A new link needs about 15
      seconds to reach the click page.
    * A reinstall counts as a new install: tap the link again before each test install.
  </Accordion>

  <Accordion title="Nothing shows up at all">
    * `configure` must run on launch, before anything waits for the attribution.
    * React Native: the module is not in Expo Go. Check `TrueOrigin.isAvailable`, and make a
      new native build after installing the package.
    * React Native on Android and web: every call is a no-op, the status is `unsupported`.
  </Accordion>

  <Accordion title="The campaign is there, the ad set and ad are not">
    The ad has no URL parameters, or the network did not fill them in. See
    [Tracking links](/tracking-links#checking-a-link).
  </Accordion>

  <Accordion title="Trials and revenue are missing">
    * Check **Settings → RevenueCat** for rejected deliveries. A rejected header means it
      was re-issued: paste the new one into RevenueCat.
    * The app must call `setAttributes(TrueOrigin.revenueCatAttributes())` on every start,
      before the paywall. See [RevenueCat](/revenuecat).
    * Only App Store purchases count.
  </Accordion>

  <Accordion title="Meta or TikTok does not show the events">
    * While a test event code is set, events appear only under **Test events** in Events
      Manager.
    * Only matched installs from ads on that network are sent; plain links send nothing.
    * Nothing is sent for installs matched before you connected.
    * The postback row in Settings shows the network's last error, for example an expired
      access token.
  </Accordion>
</AccordionGroup>

Still stuck? Write to [hello@trueorigin.dev](mailto:hello@trueorigin.dev) with your app's
link name and the install id (`TrueOrigin.installId`).
