Buttons

Primary CTA Button

Single-action dark CTA block used to close campaign sections.

Source
primary-cta.mjml
Output
MJML and compiled HTML
QA
4 client notes
Modes
Snippet or standalone
Primary CTA Button rendered email block preview

Use

How to use this block

Treat the component as one production section inside a larger message system. Keep the shared classes and wrapper rules intact, then adapt the copy, imagery, and links to the send.

Use this block when...

  • Use as the primary action after a hero, proof block, or information section.
  • Keep to one button per section so the send has a clear next step.
  • Match the CTA label and destination URL to the campaign intent before exporting.

Keep in mind

  • Button copy should be action-specific and not rely on surrounding text alone.
  • Check contrast between button fill and text after applying brand colours.

Source and output

Copy the format that fits the job

Copy the MJML snippet into the same body as your other blocks. Use standalone mode when testing this block on its own or exporting a full file for QA.

MJML snippet

Best for assembling a full email from reusable sections.

Standalone MJML

Best for local testing or isolated compilation.

Compiled HTML

Best for ESP handoff, QA review, or HTML-only integrations.

QA

Compatibility and rendering notes

Use these notes before moving the block into a campaign, layout system, or client handoff.

Client-specific notes

  • Gmail (Web + Mobile): Button shape and dark fill are stable.
  • Outlook Desktop (Windows): Rounded corners can flatten on some legacy Outlook variants.
Primary CTA Button compatibility matrix
ClientStatusNotes
Gmail (Web + Mobile)TestedButton shape and dark fill are stable.
Outlook Desktop (Windows)PartialRounded corners can flatten on some legacy Outlook variants.
Apple Mail (macOS + iOS)TestedNo additional notes.
Yahoo MailTestedNo additional notes.

Code

Source panels

The panels below preserve the copy behaviour for MJML and compiled HTML. Template Hedgehog Pro includes the full offline archive for teams that need the complete system locally.

Snippet assembly: place this block inside the same <mj-body> as your other snippets, then stack sections in send order.

Editable source

MJML snippet

Component block only. Use this when assembling an email from multiple reusable sections inside a project that already includes the shared MJML classes.

Formatting code preview...

Compiled output

Compiled HTML snippet

Component-only compiled markup for block-level inspection and HTML assembly workflows.

Formatting code preview...