AMP

Structure and rendering of AMP emails

Important: this documentation is not applicable to your currently selected format stories!

Email is structured as a MIME tree. This MIME tree contains the message body and any attachments to the email.

To embed AMP within an email, add a new MIME part with a content type of text/x-amp-html as a descendant of multipart/alternative. It should live alongside the existing text/html or text/plain parts. This ensures that the email message works on all clients.

For more information about the multipart/alternative subtype, refer to RFC 1521, section 7.2.3.

Additional information

The text/x-amp-html part must be nested under a multipart/alternative node. An email cannot have more than one text/x-amp-html part inside a multipart/alternative node.

The multipart/alternative must contain at least one non-AMP (text/plain or text/html) node in addition to the text/x-amp-html node. This will be displayed to users whose email clients don't support AMP or who opted out via their email provider's settings.

Some email clients[1] will only render the last MIME part, so we recommend placing the text/x-amp-html MIME part before the text/html MIME part.

Replying/forwarding semantics

The email client strips out the text/x-amp-html part of the MIME tree when a user replies to or forwards an AMP email message.

Expiry

The email client may stop displaying the AMP part of an email after a set period of time, e.g. 30 days. In this case, emails will display the text/html or text/plain part.

Example

From:  Person A <persona@example.com>
To: Person B <personb@example.com>
Subject: An AMP email!
Content-Type: multipart/alternative; boundary="001a114634ac3555ae05525685ae"

--001a114634ac3555ae05525685ae
Content-Type: text/plain; charset="UTF-8"; format=flowed; delsp=yes

Hello World in plain text!

--001a114634ac3555ae05525685ae
Content-Type: text/x-amp-html; charset="UTF-8"

<!doctype html>
<html 4email>
<head>
  <meta charset="utf-8">
  <style amp4email-boilerplate>body{visibility:hidden}</style>
  <script async src="https://cdn.ampproject.org/v0.js"></script>
</head>
<body>
Hello World in AMP!
</body>
</html>
--001a114634ac3555ae05525685ae
Content-Type: text/html; charset="UTF-8"

<span>Hello World in HTML!</span>
--001a114634ac3555ae05525685ae--