How to Troubleshoot ‘_satellite is not defined’

July 10, 2019 | Kevin Haag
blog image for How to Troubleshoot ‘_satellite is not defined’

Have you ever encountered the console error ‘_satellite is not defined’ and wondered what does this mean? And what should I do? 

I recently answered these exact questions on Measure Slack, a real-time social forum where people in digital marketing come together to discuss and create shared solutions, and thought it would be a good opportunity for a short blog post.

Before we jump in, keep in mind that Adobe Dynamic Tag Manager (DTM) is in the process of being sunset. Starting in July 2019, no new properties can be created. By 2020, existing properties can’t be edited and by 2021, DTM will be gone for good. That being said, you should start your migration from Adobe DTM to Adobe Launch as soon as possible. If you are interested in what that entails, check out Ben Robison’s step-by-step guide, Migrating from DTM to Launch

But, let’s get back to what we are here for, troubleshooting ‘_statellite is not defined’. So, you’ve encountered this issue in Adobe DTM and aren’t sure what to do next. Let us shed some light on what this error is, common issues that cause this error, and the troubleshooting steps for each. 

Defining ‘_satellite is not defined’ 

Let’s start with the basics. What does ‘_satellite is not defined’ mean? In general, an error like this is called a JavaScript ReferenceError, which is an error that occurs when a non-existent variable is referenced. 

These errors are caused by variables that haven’t been declared yet and/or have the wrong scope.

_satellite is the JavaScript object of DTM. 

Common Issues For ‘_satellite is not defined’ Message

Now that we understand what this error means, let’s dig into some of the reasons why this occurs. Some of the most common issues for the ‘_satellite is not defined’ message I’ve encountered are: 

  1. The DTM script is not implemented on the page.
  2. The DTM script is not correctly implemented on the page.
  3. A direct call rule (DCR) is called before the DTM script loads.
  4. The DTM script is blocked.

Troubleshooting ‘_satellite is not defined’

We’ve taken a look at the common issues. Let’s now look at their causes and the steps you can follow to troubleshoot and resolve them.

1. Look For The DTM Script on The Page

As simple as it sounds, if no DTM Script is implemented on the page, we can’t reference the _satellite object. 

Open your browser’s developer tools and inspect the page elements. 

Look to see if you can locate the DTM script by searching for and verify that the URL matches with what you see in the Embed tab of your DTM container. 

screen shot of where you should see the DTM script

Did you find the DTM script? If not, you have found your issue! Simply add in the DTM Script to resolve ‘_satellite is not defined’.

2. Validate The Placement of The DTM Script

Navigate through the search results and check if the DTM header code is present in the <head> tag of the page and if the DTM footer code is present before the closing </body> tag of the page.

The DTM snippets should be placed as follows: 

// Your data layer object (e.g. digitalData, dataLayer)
 // DTM Header Code 
// DTM Footer Code

Did that fix your issue? If not, let’s continue on our troubleshooting process. 

Copy the DTM script source from the elements tab of your developer tools and paste it in a new browser window. 

Your screen should look similar to the one below:

example of how your screen should look with the DTM script source

If instead, you see 'File not found', publish your empty DTM container and check again. 

3. Troubleshoot Direct Call Rules

Direct call rules (DCR) like _satellite.track(‘myDirectCallRule’) are usually implemented by your friendly developer so that you, the Marketer or the Analyst, can configure a rule in DTM using the DCR as the firing condition. 

Since _satellite is the root object of the DCR, imagine what happens if the DCR fires before the DTM script executes. You got it — _satellite is not (yet) defined!

Work together with your friendly developer and audit what DCRs fire and when. 

Since you already worked through the rules in DTM and the code, this would be a good time to update your documentation as well. 

4. Disable AdBlocker, Update Content Security Policy

Make sure you disable all AdBlockers. And I am not just talking about AdBlock Browser Extensions. The newest version of Mozilla Firefox, for instance, offers a built-in feature that will block cookies and storage access based on a public list of tracking domains. Well, guess what? The domain is on that list! 

Depending on the configuration, your website’s Content Security Policy (CSP) might block DTM. Make sure to allowlist in the “script-src” directive.

If you are new to the concept of the CSP, I recommend reading Logan’s article “Using Google Analytics And Google Tag Manager With Content Security Policy.” The principles he outlines can be applied to both Adobe Analytics and Dynamic Tag Manager. 

‘_satellite is defined’

Dealing with technical errors can be frustrating. Being able to identify your issues and create a thorough process for troubleshooting is key to resolving errors and finding a solution to move forward. We hope you now have a better understanding of what causes the error ‘_statellite is not defined’ as well as a clearer path on how to troubleshoot and resolve!

Still having trouble resolving your issue? Or need guidance on your migration from DTM to Launch? Reach out to us and let’s take your implementation to the next level.