Docs menuEvents and broken links

Events and broken links

Count downloads, form submissions and link clicks with auto-events or your own code, and find the missing pages visitors hit, on the Campaigns and Issues tabs.

On this page

Events are on the Campaigns tab of the Overview, and broken links on the Issues tab. Each tab appears once there’s something to show.

Auto-events

Vireo can record common clicks without any code. Go to Vireo Analytics, Settings, Tracking, and tick what you want under Auto-events. All of them are off by default.

Setting Records Event name and value
File downloads Clicks on links to files: PDF, ZIP, DOC, MP3, MP4 and others download, the file name
Form submissions Every form submit, except forms that report form_success below form_submit, the form’s id, name or action address
Email links Clicks on mailto: links mailto_click, only the @domain part of the address
Phone links Clicks on tel: links tel_click, the number
Outbound links Clicks on links to other domains outbound, the other site’s host

Click “Save settings” at the foot of the tab.

Form submissions that went through

Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Elementor Pro forms, Ninja Forms, Formidable Forms and Forminator record a form_success event when the plugin accepts a submission. It carries the form’s id and title and nothing the visitor typed. It needs no setting, and only plugins that are active are listened to.

Breakdance has no such hook, so its forms get a “Vireo Analytics” action. Tick it under Actions after submission on each form you want counted.

The form_submit auto-event leaves these forms alone, so an attempt that failed validation isn’t counted beside the one that sent. Other forms still use form_submit.

With Vireo Pro active, outbound clicks and downloads are handled by Pro’s own tracker instead, so the free Outbound links option is switched off to avoid counting them twice.

If WP RSS Aggregator or Spotlight is active, Vireo also counts clicks on aggregated articles and Instagram feeds. See the FAQ.

Your own events

Send an event from JavaScript on any page that loads the tracker:

vireo('event', 'newsletter_signup');
vireo('event', 'video_play', 'intro-video');

The second argument is the event name and the optional third is a value, used to break the event down. Calls made before the tracker has loaded are queued and sent once it has.

From PHP, for something that happens on the server, such as a completed order:

vireo_track_event( 'order_complete', (string) $order_id );

Names keep only lowercase letters, numbers, - and _, and names and values are cut to 100 characters. More in The tracker and custom events.

Top events

The “Top events” card lists each event with its Count and Unique visitors for the range. Click an event to see its own screen: Total count, Unique visitors, Distinct values, a chart of Daily counts, and the Top values when you send one.

The “Broken links” card lists the missing addresses visitors hit, with the referrer that sent them and the number of hits. Once Vireo can tell them apart, it splits them in two:

  • Links on your own site to a page that’s missing, listed as Missing page, Linked from and Hits. Fix the linking page.
  • “Requests from elsewhere”: nothing on your site links to these. They’re mostly automated scanners looking for software you don’t run, and occasionally a stale link on another site worth a redirect.

Missing pages are counted by address, including addresses with accented or non-Latin characters.

To keep a flood of scanner requests from filling your database, Vireo records at most 500 new entries a day, each a missing address and where it was linked from. Entries already on the list keep counting hits after that. A developer can change the limit with the vireo_404_max_new_rows_per_day filter.

Export

Settings, Import & export, Export CSV downloads Events or Broken links for any date range. See Settings.

Updated 29 October 2026. Something wrong or missing? Tell us.