Welcome to NotifyGate! This guide will help you get started with integrating intelligent notification routing into your application.

## What is NotifyGate?

NotifyGate is a powerful notification routing system that allows you to send notifications across multiple channels including Slack, Discord, Email, Push Notifications, and Webhooks. With flexible rules and templates, you can ensure the right notifications reach the right people at the right time.

## Quick Start

### 1. Create Your Workspace

After signing up, create your first workspace. Workspaces allow you to organize your notification channels, rules, and templates for different projects or teams.

### 2. Set Up Your First Channel

Navigate to the Connectors section and add your first notification channel:

- **Slack**: Connect your Slack workspace for team notifications
- **Discord**: Add your Discord webhook for community updates
- **Email**: Configure SMTP settings for email notifications
- **Push**: Set up Firebase Cloud Messaging (FCM) or Apple Push Notification Service (APNS)

### 3. Create an Event Template

Templates define the structure and content of your notifications. You can use variables and conditional logic to create dynamic, context-aware messages.

```json
{
  "title": "New Order Received",
  "message": "Order #{{order_id}} from {{customer_name}}",
  "priority": "high"
}
```

### 4. Define Routing Rules

Rules determine when and where notifications are sent. You can create conditions based on event properties, time of day, user preferences, and more.

Example rule:

- **Condition**: `event.priority == "high" AND time.hour < 22`
- **Action**: Send to Slack `#alerts` channel
- **Template**: Use “High Priority Alert” template

### 5. Send Your First Event

Use our API to send events to NotifyGate:

```bash
curl -X POST https://api.notifygate.io/api/v1/events \
  -H "X-API-Key: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{\n    "event_type": "order.created",
    "priority": "high",
    "data": {\n      "order_id": "12345",
      "customer_name": "John Doe"\n    }\n  }'
```

## Advanced Features

### Schedule-Based Routing

Configure rules to send notifications only during specific times or days. Perfect for:

- Business hours notifications
- On-call rotation schedules
- Time-zone aware delivery

### Multi-Channel Delivery

Send the same notification to multiple channels simultaneously or use fallback chains for reliability.

### Rate Limiting

Prevent notification fatigue with built-in rate limiting per channel, user, or event type.

## Best Practices

1. **Start Simple**: Begin with one channel and a few basic rules
2. **Test Thoroughly**: Use our event logs to verify notifications are routed correctly
3. **Monitor Usage**: Check your dashboard regularly to understand notification patterns
4. **Iterate**: Refine your rules and templates based on team feedback

## Next Steps

- Explore our [Integration Guide](/content/blog/integration-examples/index.html) for language-specific code examples
- Learn about [Advanced Routing Strategies](/content/blog/advanced-routing/index.html)
- Check out [Template Best Practices](/content/blog/template-patterns/index.html)

Questions? Reach out to our support team or join our community Discord.

Happy routing! 🚀
