Kate Vobornik
04/11/2026, 1:16 PMkapa.ai
04/11/2026, 1:17 PMGoogleAdsStreamingDecoder introduced alongside the switch from paginated (googleAds:search) to streaming endpoints (googleAds:searchStream). The error handler was configured to IGNORE 403 errors, but the streaming decoder didn't handle error responses properly, causing syncs to hang. [403 hang issue] Possible Causes for Your Issue 1. Permissions/Customer ID: A similar issue was resolved by ensuring the correct customer_id with proper permissions is configured. Using a customer_id without sufficient permissions can result in no accessible stream slices. [missing streams issue]
2. Login Customer ID: If you're accessing a sub-account under a manager account, you may need to set the login_customer_id to the manager account ID. The connector uses this to properly scope API requests. [auth issue]
3. Authentication: Expired or revoked credentials can also cause access failures. Re-authenticating your source connection is recommended as a first step. Suggested Steps • Verify your customer_id has the correct permissions for the accounts you're trying to sync.
• If using a manager account hierarchy, ensure login_customer_id is set to the manager account ID.
• Try re-authenticating your credentials via Edit Source → Update Credentials.
• If the issue persists on v4.1.6, consider checking whether it's related to the lingering 403 handling behavior from v4.1.4, and consider pinning to a known stable version (e.g., 4.0.2 or 4.1.3) as a temporary workaround. [403 hang issue]
The knowledge sources don't contain specific information about the exact error message you're seeing in v4.1.6, so I'd recommend also checking the Airbyte GitHub issues for more targeted help. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.Kate Vobornik
04/11/2026, 1:17 PMlogin_customer_id) field is completely missing from the UI configuration screen, even when switching to “Set up manually” or using the “Re-authenticate” flow.
Steps Taken to Troubleshoot:
1. Direct API Injection: Used the Airbyte API (via Postman) to manually add the "login_customer_id" to the source configuration JSON.
2. Verification: A GET request to the Airbyte API confirms that the login_customer_id is correctly stored as a string in the database.
3. Persistence of Error: Despite the field being present in the backend, the connector continues to fail with the “no stream slices” error during both the “Check Connection” test and actual sync attempts.
4. Google-Side Validation: * Developer Token is verified as “Approved” with “Basic Access.”
All Terms of Service/Data Processing amendments have been accepted in the Google Ads UI.
The account is established and has active billing/ad history.
Technical Ask:
• Why is the login_customer_id field not rendering in the UI for this self-hosted version?
• Even when the field is injected via API, why does the connector fail to pass this “login-customer-id” header to the Google Ads API, resulting in the 403 “no stream slices” error?kapa.ai
04/11/2026, 1:17 PMlogin_customer_id header:
The connector code in google_ads.py does use login_customer_id when constructing API clients and making requests. Specifically, it creates separate clients per login_customer_id and passes it through to the Google Ads service. [google_ads.py]
The GoogleAdsHttpRequester in components.py also sets the login-customer-id header from the stream slice:
def get_request_headers(self, ...) -> Mapping[str, Any]:
return {
"developer-token": self.config["credentials"]["developer_token"],
"login-customer-id": stream_slice["parent_slice"]["customer_id"],
}
[components.py]
Regarding the 422 / platform-level issues on self-hosted:
There is a known issue on self-hosted Airbyte (abctl/K8s) where the platform throws a 422 Unprocessable Entity when attempting to update source configuration — even when the connector Python process exits successfully. This was identified as a platform infrastructure issue, not a connector bug. [422 issue] What I Cannot Confirm • Why login_customer_id is missing from the UI in your specific version (2.0.1 self-hosted): The knowledge sources do not contain information about the UI spec rendering for this field or version-specific UI behavior.
• Why injecting login_customer_id via API still results in the 403 error: The knowledge sources don't provide a definitive explanation for this specific scenario. Recommended Next Steps 1. File a GitHub issue at airbytehq/airbyte with your specific version details — the UI missing field is likely a spec/UI rendering bug worth reporting.
2. Check the connector spec (spec.json) for your installed version to confirm whether login_customer_id is defined as a top-level field or nested under credentials.
3. For the platform-level 422 behavior on self-hosted, the existing issue [422 issue] suggests routing to the Airbyte platform team, as it's not a connector-side problem. 👍 0 button 👎 0 button ℹ️ Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.