Named sets of countries you can use in any geographic condition by writing
@name— in a firewall rule, or in a site's geo policy.
Instead of pasting twenty-seven codes into every rule that means "the EU", you write @eu27 and maintain the membership in one place. When a country joins or leaves, you change one group rather than every rule that mentioned it.

Any country field in EdgeGuard accepts all three, mixed freely in the same list:
| You write | It means |
|---|---|
PT, RU, CN |
that country, by its ISO 3166-1 alpha-2 code |
@EU, @AS, @AF, @NA, @SA, @OC, @AN |
that continent, as the GeoIP lookup reports it |
@eu27, @gcc, @asean, … |
a named group, defined on this page |
RU,CN,@AF,@eu27 is one valid list. A leading ! negates the whole list: !@EU is everyone outside Europe.
Four continent codes are also country codes. A rule written to block North America as a bare NA blocks Namibia instead, and you find out from a customer:
| Code | As a country | With the @ |
|---|---|---|
AF |
Afghanistan | @AF Africa |
AS |
American Samoa | @AS Asia |
NA |
Namibia | @NA North America |
SA |
Saudi Arabia | @SA South America |
Two bare letters are always a country. A continent always carries the @. The page lists the seven continents with that warning beside them, and the firewall rule form reads the whole condition back in plain language as you type it — see Firewall Rules.
The lookup that resolves the country resolves the continent at the same time, so @EU costs nothing and can never fall out of date. A group is a list somebody maintains — which is why groups live here, and why every one of them expands on screen.
A group whose contents nobody can see is a political decision hidden in a text box.
| Group | What it is |
|---|---|
eu27 |
the European Union's 27 member states |
eea |
the EU 27 plus Iceland, Liechtenstein and Norway |
schengen |
the Schengen Area |
gcc |
Gulf Cooperation Council |
asean |
Association of Southeast Asian Nations |
mercosur |
Mercosur full members |
nordics |
the Nordic countries |
western-asia |
the UN subregion |
middle-east |
not a standard — see below |
Eight of the nine have a document behind them that anyone can check. "Middle East" has no internationally agreed membership — whether Egypt, Turkey or Cyprus belong depends who you ask — so the one that ships states the definition it uses in its description, and you are expected to edit it to yours.
Deliberately different sets, and the difference matters when the rule is about a legal boundary:
A legal boundary is a group; a rough geographic sweep is a continent. Cloudflare solves the same problem with a separate "is in the European Union" flag; EdgeGuard does it with two names.
Add Group →
@.Built-in groups can be edited like any other. Their memberships are the shipped defaults, not the truth handed down — if your legal team defines the Middle East differently, edit it.
Delete on the row, with a confirmation that says what will happen.
A rule that still says
@thatnameafterwards matches nothing. It does not fall back to matching everything, which is the safe direction — but it is silent, so search your rules for the name before deleting a group.
The same is true of a name nobody ever defined: @nosuchgroup matches nothing rather than being read as a country code. A geographic rule that matches by accident is the kind that blocks a continent at three in the morning.
1. That the group resolves. Write a firewall rule with action Log Only, countries @eu27, scope one site. The reading under the field should say "Matches visitors in eu27 (27 countries)". Watch the HITS column and the events.
2. That the engine has it. A group is pushed to the agents with the rest of the configuration. If a rule using @name never matches anything at all, check the agent's version and its last contact on Agents.
3. The difference between the two Europes. A rule with @EU and one with @eu27 should disagree about a visitor from Norway or Switzerland. That is the test that proves you picked the right one.
Country groups and continent tokens need central 2.4.21 and engine 3.0.31. An older engine reads
@EUas a country code that does not exist, and matches nothing — silently, in the safe direction.