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 account doesn't use Google sign-in. Use the sign-in link from your invite email.
What it means: Your account was added with password sign-in, so Google sign-in is refused for it.
What to do: Sign in with your email and password (the page linked from your invite email).
This link has expired or was already used. Ask a houndtool admin for a new one.
What it means: Invite links work once and expire after 72 hours; reset links after 1 hour. A newer link also cancels an older one.
What to do: Ask a houndtool admin to resend the invite or send a new reset link (Admin → Users), and use the newest email.
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.
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.
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.
Google Ads access was not granted. Tick the Google Ads box when connecting.
What it means: The Google Ads permission was unticked on Google's consent screen.
What to do: Connect again and leave the Google Ads box ticked.
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.
No link yet: start first / Link expired: start again
What it means: Google only gives a verification link after a verification session was started, and the link expires.
What to do: Use "Start verification" on those accounts, then "Get links". Starting again after the link expired gives a new link.
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.
… 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