M
Matthew Diakonov
11 min read
Fly Tipping Evidence Guide

Your CCTV recorded the fly tipping. The clip just doesn't have the number plate in it.

Almost every fly-tipping clip a property manager hands to the council comes back with the same note: we can see the dump, we cannot see the vehicle. The reason is not the camera. It is the trigger. A motion alert fires when the bag hits the ground, and by then the van has already reversed into the bin store with the boot open, hiding the rear plate, and the front plate has been past the lens for 90 seconds. The fix is to fire the alert on the parked vehicle, not the dump itself. The saved clip then naturally starts before the van pulled in. Plate in. Unload. Plate out. One continuous record.

See a vehicle_dwell alert land on a phone
4.9from 50+ properties
Fires on the parked vehicle, not the dump action
Saved clip is seeked back, captures both plates
Plugs into the DVR you already own over HDMI
Median 7 to 8 seconds capture to phone

The clip-window problem, in two sentences

The CCTV on a typical bin store, service road, or rear yard sees the same fly-tipping incident twice. It sees a vehicle reverse in with the front plate clear, sit for 90 to 180 seconds while the driver pulls items out of the boot, then drive off with the rear plate clear. The motion-trigger alert that the recorder ships fires in the middle of that window, on the pixel change of bags being unloaded. By the time the alert lands on a phone, the van has already left, and the saved clip ends with the dump and starts roughly when motion was first detected. The plate is in the preceding 90 seconds, which is on the recorder disk but is not in the alert clip.

The on-call manager forwards the alert clip to the council. The council enforcement officer opens it, sees the dump, cannot read the plate, asks for the surrounding footage. The manager then has to log into the DVR app, scrub backward through grainy multiview, find the approach window, export a separate clip, and email it. Most cases die at this step. The clip and the plate end up in different files, with different timestamps, and the council closes the file because it cannot prove the same vehicle.

Two clips of the same fly-tipping incident

Camera 7 motion detected, 02:13:18. Clip starts at 02:13:14. Van is already parked. Boot is open. Bags hit ground. Van reverses out at 02:14:01. Both plates blocked or out of frame for the entire clip.

  • Fires on pixel change at the moment of dumping
  • Clip window starts after the vehicle parked
  • Front plate was visible at 02:11:42, not in the clip
  • Council closes the file: cannot identify the vehicle

The numbers behind the right window

The reason vehicle_dwell works is timing. A typical fly-tipping event at a bin store has a known shape. Cyrano measures these numbers per event into the latency_ms and dwell_seconds fields, so the on-call manager and the regional director can both see the trigger working in production rather than guessing.

0 sMedian dwell of a fly-tipping vehicle at a bin store, plate to plate
0 sDefault seek-back buffer on dvr_deeplink, captures the approach
0 sMedian capture-to-phone latency on a 25-tile multiview
0Fields on every event record, ready for a council file

The dwell number matters because it is the gap between front plate and rear plate. A motion trigger fires somewhere inside that 0 second window. A vehicle_dwell trigger fires at second 0 by default, before the unload finishes, while the boot is still open and the vehicle has not reversed out. The seek-back buffer of 0 seconds on the deep link guarantees the saved clip begins before the vehicle entered the tile. That is not a coincidence. It is what makes the file the council can act on.

What a fly-tipping incident looks like, second by second

This is the same incident as the comparison above, expanded onto the recorder timeline. The point is that every prosecution-relevant frame is already on the recorder. Nothing extra has to be captured. The job of the trigger is to make sure the saved clip covers the right window, not to invent footage that does not exist.

One fly-tipping event, recorder clock

Service Road CamBin Store CamDVR (recording)Cyrano edgeOn-call phone02:11:30 front plate visible on approach02:11:42 vehicle enters bin store tile02:11:42 composite frame to edgetile.index 11 starts dwell timer02:12:18 boot opens, bags out (motion peak)02:12:42 dwell_seconds = 60, fires vehicle_dwell02:12:50 alert + thumb + dvr_deeplink (seek -12s)02:14:04 vehicle reverses out, rear platemanager taps deeplink, clip plays from 02:11:30

The event record handed to the council

Every vehicle_dwell event ships as a nine-field record (plus dwell_seconds, the thumbnail URL, and the dvr_deeplink). The schedule_window field encodes which armed window matched (so the bin lorry on Tuesday morning does not page anyone). This is the JSON the recorder writes once at capture. It is also the body of the WhatsApp alert, the body of the webhook POST to a council integration, and the row on the morning review dashboard. One shape, all surfaces.

events/ev_01J8Q1.json

The cameras you already own, wired into the right trigger

The most expensive fly-tipping advice online tells you to buy hidden spy cameras and ANPR overlays. The cheapest version is to keep the cameras on the bin store, the service road, and the rear yard exactly where they are, and add a single device that reads the recorder's HDMI output and fires on vehicle_dwell. Cyrano sits between the recorder and the monitor. The DVR keeps doing whatever it was doing. What changes is that one tile in the multiview now has a dwell timer attached to it during overnight hours.

Existing cameras into the right trigger, evidence out

Bin Store Cam
Service Road
Rear Yard
Side Gate
vehicle_dwell rule
WhatsApp alert
Webhook POST
Review dashboard
DVR deeplink

What the four delivery surfaces carry

The same record fans out to every place a fly-tipping incident needs to be acted on, without re-shaping the data per channel. Same tile.label on the lock screen, in the webhook body, in the CSV export, and in the dashboard filter. That consistency is what lets a regional manager hand the same string to a council officer, an insurance adjuster, and a leasing team and have them all be looking at the same incident.

WhatsApp body

Bin Store Rear, vehicle_dwell 142s, Cedar Court. Thumb of the parked van with boot open. Tap-through deep links to the seeked DVR clip. Lock-screen triageable.

Webhook POST

Same nine-field JSON, signed with X-Cyrano-Signature. Routes to a council integration or central station. The receiving service gets the same shape the WhatsApp body is rendered from.

Review dashboard row

Filter by event_class = vehicle_dwell across the portfolio. Each row carries tile.label, property, iso8601_ts, dwell_seconds, and a thumbnail. Used for morning triage and quarterly trend reports.

DVR deep link

dvr_deeplink resolves to a browser-playable clip on the recorder, seeked to iso8601_ts minus the buffer. Shared with council enforcement without extracting an MP4 or breaking chain of custody.

Portfolio CSV export

Filter all vehicle_dwell events for the quarter, export. Same nine fields per row. Hand to the management company for trend reporting on dumping hot-spots and repeat offenders.

Council file attachment

Section 33 EPA 1990 evidence package: the dvr_deeplink, the thumbnail, iso8601_ts on the recorder clock, property, tile.label. Enough metadata for a fixed penalty notice.

Buying new ANPR vs. triggering existing CCTV the right way

The standard advice for fly tipping on private property is to buy ANPR cameras and a separate spy camera kit. That works, and it is also the most expensive way to solve a problem that is, on most sites, already half-solved by the cameras the property already has. The honest comparison is between adding hardware and adding the right trigger to the hardware in place.

FeatureNew ANPR + spy camera installvehicle_dwell on existing CCTV
Cameras required at the bin storeNew ANPR-grade IP camera plus a hidden spy unitWhatever the property already has, any age, analog or IP
Hardware capex per propertyGBP 1,500 to 4,000 for ANPR plus install plus cablingGBP 350 one-time edge device, single HDMI tap on the recorder
Time to installHalf a day to two days, plus a contractor for cablingTwo minutes, one HDMI cable into the DVR
What the saved clip containsTwo separate ANPR snapshots plus a motion-triggered clip, three filesPlate-in, unload, plate-out in one continuous record
Trigger windowANPR fires per plate read; motion clip fires on pixel changevehicle_dwell at 60 to 120 seconds during armed hours
Bin lorry false positive controlPer-camera schedule, no cross-tile dedupschedule_window + dedup key per tile + property
Council evidence handoffThree exported MP4s plus two ANPR JPEGs, re-stitchedOne dvr_deeplink, original recorder clip, no re-encode
Works on analog AHD/TVI/CVI recordersUsually no, ANPR cameras are IP and need a new NVRYes, reads HDMI output of the recorder
Privacy footprintANPR vendors typically push plate reads to cloudAll inference local on the edge device, no cloud upload

The fly-tipping clip checklist a council enforcement officer reads

A council enforcement officer working a Section 33 EPA 1990 case opens the clip and runs through a fixed mental checklist. If any line fails, the file is sent back asking for more footage. The checklist is not arbitrary, it mirrors what the Magistrates' Court will need at hearing. Every line below is something the vehicle_dwell trigger and the seeked dvr_deeplink put into the saved clip by default.

What has to be visible in one continuous clip

  • Front number plate of the vehicle on approach, readable to the eye, not just to ANPR
  • Vehicle parked in or adjacent to the dumping spot, not just driving past
  • At least one person exiting the vehicle, with face or build visible if the camera angle allows
  • Items being removed from the vehicle and left on the ground
  • Vehicle leaving the scene without the items it arrived with
  • Rear number plate of the vehicle on exit, ideally a different camera angle than the front
  • Timestamp on the recorder clock visible in the frame, not just in the file metadata
  • Camera name burned into the multiview overlay matches the camera name in the property record
  • Original recorder file or a deep link to it, not a re-encoded MP4

The webhook a council integration receives

For boroughs and managing agents that route environmental crime reports through a central CRM, the same nine-field event lands as an HTTP POST. The receiving service writes a case row, queues the dvr_deeplink for the duty officer, and acknowledges. No MP4 is uploaded, no separate ANPR file is correlated. The deep link resolves to the original clip on the property's recorder, on demand.

POST /hooks/event on the council enforcement endpoint

The lifecycle of a fly-tipping catch, from approach to fixed penalty notice

The reason this is worth wiring up properly is that a single successful prosecution at a property tends to produce a measurable drop in repeat dumping at the same site for the months that follow. The chain has to hold end to end. Below is the one Cyrano runs by default for fly tipping on a UK property, with the armed window set to overnight and weekends.

1

Vehicle approaches the property at 02:11:30

Service Road Cam captures the approach. Front plate is in frame. Recorder writes the segment to disk as part of normal operation.

2

Vehicle enters the bin store tile at 02:11:42

Bin Store Cam picks the vehicle up inside tile.index 11. Cyrano starts the dwell timer for the tile. The armed window for this tile is 19:00 to 06:00 weekdays, all day weekends.

3

Persistence filter holds across 3 to 5 frames

Multi-frame persistence prevents transient detections from arming the timer. A pedestrian crossing through does not start it. A parked vehicle does.

4

Dwell timer crosses 60 seconds at 02:12:42

vehicle_dwell event class fires. dwell_seconds is written into the event record. iso8601_ts is the recorder clock time, not the system clock.

5

Cyrano writes the nine-field event record

tile.label, tile.index, tile.coords, property, layout_id, overlay_mask, event_class, iso8601_ts, latency_ms. Plus dwell_seconds, thumbnail URL, dvr_deeplink with the seek-back buffer, and schedule_window.

6

Alert lands on the on-call manager's phone at 02:12:50

WhatsApp body: Bin Store Rear, vehicle_dwell 142s, Cedar Court. Thumbnail of the parked van with boot open. Median capture-to-phone latency 7 to 8 seconds.

7

Manager taps the deep link

dvr_deeplink resolves to the original DVR clip, seeked to 02:11:30 (iso8601_ts minus the 12-second buffer). Plate-in is at the start of the clip. The manager dispatches a tenant or marks for council.

8

Webhook POST hits the council enforcement endpoint

Same nine fields plus thumbnail and deep link. The council CRM opens a Section 33 case file, references ENV-2026-0412-A, and queues for the duty officer.

9

Duty officer reviews and issues a fixed penalty notice

The dvr_deeplink shows the original clip, plate-in to plate-out. The officer matches the registration to a registered keeper through the DVLA, drafts the fixed penalty notice, and serves it.

10

Repeat dumping at the property drops

The visible enforcement against one identified vehicle tends to deter the small set of vehicles that account for most repeat dumping at any one site. The vehicle_dwell rule stays armed for the next one.

What you do not have to change

Nothing on the recorder changes. The DVR keeps doing whatever motion-triggered recording it was doing before, the cameras stay where they are, the cabling stays where it is, the storage stays where it is. Cyrano reads the HDMI output of the recorder via an HDMI tap, does not touch the DVR config, and does not need RTSP credentials. The original footage is still on the recorder for any window the classifier did not flag, available for retrieval by the property manager exactly as before.

What goes away is the noise. The DVR's own motion push, which most property managers have already muted, can stay muted. vehicle_dwell at the bin store at 02:00 is what fires. A resident putting bags in the chute at 19:30 does not, because the vehicle_dwell rule is keyed on detected vehicles, not on motion, and the loiter rule for the same tile is on a longer threshold and a different armed window.

The single line of new advice is: stop trying to catch the dump. Catch the parked vehicle. The clip-window problem is real and it is the reason most fly-tipping CCTV catches die at the council enforcement desk. The trigger is the fix, not the camera.

Want a vehicle_dwell alert to land on your own phone?

Fifteen-minute call. We plug Cyrano into a running DVR and walk you through one real fly-tipping clip from parked vehicle to seeked deep link to plate-in plate-out evidence.

Frequently asked questions

Why do most fly-tipping CCTV catches fail to lead to a prosecution?

Because the saved clip almost never has both number plates in it. Standard motion-trigger alerts fire when bags hit the ground, but by then the van has already reversed in, the front plate is past the camera, and the rear plate is hidden behind the open boot. A council enforcement officer reading the clip sees the dump but cannot see the registration. The case dies on identification. The fix is to fire the alert on the parked vehicle, not on the dump action itself, so the saved clip starts before the van pulled in.

What is vehicle_dwell and why does it work better than a motion trigger for fly tipping?

vehicle_dwell is an event class that fires when a detected vehicle stays inside a defined tile (a bin store, a rear yard, a service road) for longer than a configurable threshold. For fly tipping the typical threshold is 60 to 120 seconds at hours when no scheduled collection is on the calendar. Because the timer is counting up while the vehicle is still parked, the alert fires before the unload finishes, and the deep-linked clip on the recorder is seeked to iso8601_ts minus a small buffer. The buffer is what causes the saved clip to start before the vehicle entered the tile, capturing the front plate on approach. A motion trigger keyed on pixel change cannot do this because the pixel change happens at the moment of dumping, which is too late.

Do I need to buy ANPR cameras to catch fly tipping on my property?

No. ANPR is a separate, expensive overlay that most properties cannot justify for a handful of incidents per year. The cameras you already have on the bin store and the service road already capture readable plates on the approach and exit, the missing piece is making sure the saved clip covers those moments. Cyrano plugs into the HDMI output of your existing DVR or NVR, classifies the multiview composite per tile, and triggers on vehicle_dwell using whatever cameras the recorder is already receiving. The saved clip is on the recorder you already own. If the camera resolution is good enough to read a plate to the human eye on the live feed, it is good enough for the clip.

What does a prosecution-ready fly-tipping clip actually need to contain?

Five frames in one continuous record: front plate on approach, vehicle parked in the bin store with the boot open, the act of leaving items behind, vehicle reversing or driving out, rear plate on exit. Plus a timestamp on the recorder clock (not the system clock, the recorder clock the council can subpoena), the name of the camera as it appears on the recorder's own multiview overlay, and the name of the property the camera is on. Cyrano's event record carries all of that as nine scalars plus a 480x270 thumbnail. The dvr_deeplink resolves to the underlying clip on the DVR, seeked, so the council officer can play it without you having to extract and email an MP4.

How do I avoid the alert firing every time the bin lorry shows up?

Two ways. First, schedule. The vehicle_dwell rule for the bin store tile is only armed during hours when no collection is on the calendar. For most multifamily and commercial sites that means 19:00 to 06:00 plus weekends. Second, the dedup key. Cyrano keys events on property + tile.label + event_class with a configurable cooldown window. A bin lorry that lands inside the armed window once a fortnight produces one alert that the on-call manager dismisses in five seconds, not a hundred. The recorded clip is still on the DVR if you ever need it.

Can I use the clip as evidence to send to the council, or do I need a chain of custody process?

Councils accept private CCTV evidence under the Environmental Protection Act 1990 Section 33 and the Clean Neighbourhoods and Environment Act 2005, provided the footage is unaltered, timestamped, and you can describe the recorder it came from. The Cyrano dvr_deeplink resolves to the original clip on the recorder, not a re-encoded copy, so the file you hand over is the same one the recorder wrote at capture. The event record carries iso8601_ts on the recorder clock, tile.label (the camera name as the recorder knows it), property, and a SHA-256 of the thumbnail. That is enough metadata for a council enforcement officer to take the clip and add it to a Section 33 file. Some councils will then issue a fixed penalty notice; serious cases go to the Magistrates' Court.

Does this work on analog DVR cameras or only modern IP cameras?

Both. Cyrano reads the HDMI output of the recorder, not the camera feeds directly, which means it does not care whether the DVR is analog (AHD, TVI, CVI) or IP (NVR over RTSP). A 25-tile multiview composite from any recorder looks the same to Cyrano. Fly-tipping cases are common on Class B/C apartment buildings, commercial yards, and housing estates that have older analog systems where buying new IP cameras is not in budget, and these are exactly the sites the HDMI capture pattern is designed for. No coax replacement, no recabling.

How fast does the alert reach the on-call property manager's phone?

Median capture-to-phone latency is 7 to 8 seconds on a 25-tile multiview, with a 5 to 15 second envelope across the portfolio. That window includes HDMI capture, overlay masking on the recorder chrome, classification on the composite, multi-frame persistence, dedup against the cooldown key, thumbnail crop, and WhatsApp or webhook delivery. The number is recorded as latency_ms on every event so a regional manager can chart p50 and p95 per property without waiting for staff to notice missed alerts.

What if the fly tipper is on foot, not in a vehicle?

The companion event class is loiter, which fires on a person whose dwell time inside a tile exceeds a threshold, with the same buffer-before semantics on the saved clip. For walk-up dumping (a sofa on the verge, bin bags pushed over a wall) loiter at the bin store at unscheduled hours is the right trigger. Both vehicle_dwell and loiter write the same nine-field event record, so the alert body, the webhook POST, the dashboard row, and the deep-linked clip are identical in shape. The on-call manager triages from the lock screen the same way for both.

We already get motion alerts from our DVR app. What changes if we bolt this on?

The DVR keeps doing whatever motion-triggered recording it was doing. Cyrano does not touch the recorder config and does not need RTSP credentials. What Cyrano adds is a parallel event channel that classifies the multiview, fires on vehicle_dwell or loiter at specific tiles during armed windows, and delivers a phone-triageable alert with a cropped thumbnail and a deep link to the clip on the DVR. Most properties end up disabling the DVR's own motion push within the first week because the new channel is acted on and the old one was muted.

🛡️CyranoEdge AI Security for Apartments
© 2026 Cyrano. All rights reserved.

How did this page land for you?

React to reveal totals

Comments ()

Leave a comment to see what others are saying.

Public and anonymous. No signup.