Klaviyo
E-commerce-native email + SMS, in one suite
The default choice for Shopify, BigCommerce and WooCommerce stores. Predictive analytics, abandoned-browse flows and SMS — in the same suite as email. Free up to 250 contacts, forever.
A "Brand X vs Competitor Y" module purpose-built for the SEO BOFU comparison-page pattern. Three layouts — 1-vs-1 detailed, 1-vs-many table, 1-vs-all overview — schema.org Product + AggregateRating + Review JSON-LD, "switch from competitor" CTAs, no HubDB.
The deepest layout. Two large brand cards (logo, rating, price, summary, primary + secondary CTAs), then a categorised feature list with tooltips and per-row winner highlighting. Built for the highest-intent comparison search ("klaviyo vs mailchimp", ~22k/mo).
The mid-funnel format. A sticky-first-column comparison table with categorised rows, 12 features, ✓ / ✗ / partial / N/A icons and per-row winner cells. The bottom row carries a per-competitor "switch from X" CTA — the most clicked element on these pages.
The high-funnel format. Your brand sits as the featured "our pick" card on top, then a grid of competitor summary cards — each with logo, rating, "best for", three coloured bullets (your-brand-wins / their-brand-wins / neutral), price, and a switch CTA. No feature table — just a clean overview.
A "Brand X vs Competitor Y" landing-page module purpose-built for the SEO comparison-page pattern documented by BackstageSEO and Powered By Search. Three layouts in one module, no HubDB, schema.org Product / AggregateRating / Review JSON-LD opt-in, and a per-competitor "switch from competitor" CTA — the highest-clicked element on these pages.
Every colour, font size, weight, spacing value, radius, border width, shadow level, icon size, transition duration, and breakpoint is editable from the Style tab. Nothing is hardcoded.
Toggle schema.enable on. The module emits a JSON-LD <script> with:
Product; use SoftwareApplication, Service, etc.).your_brand.rating + your_brand.rating_count.your_brand.price.The module does not output schema for the competitors — that would imply you are reviewing them, which Google's policy prohibits unless you actually own the editorial review.
Every competitor entry has its own switch_cta_label and switch_cta_url. In the 1-vs-many table, a dedicated row at the bottom carries one switch CTA per competitor. In the 1-vs-all overview, every card ends with a block-level switch CTA. In the 1-vs-1 layout, the competitor card also offers it next to the "Visit ↗" link. This is the highest-clicked element on these pages and is given its own colour-token group so it can be styled independently of the primary CTA.
Everything is in module fields — repeaters for competitors and features. The module renders entirely server-side; the only JS runs after first paint to (a) reveal cards as they enter the viewport and (b) stamp data-th on each table cell so the mobile stacked layout can show "Linear: ✓ / Jira: ✗".