---
title: Google Ad Manager
description: >-
  Google Ad Manager iOS guide for Custom Adapter (GMA SDK).
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.

## Prerequisites

*Performed by: Developer*

* See the [Compatibility Matrix](/reference/compatibility-matrix) for the minimum iOS version for this package.
* Your `Info.plist` includes the `SKAdNetworkItems` array for attribution - see [SKAdNetwork IDs](/reference/skadnetwork-ids). Add any IDs you don't already have; a publisher not already running Google demand may be missing them.


## Install the SDK

*Performed by: Developer*

### CocoaPods

1. Open your project's Podfile and add:

```
pod 'TapMindAdapter'
```

2. Run `pod install` and open the `.xcworkspace` file.

### Swift Package Manager (SPM)

1. In Xcode: **File → Add Package Dependencies**
2. Add: `https://github.com/tapmind-tech/TapMind-Custom-Adapter-iOS.git`
3. Add **`-ObjC`** to **Targets → Build Settings → Other Linker Flags**


## Configure Google Ad Manager

*Performed by: Ad ops*

**Create the TapMind company:** Admin → Companies → New company → type Ad Network → name **TapMind** → Ad Network **Other Company** → toggle Mediation on → Save.

**Create/open a yield group:** Delivery → Yield groups → New yield group → name (from your account manager) → set ad format → inventory type **Mobile** → target your ad units.

**Add the yield partner:** Add yield partner → select TapMind → Integration type **Custom Event** → Status **Active** → platform **iOS** →

```
Default CPM : provided by your account manager
Label       : provided by your account manager
Class Name  : TapMindGamAdapter
Parameter   : {"placementName": "provided by your account manager"}
```

> The **placementName** value is case-sensitive and must exactly match the Placement Name configured in the TapMind Dashboard.

**Note:** Official Google documentation: [Create a yield group](https://support.google.com/admanager/answer/7390828)

## Verify integration

*Performed by: Developer*

After install and dashboard configuration:

1. Run your app in a **debug** build. TapMind's test mode is enabled automatically in debug builds and serves test ads at a high fill rate.
2. Request an ad through your mediation SDK as you normally would.
3. Confirm a TapMind ad fills. Check logs for the tag **`TapMindAdapter`**.
4. When verified, build in **release** mode for production - test mode is disabled automatically in release builds, and live ads serve.

**Note:** Test mode is automatic. It follows your build type: debug = test ads, release = live ads. There is no flag to enable or disable, and nothing to turn off before going live.

**Release build QA:** There is currently no documented release-safe test path to validate R8/ProGuard without serving live ads. Consumer ProGuard rules from the TapMind AAR are applied automatically when you integrate the published adapter packages.

## Troubleshooting

*Performed by: Developer*

Before diving into logs, confirm adapter class names against the [Class & Network Key Registry](/reference/class-network-key-registry), and `placementName` and eCPM/rate with your account manager.

See [Troubleshooting](/reference/troubleshooting) for common symptoms, mediation-specific fixes, release vs debug guidance, and escalation steps. Partner-specific verification steps are under **Verify integration** above.

**Note:** Mediation dashboards may report higher request or attempt counts for TapMind's line than TapMind's backend actually receives. This is expected mediation-side counting behavior, not an integration issue, see [Dashboard vs. backend count discrepancies](https://docs.tapmind.io/reference/troubleshooting#dashboard-vs-backend-count-discrepancies) in Troubleshooting for details.
