Find the symptom that matches what you see, then work through the checks in order. If you're still stuck, use the chat in the dashboard or email [email protected] with the funnel or domain name, what you expected, and the exact error text. Never send API keys or access tokens.
Your agent can't connect
Check the server URL is exactly
https://app.granvl.com/api/mcp.Open MCP in the sidebar, click Set up next to your agent, and follow its steps. Most agents finish by opening a browser tab where you sign in to granvl.
If ChatGPT or Codex says the granvl tools are unavailable, it kept an older login. In the Codex CLI, run
codex mcp login granvl. In the ChatGPT app, go to Settings > MCP servers > granvl and sign in again. Then start a new thread.In the Codex CLI, keep
startup_timeout_sec = 60in the granvl block of~/.codex/config.toml. The setup steps on the MCP page include it, so the tool list has time to load.If Grok Bot shows Disabled by team admin, a Cursor team admin needs to enable it under Team Marketplace > Plugins (on Enterprise, also add the server URL to the MCP allowlist). Then restart the app.
If your agent connects with an API key, check the key on the MCP page. An expired key shows Expired, and a revoked key stops working at once. Create a new one with + New API key.
If the agent connects but every tool call returns a message that the free trial has ended, see "Your workspace is paused" below.
Your agent sees only a few tools
Ad-platform tools need a connected ad account. The Meta Ads and Google Ads build tools are listed once the workspace has an ad account connected under Settings > Meta Ads or Settings > Google Ads.
You can list everything. Add
?tools=allto the server URL (https://app.granvl.com/api/mcp?tools=all) and reconnect.Unlisted tools still run. A tool your agent wasn't shown works when the agent calls it by name. Point it at the MCP tool reference.
Essentials come first. Some agents keep only part of a long tool list. granvl lists the session-start, build, Tool credit, and performance tools first so they always arrive.
Your agent is working in the wrong workspace
Ask your agent to run
list_workspaces, thenswitch_workspacewith the right one. The switch applies from the next tool call.You can also switch workspaces in the dashboard. An agent signed in with your account follows the workspace you pick.
API-key connections are tied to the workspace the key was created in and can't switch. Create a key in the other workspace instead.
Your agent isn't following granvl's rules
Pages with forms that don't deliver, conversions that don't track, or an agent asking how granvl works usually mean the granvl skill isn't loaded. Connecting and installing the skill are separate steps.
In Claude Code, the Codex CLI, or Grok Bot, paste this to your agent, then start a new session:
Pull the latest granvl skill (call the granvl get_skill tool) and install it per its instructions so it loads every session.
Claude Desktop or claude.ai: download the skill from the MCP page with Download skill, then upload the ZIP under Settings > Capabilities > Skills > Upload skill in Claude.
ChatGPT app: download the skill, drag the ZIP into your chat, and ask ChatGPT to install it so it loads every session.
Cursor: download the skill and unzip it into
.cursor/skills/granvl-app/in your project.
Your agent won't edit a live page
If a variant already has real traffic, granvl blocks rewriting its HTML in place, because mixing old and new copy under one variant spoils the A/B test. Your agent offers to duplicate the variant and edit the copy instead. That's the recommended path. If you really want to change the live variant, tell your agent so and it can retry with your go-ahead.
Leads aren't reaching your CRM
granvl emails your workspace when Leads may not be delivering on a funnel, or when a live funnel with real visitors has no lead delivery connected. The funnels list also shows No delivery for a live funnel with no destination. Work through these checks:
Open the funnel's Delivery tab. Each destination should show Connected, not Paused or Needs URL. With no destination, submissions only record a conversion and redirect.
Open the Leads tab and read the delivery pill on recent leads. Hover the pill to see what happened at each destination.
Send a test lead. In the Delivery tab, edit a GoHighLevel or Webhook destination and click Send test lead, or ask your agent to run
send_test_lead. The sample includes every form field from every variant plus the UTM fields, so your CRM can map them before real traffic arrives.Check the field mapping. Lead Prosper, Lead Distro AI, and ActiveCampaign destinations receive only the fields in their map. Open the funnel's Settings > Field mapping and map any missing field. Lead Prosper field names are case-sensitive. See Map form fields to your destinations.
Check the phone format. If a destination rejects phone numbers, change Phone format in the Delivery tab (for example to
(650) 327-1100or+16503271100 (E.164)). It applies to every destination.Check the required name fields. Lead Prosper needs
FirstNameandLastName. Lead Distro AI needsfirst_name,last_name,phone, andemail. If the form has a single name field, granvl splits it at submit: the first word becomes the first name and the rest the last name.For Lead Prosper, make sure Send as test leads is off before launch. While it's on, leads aren't billed or routed to buyers.
Pill | What it means |
Delivered | The destination confirmed it received the lead. |
Sent | The send completed, but this destination can't confirm receipt. Lead Prosper and plain webhooks work this way, so check the lead in the destination itself. |
failed | At least one destination refused the lead or the send didn't complete. Hover the pill to see which one. |
Attempted | The page started the send, but no result came back before the visitor left. |
Unconfirmed | No delivery report came back for this lead. |
Note: Test-drive visits never reach your destinations, by design. Use Send test lead to prove delivery.
If leads were lost while an integration was down and your workspace has lead receipts turned on, a workspace admin can ask granvl to recover them. See Recover undelivered leads with lead receipts.
Pixels or conversions aren't firing
Open Settings > Tracking and click Manage (or Set up) on the domain the funnel is published on. Tracking is set per domain, so a funnel on another domain uses that domain's settings.
Check the IDs on each platform tab (Meta, Google Ads, TikTok, GTM). Server-side conversions need their token saved here too, such as the CAPI access token for Meta.
Use Send a test event to fire a test conversion. For Meta and TikTok, paste the test event code from the platform so the event shows in its test events view.
Open the Fire log tab. It lists the last 20 server-side fires for the domain with any error. Browser pixels don't appear there.
Test on the live URL. Preview links and test-drive links never fire pixels.
Remember when the conversion fires. On a form funnel it fires when the visitor reaches the thank-you page, not when they click from a landing page to a quiz.
If the funnel has a qualification rule, unqualified leads aren't sent to ad platforms unless Send unqualified conversions to ad platforms is on in the funnel's Settings > Qualification.
If the funnel's Cookie consent banner is on (funnel Settings > Validation), pixels and Tag Manager wait until the visitor accepts.
Ad data looks stale or missing
Check the connection under Settings > Meta Ads or Settings > Google Ads. Sync error, Token expired, or Token expires in a few days means you should click Reconnect. Owners and admins also get an email when a connection has expired, is about to expire, or is failing.
On the Meta Ads or Google Ads page, click Sync now. Fresh numbers land over the next few minutes. You can run it once every 12 hours; the button shows when it's available again.
Check the brand switcher. Each ad account is assigned to a brand, so an account assigned to another brand doesn't show while one brand is selected. Pick All brands or assign the account to the brand you're viewing.
Campaigns your agent just built appear after the next sync. Until then, the IDs the agent returned are the record.
Ask your agent to run
get_ad_data_status. It reports the last successful sync, any failure, and whether the account is connected.
Numbers differ between the ad platform and granvl
Some difference is normal. Ad platforms attribute conversions with their own windows and include modeled conversions, while granvl counts the visits and leads it records on your pages and leaves out bot traffic. The Meta and Google pages show the platform's conversions and cost per lead next to granvl's, so you can compare them side by side. When the gap is large, check:
The conversion event. On Meta, granvl counts the standard conversion events. If you optimize for a custom conversion, add it with Conversions counted on the Meta Ads page; saving re-pulls the last 90 days.
UTMs. Spend can only be joined to leads when the ad's URL carries granvl's UTM parameters. Ask your agent to run
get_tracking_health, which lists ads with missing or broken UTMs and the fix for each.Qualification. If unqualified leads aren't sent to ad platforms, the platform counts fewer conversions than granvl's total.
Date range and freshness. Compare the same dates, and check when the ad account last synced.
Delivery. Neither count proves a lead reached your CRM. Check the Leads tab delivery pill for that.
Your domain won't verify
Open Settings > Domains, click Manage on the domain, and open the DNS tab.
Add every record it lists at your DNS provider: the CNAME (for a subdomain) or A record (for a root domain), the TXT record, and any extra records shown.
Enter host names exactly as shown. Your provider adds your root domain itself, so if a record ends up as
go.example.com.example.com, remove the repeated part.If your DNS provider can proxy traffic (for example Cloudflare), set the record to DNS only. granvl checks that the record points straight at granvl.
Click Verify now. If you see Records not found yet, wait: DNS can take up to an hour to update.
Verified · SSL provisioning means the records are right and the certificate is still being issued. It finishes on its own.
Your workspace is paused
When a free trial ends with no plan, or a cancelled plan runs out, the dashboard shows Free trial ended, every page except Home and Settings sends you back to Home, and your agent's tool calls return a message that building and analytics tools are paused. Published pages keep serving and leads keep delivering.
An owner or admin opens Settings > Billing and clicks Choose plan.
Complete checkout. The dashboard and your agent work again as soon as the plan is active.
Members can't choose a plan. Ask a workspace owner or admin. If a payment fails, access continues while the card is retried; update it under Settings > Billing. See Manage your plan, trial, and billing.
Your agent was refused when spending credits
Every call that spends Tool credits passes the spend guard first. The refusal tells your agent which check stopped it:
Message says | What to do |
Not enough credits | Buy a pack from the credits counter in the dashboard header (owners and admins), then try again. |
Faster than allowed | Wait a few minutes. The workspace or user made too many credit-spending calls in a short time. |
Daily allowance of generation and research calls | Wait. The count resets within 24 hours. |
Daily capability spending limit | The workspace spent its daily credit limit (2,000 credits in 24 hours by default). It frees up as earlier spend ages out, or an owner can ask support to raise it. |
Your role cannot spend credits | Ask a workspace owner or admin to run it. |
Expensive tools, such as research reports and competitor ad pulls, return an estimate first so your agent can ask you before spending. See Use Tool credits for research and generation.