Houndtool

FAQ: error messages

Error messages people have run into, what they mean and what to do. Can't find yours? Copy the exact message and send it to a houndtool admin.

Signing in and saved logins

Not authenticated

What it means: You are not signed in, or your houndtool session (30 days) has ended.

What to do: Sign in with Google again from the sidebar.

Google login expired

What it means: Your Google sign-in token was refused by Google, usually because access was removed at myaccount.google.com/permissions.

What to do: Log out and sign in with Google again.

Your Google sign-in has expired or access was removed. Sign in with Google again, then save your login.

What it means: Shown when saving your login for background jobs with a sign-in that Google no longer accepts.

What to do: Click "Sign in again" in the message, then save your login on the Connections page once more.

Sign-in refused / your email is not allowed

What it means: Your email is not on the houndtool access list yet, or it was added but the site has not been redeployed since.

What to do: Ask an admin to add you. Admins: the change only takes effect after a redeploy (see below).

Invalid email or password

What it means: Password sign-in: the email or the password is wrong. For safety houndtool doesn't say which. After 5 wrong passwords the account is locked for 15 minutes (longer if it keeps happening).

What to do: Check for typos and Caps Lock. Forgot it? Ask a houndtool admin to send you a reset link (Admin → Users).

Too many sign-in attempts. Try again later.

What it means: Too many wrong passwords for this account (locked for 15 minutes or more), or from your network (5 per hour, shared by everyone on the same office network).

What to do: Wait and try again, or ask a houndtool admin to unlock the account or unblock the address on Admin → Users.

Your account isn't active yet. Ask a houndtool admin.

What it means: The password is right, but the account hasn't finished being set up: the email isn't on ALLOWED_EMAILS yet (or the site hasn't been redeployed since), or the invite was never completed.

What to do: Ask the admin who added you. Admins: add the email to ALLOWED_EMAILS in Vercel and redeploy.

This account is disabled. Ask a houndtool admin.

What it means: An admin disabled the account on Admin → Users.

What to do: Ask a houndtool admin to enable it again if you still need access.

Password sign-in is not enabled for your account yet. Ask a houndtool admin.

What it means: Password sign-in is still being tested (alpha) and isn't switched on for your account.

What to do: Admins: Admin → Feature Access → the user → Per feature → Password sign-in: On.

Your houndtool account hasn't been set up yet. Ask a houndtool admin to add you.

What it means: Google sign-in worked, but nobody has added you on Admin → Users. Being on ALLOWED_EMAILS alone is no longer enough.

What to do: Ask a houndtool admin to add you with "Signs in with Google".

This password has appeared in a data breach. Pick another one

What it means: The password is on Have I Been Pwned's list of leaked passwords (checked without sending the password anywhere), so attackers try it first.

What to do: Pick a different password, e.g. a few unrelated words. A password manager can make one for you.

Connections and sharing

This connection has expired and must be reconnected

What it means: Google refused the saved login ("Token has been expired or revoked"). Common reasons: the Google user removed houndtool at myaccount.google.com/permissions (this ends every houndtool login for that user at once), the Google user signed out of a tool that shares the same Google client, or more than 100 logins were created for that user (Google drops the oldest).

What to do: Owner: click Reconnect on the Connections page. It keeps the name and shares. Others: ask the owner to reconnect it.

A connection says Active, but I revoked it at Google

What it means: Google does not tell houndtool when access is removed. Houndtool finds out the next time the login is used, or when the Connections page checks (at most every 10 minutes).

What to do: Open the Connections page or run something small with it; it then switches to Expired.

This connection is not shared with you, or the share has expired

What it means: The owner revoked the share, or it reached its end date.

What to do: Ask the owner to share it again.

Your access to this connection does not allow this action

What it means: The share is at a lower level (Reports or Basic Changes) than the action needs.

What to do: Ask the owner to raise the access level, or use your own login.

This action can only be done with your own login

What it means: Some actions, like approving a multi-party approval, can never go through someone else's connection.

What to do: Switch "Run as" to yourself.

This connection is not shared for that account

What it means: The share is limited to certain MCCs and the one you picked is not one of them.

What to do: Pick an allowed MCC, or ask the owner to widen the share.

Connect with the Google account you are signed in with

What it means: A connection must always be your own Google user. You picked a different Google account in the pop-up.

What to do: Connect again and choose the same Google account you are signed in to houndtool with.

Cross-site request refused

What it means: The request to houndtool came from another website or subdomain, not from houndtool's own pages. Houndtool refuses those so other sites can't act with your login.

What to do: Use houndtool directly at its own address. If you see this inside houndtool itself, tell an admin.

Could not record this action in the audit log, so it was not run

What it means: Actions through someone else's connection are always logged first. The log could not be written (database problem).

What to do: Try again in a minute. If it keeps happening, tell an admin.

Google Ads errors

User doesn't have permission to access customer (USER_PERMISSION_DENIED)

What it means: The MCC used to reach the account (the "login-customer-id") is not above that account. Usually the account sits under a different MCC tree, or its link to your MCC is pending or removed. Your admin access on another MCC does not help.

What to do: Pick the MCC the account is actually linked under, or check the link in the Google Ads UI. Accounts outside the picked MCC will keep failing.

The Payments Profile activation request has exceeded the rate limit (PAYMENTS_PROFILE_ACTIVATION_RATE_LIMIT_EXCEEDED)

What it means: The account was created, but its billing setup was refused. Google limits new billing setups per payments profile per week: about 15 for card/prepay (automatic or manual payments) and 1,500 for monthly invoicing.

What to do: Stop creating accounts on that profile. Wait about a week, then add billing only to the accounts that are missing it (don't re-create them). Google Ads support can sometimes reset the limit.

Resource has been exhausted (RESOURCE_EXHAUSTED) when creating accounts

What it means: Google limits how many new accounts can be created (around 2,500 per week, and unpublished caps through the API). Earlier runs or retries may have used it up.

What to do: Check for accounts already created, stop retrying, and try a single account the next day.

The action requires a reauth proof token, but none was provided

What it means: Creating accounts is a "sensitive action": Google wants proof that the user signed in again recently. Older saved logins don't carry it. Most likely linked to Google's passkey rules for sensitive actions (since July 2026).

What to do: Sign in again with Google (with your passkey) to get a fresh login, then retry.

A transient internal error has occurred. Retry the request.

What it means: A hiccup on Google's side, often because one manager is creating many accounts in a short time and Google slows it down. Google answered before creating the account, so normally nothing was created.

What to do: Background jobs try these rows again by themselves (up to 5 tries over about 5 minutes, checking first that the account wasn't created after all). If a row still fails, wait a few minutes and use "Retry rows". In the browser tool: run the failed rows again a bit later.

CONCURRENT_MODIFICATION on the budget

What it means: Two budget changes hit the same manager at the same moment.

What to do: Houndtool retries this automatically. If it still fails, the row shows "budget failed": add the budget by hand in Google Ads.

Not approved for production (CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION or ACTION_NOT_PERMITTED)

What it means: The Google Cloud project behind houndtool only has test access to the Google Ads API.

What to do: An admin must request Basic or Standard access for the Cloud project in Google Cloud Console.

Invite came back as "pending approval"

What it means: Inviting users to an account can trigger Google's multi-party approval.

What to do: Someone else must approve it, for example on the Multi-Party Approvals page. Requests expire after 20 days.

Budgets

This account already has a pending budget proposal

What it means: An earlier change to this account's budget is still waiting for approval, or has not taken effect yet. Google allows one at a time.

What to do: Wait until it is approved (or cancel it in Google Ads under Billing → Budgets), then load the budgets again.

No approved billing setup on this account

What it means: An account budget belongs to a billing setup, and this account has none that is approved.

What to do: Set up billing for the account in Google Ads first. Rows like this show "No billing setup" and are left alone.

This account has no account budget

What it means: The account has no active account budget to change, and "Create budgets for accounts without one" was not ticked.

What to do: Tick "Create budgets for accounts without one", or type an amount in the row, and apply again.

New spending limit is below what is already spent (SPENDING_LIMIT_LOWER_THAN_ACCRUED_COST_NOT_ALLOWED)

What it means: An account budget's limit is a total from its start date. It can't be set lower than the amount already spent on it.

What to do: Enter a total above the Spent column, or end the budget with an end date instead.

A new budget needs an amount (or Unlimited) and an end date (or Unlimited)

What it means: Accounts without a budget get a new one, which needs both values. Unlimited is never picked by itself.

What to do: Fill in the amount and end date, or tick Unlimited for the one you want open-ended.

Verification

Verification status "Not required"

What it means: Google returned no verification for the account: it is not (yet) asking this advertiser to verify.

What to do: Nothing to do. You can still start it voluntarily with "Start verification". Check again later: Google can add a requirement with a deadline at any time.

Starting verification fails with NO_EFFECTIVE_BILLING

What it means: Google requires active billing on the account before verification can be started through the API.

What to do: Set up billing on the account (or check that its billing setup is approved), then start again.

Starting verification fails with BILLING_NOT_ON_MONTHLY_INVOICING

What it means: Google only lets verification be started through the API for accounts billed by monthly invoicing.

What to do: Start verification for that account in the Google Ads interface instead (Billing → Advertiser verification).

Was already started (VERIFICATION_ALREADY_STARTED)

What it means: A verification session was already running for the account, so Google did not start a new one.

What to do: Nothing is wrong. Use "Get links" for the current link, or start again once the link has expired.

Background jobs

Save your login for background jobs first (Connections page)

What it means: A job keeps running after you close the tab, so it can't use this browser's sign-in.

What to do: Connections page → save your login, or choose a connection in "Run as" before starting the job.

Your saved login has expired / was removed. Save it again on the Connections page, then retry.

What it means: The job stopped because Google no longer accepts your saved login.

What to do: Save your login again, then use "Retry rows" on the job page.

The job stopped with "This connection is not shared with you…" or "…does not allow this action"

What it means: Every row re-checks the share. The owner revoked it or lowered the level while the job ran.

What to do: Ask the owner to share it again, then use "Retry rows".

… is not enabled for your account

What it means: The feature is not switched on for you (it may still be in alpha or beta), or an admin switched it off. Running jobs stop at the next row.

What to do: Ask a houndtool admin for access.

Created, but billing / budget / invites failed

What it means: The account exists, but one of the later steps failed. The row shows Google's reason.

What to do: Fix that step in Google Ads for that account. Don't retry the row: that would create a second account.

Interrupted after the account was created

What it means: The job was interrupted right after Google created the account, before billing/budget/invites finished.

What to do: Check that account's billing, budget and invites in Google Ads.

Not created again: an account named "…" already exists under this manager

What it means: Before trying a row again, houndtool looks for an account with exactly that name directly under the manager. It found one, so it didn't create a second. Usually an earlier try created it even though Google answered with an error; it can also be an older account that happens to have the same name.

What to do: Open the account id from the message in Google Ads. If it is from this job, set up its billing, budget and invites there. If it is an unrelated account, give the row another name and run it again.

Could not start the job (the job runner did not answer). Nothing was created.

What it means: Houndtool could not reach Inngest, the service that runs jobs.

What to do: Try again in a minute. If it keeps failing, tell an admin.

This job has already been retried. Open the retry job instead.

What it means: Each job can be retried once, so a double click or a second tab can't create the same accounts twice.

What to do: Click "Open retry job" on the job page. If rows failed there too, retry that job. The original job's page shows the combined result of all tries.

Stopped after repeated errors: Step failed (…), details in the server log

What it means: Something unexpected went wrong several times in a row (for example the database or Google could not be reached). The full error is kept in Houndtool's own server log, not sent to the job runner.

What to do: Use "Retry rows" on the job page. If it keeps happening, tell an admin the time it happened so they can look it up in the Vercel logs.

Job stays "Queued"

What it means: Each person gets 3 rows running at a time, shared by all their jobs, and the whole houndtool account gets 5. A new job waits until a slot is free.

What to do: Wait for your other job to finish, or stop it. If nothing else is running, check that the job runner (Inngest) is connected.

Related: Connections · AI features