How do I add custom attributes to product tiles?

Any attribute for which 'Used in Product Listing' is marked 'Yes',  is available in the product template function.

This is the default product template:

$.fn.tagalys_templates = $.fn.tagalys_templates || {};
$.fn.tagalys_templates.product_tile = function(widget, product_details) {
  var $link = $('<a>', { class: 'product-link', href: product_details.link });
  var $image = $('<span>', { class: 'product-image-container' }).append($('<img>', { class: 'product-image', src: product_details.image_url }));
  var $name = $('<span>', { class: 'product-name' }).html(product_details.name);
  var $sale_price = $('<span>', { class: 'product-sale-price' }).html(widget.format_currency(product_details.sale_price));
  if (product_details.price != null && product_details.price > product_details.sale_price) {
    var $price = $('<span>', { class: 'product-price' }).html(widget.format_currency(product_details.price));
    var $prices = $('<span>', { class: 'product-prices sale' }).append($sale_price).append($price);
  } else {
    var $prices = $('<span>', { class: 'product-prices no-sale' }).append($sale_price);
  }
  $link.append($image);
  $link.append($name);
  $link.append($prices);
  return $link;
};

the product_details variable contains core Tagalys fields and any attribute for which Used in Product Listing is marked Yes.

So, if you want to include a custom attribute called shipping_time, you can do this:

$.fn.tagalys_templates = $.fn.tagalys_templates || {};
$.fn.tagalys_templates.product_tile = function(widget, product_details) {
  var $link = $('<a>', { class: 'product-link', href: product_details.link });
  // ...
  $link.append($('<span>', { class: 'shipping-time' }).html(product_details.shipping_time));
  // ...
  return $link;
};