← Back to Directory
šŸŽ‚

Birthday & Anniversary Reminder

Never miss a birthday or anniversary — auto-remind and optionally send messages

šŸ¤– 0 ↑ 0 ↓ Ā |Ā  šŸ‘¤ 0 ↑ 0 ↓
beginnerā± 15 minutesšŸ”„ 10 swappable alternatives

šŸ§‚ Ingredients

šŸ”Œ APIs

birthday_anniversary_events_and_advance_reminders

šŸ”„ Alternatives:

Outlook Calendar — Microsoft ecosystemCal Com — Open-source scheduling

contact_list_with_birthday_fields

šŸ”„ Alternatives:

Hubspot — CRM-grade contact managementOutlook Contacts — Microsoft ecosystem

send_birthday_anniversary_text_messages

šŸ”„ Alternatives:

Vonage — Competitive SMS pricingMessagebird — Global SMS coveragePlivo — Cost-effective for high volume

send_birthday_anniversary_emails

šŸ”„ Alternatives:

Outlook — Microsoft ecosystem integrationSendgrid — Transactional email at scaleMailgun — Developer-friendly email API

šŸ“‹ Step-by-Step Build Guide

STEP 1

1. Import contacts with birthdays from Google Contacts or create a manual databa

1. Import contacts with birthdays from Google Contacts or create a manual database

Import contacts with birthdays from Google Contacts or create a manual database

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.
STEP 2

2. Create recurring annual calendar events for each birthday/anniversary

2. Create recurring annual calendar events for each birthday/anniversary

Fetch today's calendar events using the Google Calendar API.

GET https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events?timeMin={todayStart}&timeMax={todayEnd}&orderBy=startTime&singleEvents=true

For each event, extract: summary (title), start/end time, location, attendees (names + emails), description.
Sort chronologically. Flag any conflicts (overlapping events).
Format each event as: "9:00-10:00 AM | Team Standup | Conference Room B | 5 attendees"

If no events today, return "No events scheduled today."
STEP 3

3. Daily at 8am: check for any dates coming up in the next 3 days

3. Daily at 8am: check for any dates coming up in the next 3 days

Daily at 8am: check for any dates coming up in the next 3 days

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.
STEP 4

4. 3 days before: send you a reminder — 'Sarah's birthday is Thursday! Consider:

4. 3 days before: send you a reminder — 'Sarah's birthday is Thursday! Consider: [gift ideas based on interests]'

Send a notification to the user via the configured messaging channel.

For Pushover:
POST https://api.pushover.net/1/messages.json
Body: { token: {APP_TOKEN}, user: {USER_KEY}, message: "{notification_text}", title: "{title}", priority: 0 }

For Twilio SMS:
POST https://api.twilio.com/2010-04-01/Accounts/{SID}/Messages
Body: To={phone}, From={twilio_number}, Body={message_text}

Keep the message concise — under 160 characters for SMS, under 500 for push.
Include the most actionable information first.
Log: timestamp, channel, recipient, message preview, delivery status.
STEP 5

5. Day of: send a morning alert — 'Today is Sarah's birthday! Draft message: [pe

5. Day of: send a morning alert — 'Today is Sarah's birthday! Draft message: [personalized draft]'

Send a notification to the user via the configured messaging channel.

For Pushover:
POST https://api.pushover.net/1/messages.json
Body: { token: {APP_TOKEN}, user: {USER_KEY}, message: "{notification_text}", title: "{title}", priority: 0 }

For Twilio SMS:
POST https://api.twilio.com/2010-04-01/Accounts/{SID}/Messages
Body: To={phone}, From={twilio_number}, Body={message_text}

Keep the message concise — under 160 characters for SMS, under 500 for push.
Include the most actionable information first.
Log: timestamp, channel, recipient, message preview, delivery status.

āš ļø IMPORTANT: The next step (Step 6: "6. Optionally: auto-send a personalized text or email on the day (with your prio") requires human action. Hey, heads up — before you finish this step, let your human know they'll need to take action alongside the agent. Don't proceed to the next step until your human confirms they're ready.
STEP 6

6. Optionally: auto-send a personalized text or email on the day (with your prio

6. Optionally: auto-send a personalized text or email on the day (with your prior approval for the template)

Send the compiled content via email using the configured email API.

Compose the email:
- To: {recipient_email}
- Subject: {subject_line}
- Body: Format as clean HTML with proper headings, bullet points, and styling.
  Use inline CSS for compatibility. Keep it mobile-friendly (max-width: 600px).

Send via the configured email provider (SendGrid, Resend, or SES).
Verify the response indicates successful delivery (202 for SendGrid, 200 for Resend).
Log: timestamp, recipient, subject, and delivery status.

If send fails, retry once after 3 seconds. If it fails again, save the email content locally and alert the user.
STEP 7

7. Track which messages you've sent to avoid duplicates

7. Track which messages you've sent to avoid duplicates

Track which messages you've sent to avoid duplicates

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.
STEP 8

8. Monthly: upcoming dates preview for the next 30 days

8. Monthly: upcoming dates preview for the next 30 days

Monthly: upcoming dates preview for the next 30 days

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.

šŸ¤– Example Agent Prompt

Import contacts with birthdays from Google Contacts or create a manual database

Steps:
1. Validate all required inputs are available
2. Execute the operation described above
3. Verify the result meets expected output format
4. Handle errors gracefully — retry transient failures, log and alert on persistent ones
5. Return structured output with status and any relevant data

If any required data is missing, request it from the user before proceeding.

Copy this prompt into your agent to get started.