Creating Zaps is easy with Event Automator and Zapier.

But what if you need to customize your automation so that it matches your workflow?

We built 2 Zapier Apps to help you achieve just that:

Let’s take a closer look at what each of these apps has to offer.

The Events Calendar Zapier App

Triggers:

  • New Event (triggers when a new event is created)
  • Updated Event (triggers when an event is updated – does not trigger on new event creation)
  • Canceled Event (triggers when the status of an event is changed to canceled)

Action:

  • Create Event (creates an event)

*No searches for now

Zap Templates

Check out the Zap Templates (aka recipes) we have created to give you a headstart.

You can tweak those to your liking or simply use them as inspiration to create your own Zaps.

New and Updated Event Trigger Available fields:

  • id (integer)
  • title (string)
  • description (string)
  • excerpt (string)
  • permalink (URL)
  • event_status (string)
  • featured (boolean)
  • sticky (boolean)
  • Organizers (comma separated)
    • id (integer)
    • description (string)
    • title (string)
    • excerpt (string)
    • permalink (URL)
    • featured_image_url (URL)
    • phone (phone)
    • website (URL)
    • email (email)
  • Venue
    • id (integer)
    • description (HTML)
    • title (string)
    • excerpt (string)
    • permalink (URL)
    • address (string)
    • country (string)
    • city (string)
    • state_province (string)
    • state(string)
    • province (string)
    • zip (string)
    • phone (phone number)
    • directions_link (URL)
    • website (URL)
    • geolocation
      • overwrite_coordinates (boolean)
      • latitude (numeric)
      • longitude (numeric)
      • address (string)
      • distance (boolean)
  • featured_image_url (URL)
  • category (array)
  • tag (array)
  • website_url (URL)
  • cost (string)
  • has_ticket (boolean)
  • has_rsvp (boolean)
  • in_date_range (boolean)
  • sold_out (boolean)
  • tickets_tickets (array)
  • tickets_rsvp (array)
  • start_date (date and time)
  • end_date (date and time)
  • timezone (string)
  • timezone_abbr (string)
  • all_day (boolean)
  • multi_day (boolean)
  • is_past (boolean)
  • duration (integer)
  • recurring (boolean)
  • Virtual (boolean)
  • Virtual URL (URL)
  • Virtual Button Text (string)

Custom fields:

You can send custom fields to Zapier while using the New Event trigger by using the tec_automator_map_event_details filter.

Here’s an example snippet to get you started.

Event Tickets Zapier App

Triggers:

  • Attendees (when a new attendee is generated)
  • Updated Attendees (when an attendee has been updated)
  • Check-in (when an attendee is checked into an event via ticket or RSVP)
  • New Order (when a new order of tickets is created)
  • Refunded Orders (when a ticket order is refunded from Tickets Commerce, EDD, or WooCommerce)

*No actions or searches for now

Zap Templates

Take a look at the Zap Templates (aka recipes) we have created to give you a sense of the possibilities.

Best of all, you can customize the templates to match your workflow!

Attendee and Check-In Triggers Available Fields:

  • id (integer)
  • holder_name (string)
  • holder_email (email)
  • ticket_id (string)
  • security_code (string)
  • attendee_meta (string)
    • slug (for each attendee information field)
    • label (for each attendee information field)
    • value (for each attendee information field)
  • check_in
  • optout (boolean)
  • user_id (integer)
  • is_subscribed (boolean)
  • is_purchaser (boolean)
  • purchaser_name (string)
  • purchaser_email (email)
  • provider (woo, edd, rsvp – string)
  • ticket (string)
  • ticket_product_id (integer)
  • order_id (integer)
  • order_status (slug)
  • event_id (integer)
  • event_title (string)

NOTE: For WooCommerce orders, the customer_email field is the logged-in user email instead of the customer email entered during checkout, so anonymous users always get an empty customer email for WooCommerce orders.

Custom fields:

You can send custom fields to Zapier while using the New Attendee and the Attendee Check-in triggers by using the tec_automator_map_attendee_details filter.

Here’s an example snippet to get you started.

New Order Trigger Available Fields:

  • id (integer)
  • order_id (integer)
  • order_number (integer)
  • order_date (date and time)
  • status (string)
  • shipping_total (numeric)
  • shipping_tax_total (numeric)
  • tax_total (numeric)
  • discount_total (numeric)
  • order_total (numeric)
  • order_currency (string)
  • payment_method (string)
  • shipping_method (string)
  • customer_id (integer)
  • customer_user (integer)
  • customer_email (email)
  • billing_first_name
  • billing_last_name
  • billing_company
  • billing_email
  • billing_phone
  • billing_address_1
  • billing_address_2
  • billing_postcode
  • billing_city
  • billing_state
  • billing_country
  • shipping_first_name
  • shipping_last_name
  • shipping_company
  • shipping_email
  • shipping_address_1
  • shipping_address_2
  • shipping_postcode
  • shipping_city
  • shipping_state
  • shipping_country
  • customer_note
  • items (comma separated)
    • id
    • key
    • value
  • variation_id
  • tax
  • tax_class
  • tax_status

Adding custom fields to your Zaps


If you’re seeking to expand the fields available for your zaps, consider utilizing the following filters:

  • tec_automator_map_tickets_commerce_order_details
  • tec_automator_map_edd_order_details
  • tec_automator_map_woo_order_details
  • tec_automator_map_attendee_details

A code example:

Imagine you’ve added some custom fields to your attendee info and want them accessible in Zapier for automation. You can use the tec_automator_map_attendee_details filter. Here’s a snippet to kickstart things for you.

function tec_automator_attendee_custom_fields($attendee_data, $attendee) {
    $attendee_id = $attendee['attendee_id'];
    // Get the serialized array from the postmeta table
    $serialized_data = get_post_meta($attendee_id, '_tec_tickets_commerce_attendee_fields', true);
    if (empty($serialized_data)) {
        return $attendee_data;
    }
    // Define custom fields to include
    $fields_to_include = array('field1', 'field2');
	$meta_fields = array();
    // Loop through serialized data and extract selected fields
    foreach ($serialized_data as $field_name => $field_value) {
        foreach ($fields_to_include as $label){
			if (strpos($field_name, $label) !== false) {
				$meta_fields[$label] = $field_value;
			}
		}
    }
    // Merge the selected fields into the attendee data
    $attendee_data['attendee_metadata'] = $meta_fields;
    return $attendee_data;
}
add_filter('tec_automator_map_attendee_details', 'tec_automator_attendee_custom_fields', 10, 2);