[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-20 UTC."],[[["\u003cp\u003eThe Google Ads API PHP client library offers customizable configuration settings through INI files, dynamic settings, and environment variables.\u003c/p\u003e\n"],["\u003cp\u003eYou can manage authentication using either Application Mode (client ID, secret, refresh token) or Service Account Mode (JSON key file).\u003c/p\u003e\n"],["\u003cp\u003eEssential settings include developer token, login customer ID, and optional proxy, logging, and transport configurations.\u003c/p\u003e\n"],["\u003cp\u003eConfiguration settings are validated upon client instantiation to ensure correctness and prevent errors.\u003c/p\u003e\n"],["\u003cp\u003eFor detailed information about specific configuration fields and their usage, refer to the provided documentation links.\u003c/p\u003e\n"]]],[],null,["\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nThe Google Ads API PHP client library provides several configuration settings that you\ncan use to customize the library behavior.\n\nConfiguration file\n\nYou can store most of these configuration settings in\n[`ini`](//www.php.net/manual/en/function.parse-ini-file.php)\nfiles and use them when instantiating clients, for example,\n[`google_ads_php.ini`](https://github.com/googleads/google-ads-php/blob/HEAD/examples/Authentication/google_ads_php.ini).\n\nThe credential and client builders both provide `fromFile` methods to load\nsettings from such files: \n\n $oAuth2Credential = (new OAuth2TokenBuilder())\n -\u003efromFile('/path/to/google_ads_php.ini')\n -\u003ebuild();\n\n $googleAdsClient = (new GoogleAdsClientBuilder())\n -\u003efromFile('/path/to/google_ads_php.ini')\n -\u003ewithOAuth2Credential($oAuth2Credential)\n -\u003ebuild();\n\nIf there is no configuration path provided as argument, the `fromFile`\nmethods load from the default configuration path which is:\n\n1. The value of the environment variable named `GOOGLE_ADS_CONFIGURATION_FILE_PATH` if set.\n2. Otherwise, the `google_ads_php.ini` file in your `HOME` directory.\n\n $oAuth2Credential = (new OAuth2TokenBuilder())\n -\u003efromFile()\n -\u003ebuild();\n\n $googleAdsClient = (new GoogleAdsClientBuilder())\n -\u003efromFile()\n -\u003ewithOAuth2Credential($oAuth2Credential)\n -\u003ebuild();\n\nDynamic configuration\n\nYou can set these configuration settings dynamically when instantiating clients. \n\n $oAuth2Credential = (new OAuth2TokenBuilder())\n -\u003ewithClientId('INSERT_CLIENT_ID')\n // ...\n -\u003ebuild();\n\n $googleAdsClient = (new GoogleAdsClientBuilder())\n -\u003ewithOAuth2Credential($oAuth2Credential)\n -\u003ewithDeveloperToken('INSERT_DEVELOPER_TOKEN_HERE')\n // ...\n -\u003ebuild();\n\nConfiguration environment variables\n\nYou can set some of the configuration settings from environment variables when\ninstantiating clients (see the [exhaustive\nlist](/google-ads/api/docs/client-libs#configuration)).\n\nThe credential and client builders both provide `fromEnvironmentVariables`\nmethods to load settings from environment variables:\n**Note:** Unset environment variables are *not* taken into account. \n\n $oAuth2Credential = (new OAuth2TokenBuilder())\n // ...\n -\u003efromEnvironmentVariables()\n -\u003ebuild();\n\n $googleAdsClient = (new GoogleAdsClientBuilder())\n -\u003ewithOAuth2Credential($oAuth2Credential)\n // ...\n -\u003efromEnvironmentVariables()\n -\u003ebuild();\n\nConfiguration fields **Note:** The fields `grpcChannelCredential`, `unaryMiddlewares`, `streamingMiddlewares` and `grpcInterceptors` cannot be set from a configuration file or string but only dynamically.\n\nThe configuration settings support several fields organized in categories.\n\n1. Fields used by `OAuth2TokenBuilder`:\n - Application Mode\n - `[OAUTH2] clientId`: Your OAuth2 client ID.\n - `[OAUTH2] clientSecret`: Your OAuth2 client secret.\n - `[OAUTH2] refreshToken`: Your OAuth2 refresh token.\n - Service Account Mode\n - `[OAUTH2] jsonKeyFilePath`: The Json key file path.\n - `[OAUTH2] scopes`: The scopes.\n - `[OAUTH2] impersonatedEmail`: The email to impersonate.\n2. Fields used by `GoogleAdsClientBuilder`:\n - `[GOOGLE_ADS] developerToken`: Your developer token for accessing the API.\n - `[GOOGLE_ADS] loginCustomerId`: The [ID of the authorized\n customer](/google-ads/api/docs/concepts/call-structure#cid) to use in the request.\n - `[GOOGLE_ADS] linkedCustomerId`: The linked customer ID.\n - `[LOGGING] logFilePath`: The file path for logging.\n - `[LOGGING] logLevel`: The logging level.\n - `[CONNECTION] proxy`: The proxy server URL used for internet connectivity.\n - `[CONNECTION] transport`: The transport.\n - `[CONNECTION] grpcChannelIsSecure`: Whether the gRPC channel is secure or not.\n - `[CONNECTION] grpcChannelCredential`: The gRPC channel credentials.\n - `[CONNECTION] unaryMiddlewares`: The unary middlewares.\n - `[CONNECTION] streamingMiddlewares`: The streaming middlewares.\n - `[CONNECTION] grpcInterceptors`: The gRPC interceptors.\n\nConfiguration validation\n\nThe configuration settings are checked when instantiating clients and exceptions\nare thrown when invalid. Here are the rules:\n\n1. `[OAUTH2]` fields must not be set for both Application Mode and Service Account Mode at the same time.\n2. `[OAUTH2] jsonKeyFilePath` and `[OAUTH2] scopes` must be set when using the Service Account Mode.\n3. `[OAUTH2] clientId`, `[OAUTH2] clientSecret` and `[OAUTH2] refreshToken` must be set when using the Application Mode.\n4. `[GOOGLE_ADS] developerToken` must always be set.\n5. If set, `[GOOGLE_ADS] loginCustomerId` and `[GOOGLE_ADS] linkedCustomerId` must be positive numbers.\n6. If set, `[CONNECTION] proxy` must be a valid URL (see filter [FILTER_VALIDATE_URL](https://www.php.net/manual/en/filter.constants.php)).\n7. If set, `[LOGGING] logLevel` must be a valid [PSR log\n level](https://github.com/php-fig/log/blob/master/src/LogLevel.php) in capital-letters, such as `INFO`.\n8. If set, `[CONNECTION] transport` must be either `grpc` or `rest`.\n9. If `[CONNECTION] transport` is set to `grpc`, the gRPC transport must be supported by the environment (see guide [transport](/google-ads/api/docs/client-libs/php/transport)).\n10. `[CONNECTION] grpcChannelIsSecure` must be `true` when `[CONNECTION]\n transport` is not set to `grpc`.\n11. `[CONNECTION] grpcChannelCredential` can only be set when `[CONNECTION]\n transport` is set to `grpc`.\n12. `[CONNECTION] grpcChannelCredential` can only be set when `[CONNECTION]\n grpcChannelIsSecure` is `true`."]]