How to render two views in the same twig template
The reason you get the same content is due to the #cache property of the render array you get when you call the render() method.

Most specifically, by calling setOffset() earlier in your code, you are implicitly setting a cache key on the render array, (see here):


$this-&gt;element['#cache']['keys'][] = 'offset:' . $offset;



This cache key setting, in combination with the #theme property of the render array (views_view), which is the same for both views, will result in getting a cached version of the first one when including the second one, since the [#theme] + [#cache][keys] combination is identical for both views.

To work around that you could:


Remove caching completely for these views, or
Avoid using setOffset(), or
Add more specific keys to the cache so that you have a different cache for each view. E.g.

$variables['viewCalls']['#cache']['keys'] = 
  array_merge(
    $variables['viewCalls']['#cache']['keys'], 
    array('viewCalls')
  );
...
$variables['viewAppointments']['#cache']['keys'] = 
  array_merge(
    $variables['viewAppointments']['#cache']['keys'],
    array('viewAppointments')
  );



I tested your case using the 3. option and it worked as expected, I think before resolving to using another module, you could try sticking to your original code and appropriately modifying the #cache property of both render arrays.

Good luck!