Happy Birthday by Union Works

Happy Birthday by Union Works Logo

Built for Shopify

Happy Birthday by Union Works

Rating

100

%

Recommended

(

1

reviews

)

Pricing

From $10/month. Free trial available.

Launched

23-Jun-17

Happy Birthday by Union Works Logo

Built for Shopify

Happy Birthday by Union Works

Rating

100

%

Recommended

(

1

reviews

)

Pricing

From $10/month. Free trial available.

Launched

23-Jun-17

Happy Birthday by Union Works Logo

Built for Shopify

Happy Birthday by Union Works

Rating

100

%

Recommended

(

1

reviews

)

Pricing

From $10/month. Free trial available.

Launched

23-Jun-17

Send a birthday email with a discount to build loyalty and repeat purchases

Happy Birthday Email lets you celebrate every customer’s birthday with a personalised email and birthday discount. Collect birth dates online or in-store, then send automated birthday emails that drive sales and boost loyalty. Use it as a simple birthday loyalty program or connect it with your email platform. You’ll build stronger relationships and gain insight into customer age and anniversaries too.

Categories:

Giveaways and contests, Analytics

Integrations:

Send birthday emails with personalised messages and discounts, Run a birthday loyalty campaign with zero ongoing effort, Collect birthdays and age data at checkout, POS, or landing pages, Works with your email platform or sends happy birthday emails for you, Populates Shopify’s customer birthday metafield

Send birthday emails with personalised messages and discounts, Run a birthday loyalty campaign with zero ongoing effort, Collect birthdays and age data at checkout, POS, or landing pages, Works with your email platform or sends happy birthday emails for you, Populates Shopify’s customer birthday metafield

Languages:

English

English

Filter Reviews

Operator reports

100

%

Recommended

(

1

reviews

)
Photo of Reviewer Diane

Diane

Role:

Owner

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Sep 9, 2024

Years of use:

More then 3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Critical for me to do my job

What exceeded expectations

Customer support is fabulous, offerings to build a campaign to attract more customers to join the club. Backend is easy to customize and implement. Customer LOve this app.

What was disappointing

To date the only problem is some customers try to beat the app by using different emails to join the club, hence two birthday coupons. It is necessary to download the list and scrub for duplicates.

Photo of Reviewer Diane

Diane

Role:

Owner

Category:

Fashion & Apparel

Shopify Plan:

Plus

Overall satisfaction

Very Satisfied

Sep 9, 2024

Years of use:

More then 3 years

Relationship with this product:

I both used it and influenced the buying decisions

Still use this tool:

Yes

Importance:

Critical for me to do my job

What exceeded expectations

Customer support is fabulous, offerings to build a campaign to attract more customers to join the club. Backend is easy to customize and implement. Customer LOve this app.

What was disappointing

To date the only problem is some customers try to beat the app by using different emails to join the club, hence two birthday coupons. It is necessary to download the list and scrub for duplicates.

Related Apps

import * as React from "react" type Props = { name: string slug: string description: string image: string developer: string categories: string pricing: string launchedAt: string dateModified: string ratingValue: number ratingCount: number faqQ1: string faqA1: string faqQ2: string faqA2: string faqQ3: string faqA3: string faqQ4: string faqA4: string faqQ5: string faqA5: string } export function SchemaMarkup(props: Props) { const { name, slug, description, image, developer, categories, pricing, launchedAt, dateModified, ratingValue, ratingCount, faqQ1, faqA1, faqQ2, faqA2, faqQ3, faqA3, faqQ4, faqA4, faqQ5, faqA5 } = props const scriptContent = ` (function () { var ORIGIN = window.location.origin; var SAT = { "Very Satisfied": 100, "Neutral": 50, "Not Satisfied": 0 }; var AGG_NOTE = "Percentage of vetted Shopify merchants and agency operators who recommend this app, based on first-party reviews collected by app store research."; function read(root, key) { if (!root) return ""; var el = root.querySelector('[data-k="' + key + '"]'); return el ? el.textContent.trim() : ""; } function iso(v) { if (!v) return null; var d = new Date(v); return isNaN(d) ? null : d.toISOString().slice(0, 10); } function notes(text) { return { "@type": "ItemList", "itemListElement": [{ "@type": "ListItem", "position": 1, "name": text }] }; } var root = document.getElementById("asr-seo-data"); if (!root) return; var NAME = read(root, "name"); var SLUG = read(root, "slug"); if (!NAME || !SLUG) return; var PAGE_URL = ORIGIN + "/shopify-app-reviews/" + SLUG; function collectReviews() { var out = []; Array.prototype.forEach.call( document.querySelectorAll(".asr-review-seo"), function (n) { var author = read(n, "author"); var pos = read(n, "positive"); var neg = read(n, "negative"); if (!author || (!pos && !neg)) return; var r = { "@type": "Review", "author": { "@type": "Person", "name": author }, "itemReviewed": { "@id": PAGE_URL + "#app" } }; var d = iso(read(n, "date")); if (d) r.datePublished = d; var s = read(n, "satisfaction"); if (s && SAT.hasOwnProperty(s)) { r.reviewRating = { "@type": "Rating", "ratingValue": String(SAT[s]), "bestRating": "100", "worstRating": "0", "alternateName": s }; } if (pos) r.positiveNotes = notes(pos); if (neg) r.negativeNotes = notes(neg); out.push(r); } ); return out; } function buildGraph(reviews) { var app = { "@type": "SoftwareApplication", "@id": PAGE_URL + "#app", "name": NAME, "url": PAGE_URL, "applicationCategory": "BusinessApplication", "operatingSystem": "Web (Shopify)" }; var v; if ((v = read(root, "description"))) app.description = v; if ((v = read(root, "image"))) app.image = v.replace(/&/g, "&"); if ((v = read(root, "developer"))) app.author = { "@type": "Organization", "name": v }; if ((v = read(root, "categories"))) app.keywords = v; if ((v = read(root, "pricing"))) { app.offers = { "@type": "Offer", "price": "0", "priceCurrency": "USD", "description": v }; } if ((v = iso(read(root, "launchedAt")))) app.datePublished = v; if ((v = iso(read(root, "dateModified")))) app.dateModified = v; if (reviews.length) app.review = reviews; var rv = read(root, "ratingValue"); var rc = parseInt(read(root, "ratingCount"), 10); if (reviews.length && rv && rc > 0) { app.aggregateRating = { "@type": "AggregateRating", "ratingValue": String(parseFloat(rv)), "bestRating": "100", "worstRating": "0", "ratingCount": String(rc), "description": AGG_NOTE }; } var graph = [app]; var faq = []; for (var i = 1; i <= 5; i++) { var q = read(root, "faqQ" + i); var a = read(root, "faqA" + i); if (q && a) { faq.push({ "@type": "Question", "name": q, "acceptedAnswer": { "@type": "Answer", "text": a } }); } } if (faq.length) { graph.push({ "@type": "FAQPage", "@id": PAGE_URL + "#faq", "mainEntity": faq }); } graph.push({ "@type": "BreadcrumbList", "@id": PAGE_URL + "#breadcrumb", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": ORIGIN + "/" }, { "@type": "ListItem", "position": 2, "name": "Shopify App Reviews", "item": ORIGIN + "/shopify-app-reviews" }, { "@type": "ListItem", "position": 3, "name": NAME, "item": PAGE_URL } ] }); return graph; } function build() { var reviews = collectReviews(); var old = document.getElementById("asr-jsonld"); if (old && old.dataset.count === String(reviews.length)) return; if (old) old.remove(); var s = document.createElement("script"); s.type = "application/ld+json"; s.id = "asr-jsonld"; s.dataset.count = String(reviews.length); s.textContent = JSON.stringify({ "@context": "https://schema.org", "@graph": buildGraph(reviews) }); document.head.appendChild(s); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", build); } else { build(); } [300, 900, 2000].forEach(function (ms) { setTimeout(build, ms); }); })(); ` return ( <> {/* HIDDEN DIV – provjeri da li je ID tačan */} {/* SCRIPT TAG – OBAVEZNO zatvoren */} </> ) } SchemaMarkup.defaultProps = { name: "Naziv aplikacije", slug: "slug-aplikacije", description: "", image: "", developer: "", categories: "", pricing: "", launchedAt: "", dateModified: "", ratingValue: 0, ratingCount: 0, faqQ1: "", faqA1: "", faqQ2: "", faqA2: "", faqQ3: "", faqA3: "", faqQ4: "", faqA4: "", faqQ5: "", faqA5: "" }