Skip to content
HeyMetra
← Guides

How to connect AppsFlyer to Claude Code and ChatGPT

Two ways to ask AppsFlyer from Claude Code or ChatGPT: AppsFlyer's own MCP server, or one that also reads your subscription revenue. Steps for both.

The HeyMetra Team · Updated 5 min read

Key takeaways

  • AppsFlyer runs its own MCP server, in beta. If AppsFlyer is the only account you want to ask about, it is the shorter path.
  • A multi-account server earns its place when the question crosses into revenue: AppsFlyer sees the campaigns, Adapty, RevenueCat or App Store Connect sees the subscriptions, and one assistant can set the two side by side.
  • Connecting AppsFlyer through HeyMetra takes an API token from the Security centre and the app's ID; one connection is one app.
  • Claude Code adds HeyMetra with one terminal command. ChatGPT adds it from its settings, behind Developer mode.
  • Three AppsFlyer habits make correct numbers look wrong: SKAdNetwork counts the same campaigns a second time, a missing cost is unknown rather than zero, and the daily report allowance is shared with the dashboard.

AppsFlyer already knows which media source and which campaign brought each install. Connecting AppsFlyer to Claude Code or ChatGPT lets you ask it in plain words, from the tool you are already working in, instead of building the report by hand. There are two ways to do it, and which one fits depends on what else the question needs.

Two ways to connect AppsFlyer

AppsFlyer’s own MCP server HeyMetra
What it reads AppsFlyer AppsFlyer, plus the other accounts you connect: Adapty, App Store Connect, RevenueCat, Search Console and more
Status Beta Live
Who runs it AppsFlyer, as a remote MCP server HeyMetra, as a remote MCP server
Best for Questions about installs and campaigns alone Questions that cross from installs into revenue

If AppsFlyer is the only account you want to ask about, use AppsFlyer’s server. Its help centre has the steps for each client, and a vendor’s own server is usually the shortest path to a vendor’s own data.

The case for a multi-account server starts with a question like this one: which campaigns bring subscribers, not just installs? AppsFlyer sees the campaigns; Adapty, RevenueCat or App Store Connect sees the subscriptions. With both behind one server, the assistant can ask each and set campaign totals beside subscription totals. It cannot match individual users across the two, since both return totals. We wrote about why the number of accounts behind one server matters.

The rest of this guide is the HeyMetra route.

Step 1: create an AppsFlyer API token

Sign in to AppsFlyer, open the account menu at the top right and choose Security centre, then Manage your AppsFlyer API tokens. You need an account admin to see this screen.

Create a token of type API and copy all of it. It runs past seven hundred characters, so select the whole value rather than what fits in the box.

Two things trip people up here:

  • Old tokens no longer work. AppsFlyer revoked every token issued before 10 March 2026, 19:00 UTC. One that has been sitting in a password manager fails, and the failure looks like a permission problem.
  • Reporting is part of the plan, not the token. An account without Pull API reporting on its AppsFlyer plan can list its apps and still cannot read a single daily figure. If a fresh token fails on a known app, ask your AppsFlyer account manager.

Step 2: connect the app in HeyMetra

On the Connections screen choose AppsFlyer, paste the token, and enter the app ID:

  • Android: the package name exactly as the Play Store shows it, such as com.example.app.
  • iOS: the letters id followed by the App Store number, such as id123456789.

One connection is one app; a second app is a second connection with the same token. HeyMetra asks AppsFlyer for one finished day before saving, so a pair that cannot report fails here rather than halfway through a conversation.

The reporting currency is optional and worth entering. AppsFlyer states no currency anywhere in its reports, and without it every amount comes back with none.

Step 3: add HeyMetra to Claude Code

In your terminal:

claude mcp add --transport http heymetra https://mcp.heymetra.com/mcp

By default Claude Code adds a server for the project you are in. If you want AppsFlyer to answer from every repository on the machine, add --scope user to the command:

claude mcp add --transport http --scope user heymetra https://mcp.heymetra.com/mcp

Then ask it something that needs AppsFlyer. The model picks the tool; you never name it. The Claude Code page has the rest.

Or: add HeyMetra to ChatGPT

ChatGPT adds a remote MCP server from its settings, behind Developer mode, using the same address: https://mcp.heymetra.com/mcp. That menu has moved more than once, so the current path lives on our ChatGPT page rather than here, where it would go stale first.

What to ask first

  • Which media sources drove the most installs last month?
  • What did each campaign cost per install last month?
  • Which campaigns returned more revenue than they cost?
  • How did installs and cost move day by day this month?

And once a subscription account is connected beside it: which campaigns brought subscribers, not just installs?

Three things that make correct numbers look wrong

SKAdNetwork is a second count, not a part of the first. On iOS, AppsFlyer counts devices that allowed tracking; Apple’s SKAdNetwork reports every device with the detail removed. Ask for both and read them side by side. Adding them counts every install that appears in both twice. The last few days of SKAdNetwork are always still filling in, because a postback arrives at least a day after the install.

A missing cost is unknown, not zero. Cost is whatever each media source chose to report, and most report nothing. Where it is absent, cost per install and return on spend are left out rather than computed from a gap.

The report allowance is shared. AppsFlyer allows 120 reports a day for the account and 24 per app, and that allowance is the same one the dashboard’s export page draws on. A single report also covers at most 31 days, so “the last quarter” becomes three questions. The allowance resets at 00:00 UTC.

Can it change anything?

Only if you allowed changes when you connected the app. The changes AppsFlyer’s API offers here are narrow: creating an imported audience, adding people to one or removing them, and a request to erase one user’s data. Each one is shown to you as a plain sentence and waits for your approval before anything reaches AppsFlyer. Once approved it is applied, and HeyMetra cannot undo it afterwards.

  • #appsflyer
  • #claude-code
  • #chatgpt
  • #mcp
  • #mobile-attribution

Frequently asked questions

Does AppsFlyer have an official MCP server?

Yes. AppsFlyer publishes its own MCP server, currently in beta, with setup steps for each AI client on its help centre. It covers AppsFlyer and nothing else.

Which AppsFlyer token do I need?

An API token, created in AppsFlyer under the account menu, Security centre, Manage your AppsFlyer API tokens. You need an account admin to see that screen. Tokens issued before 10 March 2026 were revoked by AppsFlyer, so an older one will fail.

Can Claude change anything in my AppsFlyer account?

Only if you allowed changes when you connected, and only a few kinds: creating an imported audience, adding people to one or removing them, and a request to erase one user's data. Each change is shown to you and waits for your approval, and once applied HeyMetra cannot undo it.

Why do my iOS installs not match what the ad network reports?

On iOS, AppsFlyer counts devices that allowed tracking, while Apple's SKAdNetwork reports every device with the detail removed. They are two counts of the same campaigns. Adding them counts an install twice.

How far back can I ask?

A single report covers up to 31 days, so a longer question becomes several. Raw data goes back ninety days; the aggregate reports go further.

One connection, both sides of the question

Connect your accounts once, then ask from the assistant you already pay for.