diff -ruN ./fillpdf-a/fillpdf.admin.inc ./fillpdf-b/fillpdf.admin.inc
--- ./fillpdf-a/fillpdf.admin.inc	2015-09-11 09:39:14.000000000 -0400
+++ ./fillpdf-b/fillpdf.admin.inc	2015-10-29 16:35:53.000000000 -0400
@@ -886,6 +886,17 @@
   if (module_exists('webform_rules') === FALSE) {
     $token_types[] = 'webform';
   }
+
+  if (module_exists('entity_token')) {
+    $entities = entity_get_info();
+    foreach ($entities as $entity => $info) {
+    // No need to include nodes  (SQL Server crashes otherwise) as they are already accessible via tokens - 
+     if ($entity !== "node") {
+      $token_types[] = !empty($info['token type']) ? $info['token type'] : $entity;
+     }
+    }
+  }
+
   return array(
     '#theme' => 'token_tree',
     '#token_types' => $token_types,
diff -ruN ./fillpdf-a/fillpdf.module ./fillpdf-b/fillpdf.module
--- ./fillpdf-a/fillpdf.module	2015-09-11 09:39:14.000000000 -0400
+++ ./fillpdf-b/fillpdf.module	2015-10-29 16:21:37.000000000 -0400
@@ -212,6 +212,9 @@
     // this file.
     return -1;
   }
+  if ( $_GET['entities'] ) {
+    $entities = array($_GET['entities']);
+  }
 
   return NULL;
 }
@@ -277,6 +280,7 @@
     'nids' => NULL,
     'webform' => NULL,
     'webforms' => NULL,
+    'entities' => NULL,
     'uc_order_id' => NULL,
     'uc_order_ids' => NULL,
     'uc_order_product_id' => NULL,
@@ -293,7 +297,7 @@
   //    static $get;if($get)return $get;
   $sample = $_GET['sample']; // is this just the PDF populated with sample data?
   $fid = $_GET['fid'];
-  $nids = $webforms = $uc_order_ids = $uc_order_product_ids = array();
+  $nids = $webforms = $uc_order_ids = $uc_order_product_ids = $entities = array();
 
   if ($_GET['nid'] || $_GET['nids']) {
     $nids = ($_GET['nid'] ? array($_GET['nid']) : $_GET['nids']);
@@ -317,7 +321,7 @@
   if (isset($_GET['flatten']) && (int) $_GET['flatten'] == 0) {
     $flatten = FALSE;
   }
-  fillpdf_merge_pdf($fid, $nids, $webforms, $sample, $force_download, FALSE, $flatten, TRUE, $uc_order_ids, $uc_order_product_ids);
+  fillpdf_merge_pdf($fid, $nids, $webforms, $sample, $entities, $force_download, FALSE, $flatten, TRUE, $uc_order_ids, $uc_order_product_ids);
 }
 
 /**
@@ -360,7 +364,7 @@
  */
 // @todo: Refactor to take fewer arguments once tests in place
 // MAYBE in FillPDF 3 - might not want to break backwards-compatibility
-function fillpdf_merge_pdf($fid, $nids = NULL, $webform_arr = NULL, $sample = NULL, $force_download = FALSE, $skip_access_check = FALSE, $flatten = TRUE, $handle = TRUE, $uc_order_ids = NULL, $uc_order_product_ids = NULL) {
+function fillpdf_merge_pdf($fid, $nids = NULL, $webform_arr = NULL, $entity_arr = NULL, $sample = NULL, $force_download = FALSE, $skip_access_check = FALSE, $flatten = TRUE, $handle = TRUE, $uc_order_ids = NULL, $uc_order_product_ids = NULL) {
   // Case 1: No $fid
   if (is_null($fid)) {
     drupal_set_message(t('FillPDF Form ID required to print a PDF.'), 'warning');
@@ -378,7 +382,7 @@
 
   global $user;
 
-  $nodes = $webforms = $uc_orders = $uc_order_products = array();
+  $nodes = $webforms = $entity_ids = $uc_orders = $uc_order_products = array();
 
   // If $webform_arr contains entries with an sid, but not an nid, set the nid to the default.
   if (!empty($fillpdf_info->default_nid) && is_array($webform_arr)) {
@@ -451,6 +455,20 @@
     }
   }
 
+  $entity_ids = array();
+  if (module_exists('entity') && is_array($entity_arr)) {
+    foreach ($entity_arr as $e) {
+      $parts = explode(':', $e);
+      $type = $parts[0];
+      $id = $parts[1];
+
+      $entity_ids += array(
+        $type => array(),
+      );
+      $entity_ids[$type][] = $id;
+    }
+  }
+
   if ($skip_access_check !== TRUE) {
     if (!fillpdf_merge_pdf_access($nodes, $webforms, $uc_orders, $uc_order_products)) {
       drupal_access_denied();
@@ -517,6 +535,21 @@
       }
       // /--- node token replacements ---
 
+      // /--- entity token replacements ---
+       if (!empty($entity_ids)) {
+         foreach ($entity_ids as $type => $ids) {
+           foreach (array_reverse($ids) as $id) {
+             $entity = entity_load(token_get_entity_mapping('token', $type), array($id));
+             $token = token_replace($obj->value, array($type => $entity[$id]), array('clear' => TRUE, 'santitize' => FALSE ));
+             if ($token && $token != $obj->value) {
+               break;
+             }
+           }
+         }
+         $transform_string = TRUE;
+      }
+      // /--- entity token replacements ---
+
       // --- webform token replacements
       if (!empty($webforms)) {
         foreach ($webforms as $webform) {
@@ -587,6 +620,7 @@
   $context = array(
     'nodes' => $nodes,
     'webforms' => $webforms,
+    'entities' => $entity_ids,
     'uc_orders' => $uc_orders,
     'uc_order_products' => $uc_order_products,
   );
