Stay organized with collections
Save and categorize content based on your preferences.
Follow these tips to ensure your AMP emails render correctly and consistently
across all platforms and browsers that Gmail supports.
The summary text displayed next to the subject line when viewing emails in
your inbox (preheader) is based on the text/html or text/plain part of
your email and doesn't take the text/x-amp-html part into account.
Gmail's search feature doesn't index the dynamic parts of the
email. To help users find your emails, include the most important keywords
in the text/html or text/plain part of the email.
amp-form form data sent to your endpoint is always encoded as
application/x-www-form-urlencoded, regardless of the value of the
enctype attribute set on the <form> element.
Because dynamic emails contain up-to-date content, users might receive
duplicate emails within the same thread. For example, the Google Docs
commenting emails in one email thread for the same comment thread will all
look identical when expanded. Gmail can prevent the display
of these duplicate emails in long threads by collapsing emails with
duplicate content. To ensure that emails are recognized as duplicates, add
the meta tag email.contentIds to the AMP markup.
The content of this meta tag should contain a comma separated list of
strings identifying unique pieces of content within dynamic emails. If the
content ID set of the last email in the thread is a (non-strict) superset of
the content ID set of every other email in the thread, then all emails
except the last one will be collapsed accordingly.
For example, an email thread with the following content ID sets will be
collapsed:
id1
id1
id1
An email thread with the following content ID sets will also be collapsed:
id1, id2
id2, id3
id1, id2, id3
When the email contains a form with input elements, if the inputs are
changed the user might see a confirmation before navigating away from the
email without submitting the form. This confirmation isn't shown in some
cases, such as if the user clears the form or upon message deletion.
amp-mustache templates can't contain set delimiter tags.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Tips and known limitations\n\nFollow these tips to ensure your AMP emails render correctly and consistently\nacross all platforms and browsers that Gmail supports.\n| **Note:** This list is in addition to [AMP for Email best\n| practices](https://amp.dev/documentation/guides-and-tutorials/develop/amp_email_best_practices?format=email), which apply across multiple email providers.\n\n- The summary text displayed next to the subject line when viewing emails in\n your inbox (preheader) is based on the `text/html` or `text/plain` part of\n your email and doesn't take the `text/x-amp-html` part into account.\n\n- Gmail's search feature doesn't index the dynamic parts of the\n email. To help users find your emails, include the most important keywords\n in the `text/html` or `text/plain` part of the email.\n\n- [Email Markup](/workspace/gmail/markup) and [Promotions\n Annotations](/workspace/gmail/promotab) are parsed from the `text/html`\n part of the email and ignored in the `text/x-amp-html` part.\n\n- `amp-form` form data sent to your endpoint is always encoded as\n `application/x-www-form-urlencoded`, regardless of the value of the\n `enctype` attribute set on the `\u003cform\u003e` element.\n\n- Because dynamic emails contain up-to-date content, users might receive\n duplicate emails within the same thread. For example, the Google Docs\n commenting emails in one email thread for the same comment thread will all\n look identical when expanded. Gmail can prevent the display\n of these duplicate emails in long threads by collapsing emails with\n duplicate content. To ensure that emails are recognized as duplicates, add\n the meta tag `email.contentIds` to the AMP markup.\n\n \u003chead\u003e\n ...\n \u003cmeta name=\"email.contentIds\" content=\"id1,id2,id3\"\u003e\n ...\n \u003c/head\u003e\n\n The content of this meta tag should contain a comma separated list of\n strings identifying unique pieces of content within dynamic emails. If the\n content ID set of the last email in the thread is a (non-strict) superset of\n the content ID set of every other email in the thread, then all emails\n except the last one will be collapsed accordingly.\n\n For example, an email thread with the following content ID sets will be\n collapsed:\n - id1\n - id1\n - id1\n\n An email thread with the following content ID sets will also be collapsed:\n - id1, id2\n - id2, id3\n - id1, id2, id3\n- When the email contains a form with input elements, if the inputs are\n changed the user might see a confirmation before navigating away from the\n email without submitting the form. This confirmation isn't shown in some\n cases, such as if the user clears the form or upon message deletion.\n\n- `amp-mustache` templates can't contain set delimiter tags."]]