Email templates

Self-contained, table-based HTML emails built to the Figma design. Open any one to preview it alongside its source, ready to copy into Cognito or another sender.

Reference
Master template bodd-email-master.html
Every block and variant with all options turned on. Copy blocks out of this to assemble a new email.
Emails
Invitation invitation.html
"You have been invited to join {{company}} on BoddHub." Confirm-account button. Custom sender.
Verification code verification-code.html
One-time code in a highlighted box. Cognito {####} placeholder.
Account deletion account-deletion.html
Scheduled-deletion notice with scan history and a sign-in-to-cancel button. Custom sender.
Temp login temp-login.html
Username and temporary password. Cognito admin-created-user flow.

How these templates work

Every template is built 1:1 from the Figma "Emails" file. Sizes, colours, weights and spacing are measured from the design, not approximated from tokens.

Dark mode and its trade-offs

Dark mode is opted into with <meta name="color-scheme">. From there, clients split into two camps.

Known trade-off. The Gmail Android app force-inverts and recolours images unpredictably, and treats the wordmark and the blob differently. We chose not to fight it. The chip default is the most consistent result everywhere else; Gmail does its own thing and we accept it.

Two more defensive touches: pure #FFFFFF and #000000 are nudged to #FFFFFE and #000001 so Apple Mail does not auto-invert whole regions, and [data-ogsc]/[data-ogsb] hooks patch Outlook.com's partial invert as best-effort.

Buttons

Other client fixes

Placeholders

UTM tags

Every Bodd logo links to bodd.com with UTM parameters, so this traffic is attributable in analytics. If you add more links, tag them the same way. Keep source and medium fixed; that is what separates transactional email from marketing.

ParameterValueNotes
utm_sourcetransactionalFixed. Marks it as a transactional, not marketing, send.
utm_mediumemailFixed.
utm_campaignthe email's nameOne value per template, kebab-case: invitation, verification-code, account-deletion, temp-login. The reference file uses master.
utm_contentthe elementWhich link was clicked. All logo links use logo; use distinct values if you add others, e.g. header-cta or footer-privacy.

So an invitation logo link looks like:

https://bodd.com/?utm_source=transactional&utm_medium=email&utm_campaign=invitation&utm_content=logo
Do not add UTM tags to in-product links (for example int-hub.bodd.io). UTM is for arrivals on bodd.com only; internal app links stay clean.

Assets and caching

All images are hosted at bodd-email-assets.s3.ap-southeast-1.amazonaws.com. Logos and the gradient bar are cached long, since they rarely change; the image placeholder and signature avatar are set to no-cache while we iterate.