13 October 2026

Green, yellow, red, grey: the CAP monitoring flag system explained

Patchwork of farm fields and hills under a clear blue sky.

If you work in a paying agency and you've opened a monitoring dashboard for the first time, the colours are the first thing you notice. Every declared parcel in the control population comes back tagged green, yellow, red or grey. It looks simple. It mostly is. But the four colours hide a fair amount of methodology that's worth understanding before you sign off a control report built on them.

What the four colours mean

The system comes out of the CAP monitoring approach built on Sentinel time series, the one most paying agencies now run alongside or instead of the old sampled field-inspection round. For each declared parcel, the system compares what the farmer claimed, crop type, mowing date, greening obligation, against the signal the satellites picked up across the season.

Green means the observed signal matches the declaration. No action needed on that parcel for that check.

Yellow means the system couldn't confirm it either way from the imagery alone. This is the pile that needs a human to look closer: a higher-resolution tasked image, a geotagged photo from the farmer, or an actual visit. Yellow sends the parcel for that follow-up rather than closing the file on it.

Red means the observed signal contradicts the declaration. A grassland parcel that was clearly cut for silage in May when the claim form says it wasn't mowed until July, that sort of mismatch. Red parcels go into the control report as flagged non-compliance candidates, pending the same kind of follow-up yellow gets.

Grey means there's no usable observation for that parcel in the window that matters. Persistent cloud cover over a region for three weeks in June is the most common cause. No Sentinel pass clean enough to read, no flag.

Grey is the one people underestimate

Auditors new to the system sometimes treat grey as a quiet green, no evidence of wrongdoing, so presumably fine. That's backwards. Grey means the system has no evidence either way. A parcel sitting in grey for the entire monitoring window hasn't been checked at all, it's just been marked as unchecked in a way that's easy to mistake for cleared. If your control report is going to hold up against an audit of the audit, the grey count for your region needs its own line, not a silent fold into "no issues found."

Where the colour code runs out

The four-colour system tells you what a per-pixel or per-parcel time series comparison concluded about one declaration against one signal. It doesn't tell you anything about parcels that weren't checked at all, because they fell outside a sampled subset, or about the gap between a flag and an inspector actually confirming it on the ground. A yellow or red flag on a parcel nobody follows up on isn't a finding. It's a question mark sitting in a spreadsheet.

That gap, between flagging a sample and flagging everything, is the one Subsidy Monitoring is built around. Instead of running the colour system across a percentage of the claim population and extrapolating the rest, it runs a season-long check against every claimed parcel and hands back the full flag list, map layer and CSV, so nothing sits in an unchecked grey zone just because it wasn't picked for the sample.

A few things worth confirming before you trust a flag

Before you act on any red or yellow flag, it's worth checking three things: what the underlying spatial resolution was for that parcel (small, irregular parcels get noisier signals), how many clean passes went into the classification across the season, and whether the grey periods line up with a known weather event for the region rather than a data gap on the provider's side. None of that makes the colour system wrong. A flag is a starting point for a case file, and these three checks are what turn it into one that holds up.

If your region's control report is still built on a sampled few percent and a lot of grey you can't account for, it might be worth seeing what a full parcel-by-parcel pass looks like instead.

Get started

Back to the notes