A simple script to import your existing incidents into incident.io. Perfect for migrating from another incident management platform, or bulk-importing historical incidents.
- Python 3.7 or higher
- An incident.io API key with create and update permissions for incidents.
- Clone or download this repository
- Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\\Scripts\\activate
- Install dependencies:
pip install -r requirements.txt
Your CSV file should have the following columns:
| Column | Required | Description | Example |
|---|---|---|---|
name |
β Yes | Incident title/name | "Database Connection Issues" |
summary |
β Yes | Detailed description | "Primary DB went offline causing authentication failures" |
type |
β Yes | Incident type name | "Infrastructure" |
severity |
β Yes | Severity level name | "Critical" |
id |
β No | Unique identifier for updates | "001" |
- Headers: First row must contain the column names shown above
- Type and severity: Must match exactly with your incident.io setup (case-insensitive)
- ID column: Optional but recommended. Used to uniquely identify incidents and allows you to update incidents.
If you're looking to preserve your incident IDs from an external system, please contact us before importing. We can ensure incident IDs are preserved, so e.g. INC-123 in your old system matches INC-123 in incident.io.
name,summary,type,severity,id
Database Connection Issues,Primary database went offline causing authentication failures,Infrastructure,Critical,INC-001
API Rate Limiting,Third-party API started returning 429 errors during peak hours,Service,Major,INC-002
SSL Certificate Expired,Website SSL certificate expired causing browser warnings,Security,Minor,INC-003
python incident_import.py incidents.csv --api-key your-api-key-hereThe tool uses smart "upsert" logic:
- First time: Creates new retrospective incidents
- Subsequent runs: Updates existing incidents if they have the same ID
- No ID provided: Always creates new incidents
This means you can:
- Edit your CSV file to fix mistakes
- Re-run the import to update incident details
- Add new incidents to your CSV and import again
All imported incidents are created as:
- Retrospective incidents (historical, not active)
- Public visibility (visible to your team)