GDPR Compliance for event plugins

This statement is for the wordpress plugins amr-events, amr-ical-events-list  and amr events attendees at

Briefly: the amr-events plugin creates events as wordpress custom posts. No additional user data is created or stored. The post author (display name and email) is assumed to be the event organiser for purposes of complying with the ics feed RFC5545 standard. The plugins do not send or store data on any other servers.

Collecting & storing of user data:

The amr-events plugin creates events as wordpress posts.  As per standard wp processing the author of the post is recorded.  That is the extent of any collecting any personal user data that is within the plugins control – only as per standard wordpress user functioning.   The plugin does not of itself collect and store user data.  Control of that user data rests with the website owner.

Processing or use of user data (email and display name):

In event feeds (ics feed) as per the RFC5545 standard the event organizer must be included in the RFC 5545 ics file.  Refer   – see Organizer

This property MUST be specified in an iCalendar object
      that specifies a group-scheduled calendar entity.  This property
      MUST be specified in an iCalendar object that specifies the
      publication of a calendar user's busy time.

To conform to this, the event post author’s data is then included in the ics file as per the example in the specification :


The plugin uses the wordpress post authors “display name” if it exists, if not then the wordpress users “userlogin”, and then the wordpress users ‘user_email’ to provide the required ORGANIZER details.  The plugin does not have any means to validate this data and simply uses what has been stored the user records by the website.

A web developer can choose to display (or not) the public ics url.  The web developer can also control whether a real user or a dummy user is recorded as the post author.

The plugins can also list events from external public ics files.  These ics files may contain attendee data.  The ics files are cached and refreshed daily or as requested.  The cache purpose is to continue to be able to list events should there be a disruption in access to source url.   If the web designer chooses to use the addon  then the web designer can choose to display that attendee data in the event list.  That list may be displayed in a  public or private page as setup by the web designer.  There is currently no provision to add attendee data to the custom events created inside wordpress.  If this becomes available, a link to the user data such as the user id or email address is what would be stored.

GDPR Summary

The plugins use a minimal amount of user data required to provide event functionality in adherence with the ‘purpose’ and ‘data minimisation’ principles.  With respect to the other GDPR principles, the plugins do not control the accuracy, storage, or security of this user data.   The plugin does not pass user data on to any other parties except as required by the RFC5545 ics specification and as configured by the website developer.

Very useful google calendar toolkit – GcalToolKit

There are tools that I am very grateful that someone created them.  They are useful and do their specific job well. Things like notepad++, and if you work with events – the GcalToolKit:  If you work with multiple google calendars and use calendar ics files frequently, then you may well find yourself one day in a spot of bother.

Google doesn’t make it easy to bulk manage events, and if your calendar provider has not yet figured out that offering calendar subscriptions is the intelligent way to go.  I have a certain provider of school management software in mind, who several years ago said they were ‘working on this feature’, still don’t have it.  This means that each term (!!!) and every time my child’s timetable changes, I have to logon and redownload the ics file, delete existing events and re-import. And no, they don’t do recurring events – each class is a separate entry (shock horror)

So today I want to give  many thanks to  Neil Gerstenberg for his Google calendar toolkit.

Google Calendar Events Bulk Delete and Management

Categories from ics files

An ics file may have ‘CATEGORIES’ in it.  For formatting purposes, the plugin treats these  similar to the wordpress ‘Category’, and will ‘mimic’ the links that are generated by wordpress categories.

Unlike wordpress event category or taxonomy based selection, selection of ics events via shortcode parameter is not currently offered.  It is preferable (more efficient) to do your selection of events for your ics file page by selecting the events for your ics file at the providing system side.  Hopefully the providing system offers the necessary parameters, as the amr-events plugin does when it offers ics feeds.

A tailored ics feed reduces the size of the file and the number of events that have to be parsed unneccesarily by this plugin.  Those ics files can get big over time, so if you have the option to select only current and future events, do that too!

For example of tailored ics feeds, see the demo site for amr-events – one can see that multiple selections are available from the amr-events to tailor an ics feed.

Example ICS Extract:

CATEGORIES:New Technology,User Experience,Web Technology,Web Development,Computer programming,Software Development,Technology,Interaction Design,Internet Startups,Web Design,iOS Development,Graphic Design,Ruby On Rails,Python

The plugin will try to pretend that these are like wordpress categories, and will create ‘links’ behind the ics category names.   To demonstrate, use the default list type with your ics file. The CATEGORIES should appear below the description:

Example formatting of ics categories:

One can click on the links generated to see just the events with that ics CATEGORY.

Note that the whole file still has to be parsed before event selection can take place.



Memory Problems or Timeouts ?

Experiencing memory problems or  timeouts ? Check the following:

Are your default wordpress and php memory settings up to handling all that you have added to the site?

Over time, as you add change themes, and add plugins, your wordpress setup starts needing more and more memory.   Sometimes the last plugin added is the one that ‘tips it over the threshhold’.   It may not be the main memory hog (or it may see below.)       Please check your wordpress and php memory limits.  Here are some helpful posts:

If your memory setting is already quite high, then evaluate whether you are asking the plugin to do too much:

Do you have recurring events ?

If you do have recurring events, please consider the following carefully:

How many days, months and number of events have you set as your maximum ?

This can influence how much work are you expecting the plugin to do.  Setting unnecessary high thresholds can cause a lot of extra work.   More info on number of events, number of days or months here.

How old is your ics file and how many ‘old’ events does it have ?

If it’s a google calendar, the ics feed does not at time of writing offer a way to request future events only.  This means your ics file will grow. The plugin has to parse ALL the events in the file, hold them in memory to check for a possible modifying VEVENT with a later sequence number that modifies the date. More info on google calendar ics files – and how to bulk delete old events.


Event List Parameters, number of events, days, months, years

In the list type settings, and as shortcode parameters, you can set the maximum number of events and the maximum number of days or months that the plugin will attempt to list.  It also uses these to limit the recurring events it has to generate.

maximum events and number of days, or months
maximum events and number of days, or months

It is important to set a balance between number of days/months and number of events, particularly if you have recurring events and in particular for those people using ics files.    An event, especially a recurring can be made up of multiple VEVENT definitions, additional definitions for each excluded date, or modified instance.  So for each recurring event, the plugin has to

  • generate the possible instances, hold them all in memory
  • check for any modifications, exclusions etc and apply those to the instances, before it can start limiting.

Modifications of instances can change an instance date and time – pushing it out of the desired time range or WORSE, pulling an instance that is currently out of range, INTO the time range.

Try to balance the two parameters: the time period and the number of events based on your knowledge of the types of events and their frequency.

For example:   If you specify 10 events and 1000 days, the recurring events have to be generated out to 1000 days and all held in memory, until all events generated and modifications applied, and then the number can be cut back to 10.

As a guideline, If you want to show 5 events and usually they’d be in the next two months, then maybe 90-120 days would be suitable.

Note also that there is a difference between how hours, days, months thresholds are treated.

  • hours start from current hour
  • days start from current day
  • months start from current month

So if you say months=1 and the list is running on the last few days of the month, you will not see many of ‘future’ events ie: next months day. Bette to perhaps either use: days=30 or months=2,


Google calendar ics files

If you are using a google calendar ics file as event input you should be aware of the following:

  • the ics file may get rather large over time.  At time of writing there is no way to get the feed to only show future events, so it will have ALL your old data.  This all has ti be parsed, turned into event data and held in memeory to see if there any any modifications, or exclusions.    If you don’t need the old events, try deleting them.  You may need a bulk delete tool.  I have used this GcalToolkit, not ideal but it does work.
  • At times the ics feed used to be slow to update – check what the actual feed contains if you think events are missing .  Open the ics file in notepad, and check if your events or your changes are there.  Note that an instance may have multiple VEVENTS with incremental SEQUENCE numbers later in the file.

On the other hand, when using an amr-events feed in a google calendar,  google can be slow to refresh reading the feed, sometimes it will do the first one fine, then you make a change and expect google to show in instantly.  It will not.  Not much we can do about that.

Ics Feeds, RDATEs and google calendar – version 3.11

Google calendar has always been slightly more particular about ics feeds and frustrating in the lack of information it gives if it rejects a ics url.   Thanks to Toby Hage, a couple of oddities to do with blank lines in descriptions and  in repeating dates (RDATES) in the ics feed were been identified.   These are now resolved in version 3.11.   This version is up at and all appears to be stable so far.  It is available for download at

If any of you have any feature requests, please contact me at



Improved performance in amr-events 3.6

Version 3.6 of amr-events is available for download.

It should be used with the free listing part: amr-ical-events-list version 4.30.       Several improvements have been made in the way that event meta data, taxonomies etc were being retrieved.  This has reduced the database queries made when producing an event list from events in wordpress.

If you have a fairly recent version, and your access to the automated updates from icalevents is still current, then  it should appear in the normal wordpress plugin updates.