RSVPMaker is Now on GitHub

This is an invitation to developers with ideas about how to make RSVPMaker better. The code is now on GitHub:

https://github.com/davidfcarr/rsvpmaker

While I have received occasional code contributions over the years, I hope this will make it easier to collaborate with others who have great ideas or who have stronger skills in some areas than I do. Even if you don’t have code to contribute, there is an Issues section where you can record wish list items.

I’m relatively new to using GitHub, so I welcome advice on how to use the platform effectively.

RSVPMaker on GitHub

Customization for Notification Emails

Added by popular request: a new way of modifying the notification and confirmation messages RSVPMaker sends when someone submits the form for an event.

The default is still that a notification goes to the event organizer (or whatever email address or addresses you supplied) saying something like “RSVP YES for The Big Event on May 1” and the attendee gets a version that says “Confirming RSVP YES for The Big Event on May 1.” By default, the confirmation message also includes a button people can click to update their RSVP.

Now, if you want to use “Registration” rather than RSVP in the subject line, or you want to leave off the “Update RSVP” button (some people have told me they don’t want to make it too easy for people to back out), you can make those changes. (See also: How to Change the RSVP Now! Button.)

The notifications editor opens up possibilities for adding personality to these transactional messages. It also simplifies the process of localization, since “RSVP” is not universally understood across languages and cultures.

Sample form, showing customized subject line
Confirmation message with a customized headline

The information you record here should be generic enough to apply to all your events. You still get the option to add a per-event confirmation message, which will be included as long as your template includes the [rsvpmessage] placeholder (one of several documented on the page for the template editor). By default, the confirmation message is just “Thank you!” but I’ve also used RSVPMaker to register people for webinars where that message includes detailed instructions for accessing the online event. For a terrestrial event, it might be driving directions.

The Notification Templates screen is distinct from the Email Template screen, which you use to define one or more templates for the layout of your HTML email, for example to specify a background color. Notification messages use the default template defined on that screen.

While RSVPMaker is intended to be useful out of the box, I continue to look for ways to let you make it your own.

P.S. for Developers

If you create extensions to RSVPMaker, there are filters and actions you can tap to extend this feature as well.

The default array of variables used for these templates is defined like this:

$template_forms['notification'] = array('subject' => 'RSVP [rsvpyesno] for Customization for Notification Emails on ','body' => "Just signed up:\n\n[rsvpdetails]");
$template_forms['confirmation'] = array('subject' => 'Confirming RSVP [rsvpyesno] for Customization for Notification Emails on ','body' => "[rsvpmessage]\n\n[rsvpdetails]\n\nIf you wish to change your registration, you can do so using the button below. [rsvpupdate]");

You can add to it with a filter like

add_filter('rsvpmaker_notification_template_forms','my_forms');

Your filter would be passed an array and return your modified version with additional entries in the same format.

The sample forms use data pulled from a simple key / value array, where entries look like

$sample_data = array('rsvpyesno' => 'YES','rsvp_title' => $post->post_title);

The filter for that is ‘rsvpmaker_notification_sample_data’.

Finally, there is a ‘rsvpmaker_notification_templates_doc’ action you can use to add to the documentation at the bottom of the page.

As part of my WordPress for Toastmasters project, I plan to use this same template utility for confirmation and reminder messages for specific meeting roles.

Create Your Own RSVPMaker Events Listing Format

I’ve been working on creating a better API for developers who want to extend RSVPMaker, without hacking the core code of the plugin or overriding the pluggable functions. This example shows how you might take advantage of the get_future_events() function to write your own shortcode or widget code that outputs an event listing in a format of your own design.

get_future_events accepts 2 parameters, both optional — get_future_events($where,$limit)

$where is a SQL clause like ‘post_author=2’

$limit is a limit on the number of events that should be returned.

In this example, I added a shortcode that accepts where and limit as parameters that can be passed to the get_future_events function. You can also use before and after with either a specific MySQL formatted date or a date function like CURDATE() or DATE_ADD(). The past attribute directs RSVPMaker to use the get_past_events() function (which works the same way) instead. (This was only supposed to be a simple example, but I got carried away.)

I also included a showfield attribute to let you see the fields returned (the post_content body is hidden). In addition to all the normal $post properties, you get datetime (the full MySQL datetime for the event) and date (a formatted version). You can output the date in a different format by running the datetime data through PHP’s strtotime() to get a timestamp and then formatting your date with date() or strftime().

Here is the code, followed by a couple of examples.

add_shortcode('rsvpmaker_shortcode_demo','rsvpmaker_shortcode_demo');

function rsvpmaker_shortcode_demo ($atts) {
$output = '';
$where = (isset($atts["where"])) ? $atts["where"] : '';
$limit = (isset($atts["limit"])) ? $atts["limit"] : 5;
if(isset($atts["after"]))
	{
		if(!empty($where))
			$where .= ' AND ';
		if(strpos($atts["after"],'-')) // if this looks like a mysql date
			$where .= "datetime > '".$atts["after"]."'";
		else // if this looks like a relative code like NOW() or DATE_ADD
			$where .= "datetime > ".$atts["after"];		
	}
if(isset($atts["before"]))
	{
		if(!empty($where))
			$where .= ' AND ';
		if(strpos($atts["after"],'-')) // if this looks like a mysql date
			$where .= "datetime < '".$atts["after"]."'";
		else // if this looks like a relative code like NOW() or DATE_ADD
			$where .= "datetime < ".$atts["after"];		
	}
$events = get_future_events($where,$limit);
if(isset($atts["showfields"]))
{
	$showdata = $events[0];
	$showdata->post_content = '[post content goes here]';
	return '<blockquote>'.var_export($showdata,true).'</blockquote>';
}	
foreach($events as $index => $event)
	{
		$style = ($index && ($index % 2)) ? 'background-color: #fee; padding: 10px;' : 'background-color: #eef; ; padding: 10px;';
		$output .= sprintf('<p style="%s">%s<br /><a href="%s">%s</a></p>',$style,$event->date,get_permalink($event->ID),$event->post_title);
	}
return $output;
}

[rsvpmaker_shortcode_demo]
Output:

[rsvpmaker_shortcode_demo]

[rsvpmaker_shortcode_demo showfields="1"]
Output:

[rsvpmaker_shortcode_demo showfields=”1″]

[rsvpmaker_shortcode_demo where="post_title LIKE ‘%the%’"]
Output:

[rsvpmaker_shortcode_demo where=”post_title LIKE ‘%the%'”]

[rsvpmaker_shortcode_demo after="DATE_ADD(NOW(), INTERVAL 30 DAY)"]
Output:

[rsvpmaker_shortcode_demo after=”DATE_ADD(NOW(), INTERVAL 30 DAY)”]

[rsvpmaker_shortcode_demo past="1"]
Output:
[rsvpmaker_shortcode_demo past=”1″]

Using RSVPMaker for WordPress with Stripe Instead of PayPal

If you charge for some of your events, you now have the option to use the Stripe payment service rather than PayPal. This is a new feature (call it “beta” if you like), so if you try it please report back with a comment below to confirm that it worked for you.

Rather than writing my own API integration code for Stripe, I’m supporting this with an assist from the WP Simple Pay Lite for Stripe plugin. (There is also a Pro version for you to consider, but the free version seems to work just fine for my purposes). Once you install and activate the plugin, you will see a checkbox option to “Use Stripe instead of PayPal” on the RSVPMaker settings screen.

Update: The integration method I used is based on what the latest release of WP Simple Pay defines as its “legacy” shortcode and settings.

You will also need to have SSL security enabled on your site (or at least on the event page) to use Stripe payment in production. These days, SSL is becoming more and more of a default requirement for all websites, and there are good free options for obtaining SSL certificates. The reason SSL is not required for RSVPMaker’s default PayPal integration is that the responsibility for encrypting the financial transaction is delegated to PayPal’s website. After users complete the transaction at paypal.com, they’re redirected back to your WordPress site, and the payment is logged to the RSVP record.

You may find the Stripe integration to be a nicer user experience because the user never leaves your website and is presented with a straight credit card entry form, rather than a choice between between paying by credit card or with a PayPal account. According to this comparison, Stripe’s fee schedule also includes fewer surcharges.

For the sake of the demo below, I have WP Simple Pay enabled but in test mode.

Webinars on Webinars: Public Speaking and Online Tools

I’m working on a series of events this month related to online tools for organizing events, tools for organizing online events, and the developing the public speaking skills needed to communicate effectively in webcasts, webinars, online meetings, and live video.

Webinar: Market and Manage Events with RSVPMaker for WordPress – Tuesday January 10th, 1:00 PM EST – my webinar on a free WordPress plugin for event management (which, among other things, can be used to organize webinars built around YouTube Live)

Organizational Meeting: Online Presenters Toastmasters Club – Tuesday January 10th, 2017, 8 pm to 9 pm EST – first steps toward the formation of a Toastmasters club dedicated toward training and practice for online presentation skills, to be conducted online

WordPress for Toastmasters Webinar for January 2017 – Thursday January 19th, 2017, 1:00 PM EST – tutorial and Q&A session on the software for managing Toastmasters clubs (including online clubs)

Taking Public Speaking Online: Secrets of the Geeks on Tour – Wednesday January 25th,  7:00 PM EST – I’ll be moderating an educational webinar offered by Toastmasters district 47 featuring Jim and Chris Guld, whose weekly YouTube Live TV show is a marketing tool for their business teaching about technology for travelers

Learn Professional Online Presentation Skills with Roger Courville – Tuesday February 7th, 8:00 PM EST to 9:00 PM EST – I’ll be hosting an educational webinar offered by Toastmasters district 47 featuring Roger Courville, an world renowned expert on online presentation skills

Video: RSVPMaker for WordPress Setup and First Event

Here is a video introduction to RSVPMaker, covering its basic setup and the publication of a first event to your website.

https://www.youtube.com/watch?v=odhuUJY-QuY

Key points:

New Shortcodes for Displaying a Single Event

In response to a few RSVPMaker user requests, as well as needs that cropped up for some of my own projects, I’ve added shortcodes for displaying a single event. There is already an option with the rsvpmaker_upcoming shortcode to specify that a single event should be displayed, but it will always show up with the RSVP Now! button people have to click on to go to the registration form.

The following variations allow you to display the whole form. While the version with the button is more compact for display in a listing of several events, it’s may not be what you want on a landing page for an event or a blog post announcing a single event.

[rsvpmaker_next], displays just the next scheduled event. If the type attribute is set, that becomes the next event of that type. Example: [rsvpmaker_next type=”webinar”]. Also, this displays the complete form rather than the RSVP Now! button unless showbutton=”1″ is set.

[rsvpmaker_one post_id=”10″] displays a single event post with ID 10. Shows the complete form unless the attribute showbutton=”1″ is set

[rsvpmaker_form post_id=”10″] displays just the form associated with an event (ID 10 in this example. Could be useful for embedding the form in a landing page that describes the event but where you do not want to include the full event content.

Using the popup calendar widget, then changing the code

Update: With release 4.4.2, the rsvpmaker_one and rsvpmaker_form shortcodes treat one=”10″ as the equivalent of post_id=”10″ — meaning you can set this up using the calendar popup in the visual editor to select your featured event post, in the WordPress editor’s Visual mode, then switch to text mode to change rsvpmaker_upcoming to one of these alternatives. You can then delete the rest of the attributes that don’t make sense in this scenario (but if you don’t they’ll just be ignored).

Example

Here is the output of [rsvpmaker_next type=”webinar”]

Update: Easy YouTube Live Webinar Setup

This weekend’s update to RSVPMaker includes an easier method for setting up a sales or educational webinar, or an online video interview show, using YouTube Live, Google’s free internet broadcast service. I’m planning my next RSVPMaker webinar for January 10 at 1 pm EST.

You can now create a landing page for your event, plus sample confirmation, reminder, and follow up messages in one step, right from within the event editing screen. You can then further customize the reminder message (adding all the reasons why people should be sure to tune in) and the follow up message (at the same time you provide the link to the replay, you can promote a special offer for additional products or services).

If your webinar is intended as a way for you to build your email list, or generate sales leads, you can specify that people must register before viewing either the live event or the replay, and the landing page will enforce that requirement.

You begin by creating your YouTube Live event. Go to https://www.youtube.com/my_live_events or navigate to that page from the YouTube video manager.

Click New Live Event and fill out the form. It should look something like this:

If you want to require registration of viewers, you can set your YouTube Live event to “unlisted” so that it will not show up in the directory on youtube.com.

You will also create a corresponding RSVPMaker event for the same date and time. Because you may get attendees from other timezones, I recommend you tweak your RSVPMaker date/time display settings to specify that timezones should be displayed on your website.

Plug the url for your YouTube Live event into the blank corresponding field under the confirmation message blank and save the post as a draft or publish it. If you want registration for your event to be required, check that checkbox (this can be changed later).

YouTube Live field in the event editor.

RSVPMaker will create a landing page, as well as a confirmation message that includes the landing page url, a reminder scheduled to go out two hours before your event, and a follow up message scheduled to go out two hours after your event. To help you navigate between these pieces of related content, a message will appear at the top of the page whenever you are editing either the event post or the landing page.

Webinar related content

You can add or reschedule reminder and follow up messages from the RSVP Reminders screen.

The landing page will include the YouTube video feed, plus a live chat stream associated with the event.

YouTube Live webinar landing page.

Here is that same post seen in the editor, with the YouTube url included on a separate line (WordPress generates the video embed code automatically) and the [ylchatshortcode that pulls in the YouTube Live video chat stream. (If you don’t want to use YouTube’s chat, alternatives include enabling Facebook Comments on your site).

Landing page in the editor.

During the live program, you will want to monitor questions / comments from the chat as a way of interacting with the viewing audience. Assuming you stick with the YouTube Live chat, I suggest popping it out into a separate window, which you can do by clicking on the three dots at the right hand side of the chat box.

The presenter’s view of a YouTube Live session with the pop-up chat window displayed.

Try it and let me know what you think.

Creating a YouTube Live Event, with a Landing Page on Your WordPress Website

YouTube Live allows anyone to play TV talk show host or broadcast live marketing, tutorial, or entertainment content to the world. I use it to share information about RSVPMaker and related software and to conduct interview programs.

Using RSVPMaker and your WordPress-powered website, you can use YouTube Live as a free webinar platform, registering attendees and directing them to a landing page on your website. After the event, you can gain further mileage out of the event by making a replay available on that same page (YouTube will automatically archive your event for replay).

This tutorial follows the exact process I followed to schedule and begin promoting a December 7 webinar on RSVPMaker.

YouTube Live is the latest version of what used to be called Google Hangouts on Air, now divorced from the Google+ social network. That change made some of the older tutorial content I’d published obsolete, and this is an update.

Here is how you can create one of these events:

First, log into your Google account. Go to https://www.youtube.com/my_live_events or navigate to that page from the YouTube video manager.

Click New Live Event and fill out the form. It should look something like this:

YouTube Live settings for an event.
YouTube Live settings for an event.

You will also create a corresponding RSVPMaker event for the same date and time. Because you may get attendees from other timezones, I recommend you tweak your RSVPMaker date/time display settings to specify that timezones should be displayed on your website.

Creating the Landing Page

Even before you create the RSVPMaker event, you may want to create the landing page for your site, so the RSVP confirmation can include directions on how to tune in at showtime. Some marketers may prefer to use some specific landing page software, but for my purposes this is a regular WordPress page not included on any menu but not managed with any fancy security either. Rather than making it a top secret, I am encouraging people to register for the sake of getting a calendar invite, plus an email reminder on the day of the event.

Here is what the setup for my event landing page looks like in the WordPress editor:

Editing the landing page
Editing the landing page

I’m showing this in Text mode, so you can see the code, whereas the visual editor would include a representation of the YouTube player. For the player, I need only include a YouTube URL on a blank line, and WordPress handles the video player setup automatically.

Right below that, you will see an iframe code. That is what allows the YouTube comments feature associated with the video to be displayed on my website. Viewers could also interact with the YouTube Live broadcast on youtube.com, but all things being equal I would rather keep them on my own branded website.

Update: you can skim lightly over this next section for background and pick up where I explain the new shortcode for adding the comments field.

See the YouTube documentation for a complete explanation, but the short version is that I need to capture the ID for the video and plug it into this iframe format. Here is where you will find the ID, in either the long or short versions of a YouTube url:

  • https://www.youtube.com/watch?v=IDHERE
  • https://youtu.be/IDHERE

The other piece of information I need is the domain (including www or other subdomain) where the landing page will be hosted. If my ID was IDHERE and my domain was demo.example.com, then the URL for my iframe would be:

https://www.youtube.com/live_chat?v=IDHERE&domain=demo.example.com

So my iframe is something like:

<iframe src="https://www.youtube.com/live_chat?v=IDHERE&domain=demo.example.com" width="100%" height="150">

Here is what it looks like on the website before the show has begun. If you click Play on a YouTube Live video before showtime, what’s displayed is a countdown clock showing the time until the show is scheduled to begin.

YouTube Live video player and comments box.
YouTube Live video player and comments box.

Shortcode for YouTube Live Chat

A new shortcode, [ylchat] simplifies the process of adding the YouTube Live comment stream. The shortcode function extracts the video ID from the YouTube link included in the page, detects the server domain, and constructs the iframe for the chat window, according to Google’s specifications.

You can add attributes for width and height to override the default values (100% wide x 200 pixels tall). To make the comments box stop displaying after the end time for the webinar, use the attribute until, as in:
[ylchat until=”January 30, 2017 8 pm”]
or
[ylchat until=”2017-01-30 20:00:00″]

The issue is this particular chat stream is only active during the live event, and an error will be displayed in this spot if someone views the page after the event is over. When you set the until attribute, the shortcode function effectively deactivates itself after the time you specify is past.

Confirmation Message and Reminders

Now when you create your RSVPMaker event, you can incorporate a link to the landing page as part of the confirmation displayed on screen and sent to the attendee via email …

Confirmation Message: Live Video Chat: RSVPMaker for WordPress Demo/Q&A Wednesday December 7th 7:00 PM EST

Thank you for registering!

On December 7, 2016 at 7 pm EST, please tune in at
https://rsvpmaker.com/rsvpmaker-demoqa-december-2016/

You will be able to post questions during the event using your Google account, or you can tweet them to @davidfcarr before or during the event.

… as well as one or more reminders:

Set for 2 hours before the start of the event

Subject: REMINDER: Live Video Chat: RSVPMaker for WordPress Demo/Q&A Wednesday December 7th 7:00 PM EST

I hope you haven’t forgotten you signed up for my webinar tonight!

On December 7, 2016 at 7 pm EST, please tune in at
https://rsvpmaker.com/rsvpmaker-demoqa-december-2016/

You will be able to post questions during the event using your Google account, or you can tweet them to @davidfcarr before or during the event.

Conducting Your Event

At showtime, you will then launch your YouTube Live program from the Live Events page on youtube.com. You can invite in guests to join you in the live program and screenshare to demo software or show slides. It’s a good idea to get everything organized, including getting your guests signed in, at least 15 minutes prior to the start of the live program.

To make it easier to keep track of questions coming in on the YouTube comment feed, I recommend opening a popup window version of that feed, which you can do from either the public page for the event or the YouTube Live “video control room.”

Displaying the YouTube chat in a popup window.
Displaying the YouTube chat in a popup window.

When you start the live broadcast you can then switch to that chat window periodically to check for questions coming in.

A YouTube Live session with the pop-up chat window displayed.
A YouTube Live session with the pop-up chat window displayed.

For more about how to conduct a YouTube Live session, see the official help documents.

I still like Pat Flynn’s How to Run a Q&A Session Using Google Hangouts on Air as an explanation of how and why to run one of these programs, although some of the content is dated because it refers to the old Google+ incarnation of this service.

I also recommend you get familiar with using the YouTube video editor to trim away extraneous content. For example, I often broadcast a “we will get started in just a few minutes” greeting before the program actually starts, but I don’t want that to be something people see when they watch the replay. See Adding, Then Editing Out, a Hangouts on Air Pre-Show Greeting.

The separation from Google+ is mostly positive, BTW, since trying to convince people to get an account on that service in order to participate was a losing proposition. However, it meant some features went away such as the Q&A app that was linked to Google+. I found the popup chat window worked just as well for my purposes. I’ve also experimented with embedding the YouTube Live player on a page with Facebook comments enabled, where I thought my audience was more Facebook friendly.

If you come up with other approaches, please share your ideas.

Updated Guidance for Using YouTube Live vs. Google Hangouts with RSVPMaker for WordPress

You may have already heard the news: Google is killing off Hangouts on Air in September. A few months ago, I made a big deal out of announcing support for Hangouts on Air in RSVPMaker and using it for my own live events. That work wasn’t actually wasted, and “killing” in that headline is a little misleading, but the instructions I shared for setting up these events will be obsolete soon when the Google+ version of Hangouts on Air goes away on September 12.

Google’s new answer for basically the same thing is YouTube Live, which you can set up to work almost exactly the same as a G+ Hangout. In fact, the YouTube creator UI still makes some references to Quick setup (using Google Hangouts on Air) as a label for the technology, but YouTube Live is now the favored branding.

youtube-event-setup

The biggest difference from my point of view is that the Hangouts Q&A tool is going away. That was one of the features closely tied to a Google+ identity. In most respects, this change is a positive because there’s no longer a need to explain to people why they need to get a Google+ account just to post a question in your webinar. However, the question is what to use instead. Google’s announcement said something about using a Q&A tool in Google Slides.

What I’ve decided to do instead for a webinar I’m planning for the WordPress for Toastmasters project is use the Facebook comments system as an easy way for anyone with a Facebook account to post questions. After creating my YouTube Live event, I plugged the YouTube url into a blog post. In the RSVPMaker confirmation message I send to people who RSVP, I include the link to that blog post with some explanation of how the event will work. I also set up a reminder message with the same information to go out a couple of hours before the start of the event. Here is what that looks like:

Confirmation Message: Marketing Your Toastmasters Club and Organizing Meetings with WordPress for Toastmasters Wednesday August 31st 7:00 PM EDT

This event will be conducted using YouTube Live, Google’s free video broadcast service. You will find the YouTube video feed embedded in this blog post:

http://wp4toastmasters.com/2016/08/23/august-31-webinar-on-wordpress-for-toastmasters/

You can post questions in the comments section of that blog post before, during, or after the event, and I will try to answer them “on air.” If you would like to be invited into the on air event, contact me with an explanation of what you could contribute to the discussion.

You can also view this event on YouTube and it will be archived for replay:

YouTube: https://www.youtube.com/watch?v=Bqnly_IrH4o

Just remember that if you want to ask questions, please post them via the blog.

I followed the WPBeginner tutorial on adding Facebook Comments to the WordPress for Toastmasters website. Previously, I was using Disqus on that site (as I do on RSVPMaker) but engagement has been so low I thought it was time to turn that off and try something new anyway.

I will report back here with more prescriptive instructions once I’ve seen how this works.