Skip to content

Source Google Ads Sync option to skip inactive accounts rather than failing sync for all accounts #12486

Closed
@robby-rob

Description

@robby-rob

Tell us about the problem you're trying to solve

When using the Customer ID(s) feature in Google Ads source, an account may go inactive if it has not been used after some time. This causes the sync to fail for all accounts until the inactive account id is removed from the source configuration.

Describe the solution you’d like

Preferred solutions, as notifications about an account expiration happen from Google already:

  • Raise a warning instead of an error when the error_code from Google is "authorization_error: CUSTOMER_NOT_ENABLED" is thrown, skipping the inactive account.
  • Have an option in the configuration to skip inactive accounts (they may become active again later)

More involved solution:

  • Have an option to pull from all active accounts, rather than a manual entry of individual accounts
  • Similar to selecting the streams in the connection, have the ability to select from accounts and possibly see the status

Another thought:

  • Scan all accounts in the Source setup for being active. If the Airbyte API allows at a later time to test connection then this can be checked before any syncs are started via an orchestrator using the API.

Describe the alternative you’ve considered or used

  • Remove inactive accounts manually when an error occurs
  • Create a source for each individual account

Additional context

Section from the error log:

google.ads.googleads.errors.GoogleAdsException: (<_InactiveRpcError of RPC that terminated with:
	status = StatusCode.PERMISSION_DENIED
	details = "The caller does not have permission"
	debug_error_string = "{"created":"@1651243103.611933974","description":"Error received from peer ipv4:000.000.000.000:443","file":"src/core/lib/surface/call.cc","file_line":903,"grpc_message":"The caller does not have permission","grpc_status":7}"
>, <_InactiveRpcError of RPC that terminated with:
	status = StatusCode.PERMISSION_DENIED
	details = "The caller does not have permission"
	debug_error_string = "{"created":"@1651243103.611933974","description":"Error received from peer ipv4:000.000.000.000:443","file":"src/core/lib/surface/call.cc","file_line":903,"grpc_message":"The caller does not have permission","grpc_status":7}"
>, errors {
  error_code {
    authorization_error: CUSTOMER_NOT_ENABLED
  }
  message: "The customer can\'t be used because it isn\'t enabled."
}

Are you willing to submit a PR?

Not at this time

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions