2 Replies Latest reply on Aug 12, 2018 4:03 AM by Dave Roberts

    Invalid Module

    Chris Reed

      I am new to using Marketo v2 and I am creating this email template and I am getting These errors:

       

      Error: Invalid Module: html > body > center > table.mktoContainer > tbody > tr

      Error: Invalid Module: #header2

      Error: Element With Missing Id:

       

      hers is the code:

       

       

      <!DOCTYPE html>

      <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">

      <head>

          <meta charset="utf-8"> <!-- utf-8 works for most cases -->

          <meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn't be necessary -->

          <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine -->

          <meta name="x-apple-disable-message-reformatting">  <!-- Disable auto-scale in iOS 10 Mail entirely -->

          <title></title> <!-- The title tag shows in email notifications, like Android 4.4. -->

       

       

          <!-- Web Font / @font-face : BEGIN -->

          <!-- NOTE: If web fonts are not required, lines 10 - 27 can be safely removed. -->

       

       

          <!-- Desktop Outlook chokes on web font references and defaults to Times New Roman, so we force a safe fallback font. -->

          <!--[if mso]>

              <style>

                  * {

                      font-family: sans-serif !important;

                  }

              </style>

          <![endif]-->

       

       

          <!-- All other clients get the webfont reference; some will render the font and others will silently fail to the fallbacks. More on that here: http://stylecampaign.com/blog/2015/02/webfont-support-in-email/ -->

          <!--[if !mso]><!-->

          <!-- insert web font reference, eg: <link href='https://fonts.googleapis.com/css?family=Roboto:400,700' rel='stylesheet' type='text/css'> -->

          <!--<![endif]-->

       

       

          <!-- Web Font / @font-face : END -->

       

       

          <!-- CSS Reset : BEGIN -->

          <style>

       

       

              /* What it does: Remove spaces around the email design added by some email clients. */

              /* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */

              html,

              body {

                  margin: 0 auto !important;

                  padding: 0 !important;

                  height: 100% !important;

                  width: 100% !important;

              }

       

       

              /* What it does: Stops email clients resizing small text. */

              * {

                  -ms-text-size-adjust: 100%;

                  -webkit-text-size-adjust: 100%;

              }

       

       

              /* What it does: Centers email on Android 4.4 */

              div[style*="margin: 16px 0"] {

                  margin: 0 !important;

              }

       

       

              /* What it does: Stops Outlook from adding extra spacing to tables. */

              table,

              td {

                  mso-table-lspace: 0pt !important;

                  mso-table-rspace: 0pt !important;

              }

       

       

              /* What it does: Fixes webkit padding issue. Fix for Yahoo mail table alignment bug. Applies table-layout to the first 2 tables then removes for anything nested deeper. */

              table {

                  border-spacing: 0 !important;

                  border-collapse: collapse !important;

                  table-layout: fixed !important;

                  margin: 0 auto !important;

              }

              table table table {

                  table-layout: auto;

              }

       

       

              /* What it does: Prevents Windows 10 Mail from underlining links despite inline CSS. Styles for underlined links should be inline. */

              a {

                  text-decoration: none;

              }

       

       

              /* What it does: Uses a better rendering method when resizing images in IE. */

              img {

                  -ms-interpolation-mode:bicubic;

              }

       

       

              /* What it does: A work-around for email clients meddling in triggered links. */

              *[x-apple-data-detectors],  /* iOS */

              .unstyle-auto-detected-links *,

              .aBn {

                  border-bottom: 0 !important;

                  cursor: default !important;

                  color: inherit !important;

                  text-decoration: none !important;

                  font-size: inherit !important;

                  font-family: inherit !important;

                  font-weight: inherit !important;

                  line-height: inherit !important;

              }

       

       

              /* What it does: Prevents Gmail from displaying a download button on large, non-linked images. */

              .a6S {

                 display: none !important;

                 opacity: 0.01 !important;

             }

             /* If the above doesn't work, add a .g-img class to any image in question. */

             img.g-img + div {

                 display: none !important;

             }

       

       

              /* What it does: Removes right gutter in Gmail iOS app: https://github.com/TedGoas/Cerberus/issues/89  */

              /* Create one of these media queries for each additional viewport size you'd like to fix */

       

       

              /* iPhone 4, 4S, 5, 5S, 5C, and 5SE */

              @media only screen and (min-device-width: 320px) and (max-device-width: 374px) {

                  .email-container {

                      min-width: 320px !important;

                  }

              }

              /* iPhone 6, 6S, 7, 8, and X */

              @media only screen and (min-device-width: 375px) and (max-device-width: 413px) {

                  .email-container {

                      min-width: 375px !important;

                  }

              }

              /* iPhone 6+, 7+, and 8+ */

              @media only screen and (min-device-width: 414px) {

                  .email-container {

                      min-width: 414px !important;

                  }

              }

       

       

          </style>

          <!-- CSS Reset : END -->

      <!-- Reset list spacing because Outlook ignores much of our inline CSS. -->

      <!--[if mso]>

      <style type="text/css">

      ul,

      ol {

      margin: 0 !important;

      }

      li {

      margin-left: 30px !important;

      }

      li.list-item-first {

      margin-top: 0 !important;

      }

      li.list-item-last {

      margin-bottom: 10px !important;

      }

      </style>

      <![endif]-->

       

       

          <!-- Progressive Enhancements : BEGIN -->

          <style>

       

       

              /* What it does: Hover styles for buttons */

              .button-td,

              .button-a {

                  transition: all 100ms ease-in;

              }

          .button-td-primary:hover,

          .button-a-primary:hover {

              background: #555555 !important;

              border-color: #555555 !important;

          }

       

       

              /* Media Queries */

              @media screen and (max-width: 600px) {

       

       

                  .email-container {

                      width: 100% !important;

                      margin: auto !important;

                  }

       

       

                  /* What it does: Forces elements to resize to the full width of their container. Useful for resizing images beyond their max-width. */

                  .fluid {

                      max-width: 100% !important;

                      height: auto !important;

                      margin-left: auto !important;

                      margin-right: auto !important;

                  }

       

       

                  /* What it does: Forces table cells into full-width rows. */

                  .stack-column,

                  .stack-column-center {

                      display: block !important;

                      width: 100% !important;

                      max-width: 100% !important;

                      direction: ltr !important;

                  }

                  /* And center justify these ones. */

                  .stack-column-center {

                      text-align: center !important;

                  }

       

       

                  /* What it does: Generic utility class for centering. Useful for images, buttons, and nested tables. */

                  .center-on-narrow {

                      text-align: center !important;

                      display: block !important;

                      margin-left: auto !important;

                      margin-right: auto !important;

                      float: none !important;

                  }

                  table.center-on-narrow {

                      display: inline-block !important;

                  }

       

       

                  /* What it does: Adjust typography on small screens to improve readability */

                  .email-container p {

                      font-size: 17px !important;

                  }

              }

       

       

          </style>

          <!-- Progressive Enhancements : END -->

       

       

          <!-- What it does: Makes background images in 72ppi Outlook render at correct size. -->

          <!--[if gte mso 9]>

          <xml>

              <o:OfficeDocumentSettings>

                  <o:AllowPNG/>

                  <o:PixelsPerInch>96</o:PixelsPerInch>

              </o:OfficeDocumentSettings>

          </xml>

          <![endif]-->

       

       

      </head>

      <!--

      The email background color (#222222) is defined in three places:

      1. body tag: for most email clients

      2. center tag: for Gmail and Inbox mobile apps and web versions of Gmail, GSuite, Inbox, Yahoo, AOL, Libero, Comcast, freenet, Mail.ru, Orange.fr

      3. mso conditional: For Windows 10 Mail

      -->

      <body width="100%" style="margin: 0; padding: 0 !important; mso-line-height-rule: exactly; background-color: #ffffff;">

      <center style="width: 100%; background-color: #ffffff;">

          <!--[if mso | IE]>

          <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%" style="background-color: #ffffff;">

          <tr>

          <td>

          <![endif]-->

       

       

              <!-- Visually Hidden Preheader Text : BEGIN -->

              <div style="display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;">

                  (Optional) This text will appear in the inbox preview, but not the email body. It can be used to supplement the email subject line or even summarize the email's contents. Extended text preheaders (~490 characters) seems like a better UX for anyone using a screenreader or voice-command apps like Siri to dictate the contents of an email. If this text is not included, email clients will automatically populate it using the text (including image alt text) at the start of the email's body.

              </div>

              <!-- Visually Hidden Preheader Text : END -->

       

       

              <!-- Create white space after the desired preview text so email clients don’t pull other distracting text into the inbox preview. Extend as necessary. -->

              <!-- Preview Text Spacing Hack : BEGIN -->

              <div style="display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;">

              &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; &zwnj; 

              </div>

              <!-- Preview Text Spacing Hack : END -->

       

       

              <!-- Email Body : BEGIN -->

                <table class="mktoContainer">

              <!-- Email Header : BEGIN -->

                  <tbody>

                   <tr>

                      <td style="padding: 20px 0; text-align: center" id="header2"  align="center" border="0" cellpadding="0" cellspacing="0" width="100%" class="mktoModule m_header2" mktoname="Header2">

                          <img src="http://placehold.it/200x50" width="200" height="50" alt="alt_text" border="0" style="height: auto; background: #dddddd; font-family: sans-serif; font-size: 15px; line-height: 15px; color: #555555;">

                      </td>

                  </tr>

                   </tbody>

              </table>

              <table   style="-webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; mso-table-lspace: 0pt; mso-table-rspace: 0pt; border-spacing: 0; border-collapse: collapse;" align="center" border="0" cellpadding="0" cellspacing="0" width="600">

                  <tbody>

                  <tr>

                          <!-- Bulletproof Background Images c/o https://backgrounds.cm -->

                          <td valign="middle" style="text-align: center; background-image: url('https://pages.blackline.com/rs/815-GQP-915/images/em_cfo_hero_03.jpg'); background-color: #222222; background-position: center center !important; background-size: cover !important; height:250px">

                              <!--[if gte mso 9]>

                              <v:image xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="border: 0; display: inline-block; width: 875px; height: 318.75px;" src="https://pages.blackline.com/rs/815-GQP-915/images/em_cfo_hero_03.jpg" />

                              <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="border: 0; display: inline-block; position: absolute; width: 875px; height: 318.75px;">

                              <v:fill opacity="0%" color="#222222"/>

                              <![endif]-->

                              <div>

                                  <!--[if mso]>

                                  <table align="center" role="presentation" border="0" cellspacing="0" cellpadding="0" width="500">

      <tr>

      <td height="50"> </td>

      </tr>

                                  <tr>

                                  <td valign="top" width="500">

                                  <![endif]-->

                                  <table role="presentation" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width:800px; margin: auto;">

                                      <tr>

                                          <td> </td>

                                      </tr>

                                      <tr>

                                          <td align="center" >

                                            <p style="margin: 0; color: #fff; font-family: arial;font-size:15px!important;">LIVE WEBINAR</p>

                                          <h2 style="line-height:35px; color: #fff; font-family: arial; ">{{my.EventName}}</h2>

       

       

                                          </td>

                                      </tr>

                                    

                                      <tr>

                                          <td valign="middle" style="text-align: center; font-family: sans-serif; font-size: 15px; color: #ffffff;">

                                             

                                          </td>

                                      </tr>

                                  </table>

                                  <!--[if mso]>

                                  </td>

                                  </tr>

                                  </table>

                                  <![endif]-->

                              </div>

                              <!--[if gte mso 9]>

                              </v:fill>

                              </v:rect>

                              </v:image>

                              <![endif]-->

                          </td>

                      </tr>

                  </tbody>

       

       

          </table>

        

          <!--[if mso | IE]>

          </td>

          </tr>

          </table>

          <![endif]-->

          </center>

      </body>

      </html>

        • Re: Invalid Module
          Sanford Whiteman

          You'll find people are more willing/able to help if you highlight your HTML using the Advanced Editor's syntax highlighter.  Choose XML from the language list.

          • Re: Invalid Module
            Dave Roberts

            Hey Chris-

             

            It looks like the issue here might be that you've got your "Container" set on the table and your "Modules" set on the <td> elements. Here's a link to the documentation for Modules: Email Template Syntax - Marketo Docs - Product Documentation -- basically, the rule here is that the modules need to be the first child element inside the container. If you're using a <table> like you've got it setup, then the <tr> elements need to be your Modules. This would look like one big wrapper table (the container) and a bunch of rows (modules) stacked on top of eachother [this is normally how I set them up]. It's also possible to use a <td> as the container and then stack <table>s directly inside that cell as modules.

             

            For containers of type <table>, <tbody>, <thead>, or <tfoot>:

            Specified using <tr> with class=”mktoModule”

            For containers of type <td>:

            Specified using <table> with class="mktoModule"

             

            <table class="mktoContainer">
            <tr class="mktoModule">
            <td>Module 1 stuff goes here</td>
            </tr>
            <tr class="mktoModule">
                 <td>
                      <table><tr><td>Add nested tables inside a cell if needed</td></tr></table>
                 </td>
            </tr>
            </table>