diff --git a/src/pages/EventDetailPage.tsx b/src/pages/EventDetailPage.tsx
index 6bef82f..e06490a 100644
--- a/src/pages/EventDetailPage.tsx
+++ b/src/pages/EventDetailPage.tsx
@@ -19,6 +19,7 @@ import { EventSponsors } from '@/components/EventSponsors';
import { CommentsSection } from '@/components/comments/CommentsSection';
import { DeleteEntityDialog } from '@/components/DeleteEntityDialog';
import { useSkateEvent } from '@/hooks/useSkateEvents';
+import { FundingGoalCard } from '@/components/FundingGoalCard';
import { useEventRsvps, eventCoord } from '@/hooks/useEventRsvps';
import { useEventUpdates } from '@/hooks/useEventUpdates';
import { useAuthor } from '@/hooks/useAuthor';
@@ -147,6 +148,9 @@ export default function EventDetailPage() {
// NIP-52 RSVPs for this event (counts + attendee avatars).
const rsvpSummary = useEventRsvps(event ? eventCoord(event) : undefined);
+ // Optional crowdfunding goal (sats) set by the host as a `goal` tag.
+ const goalSats = Number(event?.event.tags.find(([t]) => t === 'goal')?.[1] ?? 0) || 0;
+
// Host updates โ detect if the host cancelled or rescheduled, so we can warn
// attendees loudly instead of letting them show up to a dead jam.
const { data: eventUpdates } = useEventUpdates(event ? eventCoord(event) : undefined);
@@ -532,6 +536,11 @@ export default function EventDetailPage() {
+ {/* Crowdfunding goal (only when the host set one) */}
+ {goalSats > 0 && (
+
+ )}
+
{/* RSVP / Attendance */}