Skip to main content

The Problem

A personalized video message makes someone’s day. But recording individual videos for every employee birthday, customer milestone, or team celebration doesn’t scale past a handful of people.

How It Works

Recipient data (name, occasion, details) → Personalized prompt → Video Agent renders → Deliver
Define a template that feels personal, fill in recipient-specific details, and generate a unique video for each person.

Build It

1

Define your occasions and templates

TEMPLATES = {
    "birthday": {
        "prompt": """Create a 20-second birthday video for {name}.

The presenter should be warm and genuine: "Happy birthday, {name}!
From everyone at {company}, we hope your day is amazing.
{personal_note}
Here's to a great year ahead!"

Tone: Celebratory, warm, genuine — like a friend, not a corporate card.
Background: Festive but tasteful. Include subtle confetti or balloons.
""",
    },
    "work_anniversary": {
        "prompt": """Create a 25-second work anniversary video for {name}.

"Congratulations {name} on {years} years at {company}!
{achievement_note}
Thank you for everything you bring to the team. Here's to many more!"

Tone: Appreciative and sincere. Professional but warm.
""",
    },
    "welcome": {
        "prompt": """Create a 20-second welcome video for {name} joining {team}.

"Welcome to {company}, {name}! We're so excited to have you on the
{team} team. {welcome_note}
Can't wait to work with you!"

Tone: Enthusiastic, welcoming, energetic.
""",
    },
    "customer_milestone": {
        "prompt": """Create a 20-second milestone video for {name} at {company}.

"Hey {name}, we just wanted to say thank you. {milestone_detail}
We really appreciate your trust in us. Here's to what's next!"

Tone: Grateful, personal, not salesy.
""",
    },
}
2

Generate for a batch of recipients

import requests
import time

recipients = [
    {
        "name": "Sarah Chen",
        "occasion": "birthday",
        "company": "Acme Corp",
        "personal_note": "We heard you're celebrating with a trip to Japan — enjoy every moment!",
    },
    {
        "name": "Marcus Johnson",
        "occasion": "work_anniversary",
        "company": "Acme Corp",
        "years": "5",
        "achievement_note": "From leading the product launch to mentoring three new engineers — your impact has been incredible.",
    },
    {
        "name": "Priya Patel",
        "occasion": "welcome",
        "company": "Acme Corp",
        "team": "Engineering",
        "welcome_note": "The team has been looking forward to having a Kubernetes expert on board.",
    },
]

jobs = []
for r in recipients:
    template = TEMPLATES[r["occasion"]]
    prompt = template["prompt"].format(**r)

    resp = requests.post(
        "https://api.heygen.com/v3/video-agents",
        headers={
            "X-Api-Key": HEYGEN_API_KEY,
            "Content-Type": "application/json",
        },
        json={"prompt": prompt},
    )
    jobs.append({
        "recipient": r,
        "video_id": resp.json()["data"]["video_id"],
    })
    time.sleep(5)
Then poll for completion and deliver via email, Slack, or your HR platform.

What Makes It Feel Personal

The difference between a greeting that lands and one that feels generic:
Generic (don’t do this)Personal (do this)
“Happy birthday from the team!""Happy birthday, Sarah! We heard you’re heading to Japan — enjoy!"
"Congrats on your anniversary""5 years, Marcus — from leading the product launch to mentoring three engineers"
"Welcome aboard""Welcome Priya! The team’s been looking forward to having a K8s expert”
The specific detail is what makes it feel like someone actually thought about this person.

Automation Ideas

TriggerSourceDelivery
Employee birthdayHRIS/HR platformEmail + Slack channel
Work anniversaryHRIS with start datesEmail + manager notification
New hire start dateOnboarding systemEmail on day 1
Customer renewalCRMEmail from account manager
Deal closedCRMSlack celebration + email to rep
Usage milestoneProduct analyticsIn-app or email

Variations

  • Manager from-the-desk: Use a specific avatar that represents the CEO or team lead for extra impact
  • Team compilations: Generate individual short clips from each team member, then concatenate into a group video
  • Holiday greetings: Batch-generate for all clients or employees with holiday-themed prompts
  • Multi-language: Use Video Translation for global teams

Next Steps

Personalized Outreach

Same personalization pattern, applied to sales.

Training & Onboarding

Generate onboarding content for new hires.