🔔 Integrations, Notifications & Analytics
IntelliSignup bridges the gap between web-based signup forms and daily organizer workflows by integrating directly with external calendar ecosystems, providing automated background email dispatches, and recording privacy-first analytics.
External network API calls (Google Calendar synchronization and SMTP email transmissions) execute asynchronously inside background threads or dedicated systemd workers. Web requests return to users in milliseconds without blocking on network latency.
1. Google Calendar 2-Way Sync
Implemented inside app/google_calendar.py, organizers can link their Google account via OAuth 2.0 to enable automatic calendar synchronization:
OAuth 2.0 Integration Flow
- Authorization Request: Organizers click "Connect Google Calendar" (
/integrations/google/connect), generating an OAuth2 flow requesting thecalendar.eventsscope. - Token Persistence: The authorization callback exchanges the auth code for access and refresh tokens. Refresh tokens are immediately encrypted with AES-256 Fernet before being written to the database.
- Automatic Token Refreshing: When an access token expires, the application automatically requests fresh credentials using Google's
Request()handler and stores the updated expiration.
Synchronization Capabilities
Creating or updating a signup automatically creates or edits a primary Google Calendar event with title, date, location, and link.
As guests claim spots, the calendar event description dynamically updates with the live list of participant names and claimed items.
Deleting a signup in IntelliSignup removes the corresponding event from the organizer's Google Calendar automatically.
2. Apple & Outlook iCal (.ics) Feeds
For participants and organizers using Apple Calendar, Microsoft Outlook, or local calendar applications, IntelliSignup provides standards-compliant RFC 5545 iCalendar downloads:
- Event Calendar Feed (
/events/<slug>/calendar.ics): Generates an event-wide invitation containing full descriptions, physical venue addresses, and public coordinator contacts. - Participant Claim Feed (
/claims/<token>/calendar.ics): Generates a tailored calendar entry specifically for the individual participant, including their exact shift start/end times and claimed item notes.
3. Automated Email Engine (mail_utils.py)
Outbound communications are rendered using responsive HTML templates paired with plaintext fallbacks. The system catalog encompasses eight distinct operational email categories:
| Email Category | Recipient | Trigger Condition | Payload & Key Action |
|---|---|---|---|
| Email Verification | New User | Account creation / resend | Time-limited cryptographic activation link (24-hour expiry). |
| Password Reset | User | Forgot password request | Time-limited password reset link (1-hour expiry). |
| Claim Confirmation | Guest Participant | Slot / item claimed | Summary of commitment, Apple/Google calendar invite, and private self-service edit link. |
| Organizer Claim Alert | Event Organizer | New claim submitted | Alert notifying organizer who signed up and what remaining capacity is. |
| Waitlist Promotion | Waitlisted Guest | Spot opened & promoted | Notice that a spot opened up, with instant confirmation and management links. |
| Event Update Diff | All Active Participants | Organizer edits live event | Itemized bulleted diff detailing modified times, venue shifts, or item changes. |
| Event Reminder | All Active Participants | Systemd timer / manual click | Timely reminder sent N hours prior to event commencement. |
| Organizer Broadcast | All Active Participants | Organizer broadcast tool | Custom message blast sent directly to all roster participants. |
4. Systemd Reminder Worker
Rather than relying on persistent memory-heavy cron loops inside the web application, IntelliSignup leverages system-level Linux timers to execute automated reminder sweeps:
How send_reminders.py Operates
def send_due_reminders(now=None):
now = now or datetime.now()
claims = SignupClaim.query.all()
for claim in claims:
event = claim.item.event
if not event.reminder_enabled or not event.event_date or not claim.email or claim.reminder_sent_at:
continue
reminder_time = event.event_date - timedelta(hours=max(event.reminder_hours_before, 1))
# Compares local timezone clock basis
if reminder_time <= now <= event.event_date:
if send_event_reminder(claim):
claim.reminder_sent_at = now
db.session.add(claim)
db.session.commit()
Once an email reminder is successfully delivered, claim.reminder_sent_at is permanently stamped in the database. Subsequent worker runs bypass stamped claims, guaranteeing participants never receive duplicate reminders.
5. Real-Time Email Activity Log
Every outbound email attempt is appended to instance/email_activity.log as a structured JSON record:
{
"timestamp": "2026-09-23T12:05:14",
"status": "sent",
"email_type": "claim_confirmation",
"subject": "You're signed up for Fall Volunteer Day",
"recipients": ["volunteer@example.com"],
"event_id": 4,
"claim_id": 18
}
These logs populate real-time activity widgets inside the organizer's dashboard and event management consoles, providing clear visibility into delivery status, skipped addresses, and SMTP transmission errors.
6. Privacy-Preserving Analytics (AnalyticsPageView)
IntelliSignup avoids third-party tracking scripts (such as Google Analytics or Meta Pixels) to honor participant privacy. Instead, a lightweight internal engine records page impressions:
- Anonymous Visitor Hashing: Visitors are identified by a salted SHA-256 hash combining client IP and User-Agent strings. No tracking cookies are placed on user devices.
- Conversion Funnel Tracking: The system computes exact conversion metrics by contrasting total views on
/events/<slug>with the volume of completed claims. - Endpoint & Temporal Metrics: Organizers can inspect daily traffic curves, peak viewing hours, and most-visited public questionnaires directly from the
/analyticsdashboard.