Birthday & Anniversary Reminder
Never miss a birthday or anniversary ā auto-remind and optionally send messages
š§ Ingredients
š APIs
birthday_anniversary_events_and_advance_reminders
š Alternatives:
contact_list_with_birthday_fields
š Alternatives:
send_birthday_anniversary_text_messages
š Alternatives:
send_birthday_anniversary_emails
š Alternatives:
š Step-by-Step Build Guide
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.
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."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.
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.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.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.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.
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.