Core Concepts
The ShipPulse data model in plain English. Understanding these building blocks will help you navigate the dashboard, use the API, and set up widgets correctly.
Architecture overview
Everything in ShipPulse is organized around Projects. A project contains modules, and each module powers one or more public pages and embeddable widgets.
Organization (your account)
└── Project (e.g. "MyApp")
├── API Key (sp_...)
├── Team members
│
├── Module: Testimonials
│ ├── Testimonials (approved, pending, rejected)
│ ├── Widgets (Wall of Love, Carousel, Popup, ...)
│ └── Public page → /wall/my-app
│
├── Module: Changelog
│ ├── Entries (published, draft)
│ ├── Subscribers (email subscribers)
│ ├── Widget (embeddable changelog strip)
│ └── Public page → /changelog/my-app
│
├── Module: Status Page
│ ├── Monitors (HTTP, TCP, Cron)
│ ├── Incidents (open, resolved)
│ └── Public page → /status/my-app
│
├── Module: Feedback Board
│ ├── Feedback requests (voted, pending)
│ ├── Comments
│ └── Public page → /feedback/my-app
│
└── Module: Roadmap
├── Roadmap items (Planned, In Progress, Done)
├── Subscriptions (per-item email alerts)
└── Public page → /roadmap/my-appEntity glossary
Project
The top-level container. A Project maps to one product or brand. It has its own API key, team members, and modules. All public pages (changelog, status, wall) are scoped to a project.
Module
A feature set within a project. Each project can enable up to 5 modules: Testimonials, Changelog, Status Page, Feedback Board, and Roadmap. Modules share the same project identity but are independent.
Widget
An embeddable JavaScript snippet that renders module content on any external site. Widgets use Shadow DOM so they never conflict with host-page CSS. Each widget has its own config (type, theme, filters).
Monitor
An uptime check belonging to the Status Page module. A monitor checks a URL (HTTP), TCP port, or cron job on a configurable interval. Results are stored and used to compute status (operational, degraded, down).
Incident
A declared outage or degradation on a Status Page. Incidents have a severity level (minor, major, critical) and can have multiple update entries as the situation evolves. Resolved incidents stay visible in the incident history.
Feedback Board
A public page where users submit feature requests and bug reports. Each submission can be upvoted, commented on, and linked to a Roadmap item. The board can be moderated — submissions require approval before going public.
Roadmap Item
A card on the public Roadmap with a title, description, and Kanban status (Planned, In Progress, Done). Roadmap items can be linked to Feedback requests. Subscribers are notified when status changes.
Subscriber
A user who has opted in to receive email notifications from a project. Subscribers are collected from changelog email notifications, status page alerts, and roadmap item subscriptions. All subscriptions are double-opt-in.
API Key
A secret token scoped to a single project, used to authenticate REST API requests. API keys begin with sp_ and can be rotated in project Settings → API Keys. Available on Pro and Agency plans.
On-call Schedule
A rotation schedule that determines who receives incident alerts at any given time. Defined per project with daily/weekly rotations. Alerts are sent via email, Slack, or webhook.
How entities relate
Project → Modules: A project can have multiple modules enabled. Each module is independent — you can enable just Testimonials and Changelog, and add Status Page later.
Feedback → Roadmap: Feedback requests can be linked to Roadmap items. When you ship a roadmap item, linked feedback requests are automatically marked as shipped and subscribers notified.
Roadmap → Changelog: When marking a roadmap item as Done, you can optionally link it to a Changelog entry. This gives subscribers the full release context.
Monitor → Incident: Monitors detect downtime and can auto-create incidents (if enabled). You can also create incidents manually via the dashboard or API before monitoring picks up an issue.
Subscriber: A subscriber is scoped to a specific module within a project. A user can be subscribed to your changelog but not your status page — subscriptions are independent.