Subscribe to events in your calendar app
Admin · Coordinator
iCal Feeds let your organization subscribe to external calendars — such as a DanceBug competition schedule or a Google Calendar — and automatically import those events into StandShare. When the external calendar is updated, StandShare syncs the changes at the interval you configure.
This is an inbound import feature. StandShare fetches the feed; it does not publish a calendar for others to subscribe to.
Access iCal Feed Management
- Sign in with a Coordinator or Admin account.
- Navigate to Admin > iCal Feeds from the sidebar.
Required permission: ical_feeds.manage (included in the Coordinator role).
Add a Feed
- Click + Add Feed.
- Fill in the feed details:
- Feed Name — A descriptive label for the feed (e.g., "DanceBug Spring Season", "Away Game Schedule"). Maximum 255 characters.
- Feed URL — The HTTPS URL to the external
.icscalendar file. HTTP URLs are rejected. The URL is validated for SSRF safety when you save. - Sync Interval — How often StandShare checks the feed for changes:
- Every 15 minutes
- Every hour (default)
- Every 6 hours
- Daily
- Default Venue — Optional. The venue applied to imported events when the external calendar's LOCATION field is blank. Leave empty to import as "TBD".
- Enable fund distribution for imported events — Check this to enable fund distribution by default on all events imported from this feed.
- Click Save.
The feed is created with active status and StandShare schedules the first sync according to the interval you chose.
If the external calendar is a Google Calendar, find the shareable iCal link under Settings > [calendar name] > Integrate calendar > Secret address in iCal format. Copy that HTTPS link and paste it as the Feed URL.
View Feeds
The iCal Feeds list shows all non-deleted feeds for your organization, with each feed's current status, last sync time, and next scheduled sync.
Use the status filter at the top of the list to narrow by: All, Active, Paused, or Error.
Click a feed's name to open its detail view, which shows full configuration, cumulative import counts, and the last 10 sync runs.
Edit a Feed
- Find the feed in the list and click Edit, or open the feed's detail view and click Edit.
- Update any fields: name, URL, sync interval, default venue, or fund distribution setting.
- Click Save Changes.
If you change the Feed URL, StandShare re-validates the new URL before saving. If you change the Sync Interval while the feed is active, the next sync time is recalculated immediately from the moment you save.
Pause a Feed
Pausing stops automatic syncs without deleting the feed or any events it has already imported.
- Find the feed in the list (it must be active).
- Click Pause.
The feed status changes to paused and the next scheduled sync is cleared. Use Resume to restart syncing.
Resume a Feed
You can resume any feed with a status of paused or error.
- Find the feed in the list.
- Click Resume.
The feed returns to active status and a new next-sync time is calculated based on the feed's configured interval.
Trigger a Manual Sync
Use "Sync Now" to import the latest events immediately, without waiting for the next scheduled sync. Required permission: ical_feeds.sync (included in Coordinator role).
- Find the feed in the list (it must not be deleted).
- Click Sync Now.
StandShare fetches the feed immediately and returns a result summary:
| Field | Description |
|---|---|
| Events found | Total VEVENT entries parsed from the feed |
| Events created | New events added to StandShare |
| Events updated | Existing events updated because the feed had a newer version |
| Events skipped | Events with no detectable changes |
| Events cancelled | Events marked CANCELLED in the feed (set to completed in StandShare) |
View Sync History
The detail view for each feed shows the last 10 sync runs, including start time, completion time, result, and per-run event counts. An error or partial result also shows the error message.
- Click a feed's name to open the detail view.
- Scroll to the Sync History section.
Sync history shows runs in reverse chronological order. The full paginated history is available via the API (GET /ical-feeds/:id/history).
Delete a Feed
Deleting a feed is a soft delete — it stops all syncing and removes the feed from the list, but does not delete events that were already imported.
- Find the feed in the list.
- Click Delete.
- Confirm.
The feed is removed from the list and all future syncs are stopped. Previously imported events remain in your StandShare event calendar.
A deleted feed cannot be restored. If you need to stop syncing temporarily, use Pause instead.
How Sync Works
StandShare matches events across syncs using the iCal UID field. On each sync:
- New UID — a new event is created in StandShare.
- Existing UID, newer SEQUENCE or LAST-MODIFIED — the existing event is updated.
- Existing UID, CANCELLED status — the existing event is marked as completed.
- Existing UID, no changes — the event is skipped.
Event name, date, venue, and notes are updated from the feed. Venue falls back to the feed's Default Venue if the iCal LOCATION field is absent.
Troubleshooting
Status: Error
If a feed shows error status, open the feed's detail view to see the error message from the last sync. Common causes:
| Error | Resolution |
|---|---|
Feed returned HTTP 4xx/5xx | The external calendar returned an error. Check that the URL is still valid and publicly accessible. |
Feed response exceeds 5MB limit | The calendar file is too large. Contact the calendar provider to reduce its size, or consider importing only a subset of the calendar. |
SSRF/DNS validation failed | The URL resolved to a private or reserved IP address. Only public HTTPS URLs are supported. |
| Network timeout | The external server did not respond within 30 seconds. Click Sync Now to retry; if the problem persists, check the URL. |
After resolving the underlying issue, click Resume to return the feed to active status.
Events not appearing after sync
- Confirm the sync result shows
eventsCreated > 0. If events were found but not created, check whether they already exist (they may have been skipped as unchanged). - Check whether the Default Venue is set if the external calendar does not include LOCATION on its events.
- Verify that the iCal feed contains VEVENT entries with valid DTSTART fields.
Permissions Reference
| Permission | Required for |
|---|---|
ical_feeds.manage | Add, edit, pause, resume, delete feeds |
ical_feeds.sync | Trigger a manual sync |
ical_feeds.view_history | View sync history |
All three permissions are included in the Coordinator role.
Next Steps
- Create and Manage Events — Manually create or edit events imported via a feed.
- Manage Venues — Set up venues to use as the default venue for feed imports.
- Toggle Fund Distribution — Adjust fund distribution on individual events after import.
- Create and manage API keys — Connect external tools to StandShare using scoped API keys.