# FunnelKeeper + Semrush

> A weekly organic snapshot, taken carefully — your API units are finite.

When revenue arrives with no campaign attached, organic is usually the answer. Semrush gives the unattributed line a plausible explanation without pretending to be precise attribution.

- **Category:** Search visibility
- **Access:** read-only, your key
- **Sync:** Weekly, and only weekly.
- **On demand:** no — scheduled only

## What FunnelKeeper reads from Semrush

- Domain rank and organic keyword count
- Estimated organic traffic and traffic cost
- Paid keyword, traffic and cost estimates for the same domain

## What it never does

- Never more often than weekly. Semrush units deplete and the cadence is a product rule, not a default
- The key is never test-called on save — a test call would burn a unit to prove nothing
- The key is yours, stored encrypted, and used for your domain only

## How to connect Semrush

| Surface | How |
| --- | --- |
| Dashboard | Integrations → Semrush → API key + domain |
| MCP | set_semrush_key |
| CLI | fk connect semrush --product <slug> |
| API | POST /products/{slug}/connections/semrush |

## FAQ

### Why can't I trigger a snapshot manually?

Because every call spends units you paid for. Sources that are metered rather than rate-limited are deliberately excluded from the Sync now path, so a button cannot drain your quota.

### Do I need Semrush to get a payback verdict?

No. Payback needs spend, funnel and revenue. Semrush is context for the organic side — useful when the unattributed line is large and you want to know whether search explains it.

## Related

- [Google Analytics 4](https://funnelkeeper.com/integrations/ga4/) — Sessions, channels and landing pages — the traffic half of the payback join.
- [Google Ads](https://funnelkeeper.com/integrations/google-ads/) — Spend at campaign, ad group, keyword and ad grain — so each row gets a real ROAS.

Full catalogue: https://funnelkeeper.com/integrations/ · Machine index: https://funnelkeeper.com/llms.txt
