✨ This article covers how to disable the ticket email for legacy emails. Since Event Tickets 5.6.0, you can do this via settings. Learn more.

Events Tickets Plus sends tickets to your customers once an order has been completed. We have seen a few requests to disable that email and so we thought we would share a solution for that. Just add the code below to your theme’s (or child theme’s) functions.php file:

WooCommerce

/* Disable tickets emails for Woo */
add_filter( 'tribe_tickets_plus_email_enabled', '__return_false' );

/* Remove the message 'You'll receive your tickets in another email' from the Woo Order email */
add_filter( 'wootickets_email_message', '__return_empty_string' );

Easy Digital Downloads

/* Disable tickets emails for EDD */
add_filter( 'edd_email_ticket_receipt', '__return_false' );

/* Remove the message 'You'll receive your tickets in another email' from the EDD Purchase Receipt email */
add_filter( 'eddtickets_email_message', '__return_empty_string' );

Tickets Commerce

/* Disable tickets emails for Tickets Commerce or other */
add_filter( 'tribe_tickets_ticket_email_recipient', '__return_null' );

Disabling the Ticket Email for Certain Events

The filter comes with a lot of parameters, which allow detailed customization.

Here is the filter hook with all its parameters:

apply_filters(
	'tribe_tickets_ticket_email_recipient',
	$to,        // The email to send to.
	$post_id,   // The post/event ID to send the email for.
	$order_id,  // The order ID to send the email for.
	$tickets,   // The list of tickets to send.
	$provider,  // The provider slug (rsvp, tc, woo, edd).
	$args       // The full list of ticket email arguments as sent to the function.
);

If you don’t want to send out tickets for some specific events, then you can do that with the following snippet, given that you know the post IDs of the events to be excluded.

add_filter( 'tribe_tickets_ticket_email_recipient', 'et_maybe_send_email', 10, 2 );

function et_maybe_send_email( $to, $post_id ) {
  // List post IDs for which NOT to send email.
  $exclude_post_ids = [ 123, 124, 125 ];

  if ( in_array( $post_id, $exclude_post_ids ) {
    return '';
  }
  return $to;
}