Skip to main content

How can I track RSVPs to a ticketed event when some people disable cookies in their browsers?

I am selling tickets for my event on my primary donation page. I noticed that supporters who don’t have cookies enabled in their browser are sent to the default donation page without their ticket amounts selected.

If they submit the ticket payment, their RSVP is not tracked to the original event and the event tracking code is not applied to their payment. How do I prevent ticket purchases from getting separated from an event?

Official response from

Update: The primary reason that information cannot be tracked from an event page to a donation page is because the event page lives at an http location while the donation page is secure, using https. Reasons why your website may not be loading with SSL are listed here.

This FAQ was written with the original donation type page (rather than donation v2 pages) in mind. If you need help applying these changes to your Donation v2 page, please reach out to [email protected].



If there is a social share prompt on the donation page used to pay for the tickets, your supporter might share her donation on social media. When her followers go to pay for a ticket, they never saw the event page - and thus, are providing a donation unconnected to the event. 

A clean way to deal with this issue is to create a unique donation page to complete payment for each ticketed event. Or at least one donation page, that is not linked elsewhere on your site, used to process all ticketed events. Then, you can edit the page template so that the only way it will process a donation is if cookies are enabled and the supporter begins with an event RSVP. 

Option A: have ticket payment occur on an invoice page. If a supporter does not have cookies enabled, attempting to RSVP for the paid event will lead to a webpage that says “You have no outstanding invoices."

Option B: have ticket payment occur on a donation page dedicated to ticket transactions.

Create a new donation page. The only purpose of this page is to process ticket payments - so do not include it in the top navigation and do not link to it from any other page on your website. You’ll need to edit the page template. This means you are comfortable editing plain HTML and liquid.

Go to the Template section of the donation page you created for this event. Click the “Create a custom template” button.

The goal of this customization is to have a page that will display the tickets selected on an event page or display a notification that cookies have to be enabled to complete the transaction. Once the changes are made, you will see the error message if you go to the page directly, instead of being directed to the page from the event page. It is important to adjust the copy that displays on the page to describe how to contact your organization.

The same block of code needs to be deleted and replaced on the donation page, though the exact location of the code depends on which theme you are using. Most themes include a staged donation page by default. This is true for all stock themes except Aware.

Here is how you update a staged donation page:

First, delete the code that displays anything other than a ticket order on the first screen:

Delete from line 59 to line 80.

The code to delete begins with {% elsif page.donation.donation_frequency == "monthly" %} and ends before the continue button. 

{% elsif page.donation.donation_frequency == "monthly" %}
{% if page.donation.amount_in_cents != 0 %}
<div class="row-fluid">
<div class="span12 padbottomless">Your credit card will be billed automatically every month</div>
</div>
<h4 class="padbottomless">{{ page.donation.amount_formatted }}</h4>
{% else %}
<div class="row-fluid">
<div class="span12 padbottomless">Your credit card will be billed automatically every month</div>
</div>
<div class="radio-inline">{{ page.donation.form_amount_options }}</div>
{% endif %}
{% else %}
{% if page.donation.max_installments > 1 %}
<label for="num_installments" class="padbottomless">I want to pay the following in {% collection_select "num_installments", page.donation.installment_collection, class:"select" %} installments</label>
{% endif %}
{% if page.donation.amount_in_cents != 0 %}
<h4 class="padbottomless">{{ page.donation.amount_formatted }}</h4>
{% else %}
<div class="radio-inline padbottomless">{{ page.donation.form_amount_options }}</div>
{% endif %}
{% endif %}

Replace that code with

{% else %}

Oops! Your order cannot be processed. Please make sure your browser has cookies enabled and return to the event page to select your ticket quantity. Or, contact us directly at X to process your RSVP.

{% endif %}

Notice that the replacement copy includes the phrase “return to the event page” and “contact us directly at X” -
You can make “return to the event page” a hyperlink to your event page. The X in the statement needs to be replaced by a way to contact your organization - preferably a phone number. So your replacement code could say:

{% else %}

Oops! Your order cannot be processed. Please make sure your browser has cookies enabled and <a href="/event">return to the event page</a> to select your ticket quantity. Or, contact us directly at (310) 555-1234 to process your RSVP.

{% endif %}

Of course, you’ll need to replace the relative hyperlink above with the page slug for the ticketed event and you’ll need to replace the phone number with a valid phone number for your organization - perhaps your organization’s virtual phone number.

This is what the staged donation page will look like if someone accesses it without going through the event ticketing process or with cookies disabled:

Staged donation page error message

If you are using the Aware theme and all fields related to a donation appear on a single page, the code you need to remove is on lines 223-239. It is similar to the block of code removed on a staged donation page, though it is slightly different. 

Code to delete on an Aware donation page:

{% elsif page.donation.donation_frequency == "monthly" %}
{% if page.donation.amount_in_cents != 0 %}
<h4 class="padbottom">{{ page.donation.amount_formatted }}</h4> Your credit card will be billed automatically every month
{% else %}
<div class="radio-inline padbottom">{{ page.donation.form_amount_options }}</div>
Your credit card will be billed automatically every month
{% endif %}
{% else %}
{% if page.donation.amount_in_cents != 0 %}
<h4 class="padbottom">{{ page.donation.amount_formatted }}</h4>
{% else %}
<div class="radio-inline padbottom">{{ page.donation.form_amount_options }}</div>
{% endif %}
{% if page.donation.max_installments > 1 %}
<label for="num_installments">I want to pay this in</label>{% collection_select "num_installments", page.donation.installment_collection, class:"select" %} installments
{% endif %}
{% endif %}

And you want to replace that code with some variation of:

{% else %}

Oops! Your order cannot be processed. Please make sure your browser has cookies enabled and <a href="/event">return to the event page</a> to select your ticket quantity. Or, contact us directly at (310) 555-1234 to process your RSVP.

{% endif %}

The Aware donation page will now look like this if accessed incorrectly:

single page donation error

These changes are designed to keep supporters from submitting a transaction that they think will pay for a ticket with cookies disabled. A less complicated way of dealing with issue would be:

1. Create a unique donation page for each ticketed event. Only link to this donation page as part of the ticket payment process.

2. Assign a control panel user to review the donations received through the page on a daily basis, reconciling donations received with event RSVPs. Have the control panel user manually add RSVPs for the payments not connected to an RSVP. 

Of course, manually adding RSVPs does not ensure that your website will stop selling ticket when event capacity is reached. 

We understand that these suggestions are work-arounds and that another future possibility is to change the way paid event payments are processed on NationBuilder. Please add your voice to this feature suggestion if you would like to see a more elegant solution implemented

Share this post

Showing 9 reactions

How would you tag this suggestion?
Please check your e-mail for a link to activate your account.