---
title: "Quickstart | Logdash Docs"
description: "Add your domain, get an alert when it goes down and send your first log, in about five minutes."
url: https://logdash.io/docs/quickstart
---

# Quickstart

Add your domain, get an alert when it goes down and send your first log, in about five minutes.

This guide takes you from no account to a monitored website, an alert channel and your first log. Each step links to the full guide when you want more.

##  Monitor your website

1. **Sign in** [Sign in to Logdash](https://logdash.io/app/auth) with GitHub or Google. The Hobby plan is free and needs no card.
2. **Add your domain** Enter your website address, such as `example.com`, and press **Start monitoring**. Logdash checks it right away, then every 5 minutes on the Hobby plan.
3. **Monitor more addresses** Under **Monitor more**, add the other URLs your users open, such as `api.example.com` or a health check endpoint, then press **Done**. See [Uptime monitors](https://logdash.io/docs/monitoring) for what counts as up.

##  Get alerted

A new monitor alerts the channels of its domain. When the domain has none yet, Logdash adds an email channel for the address you signed in with, so you hear about downtime without any setup. To get alerts on Telegram or to call your own webhook, open your domain, go to **Settings** and press **Add channel** in the **Alerts** card. See [Alerts](https://logdash.io/docs/alerts) for every channel and what the messages look like.

##  Send your first log

Go to **Logs**, pick your language and press **Copy prompt**. Paste the prompt into your coding agent, and it installs the SDK and adds logging with your ingest key. To do it by hand, follow the steps below.

1. **Copy the ingest key** Open **Settings** and press **Copy** in the **Ingest key** card. Keep it in an environment variable, such as `LOGDASH_API_KEY`. It can only write, so a leaked key cannot read your data.
2. **Install the SDK** Pick your language. The tab you pick stays picked on every page.  
```bash  
npm install @logdash/node  
```  
```bash  
pip install logdash  
```  
```bash  
go get github.com/logdash-io/go-sdk/logdash  
```  
```bash  
dotnet add package Logdash  
```  
```java  
// build.gradle  
dependencies {  
    implementation 'io.logdash:logdash:0.2.0'  
}  
```  
```bash  
cargo add logdash  
```  
```bash  
gem install logdash  
```  
```bash  
composer require logdash/php-sdk  
```
3. **Send a log** Logs show up in **Logs** within a second. Without an SDK, send the same log with one HTTP request.  
```typescript  
import { Logdash } from '@logdash/node';  
const logdash = new Logdash(process.env.LOGDASH_API_KEY);  
logdash.info('Application started successfully');  
logdash.error('An unexpected error occurred');  
logdash.warn('Low disk space warning');  
```  
```python  
import os  
from logdash import create_logdash  
logdash = create_logdash({"api_key": os.environ["LOGDASH_API_KEY"]})  
logger = logdash.logger  
logger.info("Application started successfully")  
logger.error("An unexpected error occurred")  
logger.warn("Low disk space warning")  
```  
```go  
package main  
import (  
	"context"  
	"os"  
	"time"  
	"github.com/logdash-io/go-sdk/logdash"  
)  
func main() {  
	ld := logdash.New(logdash.WithAPIKey(os.Getenv("LOGDASH_API_KEY")))  
	logger := ld.Logger  
	logger.Info("Application started successfully")  
	logger.Error("An unexpected error occurred")  
	logger.Warn("Low disk space warning")  
	// Every level has an ...F() counterpart, like fmt.Printf.  
	logger.InfoF("Processing %v of %v item", 1, 10)  
	// Shutdown waits for every enqueued log, metric and event to flush.  
	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)  
	defer cancel()  
	ld.Shutdown(ctx)  
}  
```  
```csharp  
logdash.Info("This is info message");  
logdash.Warn("This is warn message");  
logdash.Error("This is an error message");  
logdash.Debug("This is a debug message");  
```  
```java  
import java.util.Map;  
logger.info("Application started");  
logger.error("Database connection failed");  
// Structured logging with context  
logger.info("Payment processed", Map.of(  
        "userId", 12345,  
        "amount", 29.99,  
        "currency", "USD"  
));  
```  
```rust  
let (logger, _) = logdash::create_logdash(logdash::Config::default());  
// Send an info log message  
logger.info("Rust SDK example");  
```  
```ruby  
logger.info('Application started successfully')  
logger.error('An unexpected error occurred')  
logger.warn('Low disk space warning')  
```  
```php  
$logger->error('Application error occurred');  
$logger->warn('This is a warning message');  
$logger->info('User logged in successfully');  
```  
```bash  
curl -X POST https://api.logdash.io/logs \
  -H "project-api-key: $LOGDASH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message": "Application started successfully", "level": "info", "createdAt": "'"$(date -u +%FT%TZ)"'"}'  
```

Short-lived processes, such as cron jobs and serverless functions, can exit before the SDK sends what it queued. Flush before you exit, as the page for [your SDK](https://logdash.io/docs/sdks) shows.

##  Next steps

[Publish a status page](https://logdash.io/docs/status-pages): Show your users which services are up, on your own domain.

[Add the web analytics tracker](https://logdash.io/docs/web-analytics): Count visitors and custom events without cookies.

[Send metrics](https://logdash.io/docs/metrics): Chart signups, orders or queue length from your code.
