# AdMob

> This page is about FlutterFlow (the app builder you use by describing your app), not FlutterFlow Studio.

URL: https://docs.flutterflow.io/ffx/admob

Ask the agent to add AdMob ads to your phone app, save your AdMob app IDs and ad unit IDs, and find the answers that the stores' privacy forms need.

Ask the agent to add ads to your phone app, and then save your AdMob IDs on AdMob's page in **Project Settings › Connections**. AdMob ads show only in phone apps, so the page is marked **Phone apps only**.

First, in AdMob, create an app for each platform and an ad unit for each ad. You enter their IDs in the setup.

## What to ask

To start from AdMob's page, follow these steps:

1. Open **Project Settings › Connections**, and select **AdMob**.
2. Select **Add to my app**. A new thread opens with "Add AdMob to my app." in the message box.
3. Finish the request and send it.

You can also ask in any thread:

> Example request: "Add a banner ad from AdMob at the bottom of the home screen."

> Example request: "Show a full-screen ad from AdMob after someone finishes a level."

> Example request: "Ask me for my AdMob app IDs and ad unit IDs."

The agent adds each ad to your app with a name and a format, such as **Banner** or **Interstitial**.

## Agent questions {#setup-card}

When the agent needs your AdMob IDs, it asks with a **Setup** card. The card shows the fields that the agent asks for, the same ones that AdMob's page has. A value that the agent filled in for you is marked **Suggested by the agent** until you save it.

- To save the values, select **Save**. On a phone, first select the card's button, such as **Add ids**, to open the values. The thread shows **Saved AdMob setup.**, or **Kept the saved AdMob setup.** if the values were already saved. The agent doesn't see the values.
- To decide later, select **Skip**. You can save the values on AdMob's page at any time.

<Mock name="admob-setup-card" alt="On the desktop, a thread's Setup card for AdMob with the Android app id, iPhone app id and one ad unit, and Save and Skip." />

For the other cards that the agent can show, see [Answer the agent](https://docs.flutterflow.io/ffx/answer-the-agent).

## AdMob IDs {#save-your-ids}

AdMob's **Setup** card holds the values that your app is built with. They aren't secret: anyone with the app can read them.

1. Open **Project Settings › Connections**, and select **AdMob**.
2. In **Android app id**, enter the app ID of your Android app in AdMob. You find it in **AdMob › Apps › your Android app › App settings**. An app ID contains a `~`.
3. In **iPhone app id**, enter the app ID of your iPhone app in AdMob, from **AdMob › Apps › your iOS app › App settings**.
4. Under **Ad units**, find each ad by the name that the agent gave it. In **Android** and **iPhone**, enter the ID of an ad unit of the same format from each AdMob app. You find ad units in **AdMob › Apps › the app › Ad units**. An ad unit ID contains a `/`.
5. Optional: In **Why the app asks to track**, enter your own words. See [The tracking prompt](#tracking).
6. Select **Save**.

FlutterFlow checks the shape of each value as you type. A value with the wrong shape shows **This doesn’t look right.** and an example of the right shape. FlutterFlow doesn't accept Google's test IDs, because an empty value already shows test ads.

**Ad units** lists the ads in your app. An ad that has saved values but isn't in your app, such as one that you saved in a thread that you haven't [pushed](https://docs.flutterflow.io/ffx/push), shows **Not in your app**.

<Mock name="admob-setup" alt="AdMob's page in Project Settings › Connections with the Setup card filled in for one banner ad." />

## Test ads {#test-ads}

Until you save an ID, your app uses Google's test ads in its place. Test ads earn nothing. While a value that your app needs is empty, or a phone build still shows test ads, AdMob's page shows **Used by your app · test values**. When every value is saved and no phone build shows test ads, it shows **Used by your app**.

Saved values reach your next phone build. A build that you made before you saved them keeps using test ads. To make a new build, select **Build now** beside **Saved values reach your next phone build.**, and then follow [Install a test build on Android](https://docs.flutterflow.io/ffx/android-test-build) or [Install a test build on iPhone](https://docs.flutterflow.io/ffx/iphone-test-build). Test builds from TestFlight and the Android app from **Releases** always show Google's test ads.

The **Before you release** card shows what your phone builds use, for each platform:

- **Still empty for your Android app:** followed by the values that are missing, and then **Its builds use test values until they’re saved.**
- **Your Android app shows Google’s test ads, which earn nothing.** The build was made without your IDs.
- **AdMob’s setup changed after this Android build. Build again to use it.** Select **Build now**.
- **Your Android build 0.1 uses the values saved here.**, with the build's version number, when the build is up to date.
- **No phone build yet. The first one uses what’s saved here.**, while no phone build is ready yet.

The iPhone lines are the same, with "iPhone" in place of "Android". When you submit a version for review, the confirmation also warns you if a build shows test ads or was made before you changed the setup. To fix the values, select **Open AdMob setup** beside the test-ads warning. For a build made before the change, make a new build.

## The tracking prompt {#tracking}

The agent makes your iPhone app ask people whether it may track them. **Why the app asks to track** is the reason that the iPhone shows with that question.

Until you save your own words, builds use this default: "This identifier will be used to deliver personalized ads to you." Your words reach the next iPhone build, like the IDs.

If you ask the agent to leave the question out, App Store Connect's **App Privacy** must say that no data is used to track.

## Store answers {#store-answers}

Because your app shows AdMob ads, the stores' privacy forms ask about them. You answer the forms in the stores' consoles. AdMob's **Store answers** card lists what to answer for the ads, for each platform that your app is built for:

- **Google Play: App content and Data safety**: the **App content** answers, such as "Ads: Yes, my app contains ads.", and the **Data safety** answers, with the types of data that the ads collect and share, and what for.
- **App Store: App Privacy**: each type of data that the ads use, what for, whether it's linked to the person, and whether it's used to track.

These answers cover the ads only. Add what the rest of your app collects. To find where to enter the answers, see [Finish console setup](https://docs.flutterflow.io/ffx/console-setup#ads).

<Mock name="admob-store-answers" alt="AdMob's Store answers card with both disclosures open." />

## Review {#check-the-result}

After the agent finishes, read the turn's [**Summary**](https://docs.flutterflow.io/ffx/what-changed#summary) and review its [**Changes**](https://docs.flutterflow.io/ffx/what-changed#changes-tab). Check the affected screens in **Screens**, and try the change in **Preview**. If the change uses records or sign-in, test it with [the thread's own data in **Data**](https://docs.flutterflow.io/ffx/thread-data).

After you push a backend change, check the result in **Backend**.

## Push {#push-it}

Before you build again, [push the changes to your app](https://docs.flutterflow.io/ffx/push). FlutterFlow makes phone builds from your app, not from a thread's copy. After you push, check that **Ad units** on AdMob's page lists each ad.

## Next steps {#then}

- To send a version with your ads to testers, see [Send to testers](https://docs.flutterflow.io/ffx/send-to-testers).
- To answer the stores' forms before review, see [Finish console setup](https://docs.flutterflow.io/ffx/console-setup#ads).

## Troubleshooting {#if-something-goes-wrong}

- If you can't edit the fields on AdMob's page, you aren't an owner of the app. Ask an owner to save the setup.
- If a value says **This is Google’s test id. Leave it empty to show test ads, or save your own from AdMob to earn.**, clear it. An empty value shows test ads.
- For other problems with services, see [Troubleshoot connections](https://docs.flutterflow.io/ffx/troubleshoot-connections).
