Before we look at some of the more complex issues in Cross Domain Tracking failure let's look at the basics.
Google Analytics Version
Ensure that the entire ecosystem is using Universal GA, UA.
Cross Domain is hard to implement when one of the web properties is on legacy tracking and the main site is on the latest version. Don't get me wrong it can work but usually only in one direction > Universal to Legacy but not the other way around.
A side note: The other problem you may run into is that you can end up double counting visits/clicks/users by not implementing a referral exclusion list. That is because you are tracking without a parameter throughout an ecosystem with the same end point but Google Analytics does not know that unless you tell it. So Visitor A going from site X, Y, Z will be 3 visitors. Bottom line you will significantly confuse your analytics and performance dashboard.
So what can you do? Ensure that all web properties are on the same version. The way to tell that you are using the latest Google Analytics is to view the source code of a site and run a search for analytics.js
Finally, keep in mind that Google is phasing out support for the following:
YT / MO
User defined variables
Cookies Link and autoLink between sites
The reason why a user can not be traced when changing from sites X > Y > Z is that the cookie that helps identify the ID does not pass through different web properties unless you link the web sites and pass on that data.
Link or Form Decorator Tags
The main problem that can occur is when the link is not connected to a click site to site. First, ensure that the navigation will occur through a click X > Y then also ensure that you have enabled the trigger on X to be aware of clicks going to Y but also that Y is configured (you must Allow Linker option on Y) to accept the cookie being passed from X.
Do you have more than three domains to track? The most common mistake is not providing an additional comma for all web properties and to separate the domains URLs declared in your linker autoLink
Reminder: autoLink it is meant to work on Universal Analytics.
Google Tag Manager GTM and Data Layer
Before going technical on you I will describe a simple problem that can occur when using more than one container Tag.
When you are using more than one tag there must be a good reason for you to do so.
1) many people need quick access (eg. in-house and marketing)
2) you are testing a digital solution for short-term and want to share a portion of the results (again this is very close to explanation 1 above but for different reasons)
However, most of the time the problems will occur due to lack of human coordination. The more people that have access to changing tracking code on your site the more chances there are of crossfire, tag mistakes and conflicts.
A way to minimize risk is to do an audit or create an audit document where you can check-in the changes and the goals of each tag entered in GTM. Share that list with every person that has access to GTM. That way you will know what is enabled on the site and will reduce the chances of creating conflicts or even simple mistakes due to typos.
Now the technical part, this is a vast topic.
Let me start by pointing out that Google says this "For the best performance of a page, keep the number of Google Tag Manager containers on the page minimal". Specifically, avoid implementing an HTML Google Tag Manager container inside another one. This will slow down the processing and you can end up with missed data.
Data layers can also get messy for many reasons. Here are two quick ones:
1) More than one data layer. As Google says "using more than one data layer can cause some triggers to stop working"
2) Be careful with 'gtm.blacklist': ['', '', '', ...]
Remember that a blacklist will overrule the permissible list, you will therefore not be able to track even if you configured it inside the Google Tag Manager UI
XML has evolved to respond to hacking and prevent it. A security measure meant to protect a site is often the source why cross domain tracking is blocked. Check your cross-site scripting (XSS).
This is often resolved quickly by asking IT to investigate. Do so, especially if you are running Adobe Cross Domain (search for the term cross-domain-policy). Note: Adobe is a fantastic product, what I mean above is in no way a reason to avoid using that tracking system. I have used it before and loved it - very powerful!
This is seldom the reason for failure but you can create a mess if you use crossdomain.xml file to ensure you get http to communicate with https like http://frenchmarketing.ca and https://frenchmarketing.ca
If you want to do that, use a simple redirect 301 in the htaccess file or change your settings if using Microsoft IIS.