Cloudflare list already exists
Connecting Cloudflare fails because an IP list with Botect's name is already in the account — usually left behind by another environment or a re-created project.
The error
Connecting Cloudflare fails with:
A list named [botect_block_p1] already exists in this Cloudflare account
but is not linked to this project.
The name in the brackets may be botect_challenge_p1 instead, and the number is your project id.
Why it happens
Botect names its IP lists botect_block_p{project} and botect_challenge_p{project}, and remembers the list id Cloudflare returned when it created them. On every later connect it re-adopts a list only when that stored id matches.
A fresh connection has no stored id yet. So when a list with the expected name is already sitting in the account, Botect cannot tell whether it is:
- a list it created from a different install — a staging or local environment, or the same project before its database was restored or rebuilt, or
- a list you created that happens to share the name.
Adopting the wrong one would be destructive: the next sync reconciles list contents, removing any IPs Botect did not put there. Rather than guess, it stops and asks you to decide.
This is expected when you test an integration from one environment and then connect the same Cloudflare account from another. Both environments derive the same list name from the same project id.
Option 1 — let Botect clean up (recommended)
Use this whenever the environment that created the lists is still reachable — a staging install, a local copy, or the same project before its database was rebuilt. Botect deletes its own rules and lists in the right order, so nothing is left to chase in the dashboard.
Open the old environment
Go to that environment's project → Integrations → step 1, Cloudflare connection, and click Disconnect.
Tick both cleanup options
The confirmation offers two independent choices:
- Also remove the WAF rules Botect created — deletes the two custom rules, leaving the lists and their IPs in place.
- Also delete the IP lists — deletes the rules and the lists.
For this error you want both: the lists are what the next connection collides with, so removing only the rules will not clear it. The second option unlocks once the first is ticked, because Cloudflare refuses to delete a list while a rule still references it.
Either box is disabled when there is nothing for it to act on, with the reason shown beneath it. If both are disabled, that environment owns nothing and the leftovers belong to something else — use Option 2 below.
Confirm
Botect deletes the rules, then the lists, and reports what it removed. Anything it could not delete is named in the same message rather than reported as success, so a partial cleanup is never silent.
Reconnect the new environment
Connect Cloudflare on the environment you actually want protecting. It creates both lists fresh, records their ids, and the conflict cannot recur for that project.
Removing the lists discards the IPs they held. That costs nothing: Botect rebuilds the list from your active rules on the next sync.
Option 2 — clean up by manually
Use this when no Botect environment still owns the leftovers — the old install is gone, its database was rebuilt, or the lists were created by something else entirely.
Delete the leftover WAF rules
In the Cloudflare dashboard, open the zone you are protecting, go to Security → WAF → Custom rules (Security → Security rules in newer dashboards) and delete any rules described "Managed by Botect".
Do this before deleting the lists — Cloudflare refuses to delete a list that a rule still references. Removing them also stops the new connection creating a second, duplicate pair of rules.
Delete the leftover lists
Lists live at the account level, not inside a zone: go to Manage Account → Configurations → Lists and delete botect_block_p{project} and botect_challenge_p{project}.
Check the contents first if you are unsure. A list left by a test environment is usually empty or holds a handful of IPs.
Reconnect
Back in Botect, connect Cloudflare again. It creates both lists fresh and records their ids.
If the list is genuinely yours
If you created a list with that exact name for your own purposes, rename yours instead of deleting it. Botect will then create its own alongside, and your list keeps its contents and any rules referencing it.
Don't rename Botect's list to work around the error. The name is derived from the project id, so a renamed list is simply abandoned — Botect creates a new one and the stale list keeps whatever IPs it had, enforced by any rule still pointing at it.
Avoiding it
Point non-production environments at a separate Cloudflare account. Two installs sharing one account and one project id derive the same list names, so they will keep colliding — whichever connects second hits this error, and if both ever adopted the same list, each sync would overwrite the other's contents.
Failing that, disconnect one environment (Option 1, both boxes ticked) before connecting the next, so only one install owns the lists at a time.
See Cloudflare enforcement for how the lists, WAF rules, and sync fit together.